changeset 55144:ab3d5c605cad

(ielm-prompt-read-only, ielm-prompt): Expand docstring. (ielm): Only go to the end of the buffer when starting a new process.
author Luc Teirlinck <teirllm@auburn.edu>
date Mon, 26 Apr 2004 02:41:40 +0000
parents 4297b5c5091b
children b1416484d1a2
files lisp/ielm.el
diffstat 1 files changed, 30 insertions(+), 12 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/ielm.el	Mon Apr 26 00:29:31 2004 +0000
+++ b/lisp/ielm.el	Mon Apr 26 02:41:40 2004 +0000
@@ -56,7 +56,15 @@
 You can give the IELM prompt more highly customized read-only
 type properties, by setting this option to nil, and then setting
 `ielm-prompt', outside of Custom, to a string with the desired
-text properties."
+text properties.
+
+Interrupting the IELM process with \\<ielm-map>\\[comint-interrupt-subjob],
+and then restarting it using \\[ielm], makes the then current
+default value affect _new_ prompts.  However, executing \\[ielm]
+does not have this effect on *ielm* buffers with a running process.
+For IELM buffers that are not called *ielm*, you can execute
+\\[inferior-emacs-lisp-mode] in that IELM buffer to update the value,
+for new prompts.  This works even if the buffer has a running process."
   :type 'boolean
   :group 'ielm
   :version "21.4")
@@ -64,10 +72,20 @@
 (defcustom ielm-prompt "ELISP> "
   "Prompt used in IELM.
 Setting the default value does not affect existing IELM runs.
-The command `inferior-emacs-lisp-mode' converts this into a
-buffer-local variable in IELM buffers.  Do not try to set the
-buffer-local value yourself in any way, unless you really know
-what you are doing."
+`inferior-emacs-lisp-mode' converts this into a buffer-local
+variable in IELM buffers.  The buffer-local value is meant for
+internal use by IELM.  Do not try to set the buffer-local value
+yourself in any way, unless you really know what you are doing.
+
+Interrupting the IELM process with \\<ielm-map>\\[comint-interrupt-subjob],
+and then restarting it using \\[ielm], makes the then current
+_default_ value affect _new_ prompts.  Unless the new prompt
+differs only in text properties from the old one, IELM will no
+longer recognize the old prompts.  However, executing \\[ielm]
+does not update the prompt of an *ielm* buffer with a running process.
+For IELM buffers that are not called *ielm*, you can execute
+\\[inferior-emacs-lisp-mode] in that IELM buffer to update the value,
+for new prompts.  This works even if the buffer has a running process."
   :type 'string
   :group 'ielm)
 
@@ -547,13 +565,13 @@
   "Interactively evaluate Emacs Lisp expressions.
 Switches to the buffer `*ielm*', or creates it if it does not exist."
   (interactive)
-  (if (comint-check-proc "*ielm*")
-      nil
-    (save-excursion
-      (set-buffer (get-buffer-create "*ielm*"))
-      (inferior-emacs-lisp-mode)))
-  (pop-to-buffer "*ielm*")
-  (goto-char (point-max)))
+  (let (old-point)
+    (unless (comint-check-proc "*ielm*")
+      (with-current-buffer (get-buffer-create "*ielm*")
+	(unless (eq (buffer-size) 0) (setq old-point (point)))
+	(inferior-emacs-lisp-mode)))
+    (pop-to-buffer "*ielm*")
+    (when old-point (push-mark old-point))))
 
 (provide 'ielm)