diff --git a/modules/lang/emacs-lisp/config.el b/modules/lang/emacs-lisp/config.el index 9db980c5e..357b35be8 100644 --- a/modules/lang/emacs-lisp/config.el +++ b/modules/lang/emacs-lisp/config.el @@ -1,34 +1,62 @@ ;;; lang/emacs-lisp/config.el -(add-hook! emacs-lisp-mode - '(+emacs-lisp|init - highlight-quoted-mode - auto-compile-on-save-mode)) +(associate! emacs-lisp-mode :match "/Cask$") +(add-hook! emacs-lisp-mode '(highlight-quoted-mode auto-compile-on-save-mode +emacs-lisp|hook)) -(defun +emacs-lisp|init () - (setq mode-name "Elisp") ; [pedantry intensifies] - (add-hook 'before-save-hook 'delete-trailing-whitespace nil t) +(after! elisp-mode + ;; Real go-to-definition for elisp + (map! :map emacs-lisp-mode-map + :m "gd" '+emacs-lisp/find-function + :leader :m "gd" '+emacs-lisp/find-function-other-window) - (font-lock-add-keywords - nil `(("(\\(lambda\\)" (1 (ignore (compose-region (match-beginning 1) (match-end 1) ?λ 'decompose-region)))) - ("(\\(\\(doom\\)\\([-:/|!][^) ]*\\)?\\)[) \n]" (1 font-lock-builtin-face)) - ;; Highlight doom macros (macros are fontified in emacs 25+) - ("(\\([^ ]+!\\)" - (1 font-lock-keyword-face append)) - ;; Ert - ("(\\(ert-deftest\\) \\([^ ]+\\)" - (1 font-lock-keyword-face) - (2 font-lock-function-name-face)))) + ;; Don't affect lisp indentation (only `tab-width') + (setq editorconfig-indentation-alist + (delq (assq 'emacs-lisp-mode editorconfig-indentation-alist) + editorconfig-indentation-alist)) - (dolist (i '(("Evil Command" "\\(^\\s-*(evil-define-command +\\)\\(\\_<[^ ]+\\_>\\)" 2) - ("Evil Operator" "\\(^\\s-*(evil-define-operator +\\)\\(\\_<[^ ]+\\_>\\)" 2) - ("Package" "\\(^\\s-*(\\(use-package\\|package!\\) +\\)\\(\\_<[^ \n]+\\_>\\)" 3) - ("Spaceline Segment" "\\(^\\s-*(spaceline-define-segment +\\)\\(\\_<.+\\_>\\)" 2))) - (push i imenu-generic-expression))) + (defun +emacs-lisp|hook () + (setq mode-name "Elisp") ; [pedantry intensifies] + (add-hook 'before-save-hook 'delete-trailing-whitespace nil t) -(after! auto-compile + (font-lock-add-keywords + nil `(("(\\(lambda\\)" (1 (ignore (compose-region (match-beginning 1) (match-end 1) ?λ 'decompose-region)))) + ("[^'](\\(\\(doom\\)\\([-:/|!][^) ]*\\)?\\)[) \n]" (1 font-lock-builtin-face)) + ;; Highlight doom macros (macros are fontified in emacs 25+) + ("[^'](\\([^ ]+!\\)" + (1 font-lock-keyword-face append)) + ;; Ert + ("[^'](\\(ert-deftest\\) \\([^ ]+\\)" + (1 font-lock-keyword-face) + (2 font-lock-function-name-face)))) + + (dolist (i '(("Evil Command" "\\(^\\s-*(evil-define-command +\\)\\(\\_<[^ ]+\\_>\\)" 2) + ("Evil Operator" "\\(^\\s-*(evil-define-operator +\\)\\(\\_<[^ ]+\\_>\\)" 2) + ("Package" "\\(^\\s-*(\\(use-package\\|package\\)!? +\\)\\(\\_<[^ \n]+\\_>\\)" 3) + ("Spaceline Segment" "\\(^\\s-*(spaceline-define-segment +\\)\\(\\_<.+\\_>\\)" 2))) + (push i imenu-generic-expression)))) + +(after! debug ;; elisp debugging + (map! :map debugger-mode-map + :n "RET" 'debug-help-follow + :n "n" 'debugger-step-through + :n "c" 'debugger-continue)) + + +;; +;; Plugins +;; + +(use-package! auto-compile + :commands auto-compile-on-save-mode + :config (setq auto-compile-display-buffer nil auto-compile-use-mode-line nil)) -(after! slime - (setq inferior-lisp-program "clisp")) + +(use-package! highlight-quoted + :commands highlight-quoted-mode) + + +(use-package! slime + :config (setq inferior-lisp-program "clisp")) + diff --git a/modules/lang/emacs-lisp/packages.el b/modules/lang/emacs-lisp/packages.el index 6065cc9ee..7aebb20e4 100644 --- a/modules/lang/emacs-lisp/packages.el +++ b/modules/lang/emacs-lisp/packages.el @@ -1,9 +1,5 @@ ;;; lang/emacs-lisp/packages.el -(associate! emacs-lisp-mode :match "\\(/Cask\\|\\.elc?\\(.gz\\)?\\)$") - -(package! highlight-quoted :commands highlight-quoted-mode) - -(package! auto-compile :commands auto-compile-on-save-mode) - +(package! auto-compile) +(package! highlight-quoted) (package! slime)