50 lines
1.6 KiB
EmacsLisp
50 lines
1.6 KiB
EmacsLisp
;;; module-lisp --- all things lisp
|
|
;; see lib/elisp-defuns.el
|
|
|
|
(add-hook! emacs-lisp-mode 'turn-on-eldoc-mode)
|
|
|
|
;; [pedantry intensifies]
|
|
(defadvice emacs-lisp-mode (after emacs-lisp-mode-rename-modeline activate)
|
|
(setq mode-name "Elisp"))
|
|
|
|
(defun narf-elisp-auto-compile ()
|
|
(when (narf/is-recompilable-p)
|
|
(narf:compile-el)))
|
|
|
|
(add-hook! emacs-lisp-mode 'narf|enable-tab-width-8)
|
|
(add-hook! emacs-lisp-mode
|
|
(add-hook 'before-save-hook 'delete-trailing-whitespace nil t)
|
|
(add-hook 'after-save-hook 'narf-elisp-auto-compile nil t)
|
|
|
|
(add-to-list 'imenu-generic-expression
|
|
'("Package"
|
|
"\\(^\\s-*(use-package +\\)\\(\\_<.+\\_>\\)" 2))
|
|
|
|
;; Highlight extra NARF keywords
|
|
(let ((keywords '("add-hook!"
|
|
"map!"
|
|
"after!"
|
|
"λ"
|
|
"in!"
|
|
"define-company-backend!"
|
|
"define-text-object!"
|
|
"define-builder!"
|
|
)))
|
|
(font-lock-add-keywords 'emacs-lisp-mode
|
|
`((,(concat "(\\s-*" (regexp-opt keywords 'paren) "\\_>")
|
|
1 font-lock-keyword-face)) 'append)))
|
|
|
|
(font-lock-add-keywords
|
|
'emacs-lisp-mode `(("\\(lambda\\)" (0 (narf/show-as ?λ)))))
|
|
|
|
;; Real go-to-definition for elisp
|
|
(map! :map emacs-lisp-mode-map
|
|
:m "gd" 'narf/elisp-find-function-at-pt
|
|
:m "gD" 'narf/elisp-find-function-at-pt-other-window)
|
|
|
|
(use-package slime :defer t
|
|
:config
|
|
(setq inferior-lisp-program "clisp"))
|
|
|
|
(provide 'module-lisp)
|
|
;;; module-elisp.el ends here
|