X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/f2e0a47d249b47e291619db341f11ae8d8d1e8f6..26238072db2d78af84b46cd84a4b0a8260e4a9dd:/lisp/comint.el diff --git a/lisp/comint.el b/lisp/comint.el index 20b365e9fe..0977663808 100644 --- a/lisp/comint.el +++ b/lisp/comint.el @@ -1,7 +1,7 @@ ;;; comint.el --- general command interpreter in a window stuff ;; Copyright (C) 1988, 1990, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, -;; 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. +;; 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. ;; Author: Olin Shivers ;; Simon Marshall @@ -22,8 +22,8 @@ ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. ;;; Commentary: @@ -146,11 +146,11 @@ :group 'processes) (defgroup comint-completion nil - "Completion facilities in comint" + "Completion facilities in comint." :group 'comint) (defgroup comint-source nil - "Source finding facilities in comint" + "Source finding facilities in comint." :prefix "comint-" :group 'comint) @@ -411,17 +411,15 @@ See `comint-send-input'." "*If non-nil, use `comint-prompt-regexp' to recognize prompts. If nil, then program output and user-input are given different `field' properties, which Emacs commands can use to distinguish them (in -particular, common movement commands such as begining-of-line respect -field boundaries in a natural way)." +particular, common movement commands such as `beginning-of-line' +respect field boundaries in a natural way)." :type 'boolean :group 'comint) ;; Autoload is necessary for Custom to recognize old alias. ;;;###autoload -(defvaralias 'comint-use-prompt-regexp-instead-of-fields - 'comint-use-prompt-regexp) -(make-obsolete-variable 'comint-use-prompt-regexp-instead-of-fields - 'comint-use-prompt-regexp "22.1") +(define-obsolete-variable-alias 'comint-use-prompt-regexp-instead-of-fields + 'comint-use-prompt-regexp "22.1") (defcustom comint-mode-hook nil "Hook run upon entry to `comint-mode'. @@ -986,7 +984,7 @@ See also `comint-read-input-ring'." (message "Hit space to flush") (setq comint-dynamic-list-input-ring-window-conf conf) (let ((ch (read-event))) - (if (eq ch ?\ ) + (if (eq ch ?\s) (set-window-configuration conf) (setq unread-command-events (list ch))))))) @@ -1079,14 +1077,14 @@ Moves relative to START, or `comint-input-ring-index'." (if (string-match regexp (ring-ref comint-input-ring n)) n))) -(defun comint-previous-matching-input (regexp arg) +(defun comint-previous-matching-input (regexp n) "Search backwards through input history for match for REGEXP. \(Previous history elements are earlier commands.) With prefix argument N, search for Nth previous match. If N is negative, find the next or Nth next match." (interactive (comint-regexp-arg "Previous input matching (regexp): ")) - (setq arg (comint-search-arg arg)) - (let ((pos (comint-previous-matching-input-string-position regexp arg))) + (setq n (comint-search-arg n)) + (let ((pos (comint-previous-matching-input-string-position regexp n))) ;; Has a match been found? (if (null pos) (error "Not found") @@ -1099,15 +1097,15 @@ If N is negative, find the next or Nth next match." (point)) (insert (ring-ref comint-input-ring pos))))) -(defun comint-next-matching-input (regexp arg) +(defun comint-next-matching-input (regexp n) "Search forwards through input history for match for REGEXP. \(Later history elements are more recent commands.) With prefix argument N, search for Nth following match. If N is negative, find the previous or Nth previous match." (interactive (comint-regexp-arg "Next input matching (regexp): ")) - (comint-previous-matching-input regexp (- arg))) + (comint-previous-matching-input regexp (- n))) -(defun comint-previous-matching-input-from-input (arg) +(defun comint-previous-matching-input-from-input (n) "Search backwards through input history for match for current input. \(Previous history elements are earlier commands.) With prefix argument N, search for Nth previous match. @@ -1124,15 +1122,15 @@ If N is negative, search forwards for the -Nth following match." comint-input-ring-index nil)) (comint-previous-matching-input (concat "^" (regexp-quote comint-matching-input-from-input-string)) - arg)) + n)) -(defun comint-next-matching-input-from-input (arg) +(defun comint-next-matching-input-from-input (n) "Search forwards through input history for match for current input. \(Following history elements are more recent commands.) With prefix argument N, search for Nth following match. If N is negative, search backwards for the -Nth previous match." (interactive "p") - (comint-previous-matching-input-from-input (- arg))) + (comint-previous-matching-input-from-input (- n))) (defun comint-replace-by-expanded-history (&optional silent start) @@ -1434,14 +1432,14 @@ If the interpreter is the csh, return the current line with any initial string matching the regexp `comint-prompt-regexp' removed. `comint-input-filter-functions' monitors input for \"cd\", \"pushd\", and - \"popd\" commands. When it sees one, it cd's the buffer. - comint-input-filter is the default: returns t if the input isn't all white + \"popd\" commands. When it sees one, it cd's the buffer. + `comint-input-filter' is the default: returns t if the input isn't all white space. If the Comint is Lucid Common Lisp, - comint-get-old-input snarfs the sexp ending at point. - comint-input-filter-functions does nothing. - comint-input-filter returns nil if the input matches input-filter-regexp, + `comint-get-old-input' snarfs the sexp ending at point. + `comint-input-filter-functions' does nothing. + `comint-input-filter' returns nil if the input matches input-filter-regexp, which matches (1) all whitespace (2) :a, :c, etc. Similarly for Soar, Scheme, etc." @@ -1818,7 +1816,7 @@ This function should be in the list `comint-output-filter-functions'." (= (point) (point-max))) (save-excursion (goto-char (point-max)) - (recenter -1))) + (recenter (- -1 scroll-margin)))) (select-window selected))))) nil t)) (set-buffer current)))) @@ -1852,7 +1850,7 @@ This function could be on `comint-output-filter-functions' or bound to a key." "Put the end of the buffer at the bottom of the window." (interactive) (goto-char (point-max)) - (recenter -1)) + (recenter (- -1 scroll-margin))) (defun comint-get-old-input-default () "Default for `comint-get-old-input'. @@ -1937,15 +1935,21 @@ The string is sent using `comint-input-sender'. Security bug: your string can still be temporarily recovered with \\[view-lossage]; `clear-this-command-keys' can fix that." (interactive "P") ; Defeat snooping via C-x ESC ESC - (let ((proc (get-buffer-process (current-buffer)))) + (let ((proc (get-buffer-process (current-buffer))) + (prefix + (if (eq (window-buffer (selected-window)) (current-buffer)) + "" + (format "(In buffer %s) " + (current-buffer))))) (if proc - (let ((str (read-passwd (or prompt "Non-echoed text: ")))) + (let ((str (read-passwd (concat prefix + (or prompt "Non-echoed text: "))))) (if (stringp str) (progn (comint-snapshot-last-prompt) (funcall comint-input-sender proc str)) (message "Warning: text will be echoed"))) - (error "Current buffer has no process")))) + (error "Buffer %s has no process" (current-buffer))))) (defun comint-watch-for-password-prompt (string) "Prompt in the minibuffer for password and send without echoing. @@ -2002,8 +2006,8 @@ Does not delete the prompt." (delete-region pmark (point)))) ;; Output message and put back prompt (comint-output-filter proc replacement))) -(defalias 'comint-kill-output 'comint-delete-output) -(make-obsolete 'comint-kill-output 'comint-delete-output "21.1") +(define-obsolete-function-alias 'comint-kill-output + 'comint-delete-output "21.1") (defun comint-write-output (filename &optional append mustbenew) "Write output from interpreter since last input to FILENAME. @@ -2169,7 +2173,7 @@ If N is negative, find the next or Nth next match." (goto-char pos)))) -(defun comint-forward-matching-input (regexp arg) +(defun comint-forward-matching-input (regexp n) "Search forward through buffer for input fields that match REGEXP. If `comint-use-prompt-regexp' is non-nil, then input fields are identified by lines that match `comint-prompt-regexp'. @@ -2177,7 +2181,7 @@ by lines that match `comint-prompt-regexp'. With prefix argument N, search for Nth following match. If N is negative, find the previous or Nth previous match." (interactive (comint-regexp-arg "Forward input matching (regexp): ")) - (comint-backward-matching-input regexp (- arg))) + (comint-backward-matching-input regexp (- n))) (defun comint-next-prompt (n) @@ -2388,7 +2392,7 @@ updated using `comint-update-fence', if necessary." (defun comint-source-default (previous-dir/file source-modes) "Compute the defaults for `load-file' and `compile-file' commands. -PREVIOUS-DIR/FILE is a pair (directory . filename) from the last +PREVIOUS-DIR/FILE is a pair (DIRECTORY . FILENAME) from the last source-file processing command, or nil if there hasn't been one yet. SOURCE-MODES is a list used to determine what buffers contain source files: if the major mode of the buffer is in SOURCE-MODES, it's source. @@ -2409,7 +2413,7 @@ processing command (i.e., PREVIOUS-DIR/FILE). If this is the first time the command has been run (PREVIOUS-DIR/FILE is nil), the default directory is the cwd, with no default file. (\"no default file\" = nil) -SOURCE-REGEXP is typically going to be something like (tea-mode) +SOURCE-MODES is typically going to be something like (tea-mode) for T programs, (lisp-mode) for Lisp programs, (soar-mode lisp-mode) for Soar programs, etc. @@ -2440,7 +2444,7 @@ the load or compile." (set-buffer old-buffer))))) (defun comint-extract-string () - "Return string around POINT, or nil." + "Return string around point, or nil." (let ((syntax (syntax-ppss))) (when (nth 3 syntax) (condition-case () @@ -2460,7 +2464,7 @@ See `comint-source-default' for more on determining defaults. PROMPT is the prompt string. PREV-DIR/FILE is the (DIRECTORY . FILE) pair from the last source processing command. SOURCE-MODES is a list of major modes used to determine what file buffers contain source files. (These -two arguments are used for determining defaults). If MUSTMATCH-P is true, +two arguments are used for determining defaults.) If MUSTMATCH-P is true, then the filename reader will only accept a file that exists. A typical use: @@ -2587,6 +2591,7 @@ Note that this applies to `comint-dynamic-complete-filename' only." :type '(repeat (string :tag "Suffix")) :group 'comint-completion) +;;;###autoload (defvar comint-file-name-prefix "" "Prefix prepended to absolute file names taken from process input. This is used by Comint's and shell's completion functions, and by shell's @@ -2618,8 +2623,7 @@ This is a good thing to set in mode hooks.") (defun comint-word (word-chars) "Return the word of WORD-CHARS at point, or nil if none is found. Word constituents are considered to be those in WORD-CHARS, which is like the -inside of a \"[...]\" (see `skip-chars-forward'), -plus all non-ASCII characters." +inside of a \"[...]\" (see `skip-chars-forward'), plus all non-ASCII characters." (save-excursion (let ((here (point)) giveup) @@ -2930,7 +2934,7 @@ Typing SPC flushes the help buffer." (progn (mouse-choose-completion first) (set-window-configuration comint-dynamic-list-completions-config)) - (unless (eq first ?\ ) + (unless (eq first ?\s) (setq unread-command-events (listify-key-sequence key))) (unless (eq first ?\t) (set-window-configuration comint-dynamic-list-completions-config))))))