feature/eval: :eval now accepts functions (refactor emacs-lisp eval fn)

This commit is contained in:
Henrik Lissner 2017-05-07 02:27:54 +02:00
parent d64ee3c2f6
commit 4aa1427811
4 changed files with 37 additions and 25 deletions

View file

@ -10,3 +10,26 @@
(let ((buf (get-buffer "*ielm*")))
(bury-buffer buf)
buf)))))
;;;###autoload
(defun +emacs-lisp-eval (beg end)
"Evaluate a region and print it to the echo area (if one line long), otherwise
to a pop up buffer."
(require 'pp)
(let ((result (eval (read (buffer-substring-no-properties beg end))))
(buf (get-buffer-create "*eval*"))
(inhibit-read-only t)
lines)
(with-current-buffer buf
(read-only-mode +1)
(setq-local scroll-margin 0)
(emacs-lisp-mode)
(prin1 result buf)
(pp-buffer)
(setq lines (count-lines (point-min) (point-max)))
(goto-char (point-min))
(when (<= lines 1)
(message "%s" (buffer-substring (point-min) (point-max)))
(kill-buffer buf)))
(when (> lines 1)
(doom-popup-buffer buf))))

View file

@ -7,6 +7,7 @@
:config
(set! :repl 'emacs-lisp-mode #'+emacs-lisp/repl)
(set! :eval 'emacs-lisp-mode #'+emacs-lisp-eval)
(set! :rotate 'emacs-lisp-mode
:symbols '(("t" "nil")
("let" "let*")