dotfiles/.emacs.d/lisp/init-emacs-lisp.el

61 lines
2.1 KiB
EmacsLisp
Raw Normal View History

2021-08-17 11:49:19 +00:00
;;; init-emacs-lisp.el --- Emacs Lisp Configuration File -*- lexical-binding: t -*-
;;; Commentary:
;; Based on prelude-emacs-lisp.el
;;; Code:
2022-10-10 15:28:16 +00:00
(use-feature eldoc
2021-08-17 11:49:19 +00:00
:diminish)
(use-package elisp-slime-nav
:diminish)
(use-package emacs
:config
2022-08-10 14:58:47 +00:00
(defun eval-region-or-defun (edebug-it)
"Call eval-region, if one is selected, or eval-defun otherwise."
(interactive "P")
(if (use-region-p)
(eval-region (region-beginning) (region-end))
(eval-defun edebug-it)))
2021-09-06 19:59:40 +00:00
;; Based on prelude-emacs-lisp.el
(defun recompile-init-lisp ()
2022-10-11 12:32:34 +00:00
"Recompile elisp files in `user-emacs-directory/lisp'."
(interactive)
2021-09-06 19:59:40 +00:00
(when (and
(string-prefix-p (expand-file-name "lisp" user-emacs-directory) (file-truename buffer-file-name))
(file-exists-p (byte-compile-dest-file buffer-file-name)))
(emacs-lisp-byte-compile)))
(defun recompile-init-lisp-on-save ()
2022-10-11 12:32:34 +00:00
"Recompile your elc when saving an elisp file. (Adds buffer-local hook)."
2021-09-06 19:59:40 +00:00
(add-hook 'after-save-hook 'recompile-init-lisp nil t))
2021-08-17 11:49:19 +00:00
;; From prelude-emacs-lisp.el
(defun visit-ielm ()
"Switch to default `ielm' buffer.
Start `ielm' if it's not already running."
(interactive)
(crux-start-or-switch-to 'ielm "*ielm*"))
:hook
(ielm-mode . (lambda ()
(eldoc-mode +1)
(rainbow-delimiters-mode +1)))
(emacs-lisp-mode . (lambda ()
(eldoc-mode +1)
(rainbow-mode +1)
(rainbow-delimiters-mode +1)
(setq mode-name "EL")
2021-09-06 19:59:40 +00:00
(recompile-init-lisp-on-save)))
2021-08-17 11:49:19 +00:00
:bind
(:map emacs-lisp-mode-map
(("C-c C-z" . visit-ielm)
2022-08-10 14:58:47 +00:00
("C-M-x" . eval-region-or-defun)
("C-c C-c" . eval-region-or-defun)
2021-09-07 18:21:28 +00:00
("C-c C-b" . eval-buffer)
("C-c e f" . emacs-lisp-byte-compile-and-load)
("C-c e z" . byte-recompile-directory)
("C-c e c" . cancel-debug-on-entry)
("C-c e d" . debug-on-entry)
("C-c e e" . toggle-debug-on-error))))
2021-08-17 11:49:19 +00:00
(provide 'init-emacs-lisp)
;;; init-emacs-lisp.el ends here