aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lisp/ChangeLog5
-rw-r--r--lisp/ielm.el42
2 files changed, 35 insertions, 12 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 7fb5eecd4e..cf2c0aad49 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,8 @@
+2004-04-25 Luc Teirlinck <[email protected]>
+
+ * ielm.el (ielm-prompt-read-only, ielm-prompt): Expand docstring.
+ (ielm): Only go to the end of the buffer when starting a new process.
+
2004-04-25 Juanma Barranquero <[email protected]>
* ielm.el (inferior-emacs-lisp-mode): Display working buffer on the
diff --git a/lisp/ielm.el b/lisp/ielm.el
index beb261f4c8..2eae3591c7 100644
--- a/lisp/ielm.el
+++ b/lisp/ielm.el
@@ -56,7 +56,15 @@ Setting this variable does not affect existing IELM runs.
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 @@ text properties."
(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 @@ Customized bindings may be defined in `ielm-map', which currently contains:
"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)