From 774f55e8678263b52217fcdbe4a1ea168329152b Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Thu, 9 Feb 2017 04:23:25 -0500 Subject: [PATCH] lang/emacs-lisp: better imenu support; better doom fn/macro highlights; remove +emacs-lisp:byte-compile --- modules/lang/emacs-lisp/autoload.el | 6 ----- modules/lang/emacs-lisp/config.el | 36 ++++++++++++++++++----------- 2 files changed, 22 insertions(+), 20 deletions(-) diff --git a/modules/lang/emacs-lisp/autoload.el b/modules/lang/emacs-lisp/autoload.el index 5c1dc5751..df415c5cb 100644 --- a/modules/lang/emacs-lisp/autoload.el +++ b/modules/lang/emacs-lisp/autoload.el @@ -2,12 +2,6 @@ ;; ---- emacs-lisp --------------------------------------------------- -;;;###autoload (autoload '+emacs-lisp:byte-compile "lang/emacs-lisp/autoload" nil t) -(evil-define-command +emacs-lisp:byte-compile (&optional bang) - "Byte compile the current file, or if BANG, the entire emacs configuration." - (interactive "") - (if bang (doom-byte-compile) (byte-compile-file buffer-file-name))) - ;;;###autoload (defun +emacs-lisp/find-function () "Jump to the definition of the function at point." diff --git a/modules/lang/emacs-lisp/config.el b/modules/lang/emacs-lisp/config.el index cc1535b18..72c4a288a 100644 --- a/modules/lang/emacs-lisp/config.el +++ b/modules/lang/emacs-lisp/config.el @@ -21,21 +21,29 @@ (add-hook 'before-save-hook 'delete-trailing-whitespace nil t) (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)))) + nil `(;; Display "lambda" as λ + ("(\\(lambda\\)" (1 (ignore (compose-region (match-beginning 1) (match-end 1) ?λ 'decompose-region)))) + ;; Highlight doom/module functions + ("\\(^\\|\\s-\\)(\\(\\(doom\\|\\+\\)[^) ]+\\)[) \n]" (2 font-lock-builtin-face)) + ;; Highlight doom macros (no need, macros are fontified in emacs 25+) + ;; ("\\(^\\|\\s-\\)(\\(@[^) ]+\\)[) \n]" (2 font-lock-preprocessor-face append)) + )) - (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)))) + (setq imenu-generic-expression + '(("Evil Commands" "^\\s-*(evil-define-\\(?:command\\|operator\\|motion\\) +\\(\\_<[^ ()\n]+\\_>\\)" 1) + ("Package" "^\\s-*(@\\(?:use-package\\|package\\) +\\(\\_<[^ ()\n]+\\_>\\)" 1) + ("Settings" "^\\s-*(@def-setting +\\([^ ()\n]+\\)" 1) + ("Modelines" "^\\s-*(@def-modeline +\\([^ ()\n]+\\)" 1) + ("Modeline Segments" "^\\s-*(@def-modeline-segment +\\([^ ()\n]+\\)" 1) + ("Advice" "^\\s-*(def\\(?:\\(?:ine-\\)?advice\\))") + ("Modes" "^\\s-*(define-\\(?:global\\(?:ized\\)?-minor\\|generic\\|minor\\)-mode +\\([^ ()\n]+\\)" 1) + ("Macros" "^\\s-*(\\(?:cl-\\)?def\\(?:ine-compile-macro\\|macro\\) +\\([^ )\n]+\\)" 1) + ("Inline Functions" "\\s-*(\\(?:cl-\\)?defsubst +\\([^ )\n]+\\)" 1) + ("Functions" "^\\-s*(\\(?:cl-\\)?def\\(?:un\\*?\\|method\\|generic\\) +\\([^ )\n]+\\)" 1) + ("Variables" "^\\s-*(\\(def\\(?:c\\(?:onst\\(?:ant\\)?\\|ustom\\)\\|ine-symbol-macro\\|parameter\\)\\)\\s-+\\(\\(?:\\sw\\|\\s_\\|\\\\.\\)+\\)" 2) + ("Variables" "^\\s-*(defvar\\(?:-local\\)?\\s-+\\(\\(?:\\sw\\|\\s_\\|\\\\.\\)+\\)[[:space:]\n]+[^)]" 1) + ("Types" "^\\s-*(\\(cl-def\\(?:struct\\|type\\)\\|def\\(?:class\\|face\\|group\\|ine-\\(?:condition\\|error\\|widget\\)\\|package\\|struct\\|t\\(?:\\(?:hem\\|yp\\)e\\)\\)\\)\\s-+'?\\(\\(?:\\sw\\|\\s_\\|\\\\.\\)+\\)" 2) + )))) (@after debug ;; elisp debugging