]> code.delx.au - gnu-emacs/blobdiff - lisp/ielm.el
(c-backward-to-start-of-if): Don't assume point-min == 1.
[gnu-emacs] / lisp / ielm.el
index 5db57a52b59dd8dd8e1c25cf644e1ce7af3a559f..dc2f144b6fc18438ed0c7e5bfb064b81e062d49b 100644 (file)
   :type 'boolean
   :group 'ielm)
 
-(defvar ielm-prompt "ELISP> "
-  "Prompt used in IELM.")
+(defcustom ielm-prompt "ELISP> "
+  "Prompt used in IELM."
+  :type 'string
+  :group 'ielm
+  :get #'(lambda (symbol) (substring-no-properties (symbol-value symbol)))
+  :set #'(lambda (symbol value) (set symbol (propertize value 'read-only t 'rear-nonsticky t))))
 
 (defcustom ielm-dynamic-return t
   "*Controls whether \\<ielm-map>\\[ielm-return] has intelligent behaviour in IELM.
@@ -103,6 +107,9 @@ such as `edebug-defun' to work with such inputs."
 (defvar *** nil
   "Third-most-recent value evaluated in IELM.")
 
+(defvar ielm-match-data nil
+  "Match data saved at the end of last command.")
+
 ;;; System variables
 
 (defvar ielm-working-buffer nil
@@ -313,6 +320,7 @@ simply inserts a newline."
                  (let ((*save *)
                        (**save **)
                        (***save ***))
+                   (set-match-data ielm-match-data)
                    (save-excursion
                      (set-buffer ielm-working-buffer)
                      (condition-case err
@@ -330,7 +338,8 @@ simply inserts a newline."
                        (error (setq ielm-result (ielm-format-error err))
                               (setq ielm-error-type "Eval error"))
                        (quit (setq ielm-result "Quit during evaluation")
-                             (setq ielm-error-type "Eval error")))))
+                             (setq ielm-error-type "Eval error"))))
+                   (setq ielm-match-data (match-data)))
                (setq ielm-error-type "IELM error")
                (setq ielm-result "More than one sexp in input"))))
 
@@ -451,6 +460,7 @@ Customised bindings may be defined in `ielm-map', which currently contains:
   (make-local-variable '**)
   (setq *** nil)
   (make-local-variable '***)
+  (set (make-local-variable 'ielm-match-data) nil)
 
   ;; font-lock support
   (make-local-variable 'font-lock-defaults)