Mercurial > emacs
changeset 55223:14d50685dce0
(comint-prompt-read-only): New variable.
(comint-output-filter): Implement it.
author | Luc Teirlinck <teirllm@auburn.edu> |
---|---|
date | Thu, 29 Apr 2004 03:41:48 +0000 |
parents | 968aecf8299b |
children | 649d109f3222 |
files | lisp/comint.el |
diffstat | 1 files changed, 24 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/comint.el Wed Apr 28 23:20:59 2004 +0000 +++ b/lisp/comint.el Thu Apr 29 03:41:48 2004 +0000 @@ -171,6 +171,14 @@ This is a good thing to set in mode hooks.") +(defcustom comint-prompt-read-only nil + "If non-nil, the comint prompt is read only. +This does not affect existing prompts. +Certain derived modes may override this option." + :type 'boolean + :group 'comint + :version "21.4") + (defvar comint-delimiter-argument-list () "List of characters to recognise as separate arguments in input. Strings comprising a character in this list will separate the arguments @@ -1687,16 +1695,25 @@ (let ((inhibit-read-only t)) (add-text-properties comint-last-output-start (point) '(rear-nonsticky t - field output - inhibit-line-move-field-capture t)))) + field output + inhibit-line-move-field-capture t)))) ;; Highlight the prompt, where we define `prompt' to mean ;; the most recent output that doesn't end with a newline. - (unless (and (bolp) (null comint-last-prompt-overlay)) - ;; Need to create or move the prompt overlay (in the case - ;; where there is no prompt ((bolp) == t), we still do - ;; this if there's already an existing overlay). - (let ((prompt-start (save-excursion (forward-line 0) (point)))) + (let ((prompt-start (save-excursion (forward-line 0) (point))) + (inhibit-read-only t)) + (when comint-prompt-read-only + (or (= (point-min) prompt-start) + (get-text-property (1- prompt-start) 'read-only) + (put-text-property + (1- prompt-start) prompt-start 'read-only 'fence)) + (add-text-properties + prompt-start (point) + '(read-only t rear-non-sticky t front-sticky (read-only)))) + (unless (and (bolp) (null comint-last-prompt-overlay)) + ;; Need to create or move the prompt overlay (in the case + ;; where there is no prompt ((bolp) == t), we still do + ;; this if there's already an existing overlay). (if comint-last-prompt-overlay ;; Just move an existing overlay (move-overlay comint-last-prompt-overlay