1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2024-11-23 07:19:15 +00:00

(ielm-prompt-read-only, ielm-prompt): Update docstring.

(ielm-prompt-internal): New variable.
(ielm-font-lock-keywords): Remove irrelevant ielm-prompt keyword.
(ielm-send-input): Delete unused variable `buf'.
(ielm-eval-input): Use `ielm-prompt-internal'.
(inferior-emacs-lisp-mode): Use new variables
`comint-prompt-read-only' and `ielm-prompt-internal'.
Get rid of obsolete variable `directory-sep-char'.
(ielm): Use `zerop'.
This commit is contained in:
Luc Teirlinck 2004-04-29 03:47:39 +00:00
parent 70ac607ee3
commit 016b8f71ef
2 changed files with 33 additions and 37 deletions

View File

@ -1,3 +1,18 @@
2004-04-28 Luc Teirlinck <teirllm@auburn.edu>
* comint.el (comint-prompt-read-only): New variable.
(comint-output-filter): Implement it.
* ielm.el (ielm-prompt-read-only, ielm-prompt): Update docstring.
(ielm-prompt-internal): New variable.
(ielm-font-lock-keywords): Remove irrelevant ielm-prompt keyword.
(ielm-send-input): Delete unused variable `buf'.
(ielm-eval-input): Use `ielm-prompt-internal'.
(inferior-emacs-lisp-mode): Use new variables
`comint-prompt-read-only' and `ielm-prompt-internal'.
Get rid of obsolete variable `directory-sep-char'.
(ielm): Use `zerop'.
2004-04-29 John Paul Wallington <jpw@gnu.org>
* thumbs.el (toplevel): Require cl at compile time.

View File

@ -52,34 +52,19 @@
(defcustom ielm-prompt-read-only t
"If non-nil, the IELM prompt is read only.
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.
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."
This works by setting the buffer-local value of `comint-prompt-read-only'.
Setting that value directly affects new prompts in the current buffer."
:type 'boolean
:group 'ielm
:version "21.4")
(defcustom ielm-prompt "ELISP> "
"Prompt used in IELM.
Setting the default value does not affect existing IELM runs.
`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.
Setting this variable does not affect existing IELM runs.
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
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.
@ -89,6 +74,12 @@ for new prompts. This works even if the buffer has a running process."
:type 'string
:group 'ielm)
(defvar ielm-prompt-internal "ELISP> "
"Stored value of `ielm-prompt' in the current IELM buffer.
This is an internal variable used by IELM. Its purpose is to
prevent a running IELM process from being messed up when the user
customizes `ielm-prompt'.")
(defcustom ielm-dynamic-return t
"*Controls whether \\<ielm-map>\\[ielm-return] has intelligent behaviour in IELM.
If non-nil, \\[ielm-return] evaluates input for complete sexps, or inserts a newline
@ -178,9 +169,7 @@ This variable is buffer-local.")
(define-key ielm-map "\C-c\C-v" 'ielm-print-working-buffer))
(defvar ielm-font-lock-keywords
(list
(cons (concat "^" (regexp-quote ielm-prompt)) 'font-lock-keyword-face)
'("\\(^\\*\\*\\*[^*]+\\*\\*\\*\\)\\(.*$\\)"
'(("\\(^\\*\\*\\*[^*]+\\*\\*\\*\\)\\(.*$\\)"
(1 font-lock-comment-face)
(2 font-lock-constant-face)))
"Additional expressions to highlight in ielm buffers.")
@ -283,8 +272,7 @@ simply inserts a newline."
(defun ielm-send-input nil
"Evaluate the Emacs Lisp expression after the prompt."
(interactive)
(let ((buf (current-buffer))
ielm-input) ; set by ielm-input-sender
(let (ielm-input) ; set by ielm-input-sender
(comint-send-input) ; update history, markers etc.
(ielm-eval-input ielm-input)))
@ -407,7 +395,7 @@ simply inserts a newline."
(setq ** *)
(setq * ielm-result))
(setq ielm-output (concat ielm-output "\n"))))
(setq ielm-output (concat ielm-output ielm-prompt))
(setq ielm-output (concat ielm-output ielm-prompt-internal))
(comint-output-filter (ielm-process) ielm-output)))
;;; Process and marker utilities
@ -478,20 +466,13 @@ Customized bindings may be defined in `ielm-map', which currently contains:
(setq comint-input-sender 'ielm-input-sender)
(setq comint-process-echoes nil)
(make-local-variable 'comint-dynamic-complete-functions)
(set (make-local-variable 'ielm-prompt)
(if ielm-prompt-read-only
(propertize ielm-prompt
'read-only t
'rear-nonsticky t
'front-sticky '(read-only))
ielm-prompt))
(set (make-local-variable 'ielm-prompt-internal) ielm-prompt)
(set (make-local-variable 'comint-prompt-read-only) ielm-prompt-read-only)
(setq comint-dynamic-complete-functions
'(ielm-tab comint-replace-by-expanded-history ielm-complete-filename ielm-complete-symbol))
(setq comint-get-old-input 'ielm-get-old-input)
(make-local-variable 'comint-completion-addsuffix)
(setq comint-completion-addsuffix
(cons (char-to-string directory-sep-char) ""))
(setq comint-completion-addsuffix '("/" . ""))
(setq major-mode 'inferior-emacs-lisp-mode)
(setq mode-name "IELM")
(setq mode-line-process '(":%s on " (:eval (buffer-name ielm-working-buffer))))
@ -541,7 +522,7 @@ Customized bindings may be defined in `ielm-map', which currently contains:
(add-text-properties
(point-min) (point-max)
'(rear-nonsticky t field output inhibit-line-move-field-capture t))))
(comint-output-filter (ielm-process) ielm-prompt)
(comint-output-filter (ielm-process) ielm-prompt-internal)
(set-marker comint-last-input-start (ielm-pm))
(set-process-filter (get-buffer-process (current-buffer)) 'comint-output-filter))
@ -568,7 +549,7 @@ Switches to the buffer `*ielm*', or creates it if it does not exist."
(let (old-point)
(unless (comint-check-proc "*ielm*")
(with-current-buffer (get-buffer-create "*ielm*")
(unless (eq (buffer-size) 0) (setq old-point (point)))
(unless (zerop (buffer-size)) (setq old-point (point)))
(inferior-emacs-lisp-mode)))
(pop-to-buffer "*ielm*")
(when old-point (push-mark old-point))))