summaryrefslogtreecommitdiff
path: root/lisp/ielm.el
diff options
context:
space:
mode:
authorMiha Rihtaršič <miha@kamnitnik.top>2022-09-09 20:11:33 +0200
committerLars Ingebrigtsen <larsi@gnus.org>2022-09-09 20:11:33 +0200
commite9ecde5b1dd93c356ba513d320124869078cb03a (patch)
treed4e374323566df79400dfdf93f83bcff0fa8c4c8 /lisp/ielm.el
parent5a8a5e3d5782e9e138a826e1ce9c06fe501c5343 (diff)
downloademacs-e9ecde5b1dd93c356ba513d320124869078cb03a.tar.gz
Input fontification for M-x ielm
* lisp/ielm.el (ielm-comint-fl-enable): New user option to control input fontification. (ielm-indirect-setup-hook): New hook. (inferior-emacs-lisp-mode): Set up and enable input fontification.
Diffstat (limited to 'lisp/ielm.el')
-rw-r--r--lisp/ielm.el29
1 files changed, 29 insertions, 0 deletions
diff --git a/lisp/ielm.el b/lisp/ielm.el
index 47c17921181..211804210c3 100644
--- a/lisp/ielm.el
+++ b/lisp/ielm.el
@@ -472,6 +472,27 @@ nonempty, then flushes the buffer."
;; Set the process mark in the current buffer to POS.
(set-marker (process-mark (get-buffer-process (current-buffer))) pos))
+;;; Input fontification
+
+(defcustom ielm-comint-fl-enable t
+ "Enable highlighting of input in ielm buffers.
+This variable only has effect when creating an ielm buffer. Use
+the command `comint-fl-mode' to toggle highlighting of input in
+an already existing ielm buffer."
+ :type 'boolean
+ :safe 'booleanp
+ :version "29.1")
+
+(defcustom ielm-indirect-setup-hook nil
+ "Hook run after setting up an indirect ielm fontification buffer."
+ :type 'boolean
+ :safe 'booleanp
+ :version "29.1")
+
+(defun ielm-indirect-setup-hook ()
+ "Run `ielm-indirect-setup-hook'."
+ (run-hooks 'ielm-indirect-setup-hook))
+
;;; Major mode
(define-derived-mode inferior-emacs-lisp-mode comint-mode "IELM"
@@ -526,6 +547,10 @@ The behavior of IELM may be customized with the following variables:
Customized bindings may be defined in `ielm-map', which currently contains:
\\{ielm-map}"
:syntax-table emacs-lisp-mode-syntax-table
+ :after-hook
+ (and (null comint-use-prompt-regexp)
+ ielm-comint-fl-enable
+ (comint-fl-mode))
(setq comint-prompt-regexp (concat "^" (regexp-quote ielm-prompt)))
(setq-local paragraph-separate "\\'")
@@ -564,6 +589,10 @@ Customized bindings may be defined in `ielm-map', which currently contains:
(setq-local font-lock-defaults
'(ielm-font-lock-keywords nil nil ((?: . "w") (?- . "w") (?* . "w"))))
+ (add-hook 'comint-indirect-setup-hook
+ #'ielm-indirect-setup-hook 'append t)
+ (setq comint-indirect-setup-function #'emacs-lisp-mode)
+
;; A dummy process to keep comint happy. It will never get any input
(unless (comint-check-proc (current-buffer))
;; Was cat, but on non-Unix platforms that might not exist, so