]> code.delx.au - gnu-emacs/commitdiff
(ielm-prompt-read-only, ielm-prompt): Update docstring.
authorLuc Teirlinck <teirllm@auburn.edu>
Thu, 29 Apr 2004 03:47:39 +0000 (03:47 +0000)
committerLuc Teirlinck <teirllm@auburn.edu>
Thu, 29 Apr 2004 03:47:39 +0000 (03:47 +0000)
(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'.

lisp/ChangeLog
lisp/ielm.el

index c3ab8ad0f4b5a371d62e323931c61c640a4d1e3d..8a1bba88874dd4af3052931a5def1da5a4604545 100644 (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.
index 0a249f650955e3c2ae3c188a09386c618ca1028e..53e3d83cdaa17b155cd323953b6cfcc11445840a 100644 (file)
 (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))))