diff --git a/contrib/lang/emacs-lisp/README.md b/contrib/lang/emacs-lisp/README.md index e7f8dce73..9057fb735 100644 --- a/contrib/lang/emacs-lisp/README.md +++ b/contrib/lang/emacs-lisp/README.md @@ -41,6 +41,7 @@ Key Binding | Description SPC m , | toggle `lisp state` SPC m t b | run tests of current buffer SPC m t q | run `ert` +SPC m d m | open [macrostep][] micro-state ### srefactor @@ -54,4 +55,5 @@ Key Binding | Description SPC m = o | format all on one line SPC m = s | format current sexp +[macrostep]: https://github.com/joddie/macrostep [semantic-layer]: ../../semantic/README.md diff --git a/contrib/lang/emacs-lisp/packages.el b/contrib/lang/emacs-lisp/packages.el index 09ba58ca2..18e24ef0c 100644 --- a/contrib/lang/emacs-lisp/packages.el +++ b/contrib/lang/emacs-lisp/packages.el @@ -11,14 +11,15 @@ ;;; License: GPLv3 (setq emacs-lisp-packages - '( - eldoc - elisp-slime-nav - evil - semantic - smartparens - srefactor - )) + '( + eldoc + elisp-slime-nav + evil + macrostep + semantic + smartparens + srefactor + )) (defun emacs-lisp/post-init-eldoc () (add-hook 'emacs-lisp-mode-hook 'eldoc-mode)) @@ -34,6 +35,25 @@ "mgg" 'elisp-slime-nav-find-elisp-thing-at-point "mhh" 'elisp-slime-nav-describe-elisp-thing-at-point)))) +(defun emacs-lisp/init-macrostep () + (use-package macrostep + :defer t + :mode ("\\*.el\\'" . emacs-lisp-mode) + :init + (progn + (spacemacs|define-micro-state macrostep + :doc "[e] expand [c] collapse [n/N] next/previous [q] quit" + :disable-evil-leader t + :persistent t + :use-minibuffer t + :evil-leader-for-mode (emacs-lisp-mode . "mdm") + :bindings + ("e" macrostep-expand) + ("c" macrostep-collapse) + ("n" macrostep-next-macro) + ("N" macrostep-prev-macro) + ("q" macrostep-collapse-all :exit t))))) + (defun emacs-lisp/post-init-evil () (add-to-hook 'emacs-lisp-mode '(lambda ()