annotate lisp/comint.el @ 24419:30e478cd167e

(shell-command-default-error-buffer): Renamed from shell-command-on-region-default-error-buffer. (shell-command-on-region): Mention in echo area when there is some error output. Mention success or failure, too. Accumulate multiple error outputs going forward, with formfeed in between. Display the error buffer when we have put something in it. (shell-command): Add the ERROR-BUFFER argument feature.
author Karl Heuer <kwzh@gnu.org>
date Mon, 01 Mar 1999 03:19:32 +0000
parents f182b7006b7a
children cddc33d259d4
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
662
8a533acedb77 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 638
diff changeset
1 ;;; comint.el --- general command interpreter in a window stuff
2307
10e417efb12a Added or corrected Commentary sections
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2247
diff changeset
2
20986
72fa617ce5e2 Changed to use directory-sep-char rather than "/".
Simon Marshall <simon@gnu.org>
parents: 20894
diff changeset
3 ;; Copyright (C) 1988, 90, 92, 93, 94, 95, 96, 97, 98 Free Software Foundation, Inc.
662
8a533acedb77 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 638
diff changeset
4
18805
b4b9772f0877 change maintainer.
Simon Marshall <simon@gnu.org>
parents: 17970
diff changeset
5 ;; Author: Olin Shivers <shivers@cs.cmu.edu> then
b4b9772f0877 change maintainer.
Simon Marshall <simon@gnu.org>
parents: 17970
diff changeset
6 ;; Simon Marshall <simon@gnu.ai.mit.edu>
b4b9772f0877 change maintainer.
Simon Marshall <simon@gnu.org>
parents: 17970
diff changeset
7 ;; Maintainer: FSF
2247
2c7997f249eb Add or correct keywords
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2025
diff changeset
8 ;; Keywords: processes
846
20674ae6bf52 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 811
diff changeset
9
909
4c6cdb66c74c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 870
diff changeset
10 ;; This file is part of GNU Emacs.
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
11
909
4c6cdb66c74c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 870
diff changeset
12 ;; GNU Emacs is free software; you can redistribute it and/or modify
4c6cdb66c74c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 870
diff changeset
13 ;; it under the terms of the GNU General Public License as published by
4c6cdb66c74c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 870
diff changeset
14 ;; the Free Software Foundation; either version 2, or (at your option)
4c6cdb66c74c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 870
diff changeset
15 ;; any later version.
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
16
909
4c6cdb66c74c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 870
diff changeset
17 ;; GNU Emacs is distributed in the hope that it will be useful,
4c6cdb66c74c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 870
diff changeset
18 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
4c6cdb66c74c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 870
diff changeset
19 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
4c6cdb66c74c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 870
diff changeset
20 ;; GNU General Public License for more details.
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
21
909
4c6cdb66c74c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 870
diff changeset
22 ;; You should have received a copy of the GNU General Public License
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
23 ;; along with GNU Emacs; see the file COPYING. If not, write to the
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
24 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
25 ;; Boston, MA 02111-1307, USA.
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
26
807
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 793
diff changeset
27 ;;; Commentary:
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 793
diff changeset
28
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
29 ;; Please send me bug reports, bug fixes, and extensions, so that I can
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
30 ;; merge them into the master source.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
31 ;; - Olin Shivers (shivers@cs.cmu.edu)
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
32 ;; - Simon Marshall (simon@gnu.ai.mit.edu)
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
33
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
34 ;; This file defines a general command-interpreter-in-a-buffer package
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
35 ;; (comint mode). The idea is that you can build specific process-in-a-buffer
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
36 ;; modes on top of comint mode -- e.g., lisp, shell, scheme, T, soar, ....
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
37 ;; This way, all these specific packages share a common base functionality,
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
38 ;; and a common set of bindings, which makes them easier to use (and
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
39 ;; saves code, implementation time, etc., etc.).
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
40
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
41 ;; Several packages are already defined using comint mode:
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
42 ;; - shell.el defines a shell-in-a-buffer mode.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
43 ;; - cmulisp.el defines a simple lisp-in-a-buffer mode.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
44 ;;
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
45 ;; - The file cmuscheme.el defines a scheme-in-a-buffer mode.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
46 ;; - The file tea.el tunes scheme and inferior-scheme modes for T.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
47 ;; - The file soar.el tunes lisp and inferior-lisp modes for Soar.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
48 ;; - cmutex.el defines tex and latex modes that invoke tex, latex, bibtex,
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
49 ;; previewers, and printers from within emacs.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
50 ;; - background.el allows csh-like job control inside emacs.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
51 ;; It is pretty easy to make new derived modes for other processes.
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
52
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
53 ;; For documentation on the functionality provided by comint mode, and
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
54 ;; the hooks available for customising it, see the comments below.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
55 ;; For further information on the standard derived modes (shell,
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
56 ;; inferior-lisp, inferior-scheme, ...), see the relevant source files.
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
57
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
58 ;; For hints on converting existing process modes (e.g., tex-mode,
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
59 ;; background, dbx, gdb, kermit, prolog, telnet) to use comint-mode
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
60 ;; instead of shell-mode, see the notes at the end of this file.
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
61
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
62
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
63 ;; Brief Command Documentation:
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
64 ;;============================================================================
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
65 ;; Comint Mode Commands: (common to all derived modes, like shell & cmulisp
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
66 ;; mode)
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
67 ;;
22265
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
68 ;; m-p comint-previous-input Cycle backwards in input history
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
69 ;; m-n comint-next-input Cycle forwards
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
70 ;; m-r comint-previous-matching-input Previous input matching a regexp
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
71 ;; m-s comint-next-matching-input Next input that matches
22265
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
72 ;; m-c-l comint-show-output Show last batch of process output
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
73 ;; return comint-send-input
22265
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
74 ;; c-d comint-delchar-or-maybe-eof Delete char unless at end of buff
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
75 ;; c-c c-a comint-bol-or-process-mark First time, move point to bol;
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
76 ;; second time, move to process-mark.
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
77 ;; c-c c-u comint-kill-input ^u
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
78 ;; c-c c-w backward-kill-word ^w
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
79 ;; c-c c-c comint-interrupt-subjob ^c
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
80 ;; c-c c-z comint-stop-subjob ^z
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
81 ;; c-c c-\ comint-quit-subjob ^\
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
82 ;; c-c c-o comint-kill-output Delete last batch of process output
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
83 ;; c-c c-r comint-show-output Show last batch of process output
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
84 ;; c-c c-l comint-dynamic-list-input-ring List input history
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
85 ;;
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
86 ;; Not bound by default in comint-mode (some are in shell mode)
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
87 ;; comint-run Run a program under comint-mode
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
88 ;; send-invisible Read a line w/o echo, and send to proc
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
89 ;; comint-dynamic-complete-filename Complete filename at point.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
90 ;; comint-dynamic-complete-variable Complete variable name at point.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
91 ;; comint-dynamic-list-filename-completions List completions in help buffer.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
92 ;; comint-replace-by-expanded-filename Expand and complete filename at point;
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
93 ;; replace with expanded/completed name.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
94 ;; comint-replace-by-expanded-history Expand history at point;
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
95 ;; replace with expanded name.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
96 ;; comint-magic-space Expand history and add (a) space(s).
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
97 ;; comint-kill-subjob No mercy.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
98 ;; comint-show-maximum-output Show as much output as possible.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
99 ;; comint-continue-subjob Send CONT signal to buffer's process
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
100 ;; group. Useful if you accidentally
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
101 ;; suspend your process (with C-c C-z).
22265
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
102 ;; comint-get-next-from-history Fetch successive input history lines
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
103 ;; comint-accumulate Combine lines to send them together
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
104 ;; as input.
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
105 ;; comint-goto-process-mark Move point to where process-mark is.
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
106 ;; comint-set-process-mark Set process-mark to point.
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
107
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
108 ;; comint-mode-hook is the comint mode hook. Basically for your keybindings.
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
109
807
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 793
diff changeset
110 ;;; Code:
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 793
diff changeset
111
1131
853d0d4c61fb entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 932
diff changeset
112 (require 'ring)
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
113
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
114 ;; Buffer Local Variables:
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
115 ;;============================================================================
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
116 ;; Comint mode buffer local variables:
15654
6f32894f4ad3 1. For fns like comint-postoutput-scroll-to-bottom on comint-output-filter-functions, don't count back using the length of STRING, as previous fns may have changed the buffer. Count from process-mark.
Simon Marshall <simon@gnu.org>
parents: 15541
diff changeset
117 ;; comint-prompt-regexp string comint-bol uses to match prompt
6f32894f4ad3 1. For fns like comint-postoutput-scroll-to-bottom on comint-output-filter-functions, don't count back using the length of STRING, as previous fns may have changed the buffer. Count from process-mark.
Simon Marshall <simon@gnu.org>
parents: 15541
diff changeset
118 ;; comint-delimiter-argument-list list For delimiters and arguments
6f32894f4ad3 1. For fns like comint-postoutput-scroll-to-bottom on comint-output-filter-functions, don't count back using the length of STRING, as previous fns may have changed the buffer. Count from process-mark.
Simon Marshall <simon@gnu.org>
parents: 15541
diff changeset
119 ;; comint-last-input-start marker Handy if inferior always echoes
6f32894f4ad3 1. For fns like comint-postoutput-scroll-to-bottom on comint-output-filter-functions, don't count back using the length of STRING, as previous fns may have changed the buffer. Count from process-mark.
Simon Marshall <simon@gnu.org>
parents: 15541
diff changeset
120 ;; comint-last-input-end marker For comint-kill-output command
6f32894f4ad3 1. For fns like comint-postoutput-scroll-to-bottom on comint-output-filter-functions, don't count back using the length of STRING, as previous fns may have changed the buffer. Count from process-mark.
Simon Marshall <simon@gnu.org>
parents: 15541
diff changeset
121 ;; comint-input-ring-size integer For the input history
6f32894f4ad3 1. For fns like comint-postoutput-scroll-to-bottom on comint-output-filter-functions, don't count back using the length of STRING, as previous fns may have changed the buffer. Count from process-mark.
Simon Marshall <simon@gnu.org>
parents: 15541
diff changeset
122 ;; comint-input-ring ring mechanism
6f32894f4ad3 1. For fns like comint-postoutput-scroll-to-bottom on comint-output-filter-functions, don't count back using the length of STRING, as previous fns may have changed the buffer. Count from process-mark.
Simon Marshall <simon@gnu.org>
parents: 15541
diff changeset
123 ;; comint-input-ring-index number ...
22265
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
124 ;; comint-save-input-ring-index number ...
15654
6f32894f4ad3 1. For fns like comint-postoutput-scroll-to-bottom on comint-output-filter-functions, don't count back using the length of STRING, as previous fns may have changed the buffer. Count from process-mark.
Simon Marshall <simon@gnu.org>
parents: 15541
diff changeset
125 ;; comint-input-autoexpand symbol ...
6f32894f4ad3 1. For fns like comint-postoutput-scroll-to-bottom on comint-output-filter-functions, don't count back using the length of STRING, as previous fns may have changed the buffer. Count from process-mark.
Simon Marshall <simon@gnu.org>
parents: 15541
diff changeset
126 ;; comint-input-ignoredups boolean ...
6f32894f4ad3 1. For fns like comint-postoutput-scroll-to-bottom on comint-output-filter-functions, don't count back using the length of STRING, as previous fns may have changed the buffer. Count from process-mark.
Simon Marshall <simon@gnu.org>
parents: 15541
diff changeset
127 ;; comint-last-input-match string ...
6f32894f4ad3 1. For fns like comint-postoutput-scroll-to-bottom on comint-output-filter-functions, don't count back using the length of STRING, as previous fns may have changed the buffer. Count from process-mark.
Simon Marshall <simon@gnu.org>
parents: 15541
diff changeset
128 ;; comint-dynamic-complete-functions hook For the completion mechanism
6f32894f4ad3 1. For fns like comint-postoutput-scroll-to-bottom on comint-output-filter-functions, don't count back using the length of STRING, as previous fns may have changed the buffer. Count from process-mark.
Simon Marshall <simon@gnu.org>
parents: 15541
diff changeset
129 ;; comint-completion-fignore list ...
15817
9e94b5fdaab1 (comint-file-name-chars): Was comint-file-name-regexp.
Richard M. Stallman <rms@gnu.org>
parents: 15727
diff changeset
130 ;; comint-file-name-chars string ...
15654
6f32894f4ad3 1. For fns like comint-postoutput-scroll-to-bottom on comint-output-filter-functions, don't count back using the length of STRING, as previous fns may have changed the buffer. Count from process-mark.
Simon Marshall <simon@gnu.org>
parents: 15541
diff changeset
131 ;; comint-file-name-quote-list list ...
6f32894f4ad3 1. For fns like comint-postoutput-scroll-to-bottom on comint-output-filter-functions, don't count back using the length of STRING, as previous fns may have changed the buffer. Count from process-mark.
Simon Marshall <simon@gnu.org>
parents: 15541
diff changeset
132 ;; comint-get-old-input function Hooks for specific
6f32894f4ad3 1. For fns like comint-postoutput-scroll-to-bottom on comint-output-filter-functions, don't count back using the length of STRING, as previous fns may have changed the buffer. Count from process-mark.
Simon Marshall <simon@gnu.org>
parents: 15541
diff changeset
133 ;; comint-input-filter-functions hook process-in-a-buffer
6f32894f4ad3 1. For fns like comint-postoutput-scroll-to-bottom on comint-output-filter-functions, don't count back using the length of STRING, as previous fns may have changed the buffer. Count from process-mark.
Simon Marshall <simon@gnu.org>
parents: 15541
diff changeset
134 ;; comint-output-filter-functions hook function modes.
19515
a0ecbe13b54b (comint-preoutput-filter-functions): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 18805
diff changeset
135 ;; comint-preoutput-filter-functions hook
15654
6f32894f4ad3 1. For fns like comint-postoutput-scroll-to-bottom on comint-output-filter-functions, don't count back using the length of STRING, as previous fns may have changed the buffer. Count from process-mark.
Simon Marshall <simon@gnu.org>
parents: 15541
diff changeset
136 ;; comint-input-filter function ...
6f32894f4ad3 1. For fns like comint-postoutput-scroll-to-bottom on comint-output-filter-functions, don't count back using the length of STRING, as previous fns may have changed the buffer. Count from process-mark.
Simon Marshall <simon@gnu.org>
parents: 15541
diff changeset
137 ;; comint-input-sender function ...
6f32894f4ad3 1. For fns like comint-postoutput-scroll-to-bottom on comint-output-filter-functions, don't count back using the length of STRING, as previous fns may have changed the buffer. Count from process-mark.
Simon Marshall <simon@gnu.org>
parents: 15541
diff changeset
138 ;; comint-eol-on-send boolean ...
6f32894f4ad3 1. For fns like comint-postoutput-scroll-to-bottom on comint-output-filter-functions, don't count back using the length of STRING, as previous fns may have changed the buffer. Count from process-mark.
Simon Marshall <simon@gnu.org>
parents: 15541
diff changeset
139 ;; comint-process-echoes boolean ...
6f32894f4ad3 1. For fns like comint-postoutput-scroll-to-bottom on comint-output-filter-functions, don't count back using the length of STRING, as previous fns may have changed the buffer. Count from process-mark.
Simon Marshall <simon@gnu.org>
parents: 15541
diff changeset
140 ;; comint-scroll-to-bottom-on-input symbol For scroll behavior
6f32894f4ad3 1. For fns like comint-postoutput-scroll-to-bottom on comint-output-filter-functions, don't count back using the length of STRING, as previous fns may have changed the buffer. Count from process-mark.
Simon Marshall <simon@gnu.org>
parents: 15541
diff changeset
141 ;; comint-scroll-to-bottom-on-output symbol ...
6f32894f4ad3 1. For fns like comint-postoutput-scroll-to-bottom on comint-output-filter-functions, don't count back using the length of STRING, as previous fns may have changed the buffer. Count from process-mark.
Simon Marshall <simon@gnu.org>
parents: 15541
diff changeset
142 ;; comint-scroll-show-maximum-output boolean ...
22265
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
143 ;; comint-accum-marker maker For comint-accumulate
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
144 ;;
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
145 ;; Comint mode non-buffer local variables:
15654
6f32894f4ad3 1. For fns like comint-postoutput-scroll-to-bottom on comint-output-filter-functions, don't count back using the length of STRING, as previous fns may have changed the buffer. Count from process-mark.
Simon Marshall <simon@gnu.org>
parents: 15541
diff changeset
146 ;; comint-completion-addsuffix boolean/cons For file name
6f32894f4ad3 1. For fns like comint-postoutput-scroll-to-bottom on comint-output-filter-functions, don't count back using the length of STRING, as previous fns may have changed the buffer. Count from process-mark.
Simon Marshall <simon@gnu.org>
parents: 15541
diff changeset
147 ;; comint-completion-autolist boolean completion behavior
6f32894f4ad3 1. For fns like comint-postoutput-scroll-to-bottom on comint-output-filter-functions, don't count back using the length of STRING, as previous fns may have changed the buffer. Count from process-mark.
Simon Marshall <simon@gnu.org>
parents: 15541
diff changeset
148 ;; comint-completion-recexact boolean ...
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
149
17428
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
150 (defgroup comint nil
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
151 "General command interpreter in a window stuff."
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
152 :group 'processes)
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
153
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
154 (defgroup comint-completion nil
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
155 "Completion facilities in comint"
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
156 :group 'comint)
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
157
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
158 (defgroup comint-source nil
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
159 "Source finding facilities in comint"
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
160 :prefix "comint-"
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
161 :group 'comint)
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
162
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
163
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
164 (defvar comint-prompt-regexp "^"
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
165 "Regexp to recognise prompts in the inferior process.
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
166 Defaults to \"^\", the null string at BOL.
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
167
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
168 Good choices:
5284
9c8749be37da (comint-read-input-ring): New arg SILENT.
Richard M. Stallman <rms@gnu.org>
parents: 5166
diff changeset
169 Canonical Lisp: \"^[^> \\n]*>+:? *\" (Lucid, franz, kcl, T, cscheme, oaklisp)
3985
fc25d1816641 * comint.el (comint-prompt-regexp): Double the backslashes in the
Jim Blandy <jimb@redhat.com>
parents: 3591
diff changeset
170 Lucid Common Lisp: \"^\\\\(>\\\\|\\\\(->\\\\)+\\\\) *\"
fc25d1816641 * comint.el (comint-prompt-regexp): Double the backslashes in the
Jim Blandy <jimb@redhat.com>
parents: 3591
diff changeset
171 franz: \"^\\\\(->\\\\|<[0-9]*>:\\\\) *\"
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
172 kcl: \"^>+ *\"
5284
9c8749be37da (comint-read-input-ring): New arg SILENT.
Richard M. Stallman <rms@gnu.org>
parents: 5166
diff changeset
173 shell: \"^[^#$%>\\n]*[#$%>] *\"
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
174 T: \"^>+ *\"
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
175
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
176 This is a good thing to set in mode hooks.")
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
177
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
178 (defvar comint-delimiter-argument-list ()
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
179 "List of characters to recognise as separate arguments in input.
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
180 Strings comprising a character in this list will separate the arguments
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
181 surrounding them, and also be regarded as arguments in their own right (unlike
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
182 whitespace). See `comint-arguments'.
6154
385d5fe1c95c (comint-arguments): Use just one regexp to find end of arg
Richard M. Stallman <rms@gnu.org>
parents: 6148
diff changeset
183 Defaults to the empty list.
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
184
6154
385d5fe1c95c (comint-arguments): Use just one regexp to find end of arg
Richard M. Stallman <rms@gnu.org>
parents: 6148
diff changeset
185 For shells, a good value is (?\\| ?& ?< ?> ?\\( ?\\) ?;).
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
186
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
187 This is a good thing to set in mode hooks.")
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
188
17428
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
189 (defcustom comint-input-autoexpand nil
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
190 "*If non-nil, expand input command history references on completion.
4923
63aed739d09d (comint-postoutput-scroll-to-bottom):
Richard M. Stallman <rms@gnu.org>
parents: 4899
diff changeset
191 This mirrors the optional behavior of tcsh (its autoexpand and histlit).
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
192
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
193 If the value is `input', then the expansion is seen on input.
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
194 If the value is `history', then the expansion is only when inserting
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
195 into the buffer's input ring. See also `comint-magic-space' and
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
196 `comint-dynamic-complete'.
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
197
17428
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
198 This variable is buffer-local."
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
199 :type '(choice (const :tag "off" nil)
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
200 (const input)
22569
b5923f76f35b (comint-input-autoexpand): Use `other' widget type.
Andreas Schwab <schwab@suse.de>
parents: 22272
diff changeset
201 (const history)
b5923f76f35b (comint-input-autoexpand): Use `other' widget type.
Andreas Schwab <schwab@suse.de>
parents: 22272
diff changeset
202 (other :tag "on" t))
17428
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
203 :group 'comint)
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
204
17428
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
205 (defcustom comint-input-ignoredups nil
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
206 "*If non-nil, don't add input matching the last on the input ring.
4923
63aed739d09d (comint-postoutput-scroll-to-bottom):
Richard M. Stallman <rms@gnu.org>
parents: 4899
diff changeset
207 This mirrors the optional behavior of bash.
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
208
17428
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
209 This variable is buffer-local."
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
210 :type 'boolean
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
211 :group 'comint)
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
212
17428
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
213 (defcustom comint-input-ring-file-name nil
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
214 "*If non-nil, name of the file to read/write input history.
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
215 See also `comint-read-input-ring' and `comint-write-input-ring'.
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
216
17428
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
217 This variable is buffer-local, and is a good thing to set in mode hooks."
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
218 :type 'boolean
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
219 :group 'comint)
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
220
17428
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
221 (defcustom comint-scroll-to-bottom-on-input nil
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
222 "*Controls whether input to interpreter causes window to scroll.
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
223 If nil, then do not scroll. If t or `all', scroll all windows showing buffer.
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
224 If `this', scroll only the selected window.
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
225
4939
d9ad390ef4e3 (comint-preinput-scroll-to-bottom): Added
Richard M. Stallman <rms@gnu.org>
parents: 4928
diff changeset
226 The default is nil.
4880
a658d0e341b1 (comint-scroll-to-bottom-on-input)
Richard M. Stallman <rms@gnu.org>
parents: 4872
diff changeset
227
17428
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
228 See `comint-preinput-scroll-to-bottom'. This variable is buffer-local."
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
229 :type '(choice (const :tag "off" nil)
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
230 (const t)
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
231 (const all)
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
232 (const this))
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
233 :group 'comint)
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
234
17428
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
235 (defcustom comint-scroll-to-bottom-on-output nil
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
236 "*Controls whether interpreter output causes window to scroll.
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
237 If nil, then do not scroll. If t or `all', scroll all windows showing buffer.
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
238 If `this', scroll only the selected window.
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
239 If `others', scroll only those that are not the selected window.
4939
d9ad390ef4e3 (comint-preinput-scroll-to-bottom): Added
Richard M. Stallman <rms@gnu.org>
parents: 4928
diff changeset
240
d9ad390ef4e3 (comint-preinput-scroll-to-bottom): Added
Richard M. Stallman <rms@gnu.org>
parents: 4928
diff changeset
241 The default is nil.
4880
a658d0e341b1 (comint-scroll-to-bottom-on-input)
Richard M. Stallman <rms@gnu.org>
parents: 4872
diff changeset
242
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
243 See variable `comint-scroll-show-maximum-output' and function
17428
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
244 `comint-postoutput-scroll-to-bottom'. This variable is buffer-local."
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
245 :type '(choice (const :tag "off" nil)
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
246 (const t)
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
247 (const all)
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
248 (const this)
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
249 (const others))
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
250 :group 'comint)
4939
d9ad390ef4e3 (comint-preinput-scroll-to-bottom): Added
Richard M. Stallman <rms@gnu.org>
parents: 4928
diff changeset
251
17428
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
252 (defcustom comint-scroll-show-maximum-output nil
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
253 "*Controls how interpreter output causes window to scroll.
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
254 If non-nil, then show the maximum output when the window is scrolled.
4939
d9ad390ef4e3 (comint-preinput-scroll-to-bottom): Added
Richard M. Stallman <rms@gnu.org>
parents: 4928
diff changeset
255
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
256 See variable `comint-scroll-to-bottom-on-output' and function
17428
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
257 `comint-postoutput-scroll-to-bottom'. This variable is buffer-local."
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
258 :type 'boolean
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
259 :group 'comint)
4939
d9ad390ef4e3 (comint-preinput-scroll-to-bottom): Added
Richard M. Stallman <rms@gnu.org>
parents: 4928
diff changeset
260
17428
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
261 (defcustom comint-buffer-maximum-size 1024
10833
77d7d3990300 Added comint-buffer-maximum-size and comint-truncate-buffer.
Simon Marshall <simon@gnu.org>
parents: 10830
diff changeset
262 "*The maximum size in lines for comint buffers.
77d7d3990300 Added comint-buffer-maximum-size and comint-truncate-buffer.
Simon Marshall <simon@gnu.org>
parents: 10830
diff changeset
263 Comint buffers are truncated from the top to be no greater than this number, if
17428
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
264 the function `comint-truncate-buffer' is on `comint-output-filter-functions'."
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
265 :type 'integer
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
266 :group 'comint)
10833
77d7d3990300 Added comint-buffer-maximum-size and comint-truncate-buffer.
Simon Marshall <simon@gnu.org>
parents: 10830
diff changeset
267
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
268 (defvar comint-input-ring-size 32
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
269 "Size of input history ring.")
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
270
17428
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
271 (defcustom comint-process-echoes nil
3386
bc4729d67e6e (comint-filter): Put window-start before the input.
Richard M. Stallman <rms@gnu.org>
parents: 3113
diff changeset
272 "*If non-nil, assume that the subprocess echoes any input.
2539
577c77cfd199 *** empty log message ***
Noah Friedman <friedman@splode.com>
parents: 2518
diff changeset
273 If so, delete one copy of the input so that only one copy eventually
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
274 appears in the buffer.
2539
577c77cfd199 *** empty log message ***
Noah Friedman <friedman@splode.com>
parents: 2518
diff changeset
275
17428
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
276 This variable is buffer-local."
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
277 :type 'boolean
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
278 :group 'comint)
2539
577c77cfd199 *** empty log message ***
Noah Friedman <friedman@splode.com>
parents: 2518
diff changeset
279
17428
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
280 ;; AIX puts the name of the person being su'd to in from of the prompt.
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
281 (defcustom comint-password-prompt-regexp
16584
2a181da249e0 (comint-password-prompt-regexp): Recognize AIX format.
Karl Heuer <kwzh@gnu.org>
parents: 16546
diff changeset
282 "\\(\\([Oo]ld \\|[Nn]ew \\|'s \\|^\\)[Pp]assword\\|pass phrase\\):\\s *\\'"
8087
c22d7c5168f5 comint-password-prompt-regexp: New variable.
Noah Friedman <friedman@splode.com>
parents: 8060
diff changeset
283 "*Regexp matching prompts for passwords in the inferior process.
17428
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
284 This is used by `comint-watch-for-password-prompt'."
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
285 :type 'regexp
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
286 :group 'comint)
8087
c22d7c5168f5 comint-password-prompt-regexp: New variable.
Noah Friedman <friedman@splode.com>
parents: 8060
diff changeset
287
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
288 ;; Here are the per-interpreter hooks.
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
289 (defvar comint-get-old-input (function comint-get-old-input-default)
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
290 "Function that returns old text in comint mode.
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
291 This function is called when return is typed while the point is in old text.
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
292 It returns the text to be submitted as process input. The default is
3386
bc4729d67e6e (comint-filter): Put window-start before the input.
Richard M. Stallman <rms@gnu.org>
parents: 3113
diff changeset
293 `comint-get-old-input-default', which grabs the current line, and strips off
bc4729d67e6e (comint-filter): Put window-start before the input.
Richard M. Stallman <rms@gnu.org>
parents: 3113
diff changeset
294 leading text matching `comint-prompt-regexp'.")
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
295
6185
82a92cf44059 (comint-after-partial-filename-command,
Richard M. Stallman <rms@gnu.org>
parents: 6154
diff changeset
296 (defvar comint-dynamic-complete-functions
82a92cf44059 (comint-after-partial-filename-command,
Richard M. Stallman <rms@gnu.org>
parents: 6154
diff changeset
297 '(comint-replace-by-expanded-history comint-dynamic-complete-filename)
82a92cf44059 (comint-after-partial-filename-command,
Richard M. Stallman <rms@gnu.org>
parents: 6154
diff changeset
298 "List of functions called to perform completion.
82a92cf44059 (comint-after-partial-filename-command,
Richard M. Stallman <rms@gnu.org>
parents: 6154
diff changeset
299 Functions should return non-nil if completion was performed.
82a92cf44059 (comint-after-partial-filename-command,
Richard M. Stallman <rms@gnu.org>
parents: 6154
diff changeset
300 See also `comint-dynamic-complete'.
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
301
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
302 This is a good thing to set in mode hooks.")
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
303
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
304 (defvar comint-input-filter
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
305 (function (lambda (str) (not (string-match "\\`\\s *\\'" str))))
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
306 "Predicate for filtering additions to input history.
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
307 Takes one argument, the input. If non-nil, the input may be saved on the input
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
308 history list. Default is to save anything that isn't all whitespace.")
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
309
6187
280d4a97da69 (comint-input-filter-functions)
Richard M. Stallman <rms@gnu.org>
parents: 6185
diff changeset
310 (defvar comint-input-filter-functions '()
6185
82a92cf44059 (comint-after-partial-filename-command,
Richard M. Stallman <rms@gnu.org>
parents: 6154
diff changeset
311 "Functions to call before input is sent to the process.
82a92cf44059 (comint-after-partial-filename-command,
Richard M. Stallman <rms@gnu.org>
parents: 6154
diff changeset
312 These functions get one argument, a string containing the text to send.
82a92cf44059 (comint-after-partial-filename-command,
Richard M. Stallman <rms@gnu.org>
parents: 6154
diff changeset
313
82a92cf44059 (comint-after-partial-filename-command,
Richard M. Stallman <rms@gnu.org>
parents: 6154
diff changeset
314 This variable is buffer-local.")
82a92cf44059 (comint-after-partial-filename-command,
Richard M. Stallman <rms@gnu.org>
parents: 6154
diff changeset
315
6187
280d4a97da69 (comint-input-filter-functions)
Richard M. Stallman <rms@gnu.org>
parents: 6185
diff changeset
316 (defvar comint-output-filter-functions '(comint-postoutput-scroll-to-bottom)
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
317 "Functions to call after output is inserted into the buffer.
4890
dab300dfe449 (comint-scroll-to-bottom-on-input): Default to nil.
Richard M. Stallman <rms@gnu.org>
parents: 4880
diff changeset
318 One possible function is `comint-postoutput-scroll-to-bottom'.
15654
6f32894f4ad3 1. For fns like comint-postoutput-scroll-to-bottom on comint-output-filter-functions, don't count back using the length of STRING, as previous fns may have changed the buffer. Count from process-mark.
Simon Marshall <simon@gnu.org>
parents: 15541
diff changeset
319 These functions get one argument, a string containing the text as originally
6f32894f4ad3 1. For fns like comint-postoutput-scroll-to-bottom on comint-output-filter-functions, don't count back using the length of STRING, as previous fns may have changed the buffer. Count from process-mark.
Simon Marshall <simon@gnu.org>
parents: 15541
diff changeset
320 inserted. Note that this might not be the same as the buffer contents between
6f32894f4ad3 1. For fns like comint-postoutput-scroll-to-bottom on comint-output-filter-functions, don't count back using the length of STRING, as previous fns may have changed the buffer. Count from process-mark.
Simon Marshall <simon@gnu.org>
parents: 15541
diff changeset
321 `comint-last-output-start' and the buffer's `process-mark', if other filter
6f32894f4ad3 1. For fns like comint-postoutput-scroll-to-bottom on comint-output-filter-functions, don't count back using the length of STRING, as previous fns may have changed the buffer. Count from process-mark.
Simon Marshall <simon@gnu.org>
parents: 15541
diff changeset
322 functions have already modified the buffer.
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
323
19515
a0ecbe13b54b (comint-preoutput-filter-functions): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 18805
diff changeset
324 See also `comint-preoutput-filter-functions'.
a0ecbe13b54b (comint-preoutput-filter-functions): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 18805
diff changeset
325
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
326 This variable is buffer-local.")
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
327
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
328 (defvar comint-input-sender (function comint-simple-send)
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
329 "Function to actually send to PROCESS the STRING submitted by user.
3386
bc4729d67e6e (comint-filter): Put window-start before the input.
Richard M. Stallman <rms@gnu.org>
parents: 3113
diff changeset
330 Usually this is just `comint-simple-send', but if your mode needs to
bc4729d67e6e (comint-filter): Put window-start before the input.
Richard M. Stallman <rms@gnu.org>
parents: 3113
diff changeset
331 massage the input string, put a different function here.
bc4729d67e6e (comint-filter): Put window-start before the input.
Richard M. Stallman <rms@gnu.org>
parents: 3113
diff changeset
332 `comint-simple-send' just sends the string plus a newline.
bc4729d67e6e (comint-filter): Put window-start before the input.
Richard M. Stallman <rms@gnu.org>
parents: 3113
diff changeset
333 This is called from the user command `comint-send-input'.")
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
334
17428
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
335 (defcustom comint-eol-on-send t
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
336 "*Non-nil means go to the end of the line before sending input.
17428
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
337 See `comint-send-input'."
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
338 :type 'boolean
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
339 :group 'comint)
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
340
17428
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
341 (defcustom comint-mode-hook '()
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
342 "Called upon entry into comint-mode
17428
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
343 This is run before the process is cranked up."
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
344 :type 'hook
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
345 :group 'comint)
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
346
17428
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
347 (defcustom comint-exec-hook '()
3386
bc4729d67e6e (comint-filter): Put window-start before the input.
Richard M. Stallman <rms@gnu.org>
parents: 3113
diff changeset
348 "Called each time a process is exec'd by `comint-exec'.
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
349 This is called after the process is cranked up. It is useful for things that
3386
bc4729d67e6e (comint-filter): Put window-start before the input.
Richard M. Stallman <rms@gnu.org>
parents: 3113
diff changeset
350 must be done each time a process is executed in a comint mode buffer (e.g.,
bc4729d67e6e (comint-filter): Put window-start before the input.
Richard M. Stallman <rms@gnu.org>
parents: 3113
diff changeset
351 `(process-kill-without-query)'). In contrast, the `comint-mode-hook' is only
17428
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
352 executed once when the buffer is created."
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
353 :type 'hook
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
354 :group 'comint)
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
355
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
356 (defvar comint-mode-map nil)
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
357
1131
853d0d4c61fb entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 932
diff changeset
358 (defvar comint-ptyp t
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
359 "Non-nil if communications via pty; false if by pipe. Buffer local.
13971
49207f2e2130 (comint-ptyp, comint-completion-autolist): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents: 13702
diff changeset
360 This is to work around a bug in Emacs process signaling.")
1131
853d0d4c61fb entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 932
diff changeset
361
932
a93f0b1ba909 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 925
diff changeset
362 (defvar comint-input-ring nil)
861
345296f94a1e *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 846
diff changeset
363 (defvar comint-last-input-start)
345296f94a1e *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 846
diff changeset
364 (defvar comint-last-input-end)
5424
51eecae04837 (comint-last-output-start): Add defvar.
Richard M. Stallman <rms@gnu.org>
parents: 5323
diff changeset
365 (defvar comint-last-output-start)
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
366 (defvar comint-input-ring-index nil
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
367 "Index of last matched history element.")
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
368 (defvar comint-matching-input-from-input-string ""
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
369 "Input previously used to match input history.")
22265
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
370 (defvar comint-save-input-ring-index
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
371 "Last input ring index which you copied.
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
372 This is to support the command \\[comint-get-next-from-history].")
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
373
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
374 (defvar comint-accum-marker nil
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
375 "Non-nil if you are accumulating input lines to send as input together.
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
376 The command \\[comint-accumulate] sets this.")
6507
ff41e0e932b8 (comint-run): New command.
Richard M. Stallman <rms@gnu.org>
parents: 6256
diff changeset
377
ff41e0e932b8 (comint-run): New command.
Richard M. Stallman <rms@gnu.org>
parents: 6256
diff changeset
378 (put 'comint-replace-by-expanded-history 'menu-enable 'comint-input-autoexpand)
1131
853d0d4c61fb entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 932
diff changeset
379 (put 'comint-input-ring 'permanent-local t)
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
380 (put 'comint-input-ring-index 'permanent-local t)
22265
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
381 (put 'comint-save-input-ring-index 'permanent-local t)
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
382 (put 'comint-input-autoexpand 'permanent-local t)
6187
280d4a97da69 (comint-input-filter-functions)
Richard M. Stallman <rms@gnu.org>
parents: 6185
diff changeset
383 (put 'comint-input-filter-functions 'permanent-local t)
280d4a97da69 (comint-input-filter-functions)
Richard M. Stallman <rms@gnu.org>
parents: 6185
diff changeset
384 (put 'comint-output-filter-functions 'permanent-local t)
19515
a0ecbe13b54b (comint-preoutput-filter-functions): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 18805
diff changeset
385 (put 'comint-preoutput-filter-functions 'permanent-local t)
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
386 (put 'comint-scroll-to-bottom-on-input 'permanent-local t)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
387 (put 'comint-scroll-to-bottom-on-output 'permanent-local t)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
388 (put 'comint-scroll-show-maximum-output 'permanent-local t)
1131
853d0d4c61fb entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 932
diff changeset
389 (put 'comint-ptyp 'permanent-local t)
861
345296f94a1e *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 846
diff changeset
390
17652
0d08e67b280f (comint-mode): Add a mode-class property.
Richard M. Stallman <rms@gnu.org>
parents: 17583
diff changeset
391 (put 'comint-mode 'mode-class 'special)
0d08e67b280f (comint-mode): Add a mode-class property.
Richard M. Stallman <rms@gnu.org>
parents: 17583
diff changeset
392
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
393 (defun comint-mode ()
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
394 "Major mode for interacting with an inferior interpreter.
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
395 Interpreter name is same as buffer name, sans the asterisks.
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
396 Return at end of buffer sends line as input.
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
397 Return not at end copies rest of line to end and sends it.
3386
bc4729d67e6e (comint-filter): Put window-start before the input.
Richard M. Stallman <rms@gnu.org>
parents: 3113
diff changeset
398 Setting variable `comint-eol-on-send' means jump to the end of the line
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
399 before submitting new input.
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
400
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
401 This mode is customised to create major modes such as Inferior Lisp
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
402 mode, Shell mode, etc. This can be done by setting the hooks
6187
280d4a97da69 (comint-input-filter-functions)
Richard M. Stallman <rms@gnu.org>
parents: 6185
diff changeset
403 `comint-input-filter-functions', `comint-input-filter', `comint-input-sender'
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
404 and `comint-get-old-input' to appropriate functions, and the variable
3386
bc4729d67e6e (comint-filter): Put window-start before the input.
Richard M. Stallman <rms@gnu.org>
parents: 3113
diff changeset
405 `comint-prompt-regexp' to the appropriate regular expression.
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
406
3386
bc4729d67e6e (comint-filter): Put window-start before the input.
Richard M. Stallman <rms@gnu.org>
parents: 3113
diff changeset
407 An input history is maintained of size `comint-input-ring-size', and
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
408 can be accessed with the commands \\[comint-next-input], \\[comint-previous-input], and \\[comint-dynamic-list-input-ring].
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
409 Input ring history expansion can be achieved with the commands
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
410 \\[comint-replace-by-expanded-history] or \\[comint-magic-space].
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
411 Input ring expansion is controlled by the variable `comint-input-autoexpand',
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
412 and addition is controlled by the variable `comint-input-ignoredups'.
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
413
3386
bc4729d67e6e (comint-filter): Put window-start before the input.
Richard M. Stallman <rms@gnu.org>
parents: 3113
diff changeset
414 Commands with no default key bindings include `send-invisible',
6507
ff41e0e932b8 (comint-run): New command.
Richard M. Stallman <rms@gnu.org>
parents: 6256
diff changeset
415 `comint-dynamic-complete', `comint-dynamic-list-filename-completions', and
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
416 `comint-magic-space'.
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
417
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
418 Input to, and output from, the subprocess can cause the window to scroll to
6187
280d4a97da69 (comint-input-filter-functions)
Richard M. Stallman <rms@gnu.org>
parents: 6185
diff changeset
419 the end of the buffer. See variables `comint-output-filter-functions',
19515
a0ecbe13b54b (comint-preoutput-filter-functions): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 18805
diff changeset
420 `comint-preoutput-filter-functions', `comint-scroll-to-bottom-on-input',
a0ecbe13b54b (comint-preoutput-filter-functions): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 18805
diff changeset
421 and `comint-scroll-to-bottom-on-output'.
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
422
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
423 If you accidentally suspend your process, use \\[comint-continue-subjob]
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
424 to continue it.
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
425
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
426 \\{comint-mode-map}
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
427
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
428 Entry to this mode runs the hooks on `comint-mode-hook'."
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
429 (interactive)
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
430 ;; Do not remove this. All major modes must do this.
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
431 (kill-all-local-variables)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
432 (setq major-mode 'comint-mode)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
433 (setq mode-name "Comint")
7071
058f19d36c07 (comint-mode): Remove space after `:' in mode-line-process.
Richard M. Stallman <rms@gnu.org>
parents: 7048
diff changeset
434 (setq mode-line-process '(":%s"))
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
435 (use-local-map comint-mode-map)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
436 (make-local-variable 'comint-last-input-start)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
437 (setq comint-last-input-start (make-marker))
6998
40163ff9fc7c (comint-mode): Set comint-last-input-start and
Richard M. Stallman <rms@gnu.org>
parents: 6958
diff changeset
438 (set-marker comint-last-input-start (point-min))
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
439 (make-local-variable 'comint-last-input-end)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
440 (setq comint-last-input-end (make-marker))
6998
40163ff9fc7c (comint-mode): Set comint-last-input-start and
Richard M. Stallman <rms@gnu.org>
parents: 6958
diff changeset
441 (set-marker comint-last-input-end (point-min))
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
442 (make-local-variable 'comint-last-output-start)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
443 (setq comint-last-output-start (make-marker))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
444 (make-local-variable 'comint-prompt-regexp) ; Don't set; default
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
445 (make-local-variable 'comint-input-ring-size) ; ...to global val.
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
446 (make-local-variable 'comint-input-ring)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
447 (make-local-variable 'comint-input-ring-file-name)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
448 (or (and (boundp 'comint-input-ring) comint-input-ring)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
449 (setq comint-input-ring (make-ring comint-input-ring-size)))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
450 (make-local-variable 'comint-input-ring-index)
22265
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
451 (make-local-variable 'comint-save-input-ring-index)
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
452 (or (and (boundp 'comint-input-ring-index) comint-input-ring-index)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
453 (setq comint-input-ring-index nil))
22265
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
454 (or (and (boundp 'comint-save-input-ring-index) comint-save-input-ring-index)
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
455 (setq comint-save-input-ring-index nil))
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
456 (make-local-variable 'comint-matching-input-from-input-string)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
457 (make-local-variable 'comint-input-autoexpand)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
458 (make-local-variable 'comint-input-ignoredups)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
459 (make-local-variable 'comint-delimiter-argument-list)
12208
d10ef5c093ce (comint-mode): Use make-local-hook.
Karl Heuer <kwzh@gnu.org>
parents: 12058
diff changeset
460 (make-local-hook 'comint-dynamic-complete-functions)
6256
3810012eb29f (comint-completion-fignore): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 6239
diff changeset
461 (make-local-variable 'comint-completion-fignore)
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
462 (make-local-variable 'comint-get-old-input)
12208
d10ef5c093ce (comint-mode): Use make-local-hook.
Karl Heuer <kwzh@gnu.org>
parents: 12058
diff changeset
463 (make-local-hook 'comint-input-filter-functions)
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
464 (make-local-variable 'comint-input-filter)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
465 (make-local-variable 'comint-input-sender)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
466 (make-local-variable 'comint-eol-on-send)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
467 (make-local-variable 'comint-scroll-to-bottom-on-input)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
468 (make-local-variable 'comint-scroll-to-bottom-on-output)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
469 (make-local-variable 'comint-scroll-show-maximum-output)
23347
49e47671810d make pre-command-hook & comint-exec-hook local hooks.
Simon Marshall <simon@gnu.org>
parents: 23209
diff changeset
470 (make-local-hook 'pre-command-hook)
49e47671810d make pre-command-hook & comint-exec-hook local hooks.
Simon Marshall <simon@gnu.org>
parents: 23209
diff changeset
471 (add-hook 'pre-command-hook 'comint-preinput-scroll-to-bottom t t)
12208
d10ef5c093ce (comint-mode): Use make-local-hook.
Karl Heuer <kwzh@gnu.org>
parents: 12058
diff changeset
472 (make-local-hook 'comint-output-filter-functions)
23347
49e47671810d make pre-command-hook & comint-exec-hook local hooks.
Simon Marshall <simon@gnu.org>
parents: 23209
diff changeset
473 (make-local-hook 'comint-exec-hook)
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
474 (make-local-variable 'comint-ptyp)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
475 (make-local-variable 'comint-process-echoes)
15817
9e94b5fdaab1 (comint-file-name-chars): Was comint-file-name-regexp.
Richard M. Stallman <rms@gnu.org>
parents: 15727
diff changeset
476 (make-local-variable 'comint-file-name-chars)
11187
ac3611b5f490 Added support for special (quoted) characters in file names:
Simon Marshall <simon@gnu.org>
parents: 11156
diff changeset
477 (make-local-variable 'comint-file-name-quote-list)
22265
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
478 (make-local-variable 'comint-accum-marker)
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
479 (setq comint-accum-marker (make-marker))
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
480 (set-marker comint-accum-marker nil)
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
481 (run-hooks 'comint-mode-hook))
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
482
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
483 (if comint-mode-map
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
484 nil
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
485 ;; Keys:
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
486 (setq comint-mode-map (make-sparse-keymap))
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
487 (define-key comint-mode-map "\ep" 'comint-previous-input)
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
488 (define-key comint-mode-map "\en" 'comint-next-input)
10125
317294dfa695 (comint-mode-map): Treat C-up, C-down like M-p, M-n.
Richard M. Stallman <rms@gnu.org>
parents: 9919
diff changeset
489 (define-key comint-mode-map [C-up] 'comint-previous-input)
317294dfa695 (comint-mode-map): Treat C-up, C-down like M-p, M-n.
Richard M. Stallman <rms@gnu.org>
parents: 9919
diff changeset
490 (define-key comint-mode-map [C-down] 'comint-next-input)
2673
27dd7479b158 (comint-previous-matching-input): New command, on M-r.
Richard M. Stallman <rms@gnu.org>
parents: 2627
diff changeset
491 (define-key comint-mode-map "\er" 'comint-previous-matching-input)
27dd7479b158 (comint-previous-matching-input): New command, on M-r.
Richard M. Stallman <rms@gnu.org>
parents: 2627
diff changeset
492 (define-key comint-mode-map "\es" 'comint-next-matching-input)
22272
91aa269656e4 (comint-mode-map): Move bindings of
Richard M. Stallman <rms@gnu.org>
parents: 22265
diff changeset
493 (define-key comint-mode-map [?\C-c ?\M-r] 'comint-previous-matching-input-from-input)
91aa269656e4 (comint-mode-map): Move bindings of
Richard M. Stallman <rms@gnu.org>
parents: 22265
diff changeset
494 (define-key comint-mode-map [?\C-c ?\M-s] 'comint-next-matching-input-from-input)
5284
9c8749be37da (comint-read-input-ring): New arg SILENT.
Richard M. Stallman <rms@gnu.org>
parents: 5166
diff changeset
495 (define-key comint-mode-map "\e\C-l" 'comint-show-output)
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
496 (define-key comint-mode-map "\C-m" 'comint-send-input)
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
497 (define-key comint-mode-map "\C-d" 'comint-delchar-or-maybe-eof)
22265
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
498 (define-key comint-mode-map "\C-c " 'comint-accumulate)
22272
91aa269656e4 (comint-mode-map): Move bindings of
Richard M. Stallman <rms@gnu.org>
parents: 22265
diff changeset
499 (define-key comint-mode-map "\C-c\C-x" 'comint-get-next-from-history)
22265
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
500 (define-key comint-mode-map "\C-c\C-a" 'comint-bol-or-process-mark)
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
501 (define-key comint-mode-map "\C-c\C-u" 'comint-kill-input)
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
502 (define-key comint-mode-map "\C-c\C-w" 'backward-kill-word)
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
503 (define-key comint-mode-map "\C-c\C-c" 'comint-interrupt-subjob)
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
504 (define-key comint-mode-map "\C-c\C-z" 'comint-stop-subjob)
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
505 (define-key comint-mode-map "\C-c\C-\\" 'comint-quit-subjob)
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
506 (define-key comint-mode-map "\C-c\C-m" 'comint-copy-old-input)
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
507 (define-key comint-mode-map "\C-c\C-o" 'comint-kill-output)
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
508 (define-key comint-mode-map "\C-c\C-r" 'comint-show-output)
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
509 (define-key comint-mode-map "\C-c\C-e" 'comint-show-maximum-output)
7048
d4575065e6aa (comint-mode-map): comint-dynamic-list-input-ring now on C-c C-l.
Richard M. Stallman <rms@gnu.org>
parents: 6998
diff changeset
510 (define-key comint-mode-map "\C-c\C-l" 'comint-dynamic-list-input-ring)
4112
ab7dee78e335 (comint-{next,prev}-prompt, comint-send-eof): New functions.
Roland McGrath <roland@gnu.org>
parents: 3985
diff changeset
511 (define-key comint-mode-map "\C-c\C-n" 'comint-next-prompt)
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
512 (define-key comint-mode-map "\C-c\C-p" 'comint-previous-prompt)
4112
ab7dee78e335 (comint-{next,prev}-prompt, comint-send-eof): New functions.
Roland McGrath <roland@gnu.org>
parents: 3985
diff changeset
513 (define-key comint-mode-map "\C-c\C-d" 'comint-send-eof)
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
514 ;; Menu bars:
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
515 ;; completion:
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
516 (define-key comint-mode-map [menu-bar completion]
4899
3b157c1195a6 (comint-mode-map): Merge menu bar item Output into Input.
Richard M. Stallman <rms@gnu.org>
parents: 4890
diff changeset
517 (cons "Complete" (make-sparse-keymap "Complete")))
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
518 (define-key comint-mode-map [menu-bar completion complete-expand]
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
519 '("Expand File Name" . comint-replace-by-expanded-filename))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
520 (define-key comint-mode-map [menu-bar completion complete-listing]
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
521 '("File Completion Listing" . comint-dynamic-list-filename-completions))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
522 (define-key comint-mode-map [menu-bar completion complete-file]
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
523 '("Complete File Name" . comint-dynamic-complete-filename))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
524 (define-key comint-mode-map [menu-bar completion complete]
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
525 '("Complete Before Point" . comint-dynamic-complete))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
526 ;; Input history:
6148
ec063baec3e0 (full-copy-sparse-keymap): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 6095
diff changeset
527 (define-key comint-mode-map [menu-bar inout]
4899
3b157c1195a6 (comint-mode-map): Merge menu bar item Output into Input.
Richard M. Stallman <rms@gnu.org>
parents: 4890
diff changeset
528 (cons "In/Out" (make-sparse-keymap "In/Out")))
6148
ec063baec3e0 (full-copy-sparse-keymap): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 6095
diff changeset
529 (define-key comint-mode-map [menu-bar inout kill-output]
4899
3b157c1195a6 (comint-mode-map): Merge menu bar item Output into Input.
Richard M. Stallman <rms@gnu.org>
parents: 4890
diff changeset
530 '("Kill Current Output Group" . comint-kill-output))
6148
ec063baec3e0 (full-copy-sparse-keymap): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 6095
diff changeset
531 (define-key comint-mode-map [menu-bar inout next-prompt]
4899
3b157c1195a6 (comint-mode-map): Merge menu bar item Output into Input.
Richard M. Stallman <rms@gnu.org>
parents: 4890
diff changeset
532 '("Forward Output Group" . comint-next-prompt))
6148
ec063baec3e0 (full-copy-sparse-keymap): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 6095
diff changeset
533 (define-key comint-mode-map [menu-bar inout previous-prompt]
4899
3b157c1195a6 (comint-mode-map): Merge menu bar item Output into Input.
Richard M. Stallman <rms@gnu.org>
parents: 4890
diff changeset
534 '("Backward Output Group" . comint-previous-prompt))
6148
ec063baec3e0 (full-copy-sparse-keymap): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 6095
diff changeset
535 (define-key comint-mode-map [menu-bar inout show-maximum-output]
4899
3b157c1195a6 (comint-mode-map): Merge menu bar item Output into Input.
Richard M. Stallman <rms@gnu.org>
parents: 4890
diff changeset
536 '("Show Maximum Output" . comint-show-maximum-output))
6148
ec063baec3e0 (full-copy-sparse-keymap): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 6095
diff changeset
537 (define-key comint-mode-map [menu-bar inout show-output]
4899
3b157c1195a6 (comint-mode-map): Merge menu bar item Output into Input.
Richard M. Stallman <rms@gnu.org>
parents: 4890
diff changeset
538 '("Show Current Output Group" . comint-show-output))
6148
ec063baec3e0 (full-copy-sparse-keymap): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 6095
diff changeset
539 (define-key comint-mode-map [menu-bar inout kill-input]
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
540 '("Kill Current Input" . comint-kill-input))
6148
ec063baec3e0 (full-copy-sparse-keymap): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 6095
diff changeset
541 (define-key comint-mode-map [menu-bar inout copy-input]
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
542 '("Copy Old Input" . comint-copy-old-input))
6148
ec063baec3e0 (full-copy-sparse-keymap): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 6095
diff changeset
543 (define-key comint-mode-map [menu-bar inout forward-matching-history]
4899
3b157c1195a6 (comint-mode-map): Merge menu bar item Output into Input.
Richard M. Stallman <rms@gnu.org>
parents: 4890
diff changeset
544 '("Forward Matching Input..." . comint-forward-matching-input))
6148
ec063baec3e0 (full-copy-sparse-keymap): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 6095
diff changeset
545 (define-key comint-mode-map [menu-bar inout backward-matching-history]
4899
3b157c1195a6 (comint-mode-map): Merge menu bar item Output into Input.
Richard M. Stallman <rms@gnu.org>
parents: 4890
diff changeset
546 '("Backward Matching Input..." . comint-backward-matching-input))
6148
ec063baec3e0 (full-copy-sparse-keymap): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 6095
diff changeset
547 (define-key comint-mode-map [menu-bar inout next-matching-history]
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
548 '("Next Matching Input..." . comint-next-matching-input))
6148
ec063baec3e0 (full-copy-sparse-keymap): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 6095
diff changeset
549 (define-key comint-mode-map [menu-bar inout previous-matching-history]
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
550 '("Previous Matching Input..." . comint-previous-matching-input))
6148
ec063baec3e0 (full-copy-sparse-keymap): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 6095
diff changeset
551 (define-key comint-mode-map [menu-bar inout next-matching-history-from-input]
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
552 '("Next Matching Current Input" . comint-next-matching-input-from-input))
6148
ec063baec3e0 (full-copy-sparse-keymap): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 6095
diff changeset
553 (define-key comint-mode-map [menu-bar inout previous-matching-history-from-input]
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
554 '("Previous Matching Current Input" . comint-previous-matching-input-from-input))
6148
ec063baec3e0 (full-copy-sparse-keymap): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 6095
diff changeset
555 (define-key comint-mode-map [menu-bar inout next-history]
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
556 '("Next Input" . comint-next-input))
6148
ec063baec3e0 (full-copy-sparse-keymap): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 6095
diff changeset
557 (define-key comint-mode-map [menu-bar inout previous-history]
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
558 '("Previous Input" . comint-previous-input))
6148
ec063baec3e0 (full-copy-sparse-keymap): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 6095
diff changeset
559 (define-key comint-mode-map [menu-bar inout list-history]
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
560 '("List Input History" . comint-dynamic-list-input-ring))
6148
ec063baec3e0 (full-copy-sparse-keymap): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 6095
diff changeset
561 (define-key comint-mode-map [menu-bar inout expand-history]
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
562 '("Expand History Before Point" . comint-replace-by-expanded-history))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
563 ;; Signals
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
564 (define-key comint-mode-map [menu-bar signals]
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
565 (cons "Signals" (make-sparse-keymap "Signals")))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
566 (define-key comint-mode-map [menu-bar signals eof]
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
567 '("EOF" . comint-send-eof))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
568 (define-key comint-mode-map [menu-bar signals kill]
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
569 '("KILL" . comint-kill-subjob))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
570 (define-key comint-mode-map [menu-bar signals quit]
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
571 '("QUIT" . comint-quit-subjob))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
572 (define-key comint-mode-map [menu-bar signals cont]
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
573 '("CONT" . comint-continue-subjob))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
574 (define-key comint-mode-map [menu-bar signals stop]
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
575 '("STOP" . comint-stop-subjob))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
576 (define-key comint-mode-map [menu-bar signals break]
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
577 '("BREAK" . comint-interrupt-subjob))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
578 ;; Put them in the menu bar:
6148
ec063baec3e0 (full-copy-sparse-keymap): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 6095
diff changeset
579 (setq menu-bar-final-items (append '(completion inout signals)
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
580 menu-bar-final-items))
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
581 )
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
582
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
583 (defun comint-check-proc (buffer)
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
584 "Return t if there is a living process associated w/buffer BUFFER.
9388
c9b5541ec9f5 (comint-check-proc): Recognise `open'.
Richard M. Stallman <rms@gnu.org>
parents: 9245
diff changeset
585 Living means the status is `open', `run', or `stop'.
3386
bc4729d67e6e (comint-filter): Put window-start before the input.
Richard M. Stallman <rms@gnu.org>
parents: 3113
diff changeset
586 BUFFER can be either a buffer or the name of one."
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
587 (let ((proc (get-buffer-process buffer)))
9388
c9b5541ec9f5 (comint-check-proc): Recognise `open'.
Richard M. Stallman <rms@gnu.org>
parents: 9245
diff changeset
588 (and proc (memq (process-status proc) '(open run stop)))))
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
589
14644
325bc6726a7b (make-comint, comint-run): Fix autoload cookie.
Erik Naggum <erik@naggum.no>
parents: 14169
diff changeset
590 ;;;###autoload
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
591 (defun make-comint (name program &optional startfile &rest switches)
1839
e10cdcb857d2 (make-comint): Added docstring.
Roland McGrath <roland@gnu.org>
parents: 1821
diff changeset
592 "Make a comint process NAME in a buffer, running PROGRAM.
e10cdcb857d2 (make-comint): Added docstring.
Roland McGrath <roland@gnu.org>
parents: 1821
diff changeset
593 The name of the buffer is made by surrounding NAME with `*'s.
9388
c9b5541ec9f5 (comint-check-proc): Recognise `open'.
Richard M. Stallman <rms@gnu.org>
parents: 9245
diff changeset
594 PROGRAM should be either a string denoting an executable program to create
c9b5541ec9f5 (comint-check-proc): Recognise `open'.
Richard M. Stallman <rms@gnu.org>
parents: 9245
diff changeset
595 via `start-process', or a cons pair of the form (HOST . SERVICE) denoting a TCP
c9b5541ec9f5 (comint-check-proc): Recognise `open'.
Richard M. Stallman <rms@gnu.org>
parents: 9245
diff changeset
596 connection to be opened via `open-network-stream'. If there is already a
c9b5541ec9f5 (comint-check-proc): Recognise `open'.
Richard M. Stallman <rms@gnu.org>
parents: 9245
diff changeset
597 running process in that buffer, it is not restarted. Optional third arg
c9b5541ec9f5 (comint-check-proc): Recognise `open'.
Richard M. Stallman <rms@gnu.org>
parents: 9245
diff changeset
598 STARTFILE is the name of a file to send the contents of to the process.
c9b5541ec9f5 (comint-check-proc): Recognise `open'.
Richard M. Stallman <rms@gnu.org>
parents: 9245
diff changeset
599
c9b5541ec9f5 (comint-check-proc): Recognise `open'.
Richard M. Stallman <rms@gnu.org>
parents: 9245
diff changeset
600 If PROGRAM is a string, any more args are arguments to PROGRAM."
11310
3466b44b0a11 (make-comint): Error, if start-process is not fboundp.
Richard M. Stallman <rms@gnu.org>
parents: 11234
diff changeset
601 (or (fboundp 'start-process)
3466b44b0a11 (make-comint): Error, if start-process is not fboundp.
Richard M. Stallman <rms@gnu.org>
parents: 11234
diff changeset
602 (error "Multi-processing is not supported for this system"))
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
603 (let ((buffer (get-buffer-create (concat "*" name "*"))))
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
604 ;; If no process, or nuked process, crank up a new one and put buffer in
1839
e10cdcb857d2 (make-comint): Added docstring.
Roland McGrath <roland@gnu.org>
parents: 1821
diff changeset
605 ;; comint mode. Otherwise, leave buffer and existing process alone.
182
35ea4993d08c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 114
diff changeset
606 (cond ((not (comint-check-proc buffer))
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
607 (save-excursion
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
608 (set-buffer buffer)
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
609 (comint-mode)) ; Install local vars, mode, keymap, ...
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
610 (comint-exec buffer name program startfile switches)))
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
611 buffer))
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
612
14644
325bc6726a7b (make-comint, comint-run): Fix autoload cookie.
Erik Naggum <erik@naggum.no>
parents: 14169
diff changeset
613 ;;;###autoload
6507
ff41e0e932b8 (comint-run): New command.
Richard M. Stallman <rms@gnu.org>
parents: 6256
diff changeset
614 (defun comint-run (program)
ff41e0e932b8 (comint-run): New command.
Richard M. Stallman <rms@gnu.org>
parents: 6256
diff changeset
615 "Run PROGRAM in a comint buffer and switch to it.
ff41e0e932b8 (comint-run): New command.
Richard M. Stallman <rms@gnu.org>
parents: 6256
diff changeset
616 The buffer name is made by surrounding the file name of PROGRAM with `*'s.
ff41e0e932b8 (comint-run): New command.
Richard M. Stallman <rms@gnu.org>
parents: 6256
diff changeset
617 The file name is used to make a symbol name, such as `comint-sh-hook', and any
ff41e0e932b8 (comint-run): New command.
Richard M. Stallman <rms@gnu.org>
parents: 6256
diff changeset
618 hooks on this symbol are run in the buffer.
ff41e0e932b8 (comint-run): New command.
Richard M. Stallman <rms@gnu.org>
parents: 6256
diff changeset
619 See `make-comint' and `comint-exec'."
ff41e0e932b8 (comint-run): New command.
Richard M. Stallman <rms@gnu.org>
parents: 6256
diff changeset
620 (interactive "sRun program: ")
ff41e0e932b8 (comint-run): New command.
Richard M. Stallman <rms@gnu.org>
parents: 6256
diff changeset
621 (let ((name (file-name-nondirectory program)))
ff41e0e932b8 (comint-run): New command.
Richard M. Stallman <rms@gnu.org>
parents: 6256
diff changeset
622 (switch-to-buffer (make-comint name program))
ff41e0e932b8 (comint-run): New command.
Richard M. Stallman <rms@gnu.org>
parents: 6256
diff changeset
623 (run-hooks (intern-soft (concat "comint-" name "-hook")))))
ff41e0e932b8 (comint-run): New command.
Richard M. Stallman <rms@gnu.org>
parents: 6256
diff changeset
624
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
625 (defun comint-exec (buffer name command startfile switches)
3386
bc4729d67e6e (comint-filter): Put window-start before the input.
Richard M. Stallman <rms@gnu.org>
parents: 3113
diff changeset
626 "Start up a process in buffer BUFFER for comint modes.
1839
e10cdcb857d2 (make-comint): Added docstring.
Roland McGrath <roland@gnu.org>
parents: 1821
diff changeset
627 Blasts any old process running in the buffer. Doesn't set the buffer mode.
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
628 You can use this to cheaply run a series of processes in the same comint
3386
bc4729d67e6e (comint-filter): Put window-start before the input.
Richard M. Stallman <rms@gnu.org>
parents: 3113
diff changeset
629 buffer. The hook `comint-exec-hook' is run after each exec."
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
630 (save-excursion
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
631 (set-buffer buffer)
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
632 (let ((proc (get-buffer-process buffer))) ; Blast any old process.
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
633 (if proc (delete-process proc)))
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
634 ;; Crank up a new process
9388
c9b5541ec9f5 (comint-check-proc): Recognise `open'.
Richard M. Stallman <rms@gnu.org>
parents: 9245
diff changeset
635 (let ((proc
c9b5541ec9f5 (comint-check-proc): Recognise `open'.
Richard M. Stallman <rms@gnu.org>
parents: 9245
diff changeset
636 (if (consp command)
c9b5541ec9f5 (comint-check-proc): Recognise `open'.
Richard M. Stallman <rms@gnu.org>
parents: 9245
diff changeset
637 (open-network-stream name buffer (car command) (cdr command))
c9b5541ec9f5 (comint-check-proc): Recognise `open'.
Richard M. Stallman <rms@gnu.org>
parents: 9245
diff changeset
638 (comint-exec-1 name buffer command switches))))
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
639 (set-process-filter proc 'comint-output-filter)
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
640 (make-local-variable 'comint-ptyp)
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
641 (setq comint-ptyp process-connection-type) ; T if pty, NIL if pipe.
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
642 ;; Jump to the end, and set the process mark.
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
643 (goto-char (point-max))
705
c7d478752305 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 662
diff changeset
644 (set-marker (process-mark proc) (point))
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
645 ;; Feed it the startfile.
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
646 (cond (startfile
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
647 ;;This is guaranteed to wait long enough
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
648 ;;but has bad results if the comint does not prompt at all
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
649 ;; (while (= size (buffer-size))
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
650 ;; (sleep-for 1))
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
651 ;;I hope 1 second is enough!
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
652 (sleep-for 1)
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
653 (goto-char (point-max))
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
654 (insert-file-contents startfile)
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
655 (setq startfile (buffer-substring (point) (point-max)))
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
656 (delete-region (point) (point-max))
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
657 (comint-send-string proc startfile)))
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
658 (run-hooks 'comint-exec-hook)
705
c7d478752305 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 662
diff changeset
659 buffer)))
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
660
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
661 ;; This auxiliary function cranks up the process for comint-exec in
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
662 ;; the appropriate environment.
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
663
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
664 (defun comint-exec-1 (name buffer command switches)
6185
82a92cf44059 (comint-after-partial-filename-command,
Richard M. Stallman <rms@gnu.org>
parents: 6154
diff changeset
665 (let ((process-environment
6750
a864110c6fc7 (comint-exec-1): Handle both termcap and terminfo.
Karl Heuer <kwzh@gnu.org>
parents: 6507
diff changeset
666 (nconc
7327
1e2d4da6b5c4 Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 7071
diff changeset
667 ;; If using termcap, we specify `emacs' as the terminal type
1e2d4da6b5c4 Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 7071
diff changeset
668 ;; because that lets us specify a width.
14814
3793008500cd (comint-exec-1): Use dumb instead of unknown, for terminfo.
Richard M. Stallman <rms@gnu.org>
parents: 14644
diff changeset
669 ;; If using terminfo, we specify `dumb' because that is
7327
1e2d4da6b5c4 Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 7071
diff changeset
670 ;; a defined terminal type. `emacs' is not a defined terminal type
1e2d4da6b5c4 Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 7071
diff changeset
671 ;; and there is no way for us to define it here.
1e2d4da6b5c4 Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 7071
diff changeset
672 ;; Some programs that use terminfo get very confused
1e2d4da6b5c4 Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 7071
diff changeset
673 ;; if TERM is not a valid terminal type.
6750
a864110c6fc7 (comint-exec-1): Handle both termcap and terminfo.
Karl Heuer <kwzh@gnu.org>
parents: 6507
diff changeset
674 (if (and (boundp 'system-uses-terminfo) system-uses-terminfo)
17159
6f1e715cbd58 minor bug fixes/enhancements to comint-delchar-or-maybe-eof, send-invisible, comint-exec-1.
Simon Marshall <simon@gnu.org>
parents: 16944
diff changeset
675 (list "TERM=dumb" "TERMCAP="
6750
a864110c6fc7 (comint-exec-1): Handle both termcap and terminfo.
Karl Heuer <kwzh@gnu.org>
parents: 6507
diff changeset
676 (format "COLUMNS=%d" (frame-width)))
13271
6a084ce822e0 (comint-exec-1): Don't alter EMACS envvar if it's already defined.
Richard M. Stallman <rms@gnu.org>
parents: 13094
diff changeset
677 (list "TERM=emacs"
9919
08efed8251d6 (comint-exec-1): Terminate TERMCAP with colon.
Richard M. Stallman <rms@gnu.org>
parents: 9873
diff changeset
678 (format "TERMCAP=emacs:co#%d:tc=unknown:" (frame-width))))
13271
6a084ce822e0 (comint-exec-1): Don't alter EMACS envvar if it's already defined.
Richard M. Stallman <rms@gnu.org>
parents: 13094
diff changeset
679 (if (getenv "EMACS") nil (list "EMACS=t"))
9873
03f3cfdb6a11 (comint-exec-1): Make sure default-directory is a real dir.
Richard M. Stallman <rms@gnu.org>
parents: 9764
diff changeset
680 process-environment))
03f3cfdb6a11 (comint-exec-1): Make sure default-directory is a real dir.
Richard M. Stallman <rms@gnu.org>
parents: 9764
diff changeset
681 (default-directory
16944
54108c7f46e6 (comint-exec-1): Use file-accessible-directory-p.
Richard M. Stallman <rms@gnu.org>
parents: 16849
diff changeset
682 (if (file-accessible-directory-p default-directory)
9873
03f3cfdb6a11 (comint-exec-1): Make sure default-directory is a real dir.
Richard M. Stallman <rms@gnu.org>
parents: 9764
diff changeset
683 default-directory
22652
a453ed3fb89f (comint-exec-1): Setup coding systems appropriately.
Richard M. Stallman <rms@gnu.org>
parents: 22569
diff changeset
684 (char-to-string directory-sep-char)))
a453ed3fb89f (comint-exec-1): Setup coding systems appropriately.
Richard M. Stallman <rms@gnu.org>
parents: 22569
diff changeset
685 proc decoding encoding changed)
a453ed3fb89f (comint-exec-1): Setup coding systems appropriately.
Richard M. Stallman <rms@gnu.org>
parents: 22569
diff changeset
686 (setq proc (apply 'start-process name buffer command switches))
a453ed3fb89f (comint-exec-1): Setup coding systems appropriately.
Richard M. Stallman <rms@gnu.org>
parents: 22569
diff changeset
687 (let ((coding-systems (process-coding-system proc)))
a453ed3fb89f (comint-exec-1): Setup coding systems appropriately.
Richard M. Stallman <rms@gnu.org>
parents: 22569
diff changeset
688 (setq decoding (car coding-systems)
a453ed3fb89f (comint-exec-1): Setup coding systems appropriately.
Richard M. Stallman <rms@gnu.org>
parents: 22569
diff changeset
689 encoding (cdr coding-systems)))
a453ed3fb89f (comint-exec-1): Setup coding systems appropriately.
Richard M. Stallman <rms@gnu.org>
parents: 22569
diff changeset
690 ;; If start-process decided to use some coding system for decoding
a453ed3fb89f (comint-exec-1): Setup coding systems appropriately.
Richard M. Stallman <rms@gnu.org>
parents: 22569
diff changeset
691 ;; data sent form the process and the coding system doesn't
a453ed3fb89f (comint-exec-1): Setup coding systems appropriately.
Richard M. Stallman <rms@gnu.org>
parents: 22569
diff changeset
692 ;; specify EOL conversion, we had better convert CRLF to LF.
a453ed3fb89f (comint-exec-1): Setup coding systems appropriately.
Richard M. Stallman <rms@gnu.org>
parents: 22569
diff changeset
693 (if (vectorp (coding-system-eol-type decoding))
a453ed3fb89f (comint-exec-1): Setup coding systems appropriately.
Richard M. Stallman <rms@gnu.org>
parents: 22569
diff changeset
694 (setq decoding (coding-system-change-eol-conversion decoding 'dos)
a453ed3fb89f (comint-exec-1): Setup coding systems appropriately.
Richard M. Stallman <rms@gnu.org>
parents: 22569
diff changeset
695 changed t))
a453ed3fb89f (comint-exec-1): Setup coding systems appropriately.
Richard M. Stallman <rms@gnu.org>
parents: 22569
diff changeset
696 ;; Even if start-process left the coding system for encoding data
a453ed3fb89f (comint-exec-1): Setup coding systems appropriately.
Richard M. Stallman <rms@gnu.org>
parents: 22569
diff changeset
697 ;; sent from the process undecided, we had better use the same one
a453ed3fb89f (comint-exec-1): Setup coding systems appropriately.
Richard M. Stallman <rms@gnu.org>
parents: 22569
diff changeset
698 ;; as what we use for decoding. But, we should suppress EOL
a453ed3fb89f (comint-exec-1): Setup coding systems appropriately.
Richard M. Stallman <rms@gnu.org>
parents: 22569
diff changeset
699 ;; conversion.
a453ed3fb89f (comint-exec-1): Setup coding systems appropriately.
Richard M. Stallman <rms@gnu.org>
parents: 22569
diff changeset
700 (if (and decoding (not encoding))
a453ed3fb89f (comint-exec-1): Setup coding systems appropriately.
Richard M. Stallman <rms@gnu.org>
parents: 22569
diff changeset
701 (setq encoding (coding-system-change-eol-conversion decoding 'unix)
a453ed3fb89f (comint-exec-1): Setup coding systems appropriately.
Richard M. Stallman <rms@gnu.org>
parents: 22569
diff changeset
702 changed t))
a453ed3fb89f (comint-exec-1): Setup coding systems appropriately.
Richard M. Stallman <rms@gnu.org>
parents: 22569
diff changeset
703 (if changed
a453ed3fb89f (comint-exec-1): Setup coding systems appropriately.
Richard M. Stallman <rms@gnu.org>
parents: 22569
diff changeset
704 (set-process-coding-system proc decoding encoding))
a453ed3fb89f (comint-exec-1): Setup coding systems appropriately.
Richard M. Stallman <rms@gnu.org>
parents: 22569
diff changeset
705 proc))
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
706
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
707 ;; Input history processing in a buffer
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
708 ;; ===========================================================================
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
709 ;; Useful input history functions, courtesy of the Ergo group.
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
710
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
711 ;; Eleven commands:
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
712 ;; comint-dynamic-list-input-ring List history in help buffer.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
713 ;; comint-previous-input Previous input...
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
714 ;; comint-previous-matching-input ...matching a string.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
715 ;; comint-previous-matching-input-from-input ... matching the current input.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
716 ;; comint-next-input Next input...
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
717 ;; comint-next-matching-input ...matching a string.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
718 ;; comint-next-matching-input-from-input ... matching the current input.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
719 ;; comint-backward-matching-input Backwards input...
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
720 ;; comint-forward-matching-input ...matching a string.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
721 ;; comint-replace-by-expanded-history Expand history at point;
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
722 ;; replace with expanded history.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
723 ;; comint-magic-space Expand history and insert space.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
724 ;;
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
725 ;; Three functions:
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
726 ;; comint-read-input-ring Read into comint-input-ring...
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
727 ;; comint-write-input-ring Write to comint-input-ring-file-name.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
728 ;; comint-replace-by-expanded-history-before-point Workhorse function.
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
729
5284
9c8749be37da (comint-read-input-ring): New arg SILENT.
Richard M. Stallman <rms@gnu.org>
parents: 5166
diff changeset
730 (defun comint-read-input-ring (&optional silent)
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
731 "Sets the buffer's `comint-input-ring' from a history file.
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
732 The name of the file is given by the variable `comint-input-ring-file-name'.
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
733 The history ring is of size `comint-input-ring-size', regardless of file size.
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
734 If `comint-input-ring-file-name' is nil this function does nothing.
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
735
5284
9c8749be37da (comint-read-input-ring): New arg SILENT.
Richard M. Stallman <rms@gnu.org>
parents: 5166
diff changeset
736 If the optional argument SILENT is non-nil, we say nothing about a
9c8749be37da (comint-read-input-ring): New arg SILENT.
Richard M. Stallman <rms@gnu.org>
parents: 5166
diff changeset
737 failure to read the history file.
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
738
5284
9c8749be37da (comint-read-input-ring): New arg SILENT.
Richard M. Stallman <rms@gnu.org>
parents: 5166
diff changeset
739 This function is useful for major mode commands and mode hooks.
9c8749be37da (comint-read-input-ring): New arg SILENT.
Richard M. Stallman <rms@gnu.org>
parents: 5166
diff changeset
740
9c8749be37da (comint-read-input-ring): New arg SILENT.
Richard M. Stallman <rms@gnu.org>
parents: 5166
diff changeset
741 The structure of the history file should be one input command per line,
9c8749be37da (comint-read-input-ring): New arg SILENT.
Richard M. Stallman <rms@gnu.org>
parents: 5166
diff changeset
742 with the most recent command last.
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
743 See also `comint-input-ignoredups' and `comint-write-input-ring'."
5016
11f0a3153f63 (comint-read-input-ring, comint-write-input-ring):
Richard M. Stallman <rms@gnu.org>
parents: 4993
diff changeset
744 (cond ((or (null comint-input-ring-file-name)
11f0a3153f63 (comint-read-input-ring, comint-write-input-ring):
Richard M. Stallman <rms@gnu.org>
parents: 4993
diff changeset
745 (equal comint-input-ring-file-name ""))
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
746 nil)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
747 ((not (file-readable-p comint-input-ring-file-name))
5284
9c8749be37da (comint-read-input-ring): New arg SILENT.
Richard M. Stallman <rms@gnu.org>
parents: 5166
diff changeset
748 (or silent
9c8749be37da (comint-read-input-ring): New arg SILENT.
Richard M. Stallman <rms@gnu.org>
parents: 5166
diff changeset
749 (message "Cannot read history file %s"
9c8749be37da (comint-read-input-ring): New arg SILENT.
Richard M. Stallman <rms@gnu.org>
parents: 5166
diff changeset
750 comint-input-ring-file-name)))
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
751 (t
8032
936532a595dd (comint-read-input-ring): Use ring-insert-at-beginning.
Richard M. Stallman <rms@gnu.org>
parents: 7846
diff changeset
752 (let ((history-buf (get-buffer-create " *temp*"))
936532a595dd (comint-read-input-ring): Use ring-insert-at-beginning.
Richard M. Stallman <rms@gnu.org>
parents: 7846
diff changeset
753 (file comint-input-ring-file-name)
936532a595dd (comint-read-input-ring): Use ring-insert-at-beginning.
Richard M. Stallman <rms@gnu.org>
parents: 7846
diff changeset
754 (count 0)
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
755 (ring (make-ring comint-input-ring-size)))
8032
936532a595dd (comint-read-input-ring): Use ring-insert-at-beginning.
Richard M. Stallman <rms@gnu.org>
parents: 7846
diff changeset
756 (unwind-protect
936532a595dd (comint-read-input-ring): Use ring-insert-at-beginning.
Richard M. Stallman <rms@gnu.org>
parents: 7846
diff changeset
757 (save-excursion
936532a595dd (comint-read-input-ring): Use ring-insert-at-beginning.
Richard M. Stallman <rms@gnu.org>
parents: 7846
diff changeset
758 (set-buffer history-buf)
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
759 (widen)
8032
936532a595dd (comint-read-input-ring): Use ring-insert-at-beginning.
Richard M. Stallman <rms@gnu.org>
parents: 7846
diff changeset
760 (erase-buffer)
936532a595dd (comint-read-input-ring): Use ring-insert-at-beginning.
Richard M. Stallman <rms@gnu.org>
parents: 7846
diff changeset
761 (insert-file-contents file)
936532a595dd (comint-read-input-ring): Use ring-insert-at-beginning.
Richard M. Stallman <rms@gnu.org>
parents: 7846
diff changeset
762 ;; Save restriction in case file is already visited...
936532a595dd (comint-read-input-ring): Use ring-insert-at-beginning.
Richard M. Stallman <rms@gnu.org>
parents: 7846
diff changeset
763 ;; Watch for those date stamps in history files!
936532a595dd (comint-read-input-ring): Use ring-insert-at-beginning.
Richard M. Stallman <rms@gnu.org>
parents: 7846
diff changeset
764 (goto-char (point-max))
936532a595dd (comint-read-input-ring): Use ring-insert-at-beginning.
Richard M. Stallman <rms@gnu.org>
parents: 7846
diff changeset
765 (while (and (< count comint-input-ring-size)
936532a595dd (comint-read-input-ring): Use ring-insert-at-beginning.
Richard M. Stallman <rms@gnu.org>
parents: 7846
diff changeset
766 (re-search-backward "^[ \t]*\\([^#\n].*\\)[ \t]*$"
936532a595dd (comint-read-input-ring): Use ring-insert-at-beginning.
Richard M. Stallman <rms@gnu.org>
parents: 7846
diff changeset
767 nil t))
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
768 (let ((history (buffer-substring (match-beginning 1)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
769 (match-end 1))))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
770 (if (or (null comint-input-ignoredups)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
771 (ring-empty-p ring)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
772 (not (string-equal (ring-ref ring 0) history)))
8032
936532a595dd (comint-read-input-ring): Use ring-insert-at-beginning.
Richard M. Stallman <rms@gnu.org>
parents: 7846
diff changeset
773 (ring-insert-at-beginning ring history)))
936532a595dd (comint-read-input-ring): Use ring-insert-at-beginning.
Richard M. Stallman <rms@gnu.org>
parents: 7846
diff changeset
774 (setq count (1+ count))))
936532a595dd (comint-read-input-ring): Use ring-insert-at-beginning.
Richard M. Stallman <rms@gnu.org>
parents: 7846
diff changeset
775 (kill-buffer history-buf))
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
776 (setq comint-input-ring ring
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
777 comint-input-ring-index nil)))))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
778
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
779 (defun comint-write-input-ring ()
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
780 "Writes the buffer's `comint-input-ring' to a history file.
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
781 The name of the file is given by the variable `comint-input-ring-file-name'.
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
782 The original contents of the file are lost if `comint-input-ring' is not empty.
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
783 If `comint-input-ring-file-name' is nil this function does nothing.
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
784
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
785 Useful within process sentinels.
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
786
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
787 See also `comint-read-input-ring'."
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
788 (cond ((or (null comint-input-ring-file-name)
5016
11f0a3153f63 (comint-read-input-ring, comint-write-input-ring):
Richard M. Stallman <rms@gnu.org>
parents: 4993
diff changeset
789 (equal comint-input-ring-file-name "")
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
790 (null comint-input-ring) (ring-empty-p comint-input-ring))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
791 nil)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
792 ((not (file-writable-p comint-input-ring-file-name))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
793 (message "Cannot write history file %s" comint-input-ring-file-name))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
794 (t
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
795 (let* ((history-buf (get-buffer-create " *Temp Input History*"))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
796 (ring comint-input-ring)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
797 (file comint-input-ring-file-name)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
798 (index (ring-length ring)))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
799 ;; Write it all out into a buffer first. Much faster, but messier,
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
800 ;; than writing it one line at a time.
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
801 (save-excursion
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
802 (set-buffer history-buf)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
803 (erase-buffer)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
804 (while (> index 0)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
805 (setq index (1- index))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
806 (insert (ring-ref ring index) ?\n))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
807 (write-region (buffer-string) nil file nil 'no-message)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
808 (kill-buffer nil))))))
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
809
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
810
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
811 (defun comint-dynamic-list-input-ring ()
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
812 "List in help buffer the buffer's input history."
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
813 (interactive)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
814 (if (or (not (ring-p comint-input-ring))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
815 (ring-empty-p comint-input-ring))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
816 (message "No history")
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
817 (let ((history nil)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
818 (history-buffer " *Input History*")
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
819 (index (1- (ring-length comint-input-ring)))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
820 (conf (current-window-configuration)))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
821 ;; We have to build up a list ourselves from the ring vector.
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
822 (while (>= index 0)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
823 (setq history (cons (ring-ref comint-input-ring index) history)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
824 index (1- index)))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
825 ;; Change "completion" to "history reference"
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
826 ;; to make the display accurate.
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
827 (with-output-to-temp-buffer history-buffer
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
828 (display-completion-list history)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
829 (set-buffer history-buffer)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
830 (forward-line 3)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
831 (while (search-backward "completion" nil 'move)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
832 (replace-match "history reference")))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
833 (sit-for 0)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
834 (message "Hit space to flush")
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
835 (let ((ch (read-event)))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
836 (if (eq ch ?\ )
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
837 (set-window-configuration conf)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
838 (setq unread-command-events (list ch)))))))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
839
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
840
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
841 (defun comint-regexp-arg (prompt)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
842 ;; Return list of regexp and prefix arg using PROMPT.
20020
c03bbe136bd0 (comint-regexp-arg): No need to bind
Karl Heuer <kwzh@gnu.org>
parents: 19842
diff changeset
843 (let* (;; Don't clobber this.
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
844 (last-command last-command)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
845 (regexp (read-from-minibuffer prompt nil nil nil
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
846 'minibuffer-history-search-history)))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
847 (list (if (string-equal regexp "")
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
848 (setcar minibuffer-history-search-history
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
849 (nth 1 minibuffer-history-search-history))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
850 regexp)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
851 (prefix-numeric-value current-prefix-arg))))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
852
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
853 (defun comint-search-arg (arg)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
854 ;; First make sure there is a ring and that we are after the process mark
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
855 (cond ((not (comint-after-pmark-p))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
856 (error "Not at command line"))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
857 ((or (null comint-input-ring)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
858 (ring-empty-p comint-input-ring))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
859 (error "Empty input ring"))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
860 ((zerop arg)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
861 ;; arg of zero resets search from beginning, and uses arg of 1
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
862 (setq comint-input-ring-index nil)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
863 1)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
864 (t
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
865 arg)))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
866
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
867 (defun comint-search-start (arg)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
868 ;; Index to start a directional search, starting at comint-input-ring-index
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
869 (if comint-input-ring-index
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
870 ;; If a search is running, offset by 1 in direction of arg
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
871 (mod (+ comint-input-ring-index (if (> arg 0) 1 -1))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
872 (ring-length comint-input-ring))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
873 ;; For a new search, start from beginning or end, as appropriate
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
874 (if (>= arg 0)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
875 0 ; First elt for forward search
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
876 (1- (ring-length comint-input-ring))))) ; Last elt for backward search
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
877
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
878 (defun comint-previous-input-string (arg)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
879 "Return the string ARG places along the input ring.
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
880 Moves relative to `comint-input-ring-index'."
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
881 (ring-ref comint-input-ring (if comint-input-ring-index
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
882 (mod (+ arg comint-input-ring-index)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
883 (ring-length comint-input-ring))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
884 arg)))
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
885
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
886 (defun comint-previous-input (arg)
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
887 "Cycle backwards through input history."
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
888 (interactive "*p")
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
889 (comint-previous-matching-input "." arg))
909
4c6cdb66c74c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 870
diff changeset
890
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
891 (defun comint-next-input (arg)
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
892 "Cycle forwards through input history."
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
893 (interactive "*p")
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
894 (comint-previous-input (- arg)))
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
895
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
896 (defun comint-previous-matching-input-string (regexp arg)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
897 "Return the string matching REGEXP ARG places along the input ring.
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
898 Moves relative to `comint-input-ring-index'."
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
899 (let* ((pos (comint-previous-matching-input-string-position regexp arg)))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
900 (if pos (ring-ref comint-input-ring pos))))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
901
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
902 (defun comint-previous-matching-input-string-position (regexp arg &optional start)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
903 "Return the index matching REGEXP ARG places along the input ring.
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
904 Moves relative to START, or `comint-input-ring-index'."
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
905 (if (or (not (ring-p comint-input-ring))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
906 (ring-empty-p comint-input-ring))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
907 (error "No history"))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
908 (let* ((len (ring-length comint-input-ring))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
909 (motion (if (> arg 0) 1 -1))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
910 (n (mod (- (or start (comint-search-start arg)) motion) len))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
911 (tried-each-ring-item nil)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
912 (prev nil))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
913 ;; Do the whole search as many times as the argument says.
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
914 (while (and (/= arg 0) (not tried-each-ring-item))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
915 ;; Step once.
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
916 (setq prev n
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
917 n (mod (+ n motion) len))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
918 ;; If we haven't reached a match, step some more.
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
919 (while (and (< n len) (not tried-each-ring-item)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
920 (not (string-match regexp (ring-ref comint-input-ring n))))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
921 (setq n (mod (+ n motion) len)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
922 ;; If we have gone all the way around in this search.
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
923 tried-each-ring-item (= n prev)))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
924 (setq arg (if (> arg 0) (1- arg) (1+ arg))))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
925 ;; Now that we know which ring element to use, if we found it, return that.
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
926 (if (string-match regexp (ring-ref comint-input-ring n))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
927 n)))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
928
2673
27dd7479b158 (comint-previous-matching-input): New command, on M-r.
Richard M. Stallman <rms@gnu.org>
parents: 2627
diff changeset
929 (defun comint-previous-matching-input (regexp arg)
27dd7479b158 (comint-previous-matching-input): New command, on M-r.
Richard M. Stallman <rms@gnu.org>
parents: 2627
diff changeset
930 "Search backwards through input history for match for REGEXP.
27dd7479b158 (comint-previous-matching-input): New command, on M-r.
Richard M. Stallman <rms@gnu.org>
parents: 2627
diff changeset
931 \(Previous history elements are earlier commands.)
27dd7479b158 (comint-previous-matching-input): New command, on M-r.
Richard M. Stallman <rms@gnu.org>
parents: 2627
diff changeset
932 With prefix argument N, search for Nth previous match.
27dd7479b158 (comint-previous-matching-input): New command, on M-r.
Richard M. Stallman <rms@gnu.org>
parents: 2627
diff changeset
933 If N is negative, find the next or Nth next match."
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
934 (interactive (comint-regexp-arg "Previous input matching (regexp): "))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
935 (setq arg (comint-search-arg arg))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
936 (let ((pos (comint-previous-matching-input-string-position regexp arg)))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
937 ;; Has a match been found?
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
938 (if (null pos)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
939 (error "Not found")
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
940 (setq comint-input-ring-index pos)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
941 (message "History item: %d" (1+ pos))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
942 (delete-region
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
943 ;; Can't use kill-region as it sets this-command
22265
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
944 (or (marker-position comint-accum-marker)
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
945 (process-mark (get-buffer-process (current-buffer))))
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
946 (point))
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
947 (insert (ring-ref comint-input-ring pos)))))
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
948
2673
27dd7479b158 (comint-previous-matching-input): New command, on M-r.
Richard M. Stallman <rms@gnu.org>
parents: 2627
diff changeset
949 (defun comint-next-matching-input (regexp arg)
27dd7479b158 (comint-previous-matching-input): New command, on M-r.
Richard M. Stallman <rms@gnu.org>
parents: 2627
diff changeset
950 "Search forwards through input history for match for REGEXP.
27dd7479b158 (comint-previous-matching-input): New command, on M-r.
Richard M. Stallman <rms@gnu.org>
parents: 2627
diff changeset
951 \(Later history elements are more recent commands.)
27dd7479b158 (comint-previous-matching-input): New command, on M-r.
Richard M. Stallman <rms@gnu.org>
parents: 2627
diff changeset
952 With prefix argument N, search for Nth following match.
27dd7479b158 (comint-previous-matching-input): New command, on M-r.
Richard M. Stallman <rms@gnu.org>
parents: 2627
diff changeset
953 If N is negative, find the previous or Nth previous match."
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
954 (interactive (comint-regexp-arg "Next input matching (regexp): "))
2673
27dd7479b158 (comint-previous-matching-input): New command, on M-r.
Richard M. Stallman <rms@gnu.org>
parents: 2627
diff changeset
955 (comint-previous-matching-input regexp (- arg)))
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
956
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
957 (defun comint-previous-matching-input-from-input (arg)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
958 "Search backwards through input history for match for current input.
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
959 \(Previous history elements are earlier commands.)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
960 With prefix argument N, search for Nth previous match.
5323
44a59f6e114e (comint-next-matching-input-from-input): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 5284
diff changeset
961 If N is negative, search forwards for the -Nth following match."
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
962 (interactive "p")
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
963 (if (not (memq last-command '(comint-previous-matching-input-from-input
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
964 comint-next-matching-input-from-input)))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
965 ;; Starting a new search
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
966 (setq comint-matching-input-from-input-string
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
967 (buffer-substring
22265
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
968 (or (marker-position comint-accum-marker)
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
969 (process-mark (get-buffer-process (current-buffer))))
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
970 (point))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
971 comint-input-ring-index nil))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
972 (comint-previous-matching-input
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
973 (concat "^" (regexp-quote comint-matching-input-from-input-string))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
974 arg))
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
975
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
976 (defun comint-next-matching-input-from-input (arg)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
977 "Search forwards through input history for match for current input.
5323
44a59f6e114e (comint-next-matching-input-from-input): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 5284
diff changeset
978 \(Following history elements are more recent commands.)
44a59f6e114e (comint-next-matching-input-from-input): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 5284
diff changeset
979 With prefix argument N, search for Nth following match.
44a59f6e114e (comint-next-matching-input-from-input): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 5284
diff changeset
980 If N is negative, search backwards for the -Nth previous match."
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
981 (interactive "p")
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
982 (comint-previous-matching-input-from-input (- arg)))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
983
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
984
21714
9c454e5e03fa (comint-replace-by-expanded-history): New arg START.
Richard M. Stallman <rms@gnu.org>
parents: 21617
diff changeset
985 (defun comint-replace-by-expanded-history (&optional silent start)
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
986 "Expand input command history references before point.
6185
82a92cf44059 (comint-after-partial-filename-command,
Richard M. Stallman <rms@gnu.org>
parents: 6154
diff changeset
987 Expansion is dependent on the value of `comint-input-autoexpand'.
82a92cf44059 (comint-after-partial-filename-command,
Richard M. Stallman <rms@gnu.org>
parents: 6154
diff changeset
988
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
989 This function depends on the buffer's idea of the input history, which may not
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
990 match the command interpreter's idea, assuming it has one.
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
991
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
992 Assumes history syntax is like typical Un*x shells'. However, since emacs
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
993 cannot know the interpreter's idea of input line numbers, assuming it has one,
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
994 it cannot expand absolute input line number references.
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
995
5284
9c8749be37da (comint-read-input-ring): New arg SILENT.
Richard M. Stallman <rms@gnu.org>
parents: 5166
diff changeset
996 If the optional argument SILENT is non-nil, never complain
9c8749be37da (comint-read-input-ring): New arg SILENT.
Richard M. Stallman <rms@gnu.org>
parents: 5166
diff changeset
997 even if history reference seems erroneous.
9c8749be37da (comint-read-input-ring): New arg SILENT.
Richard M. Stallman <rms@gnu.org>
parents: 5166
diff changeset
998
21714
9c454e5e03fa (comint-replace-by-expanded-history): New arg START.
Richard M. Stallman <rms@gnu.org>
parents: 21617
diff changeset
999 If the optional argument START is non-nil, that specifies the
9c454e5e03fa (comint-replace-by-expanded-history): New arg START.
Richard M. Stallman <rms@gnu.org>
parents: 21617
diff changeset
1000 start of the text to scan for history references, rather
9c454e5e03fa (comint-replace-by-expanded-history): New arg START.
Richard M. Stallman <rms@gnu.org>
parents: 21617
diff changeset
1001 than the logical beginning of line.
9c454e5e03fa (comint-replace-by-expanded-history): New arg START.
Richard M. Stallman <rms@gnu.org>
parents: 21617
diff changeset
1002
6185
82a92cf44059 (comint-after-partial-filename-command,
Richard M. Stallman <rms@gnu.org>
parents: 6154
diff changeset
1003 See `comint-magic-space' and `comint-replace-by-expanded-history-before-point'.
82a92cf44059 (comint-after-partial-filename-command,
Richard M. Stallman <rms@gnu.org>
parents: 6154
diff changeset
1004
82a92cf44059 (comint-after-partial-filename-command,
Richard M. Stallman <rms@gnu.org>
parents: 6154
diff changeset
1005 Returns t if successful."
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1006 (interactive)
6185
82a92cf44059 (comint-after-partial-filename-command,
Richard M. Stallman <rms@gnu.org>
parents: 6154
diff changeset
1007 (if (and comint-input-autoexpand
15654
6f32894f4ad3 1. For fns like comint-postoutput-scroll-to-bottom on comint-output-filter-functions, don't count back using the length of STRING, as previous fns may have changed the buffer. Count from process-mark.
Simon Marshall <simon@gnu.org>
parents: 15541
diff changeset
1008 (string-match "!\\|^\\^" (funcall comint-get-old-input))
6958
6962dec6fe55 (comint-replace-by-expanded-history): Expand only at prompt.
Karl Heuer <kwzh@gnu.org>
parents: 6890
diff changeset
1009 (save-excursion (beginning-of-line)
6962dec6fe55 (comint-replace-by-expanded-history): Expand only at prompt.
Karl Heuer <kwzh@gnu.org>
parents: 6890
diff changeset
1010 (looking-at comint-prompt-regexp)))
6185
82a92cf44059 (comint-after-partial-filename-command,
Richard M. Stallman <rms@gnu.org>
parents: 6154
diff changeset
1011 ;; Looks like there might be history references in the command.
82a92cf44059 (comint-after-partial-filename-command,
Richard M. Stallman <rms@gnu.org>
parents: 6154
diff changeset
1012 (let ((previous-modified-tick (buffer-modified-tick)))
21714
9c454e5e03fa (comint-replace-by-expanded-history): New arg START.
Richard M. Stallman <rms@gnu.org>
parents: 21617
diff changeset
1013 (comint-replace-by-expanded-history-before-point silent start)
6185
82a92cf44059 (comint-after-partial-filename-command,
Richard M. Stallman <rms@gnu.org>
parents: 6154
diff changeset
1014 (/= previous-modified-tick (buffer-modified-tick)))))
82a92cf44059 (comint-after-partial-filename-command,
Richard M. Stallman <rms@gnu.org>
parents: 6154
diff changeset
1015
82a92cf44059 (comint-after-partial-filename-command,
Richard M. Stallman <rms@gnu.org>
parents: 6154
diff changeset
1016
21714
9c454e5e03fa (comint-replace-by-expanded-history): New arg START.
Richard M. Stallman <rms@gnu.org>
parents: 21617
diff changeset
1017 (defun comint-replace-by-expanded-history-before-point (silent &optional start)
6185
82a92cf44059 (comint-after-partial-filename-command,
Richard M. Stallman <rms@gnu.org>
parents: 6154
diff changeset
1018 "Expand directory stack reference before point.
21714
9c454e5e03fa (comint-replace-by-expanded-history): New arg START.
Richard M. Stallman <rms@gnu.org>
parents: 21617
diff changeset
1019 See `comint-replace-by-expanded-history'. Returns t if successful.
9c454e5e03fa (comint-replace-by-expanded-history): New arg START.
Richard M. Stallman <rms@gnu.org>
parents: 21617
diff changeset
1020
9c454e5e03fa (comint-replace-by-expanded-history): New arg START.
Richard M. Stallman <rms@gnu.org>
parents: 21617
diff changeset
1021 If the optional argument START is non-nil, that specifies the
9c454e5e03fa (comint-replace-by-expanded-history): New arg START.
Richard M. Stallman <rms@gnu.org>
parents: 21617
diff changeset
1022 start of the text to scan for history references, rather
9c454e5e03fa (comint-replace-by-expanded-history): New arg START.
Richard M. Stallman <rms@gnu.org>
parents: 21617
diff changeset
1023 than the logical beginning of line."
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1024 (save-excursion
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1025 (let ((toend (- (save-excursion (end-of-line nil) (point)) (point)))
21714
9c454e5e03fa (comint-replace-by-expanded-history): New arg START.
Richard M. Stallman <rms@gnu.org>
parents: 21617
diff changeset
1026 (start (or start (progn (comint-bol nil) (point)))))
5284
9c8749be37da (comint-read-input-ring): New arg SILENT.
Richard M. Stallman <rms@gnu.org>
parents: 5166
diff changeset
1027 (while (progn
9c8749be37da (comint-read-input-ring): New arg SILENT.
Richard M. Stallman <rms@gnu.org>
parents: 5166
diff changeset
1028 (skip-chars-forward "^!^"
9c8749be37da (comint-read-input-ring): New arg SILENT.
Richard M. Stallman <rms@gnu.org>
parents: 5166
diff changeset
1029 (save-excursion
9c8749be37da (comint-read-input-ring): New arg SILENT.
Richard M. Stallman <rms@gnu.org>
parents: 5166
diff changeset
1030 (end-of-line nil) (- (point) toend)))
9c8749be37da (comint-read-input-ring): New arg SILENT.
Richard M. Stallman <rms@gnu.org>
parents: 5166
diff changeset
1031 (< (point)
9c8749be37da (comint-read-input-ring): New arg SILENT.
Richard M. Stallman <rms@gnu.org>
parents: 5166
diff changeset
1032 (save-excursion
9c8749be37da (comint-read-input-ring): New arg SILENT.
Richard M. Stallman <rms@gnu.org>
parents: 5166
diff changeset
1033 (end-of-line nil) (- (point) toend))))
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1034 ;; This seems a bit complex. We look for references such as !!, !-num,
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1035 ;; !foo, !?foo, !{bar}, !?{bar}, ^oh, ^my^, ^god^it, ^never^ends^.
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1036 ;; If that wasn't enough, the plings can be suffixed with argument
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1037 ;; range specifiers.
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1038 ;; Argument ranges are complex too, so we hive off the input line,
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1039 ;; referenced with plings, with the range string to `comint-args'.
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1040 (setq comint-input-ring-index nil)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1041 (cond ((or (= (preceding-char) ?\\)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1042 (comint-within-quotes start (point)))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1043 ;; The history is quoted, or we're in quotes.
5284
9c8749be37da (comint-read-input-ring): New arg SILENT.
Richard M. Stallman <rms@gnu.org>
parents: 5166
diff changeset
1044 (goto-char (1+ (point))))
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1045 ((looking-at "![0-9]+\\($\\|[^-]\\)")
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1046 ;; We cannot know the interpreter's idea of input line numbers.
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1047 (goto-char (match-end 0))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1048 (message "Absolute reference cannot be expanded"))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1049 ((looking-at "!-\\([0-9]+\\)\\(:?[0-9^$*-]+\\)?")
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1050 ;; Just a number of args from `number' lines backward.
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1051 (let ((number (1- (string-to-number
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1052 (buffer-substring (match-beginning 1)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1053 (match-end 1))))))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1054 (if (<= number (ring-length comint-input-ring))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1055 (progn
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1056 (replace-match
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1057 (comint-args (comint-previous-input-string number)
6187
280d4a97da69 (comint-input-filter-functions)
Richard M. Stallman <rms@gnu.org>
parents: 6185
diff changeset
1058 (match-beginning 2) (match-end 2))
280d4a97da69 (comint-input-filter-functions)
Richard M. Stallman <rms@gnu.org>
parents: 6185
diff changeset
1059 t t)
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1060 (setq comint-input-ring-index number)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1061 (message "History item: %d" (1+ number)))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1062 (goto-char (match-end 0))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1063 (message "Relative reference exceeds input history size"))))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1064 ((or (looking-at "!!?:?\\([0-9^$*-]+\\)") (looking-at "!!"))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1065 ;; Just a number of args from the previous input line.
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1066 (replace-match
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1067 (comint-args (comint-previous-input-string 0)
6187
280d4a97da69 (comint-input-filter-functions)
Richard M. Stallman <rms@gnu.org>
parents: 6185
diff changeset
1068 (match-beginning 1) (match-end 1))
280d4a97da69 (comint-input-filter-functions)
Richard M. Stallman <rms@gnu.org>
parents: 6185
diff changeset
1069 t t)
6185
82a92cf44059 (comint-after-partial-filename-command,
Richard M. Stallman <rms@gnu.org>
parents: 6154
diff changeset
1070 (message "History item: previous"))
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1071 ((looking-at
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1072 "!\\??\\({\\(.+\\)}\\|\\(\\sw+\\)\\)\\(:?[0-9^$*-]+\\)?")
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1073 ;; Most recent input starting with or containing (possibly
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1074 ;; protected) string, maybe just a number of args. Phew.
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1075 (let* ((mb1 (match-beginning 1)) (me1 (match-end 1))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1076 (mb2 (match-beginning 2)) (me2 (match-end 2))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1077 (exp (buffer-substring (or mb2 mb1) (or me2 me1)))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1078 (pref (if (save-match-data (looking-at "!\\?")) "" "^"))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1079 (pos (save-match-data
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1080 (comint-previous-matching-input-string-position
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1081 (concat pref (regexp-quote exp)) 1))))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1082 (if (null pos)
6886
d4010211153e (comint-replace-by-expanded-history-before-point): Advance point
Karl Heuer <kwzh@gnu.org>
parents: 6847
diff changeset
1083 (progn
d4010211153e (comint-replace-by-expanded-history-before-point): Advance point
Karl Heuer <kwzh@gnu.org>
parents: 6847
diff changeset
1084 (goto-char (match-end 0))
d4010211153e (comint-replace-by-expanded-history-before-point): Advance point
Karl Heuer <kwzh@gnu.org>
parents: 6847
diff changeset
1085 (or silent
d4010211153e (comint-replace-by-expanded-history-before-point): Advance point
Karl Heuer <kwzh@gnu.org>
parents: 6847
diff changeset
1086 (progn (message "Not found")
d4010211153e (comint-replace-by-expanded-history-before-point): Advance point
Karl Heuer <kwzh@gnu.org>
parents: 6847
diff changeset
1087 (ding))))
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1088 (setq comint-input-ring-index pos)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1089 (replace-match
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1090 (comint-args (ring-ref comint-input-ring pos)
6187
280d4a97da69 (comint-input-filter-functions)
Richard M. Stallman <rms@gnu.org>
parents: 6185
diff changeset
1091 (match-beginning 4) (match-end 4))
280d4a97da69 (comint-input-filter-functions)
Richard M. Stallman <rms@gnu.org>
parents: 6185
diff changeset
1092 t t)
6185
82a92cf44059 (comint-after-partial-filename-command,
Richard M. Stallman <rms@gnu.org>
parents: 6154
diff changeset
1093 (message "History item: %d" (1+ pos)))))
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1094 ((looking-at "\\^\\([^^]+\\)\\^?\\([^^]*\\)\\^?")
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1095 ;; Quick substitution on the previous input line.
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1096 (let ((old (buffer-substring (match-beginning 1) (match-end 1)))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1097 (new (buffer-substring (match-beginning 2) (match-end 2)))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1098 (pos nil))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1099 (replace-match (comint-previous-input-string 0) t t)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1100 (setq pos (point))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1101 (goto-char (match-beginning 0))
6185
82a92cf44059 (comint-after-partial-filename-command,
Richard M. Stallman <rms@gnu.org>
parents: 6154
diff changeset
1102 (if (not (search-forward old pos t))
82a92cf44059 (comint-after-partial-filename-command,
Richard M. Stallman <rms@gnu.org>
parents: 6154
diff changeset
1103 (or silent
82a92cf44059 (comint-after-partial-filename-command,
Richard M. Stallman <rms@gnu.org>
parents: 6154
diff changeset
1104 (error "Not found"))
82a92cf44059 (comint-after-partial-filename-command,
Richard M. Stallman <rms@gnu.org>
parents: 6154
diff changeset
1105 (replace-match new t t)
82a92cf44059 (comint-after-partial-filename-command,
Richard M. Stallman <rms@gnu.org>
parents: 6154
diff changeset
1106 (message "History item: substituted"))))
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1107 (t
21951
ab7fa71c0957 (comint-replace-by-expanded-history-before-point):
Richard M. Stallman <rms@gnu.org>
parents: 21714
diff changeset
1108 (forward-char 1)))))))
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1109
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1110
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1111 (defun comint-magic-space (arg)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1112 "Expand input history references before point and insert ARG spaces.
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1113 A useful command to bind to SPC. See `comint-replace-by-expanded-history'."
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1114 (interactive "p")
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1115 (comint-replace-by-expanded-history)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1116 (self-insert-command arg))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1117
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1118 (defun comint-within-quotes (beg end)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1119 "Return t if the number of quotes between BEG and END is odd.
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1120 Quotes are single and double."
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1121 (let ((countsq (comint-how-many-region "\\(^\\|[^\\\\]\\)\'" beg end))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1122 (countdq (comint-how-many-region "\\(^\\|[^\\\\]\\)\"" beg end)))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1123 (or (= (mod countsq 2) 1) (= (mod countdq 2) 1))))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1124
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1125 (defun comint-how-many-region (regexp beg end)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1126 "Return number of matches for REGEXP from BEG to END."
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1127 (let ((count 0))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1128 (save-excursion
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1129 (save-match-data
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1130 (goto-char beg)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1131 (while (re-search-forward regexp end t)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1132 (setq count (1+ count)))))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1133 count))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1134
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1135 (defun comint-args (string begin end)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1136 ;; From STRING, return the args depending on the range specified in the text
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1137 ;; from BEGIN to END. If BEGIN is nil, assume all args. Ignore leading `:'.
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1138 ;; Range can be x-y, x-, -y, where x/y can be [0-9], *, ^, $.
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1139 (save-match-data
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1140 (if (null begin)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1141 (comint-arguments string 0 nil)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1142 (let* ((range (buffer-substring
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1143 (if (eq (char-after begin) ?:) (1+ begin) begin) end))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1144 (nth (cond ((string-match "^[*^]" range) 1)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1145 ((string-match "^-" range) 0)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1146 ((string-equal range "$") nil)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1147 (t (string-to-number range))))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1148 (mth (cond ((string-match "[-*$]$" range) nil)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1149 ((string-match "-" range)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1150 (string-to-number (substring range (match-end 0))))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1151 (t nth))))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1152 (comint-arguments string nth mth)))))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1153
6154
385d5fe1c95c (comint-arguments): Use just one regexp to find end of arg
Richard M. Stallman <rms@gnu.org>
parents: 6148
diff changeset
1154 ;; Return a list of arguments from ARG. Break it up at the
385d5fe1c95c (comint-arguments): Use just one regexp to find end of arg
Richard M. Stallman <rms@gnu.org>
parents: 6148
diff changeset
1155 ;; delimiters in comint-delimiter-argument-list. Returned list is backwards.
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1156 (defun comint-delim-arg (arg)
6154
385d5fe1c95c (comint-arguments): Use just one regexp to find end of arg
Richard M. Stallman <rms@gnu.org>
parents: 6148
diff changeset
1157 (if (null comint-delimiter-argument-list)
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1158 (list arg)
6154
385d5fe1c95c (comint-arguments): Use just one regexp to find end of arg
Richard M. Stallman <rms@gnu.org>
parents: 6148
diff changeset
1159 (let ((args nil)
385d5fe1c95c (comint-arguments): Use just one regexp to find end of arg
Richard M. Stallman <rms@gnu.org>
parents: 6148
diff changeset
1160 (pos 0)
385d5fe1c95c (comint-arguments): Use just one regexp to find end of arg
Richard M. Stallman <rms@gnu.org>
parents: 6148
diff changeset
1161 (len (length arg)))
385d5fe1c95c (comint-arguments): Use just one regexp to find end of arg
Richard M. Stallman <rms@gnu.org>
parents: 6148
diff changeset
1162 (while (< pos len)
385d5fe1c95c (comint-arguments): Use just one regexp to find end of arg
Richard M. Stallman <rms@gnu.org>
parents: 6148
diff changeset
1163 (let ((char (aref arg pos))
385d5fe1c95c (comint-arguments): Use just one regexp to find end of arg
Richard M. Stallman <rms@gnu.org>
parents: 6148
diff changeset
1164 (start pos))
385d5fe1c95c (comint-arguments): Use just one regexp to find end of arg
Richard M. Stallman <rms@gnu.org>
parents: 6148
diff changeset
1165 (if (memq char comint-delimiter-argument-list)
385d5fe1c95c (comint-arguments): Use just one regexp to find end of arg
Richard M. Stallman <rms@gnu.org>
parents: 6148
diff changeset
1166 (while (and (< pos len) (eq (aref arg pos) char))
385d5fe1c95c (comint-arguments): Use just one regexp to find end of arg
Richard M. Stallman <rms@gnu.org>
parents: 6148
diff changeset
1167 (setq pos (1+ pos)))
385d5fe1c95c (comint-arguments): Use just one regexp to find end of arg
Richard M. Stallman <rms@gnu.org>
parents: 6148
diff changeset
1168 (while (and (< pos len)
385d5fe1c95c (comint-arguments): Use just one regexp to find end of arg
Richard M. Stallman <rms@gnu.org>
parents: 6148
diff changeset
1169 (not (memq (aref arg pos)
385d5fe1c95c (comint-arguments): Use just one regexp to find end of arg
Richard M. Stallman <rms@gnu.org>
parents: 6148
diff changeset
1170 comint-delimiter-argument-list)))
385d5fe1c95c (comint-arguments): Use just one regexp to find end of arg
Richard M. Stallman <rms@gnu.org>
parents: 6148
diff changeset
1171 (setq pos (1+ pos))))
385d5fe1c95c (comint-arguments): Use just one regexp to find end of arg
Richard M. Stallman <rms@gnu.org>
parents: 6148
diff changeset
1172 (setq args (cons (substring arg start pos) args))))
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1173 args)))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1174
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1175 (defun comint-arguments (string nth mth)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1176 "Return from STRING the NTH to MTH arguments.
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1177 NTH and/or MTH can be nil, which means the last argument.
6154
385d5fe1c95c (comint-arguments): Use just one regexp to find end of arg
Richard M. Stallman <rms@gnu.org>
parents: 6148
diff changeset
1178 Returned arguments are separated by single spaces.
385d5fe1c95c (comint-arguments): Use just one regexp to find end of arg
Richard M. Stallman <rms@gnu.org>
parents: 6148
diff changeset
1179 We assume whitespace separates arguments, except within quotes.
385d5fe1c95c (comint-arguments): Use just one regexp to find end of arg
Richard M. Stallman <rms@gnu.org>
parents: 6148
diff changeset
1180 Also, a run of one or more of a single character
385d5fe1c95c (comint-arguments): Use just one regexp to find end of arg
Richard M. Stallman <rms@gnu.org>
parents: 6148
diff changeset
1181 in `comint-delimiter-argument-list' is a separate argument.
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1182 Argument 0 is the command name."
23209
601bf7681009 (comint-arguments): Ignore backslashes when using
Geoff Voelker <voelker@cs.washington.edu>
parents: 23036
diff changeset
1183 ;; The first line handles ordinary characters and backslash-sequences
601bf7681009 (comint-arguments): Ignore backslashes when using
Geoff Voelker <voelker@cs.washington.edu>
parents: 23036
diff changeset
1184 ;; (except with w32 msdos-like shells, where backslashes are valid).
21018
edbd4156cf68 (comint-arguments): Treat \" and such as part of one arg.
Richard M. Stallman <rms@gnu.org>
parents: 20986
diff changeset
1185 ;; The second matches "-quoted strings.
edbd4156cf68 (comint-arguments): Treat \" and such as part of one arg.
Richard M. Stallman <rms@gnu.org>
parents: 20986
diff changeset
1186 ;; The third matches '-quoted strings.
edbd4156cf68 (comint-arguments): Treat \" and such as part of one arg.
Richard M. Stallman <rms@gnu.org>
parents: 20986
diff changeset
1187 ;; The fourth matches `-quoted strings.
edbd4156cf68 (comint-arguments): Treat \" and such as part of one arg.
Richard M. Stallman <rms@gnu.org>
parents: 20986
diff changeset
1188 ;; This seems to fit the syntax of BASH 2.0.
23209
601bf7681009 (comint-arguments): Ignore backslashes when using
Geoff Voelker <voelker@cs.washington.edu>
parents: 23036
diff changeset
1189 (let* ((first (if (and (eq system-type 'windows-nt)
601bf7681009 (comint-arguments): Ignore backslashes when using
Geoff Voelker <voelker@cs.washington.edu>
parents: 23036
diff changeset
1190 (w32-shell-dos-semantics))
601bf7681009 (comint-arguments): Ignore backslashes when using
Geoff Voelker <voelker@cs.washington.edu>
parents: 23036
diff changeset
1191 "[^ \n\t\"'`]+\\|"
601bf7681009 (comint-arguments): Ignore backslashes when using
Geoff Voelker <voelker@cs.washington.edu>
parents: 23036
diff changeset
1192 "[^ \n\t\"'`\\]+\\|\\\\[\"'`\\]+\\|"))
601bf7681009 (comint-arguments): Ignore backslashes when using
Geoff Voelker <voelker@cs.washington.edu>
parents: 23036
diff changeset
1193 (argpart (concat first
601bf7681009 (comint-arguments): Ignore backslashes when using
Geoff Voelker <voelker@cs.washington.edu>
parents: 23036
diff changeset
1194 "\\(\"\\([^\"\\]\\|\\\\.\\)*\"\\|\
21018
edbd4156cf68 (comint-arguments): Treat \" and such as part of one arg.
Richard M. Stallman <rms@gnu.org>
parents: 20986
diff changeset
1195 '[^']*'\\|\
23209
601bf7681009 (comint-arguments): Ignore backslashes when using
Geoff Voelker <voelker@cs.washington.edu>
parents: 23036
diff changeset
1196 `[^`]*`\\)"))
601bf7681009 (comint-arguments): Ignore backslashes when using
Geoff Voelker <voelker@cs.washington.edu>
parents: 23036
diff changeset
1197 (args ()) (pos 0)
601bf7681009 (comint-arguments): Ignore backslashes when using
Geoff Voelker <voelker@cs.washington.edu>
parents: 23036
diff changeset
1198 (count 0)
601bf7681009 (comint-arguments): Ignore backslashes when using
Geoff Voelker <voelker@cs.washington.edu>
parents: 23036
diff changeset
1199 beg str value quotes)
8616
b9a9389714e1 (comint-arguments): Rewrite for speed.
Richard M. Stallman <rms@gnu.org>
parents: 8400
diff changeset
1200 ;; Build a list of all the args until we have as many as we want.
b9a9389714e1 (comint-arguments): Rewrite for speed.
Richard M. Stallman <rms@gnu.org>
parents: 8400
diff changeset
1201 (while (and (or (null mth) (<= count mth))
b9a9389714e1 (comint-arguments): Rewrite for speed.
Richard M. Stallman <rms@gnu.org>
parents: 8400
diff changeset
1202 (string-match argpart string pos))
b9a9389714e1 (comint-arguments): Rewrite for speed.
Richard M. Stallman <rms@gnu.org>
parents: 8400
diff changeset
1203 (if (and beg (= pos (match-beginning 0)))
b9a9389714e1 (comint-arguments): Rewrite for speed.
Richard M. Stallman <rms@gnu.org>
parents: 8400
diff changeset
1204 ;; It's contiguous, part of the same arg.
b9a9389714e1 (comint-arguments): Rewrite for speed.
Richard M. Stallman <rms@gnu.org>
parents: 8400
diff changeset
1205 (setq pos (match-end 0)
b9a9389714e1 (comint-arguments): Rewrite for speed.
Richard M. Stallman <rms@gnu.org>
parents: 8400
diff changeset
1206 quotes (or quotes (match-beginning 1)))
b9a9389714e1 (comint-arguments): Rewrite for speed.
Richard M. Stallman <rms@gnu.org>
parents: 8400
diff changeset
1207 ;; It's a new separate arg.
b9a9389714e1 (comint-arguments): Rewrite for speed.
Richard M. Stallman <rms@gnu.org>
parents: 8400
diff changeset
1208 (if beg
b9a9389714e1 (comint-arguments): Rewrite for speed.
Richard M. Stallman <rms@gnu.org>
parents: 8400
diff changeset
1209 ;; Put the previous arg, if there was one, onto ARGS.
b9a9389714e1 (comint-arguments): Rewrite for speed.
Richard M. Stallman <rms@gnu.org>
parents: 8400
diff changeset
1210 (setq str (substring string beg pos)
b9a9389714e1 (comint-arguments): Rewrite for speed.
Richard M. Stallman <rms@gnu.org>
parents: 8400
diff changeset
1211 args (if quotes (cons str args)
b9a9389714e1 (comint-arguments): Rewrite for speed.
Richard M. Stallman <rms@gnu.org>
parents: 8400
diff changeset
1212 (nconc (comint-delim-arg str) args))
b9a9389714e1 (comint-arguments): Rewrite for speed.
Richard M. Stallman <rms@gnu.org>
parents: 8400
diff changeset
1213 count (1+ count)))
b9a9389714e1 (comint-arguments): Rewrite for speed.
Richard M. Stallman <rms@gnu.org>
parents: 8400
diff changeset
1214 (setq quotes (match-beginning 1))
b9a9389714e1 (comint-arguments): Rewrite for speed.
Richard M. Stallman <rms@gnu.org>
parents: 8400
diff changeset
1215 (setq beg (match-beginning 0))
b9a9389714e1 (comint-arguments): Rewrite for speed.
Richard M. Stallman <rms@gnu.org>
parents: 8400
diff changeset
1216 (setq pos (match-end 0))))
b9a9389714e1 (comint-arguments): Rewrite for speed.
Richard M. Stallman <rms@gnu.org>
parents: 8400
diff changeset
1217 (if beg
b9a9389714e1 (comint-arguments): Rewrite for speed.
Richard M. Stallman <rms@gnu.org>
parents: 8400
diff changeset
1218 (setq str (substring string beg pos)
b9a9389714e1 (comint-arguments): Rewrite for speed.
Richard M. Stallman <rms@gnu.org>
parents: 8400
diff changeset
1219 args (if quotes (cons str args)
b9a9389714e1 (comint-arguments): Rewrite for speed.
Richard M. Stallman <rms@gnu.org>
parents: 8400
diff changeset
1220 (nconc (comint-delim-arg str) args))
b9a9389714e1 (comint-arguments): Rewrite for speed.
Richard M. Stallman <rms@gnu.org>
parents: 8400
diff changeset
1221 count (1+ count)))
b9a9389714e1 (comint-arguments): Rewrite for speed.
Richard M. Stallman <rms@gnu.org>
parents: 8400
diff changeset
1222 (let ((n (or nth (1- count)))
b9a9389714e1 (comint-arguments): Rewrite for speed.
Richard M. Stallman <rms@gnu.org>
parents: 8400
diff changeset
1223 (m (if mth (1- (- count mth)) 0)))
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1224 (mapconcat
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1225 (function (lambda (a) a)) (nthcdr n (nreverse (nthcdr m args))) " "))))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1226
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1227 ;;
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1228 ;; Input processing stuff
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1229 ;;
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
1230
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
1231 (defun comint-send-input ()
1356
dcf780f7ae1b Doc fix.
Christopher Zaborsky <rogue@erratum.com>
parents: 1131
diff changeset
1232 "Send input to process.
dcf780f7ae1b Doc fix.
Christopher Zaborsky <rogue@erratum.com>
parents: 1131
diff changeset
1233 After the process output mark, sends all text from the process mark to
dcf780f7ae1b Doc fix.
Christopher Zaborsky <rogue@erratum.com>
parents: 1131
diff changeset
1234 point as input to the process. Before the process output mark, calls value
2539
577c77cfd199 *** empty log message ***
Noah Friedman <friedman@splode.com>
parents: 2518
diff changeset
1235 of variable `comint-get-old-input' to retrieve old input, copies it to the
3386
bc4729d67e6e (comint-filter): Put window-start before the input.
Richard M. Stallman <rms@gnu.org>
parents: 3113
diff changeset
1236 process mark, and sends it. If variable `comint-process-echoes' is nil,
2539
577c77cfd199 *** empty log message ***
Noah Friedman <friedman@splode.com>
parents: 2518
diff changeset
1237 a terminal newline is also inserted into the buffer and sent to the process
3386
bc4729d67e6e (comint-filter): Put window-start before the input.
Richard M. Stallman <rms@gnu.org>
parents: 3113
diff changeset
1238 \(if it is non-nil, all text from the process mark to point is deleted,
bc4729d67e6e (comint-filter): Put window-start before the input.
Richard M. Stallman <rms@gnu.org>
parents: 3113
diff changeset
1239 since it is assumed the remote process will re-echo it).
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1240
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1241 Any history reference may be expanded depending on the value of the variable
6185
82a92cf44059 (comint-after-partial-filename-command,
Richard M. Stallman <rms@gnu.org>
parents: 6154
diff changeset
1242 `comint-input-autoexpand'. The list of function names contained in the value
6187
280d4a97da69 (comint-input-filter-functions)
Richard M. Stallman <rms@gnu.org>
parents: 6185
diff changeset
1243 of `comint-input-filter-functions' is called on the input before sending it.
6185
82a92cf44059 (comint-after-partial-filename-command,
Richard M. Stallman <rms@gnu.org>
parents: 6154
diff changeset
1244 The input is entered into the input history ring, if the value of variable
82a92cf44059 (comint-after-partial-filename-command,
Richard M. Stallman <rms@gnu.org>
parents: 6154
diff changeset
1245 `comint-input-filter' returns non-nil when called on the input.
3386
bc4729d67e6e (comint-filter): Put window-start before the input.
Richard M. Stallman <rms@gnu.org>
parents: 3113
diff changeset
1246
bc4729d67e6e (comint-filter): Put window-start before the input.
Richard M. Stallman <rms@gnu.org>
parents: 3113
diff changeset
1247 If variable `comint-eol-on-send' is non-nil, then point is moved to the
2539
577c77cfd199 *** empty log message ***
Noah Friedman <friedman@splode.com>
parents: 2518
diff changeset
1248 end of line before sending the input.
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1249
6187
280d4a97da69 (comint-input-filter-functions)
Richard M. Stallman <rms@gnu.org>
parents: 6185
diff changeset
1250 The values of `comint-get-old-input', `comint-input-filter-functions', and
6185
82a92cf44059 (comint-after-partial-filename-command,
Richard M. Stallman <rms@gnu.org>
parents: 6154
diff changeset
1251 `comint-input-filter' are chosen according to the command interpreter running
82a92cf44059 (comint-after-partial-filename-command,
Richard M. Stallman <rms@gnu.org>
parents: 6154
diff changeset
1252 in the buffer. E.g.,
82a92cf44059 (comint-after-partial-filename-command,
Richard M. Stallman <rms@gnu.org>
parents: 6154
diff changeset
1253
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1254 If the interpreter is the csh,
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
1255 comint-get-old-input is the default: take the current line, discard any
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
1256 initial string matching regexp comint-prompt-regexp.
6187
280d4a97da69 (comint-input-filter-functions)
Richard M. Stallman <rms@gnu.org>
parents: 6185
diff changeset
1257 comint-input-filter-functions monitors input for \"cd\", \"pushd\", and
6185
82a92cf44059 (comint-after-partial-filename-command,
Richard M. Stallman <rms@gnu.org>
parents: 6154
diff changeset
1258 \"popd\" commands. When it sees one, it cd's the buffer.
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1259 comint-input-filter is the default: returns t if the input isn't all white
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
1260 space.
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1261
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1262 If the comint is Lucid Common Lisp,
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
1263 comint-get-old-input snarfs the sexp ending at point.
6187
280d4a97da69 (comint-input-filter-functions)
Richard M. Stallman <rms@gnu.org>
parents: 6185
diff changeset
1264 comint-input-filter-functions does nothing.
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1265 comint-input-filter returns nil if the input matches input-filter-regexp,
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1266 which matches (1) all whitespace (2) :a, :c, etc.
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1267
909
4c6cdb66c74c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 870
diff changeset
1268 Similarly for Soar, Scheme, etc."
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1269 (interactive)
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1270 ;; Note that the input string does not include its terminal newline.
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
1271 (let ((proc (get-buffer-process (current-buffer))))
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
1272 (if (not proc) (error "Current buffer has no process")
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
1273 (let* ((pmark (process-mark proc))
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1274 (intxt (if (>= (point) (marker-position pmark))
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
1275 (progn (if comint-eol-on-send (end-of-line))
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
1276 (buffer-substring pmark (point)))
705
c7d478752305 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 662
diff changeset
1277 (let ((copy (funcall comint-get-old-input)))
c7d478752305 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 662
diff changeset
1278 (goto-char pmark)
c7d478752305 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 662
diff changeset
1279 (insert copy)
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1280 copy)))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1281 (input (if (not (eq comint-input-autoexpand 'input))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1282 ;; Just whatever's already there
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1283 intxt
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1284 ;; Expand and leave it visible in buffer
21714
9c454e5e03fa (comint-replace-by-expanded-history): New arg START.
Richard M. Stallman <rms@gnu.org>
parents: 21617
diff changeset
1285 (comint-replace-by-expanded-history t pmark)
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1286 (buffer-substring pmark (point))))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1287 (history (if (not (eq comint-input-autoexpand 'history))
5166
7e66b092f331 (comint-send-input): Don't call comint-arguments
Richard M. Stallman <rms@gnu.org>
parents: 5152
diff changeset
1288 input
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1289 ;; This is messy 'cos ultimately the original
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1290 ;; functions used do insertion, rather than return
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1291 ;; strings. We have to expand, then insert back.
21714
9c454e5e03fa (comint-replace-by-expanded-history): New arg START.
Richard M. Stallman <rms@gnu.org>
parents: 21617
diff changeset
1292 (comint-replace-by-expanded-history t pmark)
17956
7af8470b665a Use insert to preserve marker positions (pmark) and delete last.
Simon Marshall <simon@gnu.org>
parents: 17652
diff changeset
1293 (let ((copy (buffer-substring pmark (point)))
7af8470b665a Use insert to preserve marker positions (pmark) and delete last.
Simon Marshall <simon@gnu.org>
parents: 17652
diff changeset
1294 (start (point)))
7af8470b665a Use insert to preserve marker positions (pmark) and delete last.
Simon Marshall <simon@gnu.org>
parents: 17652
diff changeset
1295 (insert input)
7af8470b665a Use insert to preserve marker positions (pmark) and delete last.
Simon Marshall <simon@gnu.org>
parents: 17652
diff changeset
1296 (delete-region pmark start)
5166
7e66b092f331 (comint-send-input): Don't call comint-arguments
Richard M. Stallman <rms@gnu.org>
parents: 5152
diff changeset
1297 copy))))
2539
577c77cfd199 *** empty log message ***
Noah Friedman <friedman@splode.com>
parents: 2518
diff changeset
1298 (if comint-process-echoes
577c77cfd199 *** empty log message ***
Noah Friedman <friedman@splode.com>
parents: 2518
diff changeset
1299 (delete-region pmark (point))
15541
09b145e9bf4d (comint-send-input): Use insert-before-markers for all the insertions.
Richard M. Stallman <rms@gnu.org>
parents: 15369
diff changeset
1300 (insert-before-markers ?\n))
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1301 (if (and (funcall comint-input-filter history)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1302 (or (null comint-input-ignoredups)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1303 (not (ring-p comint-input-ring))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1304 (ring-empty-p comint-input-ring)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1305 (not (string-equal (ring-ref comint-input-ring 0)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1306 history))))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1307 (ring-insert comint-input-ring history))
12208
d10ef5c093ce (comint-mode): Use make-local-hook.
Karl Heuer <kwzh@gnu.org>
parents: 12058
diff changeset
1308 (run-hook-with-args 'comint-input-filter-functions
d10ef5c093ce (comint-mode): Use make-local-hook.
Karl Heuer <kwzh@gnu.org>
parents: 12058
diff changeset
1309 (concat input "\n"))
22265
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
1310 (setq comint-save-input-ring-index comint-input-ring-index)
909
4c6cdb66c74c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 870
diff changeset
1311 (setq comint-input-ring-index nil)
8060
5b9bbe66631c (comint-send-input): Update markers before actually sending the input.
Richard M. Stallman <rms@gnu.org>
parents: 8032
diff changeset
1312 ;; Update the markers before we send the input
5b9bbe66631c (comint-send-input): Update markers before actually sending the input.
Richard M. Stallman <rms@gnu.org>
parents: 8032
diff changeset
1313 ;; in case we get output amidst sending the input.
705
c7d478752305 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 662
diff changeset
1314 (set-marker comint-last-input-start pmark)
c7d478752305 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 662
diff changeset
1315 (set-marker comint-last-input-end (point))
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1316 (set-marker (process-mark proc) (point))
22265
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
1317 ;; clear the "accumulation" marker
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
1318 (set-marker comint-accum-marker nil)
8060
5b9bbe66631c (comint-send-input): Update markers before actually sending the input.
Richard M. Stallman <rms@gnu.org>
parents: 8032
diff changeset
1319 (funcall comint-input-sender proc input)
16546
06f92ef2857c (comint-output-filter): Run comint-output-filter-functions
Richard M. Stallman <rms@gnu.org>
parents: 16409
diff changeset
1320 ;; This used to call comint-output-filter-functions,
06f92ef2857c (comint-output-filter): Run comint-output-filter-functions
Richard M. Stallman <rms@gnu.org>
parents: 16409
diff changeset
1321 ;; but that scrolled the buffer in undesirable ways.
06f92ef2857c (comint-output-filter): Run comint-output-filter-functions
Richard M. Stallman <rms@gnu.org>
parents: 16409
diff changeset
1322 (run-hook-with-args 'comint-output-filter-functions "")))))
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1323
19515
a0ecbe13b54b (comint-preoutput-filter-functions): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 18805
diff changeset
1324 (defvar comint-preoutput-filter-functions nil
21243
e82a4a4fa12a (comint-preoutput-filter-functions): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 21152
diff changeset
1325 "Functions to call before output is inserted into the buffer.
19515
a0ecbe13b54b (comint-preoutput-filter-functions): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 18805
diff changeset
1326 These functions get one argument, a string containing the text to be
a0ecbe13b54b (comint-preoutput-filter-functions): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 18805
diff changeset
1327 inserted. They return the string as it should be inserted.
a0ecbe13b54b (comint-preoutput-filter-functions): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 18805
diff changeset
1328
a0ecbe13b54b (comint-preoutput-filter-functions): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 18805
diff changeset
1329 This variable is buffer-local.")
a0ecbe13b54b (comint-preoutput-filter-functions): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 18805
diff changeset
1330
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1331 ;; The purpose of using this filter for comint processes
2683
21ab70613c42 (comint-filter): New function.
Richard M. Stallman <rms@gnu.org>
parents: 2680
diff changeset
1332 ;; is to keep comint-last-input-end from moving forward
21ab70613c42 (comint-filter): New function.
Richard M. Stallman <rms@gnu.org>
parents: 2680
diff changeset
1333 ;; when output is inserted.
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1334 (defun comint-output-filter (process string)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1335 ;; First check for killed buffer
4939
d9ad390ef4e3 (comint-preinput-scroll-to-bottom): Added
Richard M. Stallman <rms@gnu.org>
parents: 4928
diff changeset
1336 (let ((oprocbuf (process-buffer process)))
19515
a0ecbe13b54b (comint-preoutput-filter-functions): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 18805
diff changeset
1337 (let ((functions comint-preoutput-filter-functions))
a0ecbe13b54b (comint-preoutput-filter-functions): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 18805
diff changeset
1338 (while (and functions string)
a0ecbe13b54b (comint-preoutput-filter-functions): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 18805
diff changeset
1339 (setq string (funcall (car functions) string))
a0ecbe13b54b (comint-preoutput-filter-functions): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 18805
diff changeset
1340 (setq functions (cdr functions))))
a0ecbe13b54b (comint-preoutput-filter-functions): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 18805
diff changeset
1341 (if (and string oprocbuf (buffer-name oprocbuf))
4939
d9ad390ef4e3 (comint-preinput-scroll-to-bottom): Added
Richard M. Stallman <rms@gnu.org>
parents: 4928
diff changeset
1342 (let ((obuf (current-buffer))
d9ad390ef4e3 (comint-preinput-scroll-to-bottom): Added
Richard M. Stallman <rms@gnu.org>
parents: 4928
diff changeset
1343 (opoint nil) (obeg nil) (oend nil))
d9ad390ef4e3 (comint-preinput-scroll-to-bottom): Added
Richard M. Stallman <rms@gnu.org>
parents: 4928
diff changeset
1344 (set-buffer oprocbuf)
d9ad390ef4e3 (comint-preinput-scroll-to-bottom): Added
Richard M. Stallman <rms@gnu.org>
parents: 4928
diff changeset
1345 (setq opoint (point))
d9ad390ef4e3 (comint-preinput-scroll-to-bottom): Added
Richard M. Stallman <rms@gnu.org>
parents: 4928
diff changeset
1346 (setq obeg (point-min))
d9ad390ef4e3 (comint-preinput-scroll-to-bottom): Added
Richard M. Stallman <rms@gnu.org>
parents: 4928
diff changeset
1347 (setq oend (point-max))
d9ad390ef4e3 (comint-preinput-scroll-to-bottom): Added
Richard M. Stallman <rms@gnu.org>
parents: 4928
diff changeset
1348 (let ((buffer-read-only nil)
d9ad390ef4e3 (comint-preinput-scroll-to-bottom): Added
Richard M. Stallman <rms@gnu.org>
parents: 4928
diff changeset
1349 (nchars (length string))
d9ad390ef4e3 (comint-preinput-scroll-to-bottom): Added
Richard M. Stallman <rms@gnu.org>
parents: 4928
diff changeset
1350 (ostart nil))
d9ad390ef4e3 (comint-preinput-scroll-to-bottom): Added
Richard M. Stallman <rms@gnu.org>
parents: 4928
diff changeset
1351 (widen)
d9ad390ef4e3 (comint-preinput-scroll-to-bottom): Added
Richard M. Stallman <rms@gnu.org>
parents: 4928
diff changeset
1352 (goto-char (process-mark process))
d9ad390ef4e3 (comint-preinput-scroll-to-bottom): Added
Richard M. Stallman <rms@gnu.org>
parents: 4928
diff changeset
1353 (setq ostart (point))
d9ad390ef4e3 (comint-preinput-scroll-to-bottom): Added
Richard M. Stallman <rms@gnu.org>
parents: 4928
diff changeset
1354 (if (<= (point) opoint)
d9ad390ef4e3 (comint-preinput-scroll-to-bottom): Added
Richard M. Stallman <rms@gnu.org>
parents: 4928
diff changeset
1355 (setq opoint (+ opoint nchars)))
d9ad390ef4e3 (comint-preinput-scroll-to-bottom): Added
Richard M. Stallman <rms@gnu.org>
parents: 4928
diff changeset
1356 ;; Insert after old_begv, but before old_zv.
d9ad390ef4e3 (comint-preinput-scroll-to-bottom): Added
Richard M. Stallman <rms@gnu.org>
parents: 4928
diff changeset
1357 (if (< (point) obeg)
d9ad390ef4e3 (comint-preinput-scroll-to-bottom): Added
Richard M. Stallman <rms@gnu.org>
parents: 4928
diff changeset
1358 (setq obeg (+ obeg nchars)))
d9ad390ef4e3 (comint-preinput-scroll-to-bottom): Added
Richard M. Stallman <rms@gnu.org>
parents: 4928
diff changeset
1359 (if (<= (point) oend)
d9ad390ef4e3 (comint-preinput-scroll-to-bottom): Added
Richard M. Stallman <rms@gnu.org>
parents: 4928
diff changeset
1360 (setq oend (+ oend nchars)))
d9ad390ef4e3 (comint-preinput-scroll-to-bottom): Added
Richard M. Stallman <rms@gnu.org>
parents: 4928
diff changeset
1361 (insert-before-markers string)
d9ad390ef4e3 (comint-preinput-scroll-to-bottom): Added
Richard M. Stallman <rms@gnu.org>
parents: 4928
diff changeset
1362 ;; Don't insert initial prompt outside the top of the window.
d9ad390ef4e3 (comint-preinput-scroll-to-bottom): Added
Richard M. Stallman <rms@gnu.org>
parents: 4928
diff changeset
1363 (if (= (window-start (selected-window)) (point))
d9ad390ef4e3 (comint-preinput-scroll-to-bottom): Added
Richard M. Stallman <rms@gnu.org>
parents: 4928
diff changeset
1364 (set-window-start (selected-window) (- (point) (length string))))
d9ad390ef4e3 (comint-preinput-scroll-to-bottom): Added
Richard M. Stallman <rms@gnu.org>
parents: 4928
diff changeset
1365 (if (and comint-last-input-end
d9ad390ef4e3 (comint-preinput-scroll-to-bottom): Added
Richard M. Stallman <rms@gnu.org>
parents: 4928
diff changeset
1366 (marker-buffer comint-last-input-end)
d9ad390ef4e3 (comint-preinput-scroll-to-bottom): Added
Richard M. Stallman <rms@gnu.org>
parents: 4928
diff changeset
1367 (= (point) comint-last-input-end))
d9ad390ef4e3 (comint-preinput-scroll-to-bottom): Added
Richard M. Stallman <rms@gnu.org>
parents: 4928
diff changeset
1368 (set-marker comint-last-input-end (- comint-last-input-end nchars)))
d9ad390ef4e3 (comint-preinput-scroll-to-bottom): Added
Richard M. Stallman <rms@gnu.org>
parents: 4928
diff changeset
1369 (set-marker comint-last-output-start ostart)
d9ad390ef4e3 (comint-preinput-scroll-to-bottom): Added
Richard M. Stallman <rms@gnu.org>
parents: 4928
diff changeset
1370 (set-marker (process-mark process) (point))
d9ad390ef4e3 (comint-preinput-scroll-to-bottom): Added
Richard M. Stallman <rms@gnu.org>
parents: 4928
diff changeset
1371 (force-mode-line-update))
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1372
4939
d9ad390ef4e3 (comint-preinput-scroll-to-bottom): Added
Richard M. Stallman <rms@gnu.org>
parents: 4928
diff changeset
1373 (narrow-to-region obeg oend)
d9ad390ef4e3 (comint-preinput-scroll-to-bottom): Added
Richard M. Stallman <rms@gnu.org>
parents: 4928
diff changeset
1374 (goto-char opoint)
12208
d10ef5c093ce (comint-mode): Use make-local-hook.
Karl Heuer <kwzh@gnu.org>
parents: 12058
diff changeset
1375 (run-hook-with-args 'comint-output-filter-functions string)
4939
d9ad390ef4e3 (comint-preinput-scroll-to-bottom): Added
Richard M. Stallman <rms@gnu.org>
parents: 4928
diff changeset
1376 (set-buffer obuf)))))
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1377
4890
dab300dfe449 (comint-scroll-to-bottom-on-input): Default to nil.
Richard M. Stallman <rms@gnu.org>
parents: 4880
diff changeset
1378 (defun comint-preinput-scroll-to-bottom ()
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1379 "Go to the end of buffer in all windows showing it.
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1380 Movement occurs if point in the selected window is not after the process mark,
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1381 and `this-command' is an insertion command. Insertion commands recognised
5284
9c8749be37da (comint-read-input-ring): New arg SILENT.
Richard M. Stallman <rms@gnu.org>
parents: 5166
diff changeset
1382 are `self-insert-command', `comint-magic-space', `yank', and `hilit-yank'.
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1383 Depends on the value of `comint-scroll-to-bottom-on-input'.
2683
21ab70613c42 (comint-filter): New function.
Richard M. Stallman <rms@gnu.org>
parents: 2680
diff changeset
1384
4890
dab300dfe449 (comint-scroll-to-bottom-on-input): Default to nil.
Richard M. Stallman <rms@gnu.org>
parents: 4880
diff changeset
1385 This function should be a pre-command hook."
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1386 (if (and comint-scroll-to-bottom-on-input
4939
d9ad390ef4e3 (comint-preinput-scroll-to-bottom): Added
Richard M. Stallman <rms@gnu.org>
parents: 4928
diff changeset
1387 (memq this-command '(self-insert-command comint-magic-space yank
5284
9c8749be37da (comint-read-input-ring): New arg SILENT.
Richard M. Stallman <rms@gnu.org>
parents: 5166
diff changeset
1388 hilit-yank)))
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1389 (let* ((selected (selected-window))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1390 (current (current-buffer))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1391 (process (get-buffer-process current))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1392 (scroll comint-scroll-to-bottom-on-input))
5284
9c8749be37da (comint-read-input-ring): New arg SILENT.
Richard M. Stallman <rms@gnu.org>
parents: 5166
diff changeset
1393 (if (and process (< (point) (process-mark process)))
5122
23f6d57ced16 (comint-preinput-scroll-to-bottom): If SCROLL is `this',
Richard M. Stallman <rms@gnu.org>
parents: 5058
diff changeset
1394 (if (eq scroll 'this)
23f6d57ced16 (comint-preinput-scroll-to-bottom): If SCROLL is `this',
Richard M. Stallman <rms@gnu.org>
parents: 5058
diff changeset
1395 (goto-char (point-max))
23f6d57ced16 (comint-preinput-scroll-to-bottom): If SCROLL is `this',
Richard M. Stallman <rms@gnu.org>
parents: 5058
diff changeset
1396 (walk-windows
23f6d57ced16 (comint-preinput-scroll-to-bottom): If SCROLL is `this',
Richard M. Stallman <rms@gnu.org>
parents: 5058
diff changeset
1397 (function (lambda (window)
23f6d57ced16 (comint-preinput-scroll-to-bottom): If SCROLL is `this',
Richard M. Stallman <rms@gnu.org>
parents: 5058
diff changeset
1398 (if (and (eq (window-buffer window) current)
5284
9c8749be37da (comint-read-input-ring): New arg SILENT.
Richard M. Stallman <rms@gnu.org>
parents: 5166
diff changeset
1399 (or (eq scroll t) (eq scroll 'all)))
5122
23f6d57ced16 (comint-preinput-scroll-to-bottom): If SCROLL is `this',
Richard M. Stallman <rms@gnu.org>
parents: 5058
diff changeset
1400 (progn
23f6d57ced16 (comint-preinput-scroll-to-bottom): If SCROLL is `this',
Richard M. Stallman <rms@gnu.org>
parents: 5058
diff changeset
1401 (select-window window)
23f6d57ced16 (comint-preinput-scroll-to-bottom): If SCROLL is `this',
Richard M. Stallman <rms@gnu.org>
parents: 5058
diff changeset
1402 (goto-char (point-max))
23f6d57ced16 (comint-preinput-scroll-to-bottom): If SCROLL is `this',
Richard M. Stallman <rms@gnu.org>
parents: 5058
diff changeset
1403 (select-window selected)))))
5284
9c8749be37da (comint-read-input-ring): New arg SILENT.
Richard M. Stallman <rms@gnu.org>
parents: 5166
diff changeset
1404 nil t))))))
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1405
4890
dab300dfe449 (comint-scroll-to-bottom-on-input): Default to nil.
Richard M. Stallman <rms@gnu.org>
parents: 4880
diff changeset
1406 (defun comint-postoutput-scroll-to-bottom (string)
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1407 "Go to the end of buffer in all windows showing it.
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1408 Does not scroll if the current line is the last line in the buffer.
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1409 Depends on the value of `comint-scroll-to-bottom-on-output' and
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1410 `comint-scroll-show-maximum-output'.
3386
bc4729d67e6e (comint-filter): Put window-start before the input.
Richard M. Stallman <rms@gnu.org>
parents: 3113
diff changeset
1411
6187
280d4a97da69 (comint-input-filter-functions)
Richard M. Stallman <rms@gnu.org>
parents: 6185
diff changeset
1412 This function should be in the list `comint-output-filter-functions'."
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1413 (let* ((selected (selected-window))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1414 (current (current-buffer))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1415 (process (get-buffer-process current))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1416 (scroll comint-scroll-to-bottom-on-output))
5284
9c8749be37da (comint-read-input-ring): New arg SILENT.
Richard M. Stallman <rms@gnu.org>
parents: 5166
diff changeset
1417 (unwind-protect
9c8749be37da (comint-read-input-ring): New arg SILENT.
Richard M. Stallman <rms@gnu.org>
parents: 5166
diff changeset
1418 (if process
9c8749be37da (comint-read-input-ring): New arg SILENT.
Richard M. Stallman <rms@gnu.org>
parents: 5166
diff changeset
1419 (walk-windows
9c8749be37da (comint-read-input-ring): New arg SILENT.
Richard M. Stallman <rms@gnu.org>
parents: 5166
diff changeset
1420 (function (lambda (window)
9c8749be37da (comint-read-input-ring): New arg SILENT.
Richard M. Stallman <rms@gnu.org>
parents: 5166
diff changeset
1421 (if (eq (window-buffer window) current)
9c8749be37da (comint-read-input-ring): New arg SILENT.
Richard M. Stallman <rms@gnu.org>
parents: 5166
diff changeset
1422 (progn
9c8749be37da (comint-read-input-ring): New arg SILENT.
Richard M. Stallman <rms@gnu.org>
parents: 5166
diff changeset
1423 (select-window window)
9c8749be37da (comint-read-input-ring): New arg SILENT.
Richard M. Stallman <rms@gnu.org>
parents: 5166
diff changeset
1424 (if (and (< (point) (process-mark process))
9c8749be37da (comint-read-input-ring): New arg SILENT.
Richard M. Stallman <rms@gnu.org>
parents: 5166
diff changeset
1425 (or (eq scroll t) (eq scroll 'all)
15654
6f32894f4ad3 1. For fns like comint-postoutput-scroll-to-bottom on comint-output-filter-functions, don't count back using the length of STRING, as previous fns may have changed the buffer. Count from process-mark.
Simon Marshall <simon@gnu.org>
parents: 15541
diff changeset
1426 ;; Maybe user wants point to jump to end.
5284
9c8749be37da (comint-read-input-ring): New arg SILENT.
Richard M. Stallman <rms@gnu.org>
parents: 5166
diff changeset
1427 (and (eq scroll 'this) (eq selected window))
9c8749be37da (comint-read-input-ring): New arg SILENT.
Richard M. Stallman <rms@gnu.org>
parents: 5166
diff changeset
1428 (and (eq scroll 'others) (not (eq selected window)))
15654
6f32894f4ad3 1. For fns like comint-postoutput-scroll-to-bottom on comint-output-filter-functions, don't count back using the length of STRING, as previous fns may have changed the buffer. Count from process-mark.
Simon Marshall <simon@gnu.org>
parents: 15541
diff changeset
1429 ;; If point was at the end, keep it at end.
23036
ee3a3af924b4 (comint-postoutput-scroll-to-bottom): Cope with unset
Richard M. Stallman <rms@gnu.org>
parents: 22900
diff changeset
1430 (and (marker-position comint-last-output-start)
ee3a3af924b4 (comint-postoutput-scroll-to-bottom): Cope with unset
Richard M. Stallman <rms@gnu.org>
parents: 22900
diff changeset
1431 (>= (point) comint-last-output-start))))
5284
9c8749be37da (comint-read-input-ring): New arg SILENT.
Richard M. Stallman <rms@gnu.org>
parents: 5166
diff changeset
1432 (goto-char (process-mark process)))
9c8749be37da (comint-read-input-ring): New arg SILENT.
Richard M. Stallman <rms@gnu.org>
parents: 5166
diff changeset
1433 ;; Optionally scroll so that the text
9c8749be37da (comint-read-input-ring): New arg SILENT.
Richard M. Stallman <rms@gnu.org>
parents: 5166
diff changeset
1434 ;; ends at the bottom of the window.
9c8749be37da (comint-read-input-ring): New arg SILENT.
Richard M. Stallman <rms@gnu.org>
parents: 5166
diff changeset
1435 (if (and comint-scroll-show-maximum-output
9c8749be37da (comint-read-input-ring): New arg SILENT.
Richard M. Stallman <rms@gnu.org>
parents: 5166
diff changeset
1436 (>= (point) (process-mark process)))
9c8749be37da (comint-read-input-ring): New arg SILENT.
Richard M. Stallman <rms@gnu.org>
parents: 5166
diff changeset
1437 (save-excursion
9c8749be37da (comint-read-input-ring): New arg SILENT.
Richard M. Stallman <rms@gnu.org>
parents: 5166
diff changeset
1438 (goto-char (point-max))
9c8749be37da (comint-read-input-ring): New arg SILENT.
Richard M. Stallman <rms@gnu.org>
parents: 5166
diff changeset
1439 (recenter -1)))
9c8749be37da (comint-read-input-ring): New arg SILENT.
Richard M. Stallman <rms@gnu.org>
parents: 5166
diff changeset
1440 (select-window selected)))))
9c8749be37da (comint-read-input-ring): New arg SILENT.
Richard M. Stallman <rms@gnu.org>
parents: 5166
diff changeset
1441 nil t))
9c8749be37da (comint-read-input-ring): New arg SILENT.
Richard M. Stallman <rms@gnu.org>
parents: 5166
diff changeset
1442 (set-buffer current))))
2683
21ab70613c42 (comint-filter): New function.
Richard M. Stallman <rms@gnu.org>
parents: 2680
diff changeset
1443
10833
77d7d3990300 Added comint-buffer-maximum-size and comint-truncate-buffer.
Simon Marshall <simon@gnu.org>
parents: 10830
diff changeset
1444 (defun comint-truncate-buffer (&optional string)
77d7d3990300 Added comint-buffer-maximum-size and comint-truncate-buffer.
Simon Marshall <simon@gnu.org>
parents: 10830
diff changeset
1445 "Truncate the buffer to `comint-buffer-maximum-size'.
77d7d3990300 Added comint-buffer-maximum-size and comint-truncate-buffer.
Simon Marshall <simon@gnu.org>
parents: 10830
diff changeset
1446 This function could be on `comint-output-filter-functions' or bound to a key."
77d7d3990300 Added comint-buffer-maximum-size and comint-truncate-buffer.
Simon Marshall <simon@gnu.org>
parents: 10830
diff changeset
1447 (interactive)
77d7d3990300 Added comint-buffer-maximum-size and comint-truncate-buffer.
Simon Marshall <simon@gnu.org>
parents: 10830
diff changeset
1448 (save-excursion
15654
6f32894f4ad3 1. For fns like comint-postoutput-scroll-to-bottom on comint-output-filter-functions, don't count back using the length of STRING, as previous fns may have changed the buffer. Count from process-mark.
Simon Marshall <simon@gnu.org>
parents: 15541
diff changeset
1449 (goto-char (process-mark (get-buffer-process (current-buffer))))
10833
77d7d3990300 Added comint-buffer-maximum-size and comint-truncate-buffer.
Simon Marshall <simon@gnu.org>
parents: 10830
diff changeset
1450 (forward-line (- comint-buffer-maximum-size))
77d7d3990300 Added comint-buffer-maximum-size and comint-truncate-buffer.
Simon Marshall <simon@gnu.org>
parents: 10830
diff changeset
1451 (beginning-of-line)
77d7d3990300 Added comint-buffer-maximum-size and comint-truncate-buffer.
Simon Marshall <simon@gnu.org>
parents: 10830
diff changeset
1452 (delete-region (point-min) (point))))
77d7d3990300 Added comint-buffer-maximum-size and comint-truncate-buffer.
Simon Marshall <simon@gnu.org>
parents: 10830
diff changeset
1453
9245
b2440a22efc2 (comint-strip-ctrl-m): Renamed from shell-strip-crtl-m and moved here.
Richard M. Stallman <rms@gnu.org>
parents: 9067
diff changeset
1454 (defun comint-strip-ctrl-m (&optional string)
b2440a22efc2 (comint-strip-ctrl-m): Renamed from shell-strip-crtl-m and moved here.
Richard M. Stallman <rms@gnu.org>
parents: 9067
diff changeset
1455 "Strip trailing `^M' characters from the current output group.
10833
77d7d3990300 Added comint-buffer-maximum-size and comint-truncate-buffer.
Simon Marshall <simon@gnu.org>
parents: 10830
diff changeset
1456 This function could be on `comint-output-filter-functions' or bound to a key."
9245
b2440a22efc2 (comint-strip-ctrl-m): Renamed from shell-strip-crtl-m and moved here.
Richard M. Stallman <rms@gnu.org>
parents: 9067
diff changeset
1457 (interactive)
b2440a22efc2 (comint-strip-ctrl-m): Renamed from shell-strip-crtl-m and moved here.
Richard M. Stallman <rms@gnu.org>
parents: 9067
diff changeset
1458 (let ((pmark (process-mark (get-buffer-process (current-buffer)))))
b2440a22efc2 (comint-strip-ctrl-m): Renamed from shell-strip-crtl-m and moved here.
Richard M. Stallman <rms@gnu.org>
parents: 9067
diff changeset
1459 (save-excursion
20458
ad0d2c5040a0 (comint-strip-ctrl-m): Don't die if
Karl Heuer <kwzh@gnu.org>
parents: 20020
diff changeset
1460 (condition-case nil
ad0d2c5040a0 (comint-strip-ctrl-m): Don't die if
Karl Heuer <kwzh@gnu.org>
parents: 20020
diff changeset
1461 (goto-char
ad0d2c5040a0 (comint-strip-ctrl-m): Don't die if
Karl Heuer <kwzh@gnu.org>
parents: 20020
diff changeset
1462 (if (interactive-p) comint-last-input-end comint-last-output-start))
ad0d2c5040a0 (comint-strip-ctrl-m): Don't die if
Karl Heuer <kwzh@gnu.org>
parents: 20020
diff changeset
1463 (error nil))
9245
b2440a22efc2 (comint-strip-ctrl-m): Renamed from shell-strip-crtl-m and moved here.
Richard M. Stallman <rms@gnu.org>
parents: 9067
diff changeset
1464 (while (re-search-forward "\r+$" pmark t)
b2440a22efc2 (comint-strip-ctrl-m): Renamed from shell-strip-crtl-m and moved here.
Richard M. Stallman <rms@gnu.org>
parents: 9067
diff changeset
1465 (replace-match "" t t)))))
b2440a22efc2 (comint-strip-ctrl-m): Renamed from shell-strip-crtl-m and moved here.
Richard M. Stallman <rms@gnu.org>
parents: 9067
diff changeset
1466 (defalias 'shell-strip-ctrl-m 'comint-strip-ctrl-m)
b2440a22efc2 (comint-strip-ctrl-m): Renamed from shell-strip-crtl-m and moved here.
Richard M. Stallman <rms@gnu.org>
parents: 9067
diff changeset
1467
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1468 (defun comint-show-maximum-output ()
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1469 "Put the end of the buffer at the bottom of the window."
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1470 (interactive)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1471 (goto-char (point-max))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1472 (recenter -1))
2683
21ab70613c42 (comint-filter): New function.
Richard M. Stallman <rms@gnu.org>
parents: 2680
diff changeset
1473
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1474 (defun comint-get-old-input-default ()
3386
bc4729d67e6e (comint-filter): Put window-start before the input.
Richard M. Stallman <rms@gnu.org>
parents: 3113
diff changeset
1475 "Default for `comint-get-old-input'.
1356
dcf780f7ae1b Doc fix.
Christopher Zaborsky <rogue@erratum.com>
parents: 1131
diff changeset
1476 Take the current line, and discard any initial text matching
3386
bc4729d67e6e (comint-filter): Put window-start before the input.
Richard M. Stallman <rms@gnu.org>
parents: 3113
diff changeset
1477 `comint-prompt-regexp'."
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1478 (save-excursion
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
1479 (beginning-of-line)
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
1480 (comint-skip-prompt)
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
1481 (let ((beg (point)))
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
1482 (end-of-line)
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
1483 (buffer-substring beg (point)))))
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
1484
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1485 (defun comint-copy-old-input ()
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1486 "Insert after prompt old input at point as new input to be edited.
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1487 Calls `comint-get-old-input' to get old input."
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1488 (interactive)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1489 (let ((input (funcall comint-get-old-input))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1490 (process (get-buffer-process (current-buffer))))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1491 (if (not process)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1492 (error "Current buffer has no process")
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1493 (goto-char (process-mark process))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1494 (insert input))))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1495
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
1496 (defun comint-skip-prompt ()
3386
bc4729d67e6e (comint-filter): Put window-start before the input.
Richard M. Stallman <rms@gnu.org>
parents: 3113
diff changeset
1497 "Skip past the text matching regexp `comint-prompt-regexp'.
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
1498 If this takes us past the end of the current line, don't skip at all."
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
1499 (let ((eol (save-excursion (end-of-line) (point))))
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
1500 (if (and (looking-at comint-prompt-regexp)
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
1501 (<= (match-end 0) eol))
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
1502 (goto-char (match-end 0)))))
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
1503
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
1504 (defun comint-after-pmark-p ()
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1505 "Return t if point is after the process output marker."
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1506 (let ((pmark (process-mark (get-buffer-process (current-buffer)))))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1507 (<= (marker-position pmark) (point))))
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
1508
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
1509 (defun comint-simple-send (proc string)
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
1510 "Default function for sending to PROC input STRING.
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
1511 This just sends STRING plus a newline. To override this,
3386
bc4729d67e6e (comint-filter): Put window-start before the input.
Richard M. Stallman <rms@gnu.org>
parents: 3113
diff changeset
1512 set the hook `comint-input-sender'."
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
1513 (comint-send-string proc string)
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
1514 (comint-send-string proc "\n"))
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1515
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1516 (defun comint-bol (arg)
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1517 "Goes to the beginning of line, then skips past the prompt, if any.
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1518 If prefix argument is given (\\[universal-argument]) the prompt is not skipped.
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1519
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
1520 The prompt skip is done by skipping text matching the regular expression
8266
6c1351ac3462 Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 8265
diff changeset
1521 `comint-prompt-regexp', a buffer local variable."
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1522 (interactive "P")
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1523 (beginning-of-line)
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
1524 (if (null arg) (comint-skip-prompt)))
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1525
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1526 ;; These three functions are for entering text you don't want echoed or
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1527 ;; saved -- typically passwords to ftp, telnet, or somesuch.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1528 ;; Just enter m-x send-invisible and type in your line, or add
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1529 ;; `comint-watch-for-password-prompt' to `comint-output-filter-functions'.
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
1530
705
c7d478752305 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 662
diff changeset
1531 (defun comint-read-noecho (prompt &optional stars)
2455
27d28402ee59 new comint-read-noecho.
Noah Friedman <friedman@splode.com>
parents: 2307
diff changeset
1532 "Read a single line of text from user without echoing, and return it.
27d28402ee59 new comint-read-noecho.
Noah Friedman <friedman@splode.com>
parents: 2307
diff changeset
1533 Prompt with argument PROMPT, a string. Optional argument STARS causes
27d28402ee59 new comint-read-noecho.
Noah Friedman <friedman@splode.com>
parents: 2307
diff changeset
1534 input to be echoed with '*' characters on the prompt line. Input ends with
27d28402ee59 new comint-read-noecho.
Noah Friedman <friedman@splode.com>
parents: 2307
diff changeset
1535 RET, LFD, or ESC. DEL or C-h rubs out. C-u kills line. C-g aborts (if
3386
bc4729d67e6e (comint-filter): Put window-start before the input.
Richard M. Stallman <rms@gnu.org>
parents: 3113
diff changeset
1536 `inhibit-quit' is set because e.g. this function was called from a process
bc4729d67e6e (comint-filter): Put window-start before the input.
Richard M. Stallman <rms@gnu.org>
parents: 3113
diff changeset
1537 filter and C-g is pressed, this function returns nil rather than a string).
2455
27d28402ee59 new comint-read-noecho.
Noah Friedman <friedman@splode.com>
parents: 2307
diff changeset
1538
27d28402ee59 new comint-read-noecho.
Noah Friedman <friedman@splode.com>
parents: 2307
diff changeset
1539 Note that the keystrokes comprising the text can still be recovered
16409
258a28c21b74 (comint-read-noecho): Clear out the intermediate strings.
Richard M. Stallman <rms@gnu.org>
parents: 15817
diff changeset
1540 \(temporarily) with \\[view-lossage]. Some people find this worrysome.
258a28c21b74 (comint-read-noecho): Clear out the intermediate strings.
Richard M. Stallman <rms@gnu.org>
parents: 15817
diff changeset
1541 Once the caller uses the password, it can erase the password
258a28c21b74 (comint-read-noecho): Clear out the intermediate strings.
Richard M. Stallman <rms@gnu.org>
parents: 15817
diff changeset
1542 by doing (fillarray STRING 0)."
2455
27d28402ee59 new comint-read-noecho.
Noah Friedman <friedman@splode.com>
parents: 2307
diff changeset
1543 (let ((ans "")
16409
258a28c21b74 (comint-read-noecho): Clear out the intermediate strings.
Richard M. Stallman <rms@gnu.org>
parents: 15817
diff changeset
1544 (newans nil)
2455
27d28402ee59 new comint-read-noecho.
Noah Friedman <friedman@splode.com>
parents: 2307
diff changeset
1545 (c 0)
27d28402ee59 new comint-read-noecho.
Noah Friedman <friedman@splode.com>
parents: 2307
diff changeset
1546 (echo-keystrokes 0)
705
c7d478752305 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 662
diff changeset
1547 (cursor-in-echo-area t)
11156
31a046cedfc8 (comint-read-noecho): Don't log prompt messages.
Karl Heuer <kwzh@gnu.org>
parents: 11147
diff changeset
1548 (message-log-max nil)
31a046cedfc8 (comint-read-noecho): Don't log prompt messages.
Karl Heuer <kwzh@gnu.org>
parents: 11147
diff changeset
1549 (done nil))
2455
27d28402ee59 new comint-read-noecho.
Noah Friedman <friedman@splode.com>
parents: 2307
diff changeset
1550 (while (not done)
27d28402ee59 new comint-read-noecho.
Noah Friedman <friedman@splode.com>
parents: 2307
diff changeset
1551 (if stars
11147
8c896f45f888 (comint-read-noecho): Use a format string, in case
Karl Heuer <kwzh@gnu.org>
parents: 10833
diff changeset
1552 (message "%s%s" prompt (make-string (length ans) ?*))
8c896f45f888 (comint-read-noecho): Use a format string, in case
Karl Heuer <kwzh@gnu.org>
parents: 10833
diff changeset
1553 (message "%s" prompt))
9764
077430ee7179 (comint-read-noecho): Use `read-char-exclusive' instead of `read-char'.
Richard M. Stallman <rms@gnu.org>
parents: 9388
diff changeset
1554 ;; Use this instead of `read-char' to avoid "Non-character input-event".
077430ee7179 (comint-read-noecho): Use `read-char-exclusive' instead of `read-char'.
Richard M. Stallman <rms@gnu.org>
parents: 9388
diff changeset
1555 (setq c (read-char-exclusive))
2455
27d28402ee59 new comint-read-noecho.
Noah Friedman <friedman@splode.com>
parents: 2307
diff changeset
1556 (cond ((= c ?\C-g)
11187
ac3611b5f490 Added support for special (quoted) characters in file names:
Simon Marshall <simon@gnu.org>
parents: 11156
diff changeset
1557 ;; This function may get called from a process filter, where
ac3611b5f490 Added support for special (quoted) characters in file names:
Simon Marshall <simon@gnu.org>
parents: 11156
diff changeset
1558 ;; inhibit-quit is set. In later versions of emacs read-char
ac3611b5f490 Added support for special (quoted) characters in file names:
Simon Marshall <simon@gnu.org>
parents: 11156
diff changeset
1559 ;; may clear quit-flag itself and return C-g. That would make
ac3611b5f490 Added support for special (quoted) characters in file names:
Simon Marshall <simon@gnu.org>
parents: 11156
diff changeset
1560 ;; it impossible to quit this loop in a simple way, so
ac3611b5f490 Added support for special (quoted) characters in file names:
Simon Marshall <simon@gnu.org>
parents: 11156
diff changeset
1561 ;; re-enable it here (for backward-compatibility the check for
ac3611b5f490 Added support for special (quoted) characters in file names:
Simon Marshall <simon@gnu.org>
parents: 11156
diff changeset
1562 ;; quit-flag below would still be necessary, so this seems
ac3611b5f490 Added support for special (quoted) characters in file names:
Simon Marshall <simon@gnu.org>
parents: 11156
diff changeset
1563 ;; like the simplest way to do things).
ac3611b5f490 Added support for special (quoted) characters in file names:
Simon Marshall <simon@gnu.org>
parents: 11156
diff changeset
1564 (setq quit-flag t
ac3611b5f490 Added support for special (quoted) characters in file names:
Simon Marshall <simon@gnu.org>
parents: 11156
diff changeset
1565 done t))
ac3611b5f490 Added support for special (quoted) characters in file names:
Simon Marshall <simon@gnu.org>
parents: 11156
diff changeset
1566 ((or (= c ?\r) (= c ?\n) (= c ?\e))
ac3611b5f490 Added support for special (quoted) characters in file names:
Simon Marshall <simon@gnu.org>
parents: 11156
diff changeset
1567 (setq done t))
ac3611b5f490 Added support for special (quoted) characters in file names:
Simon Marshall <simon@gnu.org>
parents: 11156
diff changeset
1568 ((= c ?\C-u)
16409
258a28c21b74 (comint-read-noecho): Clear out the intermediate strings.
Richard M. Stallman <rms@gnu.org>
parents: 15817
diff changeset
1569 (fillarray ans 0)
11187
ac3611b5f490 Added support for special (quoted) characters in file names:
Simon Marshall <simon@gnu.org>
parents: 11156
diff changeset
1570 (setq ans ""))
ac3611b5f490 Added support for special (quoted) characters in file names:
Simon Marshall <simon@gnu.org>
parents: 11156
diff changeset
1571 ((and (/= c ?\b) (/= c ?\177))
16409
258a28c21b74 (comint-read-noecho): Clear out the intermediate strings.
Richard M. Stallman <rms@gnu.org>
parents: 15817
diff changeset
1572 (setq newans (concat ans (char-to-string c)))
258a28c21b74 (comint-read-noecho): Clear out the intermediate strings.
Richard M. Stallman <rms@gnu.org>
parents: 15817
diff changeset
1573 (fillarray ans 0)
258a28c21b74 (comint-read-noecho): Clear out the intermediate strings.
Richard M. Stallman <rms@gnu.org>
parents: 15817
diff changeset
1574 (setq ans newans))
11187
ac3611b5f490 Added support for special (quoted) characters in file names:
Simon Marshall <simon@gnu.org>
parents: 11156
diff changeset
1575 ((> (length ans) 0)
16409
258a28c21b74 (comint-read-noecho): Clear out the intermediate strings.
Richard M. Stallman <rms@gnu.org>
parents: 15817
diff changeset
1576 (aset ans (1- (length ans)) 0)
11187
ac3611b5f490 Added support for special (quoted) characters in file names:
Simon Marshall <simon@gnu.org>
parents: 11156
diff changeset
1577 (setq ans (substring ans 0 -1)))))
2455
27d28402ee59 new comint-read-noecho.
Noah Friedman <friedman@splode.com>
parents: 2307
diff changeset
1578 (if quit-flag
27d28402ee59 new comint-read-noecho.
Noah Friedman <friedman@splode.com>
parents: 2307
diff changeset
1579 ;; Emulate a true quit, except that we have to return a value.
27d28402ee59 new comint-read-noecho.
Noah Friedman <friedman@splode.com>
parents: 2307
diff changeset
1580 (prog1
27d28402ee59 new comint-read-noecho.
Noah Friedman <friedman@splode.com>
parents: 2307
diff changeset
1581 (setq quit-flag nil)
27d28402ee59 new comint-read-noecho.
Noah Friedman <friedman@splode.com>
parents: 2307
diff changeset
1582 (message "Quit")
27d28402ee59 new comint-read-noecho.
Noah Friedman <friedman@splode.com>
parents: 2307
diff changeset
1583 (beep t))
27d28402ee59 new comint-read-noecho.
Noah Friedman <friedman@splode.com>
parents: 2307
diff changeset
1584 (message "")
27d28402ee59 new comint-read-noecho.
Noah Friedman <friedman@splode.com>
parents: 2307
diff changeset
1585 ans)))
705
c7d478752305 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 662
diff changeset
1586
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1587 (defun send-invisible (str)
1356
dcf780f7ae1b Doc fix.
Christopher Zaborsky <rogue@erratum.com>
parents: 1131
diff changeset
1588 "Read a string without echoing.
13702
f7bf7f756503 Use comint-input-sender to send text (Peter Gabriel <gabriel@or.iabg.de>).
Simon Marshall <simon@gnu.org>
parents: 13271
diff changeset
1589 Then send it to the process running in the current buffer.
f7bf7f756503 Use comint-input-sender to send text (Peter Gabriel <gabriel@or.iabg.de>).
Simon Marshall <simon@gnu.org>
parents: 13271
diff changeset
1590 The string is sent using `comint-input-sender'.
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
1591 Security bug: your string can still be temporarily recovered with
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
1592 \\[view-lossage]."
17159
6f1e715cbd58 minor bug fixes/enhancements to comint-delchar-or-maybe-eof, send-invisible, comint-exec-1.
Simon Marshall <simon@gnu.org>
parents: 16944
diff changeset
1593 (interactive "P") ; Defeat snooping via C-x ESC ESC
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1594 (let ((proc (get-buffer-process (current-buffer))))
17159
6f1e715cbd58 minor bug fixes/enhancements to comint-delchar-or-maybe-eof, send-invisible, comint-exec-1.
Simon Marshall <simon@gnu.org>
parents: 16944
diff changeset
1595 (cond ((not proc)
6f1e715cbd58 minor bug fixes/enhancements to comint-delchar-or-maybe-eof, send-invisible, comint-exec-1.
Simon Marshall <simon@gnu.org>
parents: 16944
diff changeset
1596 (error "Current buffer has no process"))
6f1e715cbd58 minor bug fixes/enhancements to comint-delchar-or-maybe-eof, send-invisible, comint-exec-1.
Simon Marshall <simon@gnu.org>
parents: 16944
diff changeset
1597 ((stringp str)
6f1e715cbd58 minor bug fixes/enhancements to comint-delchar-or-maybe-eof, send-invisible, comint-exec-1.
Simon Marshall <simon@gnu.org>
parents: 16944
diff changeset
1598 (funcall comint-input-sender proc str))
6f1e715cbd58 minor bug fixes/enhancements to comint-delchar-or-maybe-eof, send-invisible, comint-exec-1.
Simon Marshall <simon@gnu.org>
parents: 16944
diff changeset
1599 (t
6f1e715cbd58 minor bug fixes/enhancements to comint-delchar-or-maybe-eof, send-invisible, comint-exec-1.
Simon Marshall <simon@gnu.org>
parents: 16944
diff changeset
1600 (let ((str (comint-read-noecho "Non-echoed text: " t)))
6f1e715cbd58 minor bug fixes/enhancements to comint-delchar-or-maybe-eof, send-invisible, comint-exec-1.
Simon Marshall <simon@gnu.org>
parents: 16944
diff changeset
1601 (if (stringp str)
6f1e715cbd58 minor bug fixes/enhancements to comint-delchar-or-maybe-eof, send-invisible, comint-exec-1.
Simon Marshall <simon@gnu.org>
parents: 16944
diff changeset
1602 (send-invisible str)
6f1e715cbd58 minor bug fixes/enhancements to comint-delchar-or-maybe-eof, send-invisible, comint-exec-1.
Simon Marshall <simon@gnu.org>
parents: 16944
diff changeset
1603 (message "Warning: text will be echoed")))))))
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1604
6507
ff41e0e932b8 (comint-run): New command.
Richard M. Stallman <rms@gnu.org>
parents: 6256
diff changeset
1605 (defun comint-watch-for-password-prompt (string)
ff41e0e932b8 (comint-run): New command.
Richard M. Stallman <rms@gnu.org>
parents: 6256
diff changeset
1606 "Prompt in the minibuffer for password and send without echoing.
ff41e0e932b8 (comint-run): New command.
Richard M. Stallman <rms@gnu.org>
parents: 6256
diff changeset
1607 This function uses `send-invisible' to read and send a password to the buffer's
8087
c22d7c5168f5 comint-password-prompt-regexp: New variable.
Noah Friedman <friedman@splode.com>
parents: 8060
diff changeset
1608 process if STRING contains a password prompt defined by
c22d7c5168f5 comint-password-prompt-regexp: New variable.
Noah Friedman <friedman@splode.com>
parents: 8060
diff changeset
1609 `comint-password-prompt-regexp'.
6507
ff41e0e932b8 (comint-run): New command.
Richard M. Stallman <rms@gnu.org>
parents: 6256
diff changeset
1610
ff41e0e932b8 (comint-run): New command.
Richard M. Stallman <rms@gnu.org>
parents: 6256
diff changeset
1611 This function could be in the list `comint-output-filter-functions'."
8087
c22d7c5168f5 comint-password-prompt-regexp: New variable.
Noah Friedman <friedman@splode.com>
parents: 8060
diff changeset
1612 (if (string-match comint-password-prompt-regexp string)
6507
ff41e0e932b8 (comint-run): New command.
Richard M. Stallman <rms@gnu.org>
parents: 6256
diff changeset
1613 (send-invisible nil)))
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1614
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1615 ;; Low-level process communication
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1616
9067
e3c21008877f (comint-input-chunk-size): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8641
diff changeset
1617 (defalias 'comint-send-string 'process-send-string)
e3c21008877f (comint-input-chunk-size): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8641
diff changeset
1618 (defalias 'comint-send-region 'process-send-region)
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1619
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1620 ;; Random input hackage
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1621
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
1622 (defun comint-kill-output ()
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1623 "Kill all output from interpreter since last input.
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1624 Does not delete the prompt."
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1625 (interactive)
6998
40163ff9fc7c (comint-mode): Set comint-last-input-start and
Richard M. Stallman <rms@gnu.org>
parents: 6958
diff changeset
1626 (let ((proc (get-buffer-process (current-buffer)))
40163ff9fc7c (comint-mode): Set comint-last-input-start and
Richard M. Stallman <rms@gnu.org>
parents: 6958
diff changeset
1627 (replacement nil))
40163ff9fc7c (comint-mode): Set comint-last-input-start and
Richard M. Stallman <rms@gnu.org>
parents: 6958
diff changeset
1628 (save-excursion
40163ff9fc7c (comint-mode): Set comint-last-input-start and
Richard M. Stallman <rms@gnu.org>
parents: 6958
diff changeset
1629 (let ((pmark (progn (goto-char (process-mark proc))
40163ff9fc7c (comint-mode): Set comint-last-input-start and
Richard M. Stallman <rms@gnu.org>
parents: 6958
diff changeset
1630 (beginning-of-line nil)
40163ff9fc7c (comint-mode): Set comint-last-input-start and
Richard M. Stallman <rms@gnu.org>
parents: 6958
diff changeset
1631 (point-marker))))
40163ff9fc7c (comint-mode): Set comint-last-input-start and
Richard M. Stallman <rms@gnu.org>
parents: 6958
diff changeset
1632 (delete-region comint-last-input-end pmark)
12519
dd3560e3254c (comint-kill-output): Preserve entire partial line at
Karl Heuer <kwzh@gnu.org>
parents: 12208
diff changeset
1633 (goto-char (process-mark proc))
6998
40163ff9fc7c (comint-mode): Set comint-last-input-start and
Richard M. Stallman <rms@gnu.org>
parents: 6958
diff changeset
1634 (setq replacement (concat "*** output flushed ***\n"
40163ff9fc7c (comint-mode): Set comint-last-input-start and
Richard M. Stallman <rms@gnu.org>
parents: 6958
diff changeset
1635 (buffer-substring pmark (point))))
40163ff9fc7c (comint-mode): Set comint-last-input-start and
Richard M. Stallman <rms@gnu.org>
parents: 6958
diff changeset
1636 (delete-region pmark (point))))
40163ff9fc7c (comint-mode): Set comint-last-input-start and
Richard M. Stallman <rms@gnu.org>
parents: 6958
diff changeset
1637 ;; Output message and put back prompt
40163ff9fc7c (comint-mode): Set comint-last-input-start and
Richard M. Stallman <rms@gnu.org>
parents: 6958
diff changeset
1638 (comint-output-filter proc replacement)))
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1639
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1640 (defun comint-show-output ()
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
1641 "Display start of this batch of interpreter output at top of window.
6507
ff41e0e932b8 (comint-run): New command.
Richard M. Stallman <rms@gnu.org>
parents: 6256
diff changeset
1642 Sets mark to the value of point when this command is run."
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1643 (interactive)
5593
58c0f2c7dfae (comint-show-output): Leave point at start of output, but push the mark.
Richard M. Stallman <rms@gnu.org>
parents: 5539
diff changeset
1644 (push-mark)
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1645 (let ((pos (point)))
5476
155472377864 (comint-show-output): Use (point-max) rather than erring when the
Roland McGrath <roland@gnu.org>
parents: 5424
diff changeset
1646 (goto-char (or (marker-position comint-last-input-end) (point-max)))
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1647 (beginning-of-line 0)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1648 (set-window-start (selected-window) (point))
5593
58c0f2c7dfae (comint-show-output): Leave point at start of output, but push the mark.
Richard M. Stallman <rms@gnu.org>
parents: 5539
diff changeset
1649 (comint-skip-prompt)))
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1650
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1651 (defun comint-interrupt-subjob ()
20894
962d8c41cfa2 (comint-interrupt-subjob): Call comint-kill-input.
Richard M. Stallman <rms@gnu.org>
parents: 20458
diff changeset
1652 "Interrupt the current subjob.
962d8c41cfa2 (comint-interrupt-subjob): Call comint-kill-input.
Richard M. Stallman <rms@gnu.org>
parents: 20458
diff changeset
1653 This command also kills the pending input
962d8c41cfa2 (comint-interrupt-subjob): Call comint-kill-input.
Richard M. Stallman <rms@gnu.org>
parents: 20458
diff changeset
1654 between the process-mark and point."
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1655 (interactive)
20894
962d8c41cfa2 (comint-interrupt-subjob): Call comint-kill-input.
Richard M. Stallman <rms@gnu.org>
parents: 20458
diff changeset
1656 (comint-kill-input)
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
1657 (interrupt-process nil comint-ptyp))
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1658
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1659 (defun comint-kill-subjob ()
20894
962d8c41cfa2 (comint-interrupt-subjob): Call comint-kill-input.
Richard M. Stallman <rms@gnu.org>
parents: 20458
diff changeset
1660 "Send kill signal to the current subjob.
962d8c41cfa2 (comint-interrupt-subjob): Call comint-kill-input.
Richard M. Stallman <rms@gnu.org>
parents: 20458
diff changeset
1661 This command also kills the pending input
962d8c41cfa2 (comint-interrupt-subjob): Call comint-kill-input.
Richard M. Stallman <rms@gnu.org>
parents: 20458
diff changeset
1662 between the process-mark and point."
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1663 (interactive)
20894
962d8c41cfa2 (comint-interrupt-subjob): Call comint-kill-input.
Richard M. Stallman <rms@gnu.org>
parents: 20458
diff changeset
1664 (comint-kill-input)
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
1665 (kill-process nil comint-ptyp))
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1666
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1667 (defun comint-quit-subjob ()
20894
962d8c41cfa2 (comint-interrupt-subjob): Call comint-kill-input.
Richard M. Stallman <rms@gnu.org>
parents: 20458
diff changeset
1668 "Send quit signal to the current subjob.
962d8c41cfa2 (comint-interrupt-subjob): Call comint-kill-input.
Richard M. Stallman <rms@gnu.org>
parents: 20458
diff changeset
1669 This command also kills the pending input
962d8c41cfa2 (comint-interrupt-subjob): Call comint-kill-input.
Richard M. Stallman <rms@gnu.org>
parents: 20458
diff changeset
1670 between the process-mark and point."
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1671 (interactive)
20894
962d8c41cfa2 (comint-interrupt-subjob): Call comint-kill-input.
Richard M. Stallman <rms@gnu.org>
parents: 20458
diff changeset
1672 (comint-kill-input)
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
1673 (quit-process nil comint-ptyp))
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1674
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1675 (defun comint-stop-subjob ()
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
1676 "Stop the current subjob.
20894
962d8c41cfa2 (comint-interrupt-subjob): Call comint-kill-input.
Richard M. Stallman <rms@gnu.org>
parents: 20458
diff changeset
1677 This command also kills the pending input
962d8c41cfa2 (comint-interrupt-subjob): Call comint-kill-input.
Richard M. Stallman <rms@gnu.org>
parents: 20458
diff changeset
1678 between the process-mark and point.
962d8c41cfa2 (comint-interrupt-subjob): Call comint-kill-input.
Richard M. Stallman <rms@gnu.org>
parents: 20458
diff changeset
1679
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1680 WARNING: if there is no current subjob, you can end up suspending
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
1681 the top-level process running in the buffer. If you accidentally do
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
1682 this, use \\[comint-continue-subjob] to resume the process. (This
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
1683 is not a problem with most shells, since they ignore this signal.)"
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1684 (interactive)
20894
962d8c41cfa2 (comint-interrupt-subjob): Call comint-kill-input.
Richard M. Stallman <rms@gnu.org>
parents: 20458
diff changeset
1685 (comint-kill-input)
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
1686 (stop-process nil comint-ptyp))
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1687
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1688 (defun comint-continue-subjob ()
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
1689 "Send CONT signal to process buffer's process group.
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1690 Useful if you accidentally suspend the top-level process."
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1691 (interactive)
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
1692 (continue-process nil comint-ptyp))
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1693
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1694 (defun comint-kill-input ()
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
1695 "Kill all text from last stuff output by interpreter to point."
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1696 (interactive)
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1697 (let ((pmark (process-mark (get-buffer-process (current-buffer)))))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1698 (if (> (point) (marker-position pmark))
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
1699 (kill-region pmark (point)))))
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1700
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1701 (defun comint-delchar-or-maybe-eof (arg)
17159
6f1e715cbd58 minor bug fixes/enhancements to comint-delchar-or-maybe-eof, send-invisible, comint-exec-1.
Simon Marshall <simon@gnu.org>
parents: 16944
diff changeset
1702 "Delete ARG characters forward or send an EOF to subprocess.
6f1e715cbd58 minor bug fixes/enhancements to comint-delchar-or-maybe-eof, send-invisible, comint-exec-1.
Simon Marshall <simon@gnu.org>
parents: 16944
diff changeset
1703 Sends an EOF only if point is at the end of the buffer and there is no input."
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1704 (interactive "p")
17269
b177ee3c4f0e (comint-delchar-or-maybe-eof): Check for null proc.
Karl Heuer <kwzh@gnu.org>
parents: 17159
diff changeset
1705 (let ((proc (get-buffer-process (current-buffer))))
b177ee3c4f0e (comint-delchar-or-maybe-eof): Check for null proc.
Karl Heuer <kwzh@gnu.org>
parents: 17159
diff changeset
1706 (if (and (eobp) proc (= (point) (marker-position (process-mark proc))))
17159
6f1e715cbd58 minor bug fixes/enhancements to comint-delchar-or-maybe-eof, send-invisible, comint-exec-1.
Simon Marshall <simon@gnu.org>
parents: 16944
diff changeset
1707 (process-send-eof)
6f1e715cbd58 minor bug fixes/enhancements to comint-delchar-or-maybe-eof, send-invisible, comint-exec-1.
Simon Marshall <simon@gnu.org>
parents: 16944
diff changeset
1708 (delete-char arg))))
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
1709
4112
ab7dee78e335 (comint-{next,prev}-prompt, comint-send-eof): New functions.
Roland McGrath <roland@gnu.org>
parents: 3985
diff changeset
1710 (defun comint-send-eof ()
ab7dee78e335 (comint-{next,prev}-prompt, comint-send-eof): New functions.
Roland McGrath <roland@gnu.org>
parents: 3985
diff changeset
1711 "Send an EOF to the current buffer's process."
ab7dee78e335 (comint-{next,prev}-prompt, comint-send-eof): New functions.
Roland McGrath <roland@gnu.org>
parents: 3985
diff changeset
1712 (interactive)
ab7dee78e335 (comint-{next,prev}-prompt, comint-send-eof): New functions.
Roland McGrath <roland@gnu.org>
parents: 3985
diff changeset
1713 (process-send-eof))
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
1714
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1715
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1716 (defun comint-backward-matching-input (regexp arg)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1717 "Search backward through buffer for match for REGEXP.
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1718 Matches are searched for on lines that match `comint-prompt-regexp'.
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1719 With prefix argument N, search for Nth previous match.
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1720 If N is negative, find the next or Nth next match."
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1721 (interactive (comint-regexp-arg "Backward input matching (regexp): "))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1722 (let* ((re (concat comint-prompt-regexp ".*" regexp))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1723 (pos (save-excursion (end-of-line (if (> arg 0) 0 1))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1724 (if (re-search-backward re nil t arg)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1725 (point)))))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1726 (if (null pos)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1727 (progn (message "Not found")
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1728 (ding))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1729 (goto-char pos)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1730 (comint-bol nil))))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1731
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1732 (defun comint-forward-matching-input (regexp arg)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1733 "Search forward through buffer for match for REGEXP.
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1734 Matches are searched for on lines that match `comint-prompt-regexp'.
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1735 With prefix argument N, search for Nth following match.
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1736 If N is negative, find the previous or Nth previous match."
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1737 (interactive (comint-regexp-arg "Forward input matching (regexp): "))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1738 (comint-backward-matching-input regexp (- arg)))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1739
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1740
4112
ab7dee78e335 (comint-{next,prev}-prompt, comint-send-eof): New functions.
Roland McGrath <roland@gnu.org>
parents: 3985
diff changeset
1741 (defun comint-next-prompt (n)
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1742 "Move to end of Nth next prompt in the buffer.
4112
ab7dee78e335 (comint-{next,prev}-prompt, comint-send-eof): New functions.
Roland McGrath <roland@gnu.org>
parents: 3985
diff changeset
1743 See `comint-prompt-regexp'."
ab7dee78e335 (comint-{next,prev}-prompt, comint-send-eof): New functions.
Roland McGrath <roland@gnu.org>
parents: 3985
diff changeset
1744 (interactive "p")
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1745 (let ((paragraph-start comint-prompt-regexp))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1746 (end-of-line (if (> n 0) 1 0))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1747 (forward-paragraph n)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1748 (comint-skip-prompt)))
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
1749
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1750 (defun comint-previous-prompt (n)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1751 "Move to end of Nth previous prompt in the buffer.
4112
ab7dee78e335 (comint-{next,prev}-prompt, comint-send-eof): New functions.
Roland McGrath <roland@gnu.org>
parents: 3985
diff changeset
1752 See `comint-prompt-regexp'."
ab7dee78e335 (comint-{next,prev}-prompt, comint-send-eof): New functions.
Roland McGrath <roland@gnu.org>
parents: 3985
diff changeset
1753 (interactive "p")
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1754 (comint-next-prompt (- n)))
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1755
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1756 ;; Support for source-file processing commands.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1757 ;;============================================================================
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1758 ;; Many command-interpreters (e.g., Lisp, Scheme, Soar) have
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1759 ;; commands that process files of source text (e.g. loading or compiling
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1760 ;; files). So the corresponding process-in-a-buffer modes have commands
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1761 ;; for doing this (e.g., lisp-load-file). The functions below are useful
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1762 ;; for defining these commands.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1763 ;;
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1764 ;; Alas, these guys don't do exactly the right thing for Lisp, Scheme
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1765 ;; and Soar, in that they don't know anything about file extensions.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1766 ;; So the compile/load interface gets the wrong default occasionally.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1767 ;; The load-file/compile-file default mechanism could be smarter -- it
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1768 ;; doesn't know about the relationship between filename extensions and
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1769 ;; whether the file is source or executable. If you compile foo.lisp
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1770 ;; with compile-file, then the next load-file should use foo.bin for
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1771 ;; the default, not foo.lisp. This is tricky to do right, particularly
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1772 ;; because the extension for executable files varies so much (.o, .bin,
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1773 ;; .lbin, .mo, .vo, .ao, ...).
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1774
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1775
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1776 ;; COMINT-SOURCE-DEFAULT -- determines defaults for source-file processing
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1777 ;; commands.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1778 ;;
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1779 ;; COMINT-CHECK-SOURCE -- if FNAME is in a modified buffer, asks you if you
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1780 ;; want to save the buffer before issuing any process requests to the command
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1781 ;; interpreter.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1782 ;;
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1783 ;; COMINT-GET-SOURCE -- used by the source-file processing commands to prompt
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1784 ;; for the file to process.
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1785
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1786 ;; (COMINT-SOURCE-DEFAULT previous-dir/file source-modes)
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1787 ;;============================================================================
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1788 ;; This function computes the defaults for the load-file and compile-file
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1789 ;; commands for tea, soar, cmulisp, and cmuscheme modes.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1790 ;;
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1791 ;; - PREVIOUS-DIR/FILE is a pair (directory . filename) from the last
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1792 ;; source-file processing command. NIL if there hasn't been one yet.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1793 ;; - SOURCE-MODES is a list used to determine what buffers contain source
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1794 ;; files: if the major mode of the buffer is in SOURCE-MODES, it's source.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1795 ;; Typically, (lisp-mode) or (scheme-mode).
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1796 ;;
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1797 ;; If the command is given while the cursor is inside a string, *and*
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1798 ;; the string is an existing filename, *and* the filename is not a directory,
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1799 ;; then the string is taken as default. This allows you to just position
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1800 ;; your cursor over a string that's a filename and have it taken as default.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1801 ;;
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1802 ;; If the command is given in a file buffer whose major mode is in
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1803 ;; SOURCE-MODES, then the the filename is the default file, and the
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1804 ;; file's directory is the default directory.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1805 ;;
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1806 ;; If the buffer isn't a source file buffer (e.g., it's the process buffer),
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1807 ;; then the default directory & file are what was used in the last source-file
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1808 ;; processing command (i.e., PREVIOUS-DIR/FILE). If this is the first time
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1809 ;; the command has been run (PREVIOUS-DIR/FILE is nil), the default directory
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1810 ;; is the cwd, with no default file. (\"no default file\" = nil)
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1811 ;;
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1812 ;; SOURCE-REGEXP is typically going to be something like (tea-mode)
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1813 ;; for T programs, (lisp-mode) for Lisp programs, (soar-mode lisp-mode)
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1814 ;; for Soar programs, etc.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1815 ;;
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1816 ;; The function returns a pair: (default-directory . default-file).
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1817
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1818 (defun comint-source-default (previous-dir/file source-modes)
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1819 (cond ((and buffer-file-name (memq major-mode source-modes))
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1820 (cons (file-name-directory buffer-file-name)
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1821 (file-name-nondirectory buffer-file-name)))
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1822 (previous-dir/file)
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1823 (t
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1824 (cons default-directory nil))))
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1825
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
1826
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1827 ;; (COMINT-CHECK-SOURCE fname)
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1828 ;;============================================================================
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1829 ;; Prior to loading or compiling (or otherwise processing) a file (in the CMU
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1830 ;; process-in-a-buffer modes), this function can be called on the filename.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1831 ;; If the file is loaded into a buffer, and the buffer is modified, the user
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1832 ;; is queried to see if he wants to save the buffer before proceeding with
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1833 ;; the load or compile.
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1834
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1835 (defun comint-check-source (fname)
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1836 (let ((buff (get-file-buffer fname)))
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1837 (if (and buff
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1838 (buffer-modified-p buff)
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1839 (y-or-n-p (format "Save buffer %s first? " (buffer-name buff))))
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1840 ;; save BUFF.
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1841 (let ((old-buffer (current-buffer)))
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1842 (set-buffer buff)
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1843 (save-buffer)
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1844 (set-buffer old-buffer)))))
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1845
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
1846
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1847 ;; (COMINT-GET-SOURCE prompt prev-dir/file source-modes mustmatch-p)
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1848 ;;============================================================================
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1849 ;; COMINT-GET-SOURCE is used to prompt for filenames in command-interpreter
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1850 ;; commands that process source files (like loading or compiling a file).
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1851 ;; It prompts for the filename, provides a default, if there is one,
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1852 ;; and returns the result filename.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1853 ;;
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1854 ;; See COMINT-SOURCE-DEFAULT for more on determining defaults.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1855 ;;
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1856 ;; PROMPT is the prompt string. PREV-DIR/FILE is the (directory . file) pair
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1857 ;; from the last source processing command. SOURCE-MODES is a list of major
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1858 ;; modes used to determine what file buffers contain source files. (These
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1859 ;; two arguments are used for determining defaults). If MUSTMATCH-P is true,
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1860 ;; then the filename reader will only accept a file that exists.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1861 ;;
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1862 ;; A typical use:
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1863 ;; (interactive (comint-get-source "Compile file: " prev-lisp-dir/file
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1864 ;; '(lisp-mode) t))
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1865
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1866 ;; This is pretty stupid about strings. It decides we're in a string
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1867 ;; if there's a quote on both sides of point on the current line.
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1868 (defun comint-extract-string ()
3386
bc4729d67e6e (comint-filter): Put window-start before the input.
Richard M. Stallman <rms@gnu.org>
parents: 3113
diff changeset
1869 "Return string around POINT that starts the current line, or nil."
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1870 (save-excursion
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1871 (let* ((point (point))
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1872 (bol (progn (beginning-of-line) (point)))
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1873 (eol (progn (end-of-line) (point)))
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1874 (start (progn (goto-char point)
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1875 (and (search-backward "\"" bol t)
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1876 (1+ (point)))))
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1877 (end (progn (goto-char point)
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1878 (and (search-forward "\"" eol t)
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1879 (1- (point))))))
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1880 (and start end
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1881 (buffer-substring start end)))))
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1882
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1883 (defun comint-get-source (prompt prev-dir/file source-modes mustmatch-p)
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1884 (let* ((def (comint-source-default prev-dir/file source-modes))
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1885 (stringfile (comint-extract-string))
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1886 (sfile-p (and stringfile
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
1887 (condition-case ()
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
1888 (file-exists-p stringfile)
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
1889 (error nil))
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1890 (not (file-directory-p stringfile))))
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1891 (defdir (if sfile-p (file-name-directory stringfile)
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1892 (car def)))
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1893 (deffile (if sfile-p (file-name-nondirectory stringfile)
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1894 (cdr def)))
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1895 (ans (read-file-name (if deffile (format "%s(default %s) "
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1896 prompt deffile)
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1897 prompt)
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1898 defdir
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1899 (concat defdir deffile)
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1900 mustmatch-p)))
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1901 (list (expand-file-name (substitute-in-file-name ans)))))
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1902
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1903 ;; I am somewhat divided on this string-default feature. It seems
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1904 ;; to violate the principle-of-least-astonishment, in that it makes
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1905 ;; the default harder to predict, so you actually have to look and see
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1906 ;; what the default really is before choosing it. This can trip you up.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1907 ;; On the other hand, it can be useful, I guess. I would appreciate feedback
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1908 ;; on this.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1909 ;; -Olin
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
1910
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1911
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1912 ;; Simple process query facility.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1913 ;; ===========================================================================
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1914 ;; This function is for commands that want to send a query to the process
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1915 ;; and show the response to the user. For example, a command to get the
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1916 ;; arglist for a Common Lisp function might send a "(arglist 'foo)" query
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1917 ;; to an inferior Common Lisp process.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1918 ;;
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1919 ;; This simple facility just sends strings to the inferior process and pops
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1920 ;; up a window for the process buffer so you can see what the process
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1921 ;; responds with. We don't do anything fancy like try to intercept what the
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1922 ;; process responds with and put it in a pop-up window or on the message
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1923 ;; line. We just display the buffer. Low tech. Simple. Works good.
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1924
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1925 ;; Send to the inferior process PROC the string STR. Pop-up but do not select
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1926 ;; a window for the inferior process so that its response can be seen.
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1927 (defun comint-proc-query (proc str)
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1928 (let* ((proc-buf (process-buffer proc))
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1929 (proc-mark (process-mark proc)))
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1930 (display-buffer proc-buf)
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1931 (set-buffer proc-buf) ; but it's not the selected *window*
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1932 (let ((proc-win (get-buffer-window proc-buf))
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1933 (proc-pt (marker-position proc-mark)))
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1934 (comint-send-string proc str) ; send the query
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1935 (accept-process-output proc) ; wait for some output
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1936 ;; Try to position the proc window so you can see the answer.
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1937 ;; This is bogus code. If you delete the (sit-for 0), it breaks.
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1938 ;; I don't know why. Wizards invited to improve it.
20986
72fa617ce5e2 Changed to use directory-sep-char rather than "/".
Simon Marshall <simon@gnu.org>
parents: 20894
diff changeset
1939 (unless (pos-visible-in-window-p proc-pt proc-win)
72fa617ce5e2 Changed to use directory-sep-char rather than "/".
Simon Marshall <simon@gnu.org>
parents: 20894
diff changeset
1940 (let ((opoint (window-point proc-win)))
72fa617ce5e2 Changed to use directory-sep-char rather than "/".
Simon Marshall <simon@gnu.org>
parents: 20894
diff changeset
1941 (set-window-point proc-win proc-mark)
72fa617ce5e2 Changed to use directory-sep-char rather than "/".
Simon Marshall <simon@gnu.org>
parents: 20894
diff changeset
1942 (sit-for 0)
72fa617ce5e2 Changed to use directory-sep-char rather than "/".
Simon Marshall <simon@gnu.org>
parents: 20894
diff changeset
1943 (if (not (pos-visible-in-window-p opoint proc-win))
72fa617ce5e2 Changed to use directory-sep-char rather than "/".
Simon Marshall <simon@gnu.org>
parents: 20894
diff changeset
1944 (push-mark opoint)
72fa617ce5e2 Changed to use directory-sep-char rather than "/".
Simon Marshall <simon@gnu.org>
parents: 20894
diff changeset
1945 (set-window-point proc-win opoint)))))))
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1946
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1947
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1948 ;; Filename/command/history completion in a buffer
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1949 ;; ===========================================================================
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1950 ;; Useful completion functions, courtesy of the Ergo group.
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1951
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1952 ;; Six commands:
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1953 ;; comint-dynamic-complete Complete or expand command, filename,
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1954 ;; history at point.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1955 ;; comint-dynamic-complete-filename Complete filename at point.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1956 ;; comint-dynamic-list-filename-completions List completions in help buffer.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1957 ;; comint-replace-by-expanded-filename Expand and complete filename at point;
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1958 ;; replace with expanded/completed name.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1959 ;; comint-dynamic-simple-complete Complete stub given candidates.
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1960
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1961 ;; These are not installed in the comint-mode keymap. But they are
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1962 ;; available for people who want them. Shell-mode installs them:
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1963 ;; (define-key shell-mode-map "\t" 'comint-dynamic-complete)
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1964 ;; (define-key shell-mode-map "\M-?"
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1965 ;; 'comint-dynamic-list-filename-completions)))
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1966 ;;
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1967 ;; Commands like this are fine things to put in load hooks if you
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1968 ;; want them present in specific modes.
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
1969
17428
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
1970 (defcustom comint-completion-autolist nil
13971
49207f2e2130 (comint-ptyp, comint-completion-autolist): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents: 13702
diff changeset
1971 "*If non-nil, automatically list possibilities on partial completion.
17428
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
1972 This mirrors the optional behavior of tcsh."
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
1973 :type 'boolean
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
1974 :group 'comint-completion)
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1975
17428
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
1976 (defcustom comint-completion-addsuffix t
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1977 "*If non-nil, add a `/' to completed directories, ` ' to file names.
11187
ac3611b5f490 Added support for special (quoted) characters in file names:
Simon Marshall <simon@gnu.org>
parents: 11156
diff changeset
1978 If a cons pair, it should be of the form (DIRSUFFIX . FILESUFFIX) where
ac3611b5f490 Added support for special (quoted) characters in file names:
Simon Marshall <simon@gnu.org>
parents: 11156
diff changeset
1979 DIRSUFFIX and FILESUFFIX are strings added on unambiguous or exact completion.
17428
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
1980 This mirrors the optional behavior of tcsh."
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
1981 :type 'boolean
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
1982 :group 'comint-completion)
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1983
17428
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
1984 (defcustom comint-completion-recexact nil
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1985 "*If non-nil, use shortest completion if characters cannot be added.
4923
63aed739d09d (comint-postoutput-scroll-to-bottom):
Richard M. Stallman <rms@gnu.org>
parents: 4899
diff changeset
1986 This mirrors the optional behavior of tcsh.
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1987
17428
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
1988 A non-nil value is useful if `comint-completion-autolist' is non-nil too."
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
1989 :type 'boolean
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
1990 :group 'comint-completion)
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1991
17428
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
1992 (defcustom comint-completion-fignore nil
6256
3810012eb29f (comint-completion-fignore): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 6239
diff changeset
1993 "*List of suffixes to be disregarded during file completion.
3810012eb29f (comint-completion-fignore): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 6239
diff changeset
1994 This mirrors the optional behavior of bash and tcsh.
3810012eb29f (comint-completion-fignore): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 6239
diff changeset
1995
17428
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
1996 Note that this applies to `comint-dynamic-complete-filename' only."
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
1997 :type '(repeat (string :tag "Suffix"))
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
1998 :group 'comint-completion)
6256
3810012eb29f (comint-completion-fignore): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 6239
diff changeset
1999
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2000 (defvar comint-file-name-prefix ""
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2001 "Prefix prepended to absolute file names taken from process input.
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2002 This is used by comint's and shell's completion functions, and by shell's
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2003 directory tracking functions.")
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2004
15817
9e94b5fdaab1 (comint-file-name-chars): Was comint-file-name-regexp.
Richard M. Stallman <rms@gnu.org>
parents: 15727
diff changeset
2005 (defvar comint-file-name-chars
21617
c944e3c8ebe2 (comint-filename-chars): Combine DOS and Windows strings.
Geoff Voelker <voelker@cs.washington.edu>
parents: 21243
diff changeset
2006 (if (memq system-type '(ms-dos windows-nt))
c944e3c8ebe2 (comint-filename-chars): Combine DOS and Windows strings.
Geoff Voelker <voelker@cs.washington.edu>
parents: 21243
diff changeset
2007 "~/A-Za-z0-9_^$!#%&{}@`'.,:()-"
c944e3c8ebe2 (comint-filename-chars): Combine DOS and Windows strings.
Geoff Voelker <voelker@cs.washington.edu>
parents: 21243
diff changeset
2008 "~/A-Za-z0-9+@:_.$#%,={}-")
15817
9e94b5fdaab1 (comint-file-name-chars): Was comint-file-name-regexp.
Richard M. Stallman <rms@gnu.org>
parents: 15727
diff changeset
2009 "String of characters valid in a file name.
19842
5797c2cbac2a (comint-file-name-chars): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 19678
diff changeset
2010 Note that all non-ASCII characters are considered valid in a file name
5797c2cbac2a (comint-file-name-chars): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 19678
diff changeset
2011 regardless of what this variable says.
15654
6f32894f4ad3 1. For fns like comint-postoutput-scroll-to-bottom on comint-output-filter-functions, don't count back using the length of STRING, as previous fns may have changed the buffer. Count from process-mark.
Simon Marshall <simon@gnu.org>
parents: 15541
diff changeset
2012
6f32894f4ad3 1. For fns like comint-postoutput-scroll-to-bottom on comint-output-filter-functions, don't count back using the length of STRING, as previous fns may have changed the buffer. Count from process-mark.
Simon Marshall <simon@gnu.org>
parents: 15541
diff changeset
2013 This is a good thing to set in mode hooks.")
6f32894f4ad3 1. For fns like comint-postoutput-scroll-to-bottom on comint-output-filter-functions, don't count back using the length of STRING, as previous fns may have changed the buffer. Count from process-mark.
Simon Marshall <simon@gnu.org>
parents: 15541
diff changeset
2014
11187
ac3611b5f490 Added support for special (quoted) characters in file names:
Simon Marshall <simon@gnu.org>
parents: 11156
diff changeset
2015 (defvar comint-file-name-quote-list nil
23615
f182b7006b7a (comint-file-name-quote-list): Doc fix.
Markus Rost <rost@math.uni-bielefeld.de>
parents: 23347
diff changeset
2016 "List of characters to quote with `\\' when in a file name.
11187
ac3611b5f490 Added support for special (quoted) characters in file names:
Simon Marshall <simon@gnu.org>
parents: 11156
diff changeset
2017
ac3611b5f490 Added support for special (quoted) characters in file names:
Simon Marshall <simon@gnu.org>
parents: 11156
diff changeset
2018 This is a good thing to set in mode hooks.")
ac3611b5f490 Added support for special (quoted) characters in file names:
Simon Marshall <simon@gnu.org>
parents: 11156
diff changeset
2019
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2020
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2021 (defun comint-directory (directory)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2022 ;; Return expanded DIRECTORY, with `comint-file-name-prefix' if absolute.
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2023 (expand-file-name (if (file-name-absolute-p directory)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2024 (concat comint-file-name-prefix directory)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2025 directory)))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2026
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2027
6185
82a92cf44059 (comint-after-partial-filename-command,
Richard M. Stallman <rms@gnu.org>
parents: 6154
diff changeset
2028 (defun comint-word (word-chars)
82a92cf44059 (comint-after-partial-filename-command,
Richard M. Stallman <rms@gnu.org>
parents: 6154
diff changeset
2029 "Return the word of WORD-CHARS at point, or nil if non is found.
82a92cf44059 (comint-after-partial-filename-command,
Richard M. Stallman <rms@gnu.org>
parents: 6154
diff changeset
2030 Word constituents are considered to be those in WORD-CHARS, which is like the
19842
5797c2cbac2a (comint-file-name-chars): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 19678
diff changeset
2031 inside of a \"[...]\" (see `skip-chars-forward'),
5797c2cbac2a (comint-file-name-chars): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 19678
diff changeset
2032 plus all non-ASCII characters."
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
2033 (save-excursion
11187
ac3611b5f490 Added support for special (quoted) characters in file names:
Simon Marshall <simon@gnu.org>
parents: 11156
diff changeset
2034 (let ((non-word-chars (concat "[^\\\\" word-chars "]")) (here (point)))
ac3611b5f490 Added support for special (quoted) characters in file names:
Simon Marshall <simon@gnu.org>
parents: 11156
diff changeset
2035 (while (and (re-search-backward non-word-chars nil 'move)
19842
5797c2cbac2a (comint-file-name-chars): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 19678
diff changeset
2036 ;;(memq (char-after (point)) shell-file-name-quote-list)
5797c2cbac2a (comint-file-name-chars): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 19678
diff changeset
2037 (or (>= (following-char) 128)
5797c2cbac2a (comint-file-name-chars): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 19678
diff changeset
2038 (eq (preceding-char) ?\\)))
11187
ac3611b5f490 Added support for special (quoted) characters in file names:
Simon Marshall <simon@gnu.org>
parents: 11156
diff changeset
2039 (backward-char 1))
12058
24c19691068e Don't go forward over a word-char if we're at bob, and set match-data.
Simon Marshall <simon@gnu.org>
parents: 11310
diff changeset
2040 ;; Don't go forward over a word-char (this can happen if we're at bob).
20986
72fa617ce5e2 Changed to use directory-sep-char rather than "/".
Simon Marshall <simon@gnu.org>
parents: 20894
diff changeset
2041 (when (or (not (bobp)) (looking-at non-word-chars))
72fa617ce5e2 Changed to use directory-sep-char rather than "/".
Simon Marshall <simon@gnu.org>
parents: 20894
diff changeset
2042 (forward-char 1))
12058
24c19691068e Don't go forward over a word-char if we're at bob, and set match-data.
Simon Marshall <simon@gnu.org>
parents: 11310
diff changeset
2043 ;; Set match-data to match the entire string.
20986
72fa617ce5e2 Changed to use directory-sep-char rather than "/".
Simon Marshall <simon@gnu.org>
parents: 20894
diff changeset
2044 (when (< (point) here)
21152
8197c659e85c (comint-word): store-match-data => set-match-data.
Richard M. Stallman <rms@gnu.org>
parents: 21018
diff changeset
2045 (set-match-data (list (point) here))
20986
72fa617ce5e2 Changed to use directory-sep-char rather than "/".
Simon Marshall <simon@gnu.org>
parents: 20894
diff changeset
2046 (match-string 0)))))
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
2047
15369
0c818ae83d43 (comint-dynamic-complete-as-filename)
Richard M. Stallman <rms@gnu.org>
parents: 15361
diff changeset
2048 (defun comint-substitute-in-file-name (filename)
0c818ae83d43 (comint-dynamic-complete-as-filename)
Richard M. Stallman <rms@gnu.org>
parents: 15361
diff changeset
2049 "Return FILENAME with environment variables substituted.
0c818ae83d43 (comint-dynamic-complete-as-filename)
Richard M. Stallman <rms@gnu.org>
parents: 15361
diff changeset
2050 Supports additional environment variable syntax of the command
0c818ae83d43 (comint-dynamic-complete-as-filename)
Richard M. Stallman <rms@gnu.org>
parents: 15361
diff changeset
2051 interpreter (e.g., the percent notation of cmd.exe on NT)."
0c818ae83d43 (comint-dynamic-complete-as-filename)
Richard M. Stallman <rms@gnu.org>
parents: 15361
diff changeset
2052 (let ((name (substitute-in-file-name filename)))
0c818ae83d43 (comint-dynamic-complete-as-filename)
Richard M. Stallman <rms@gnu.org>
parents: 15361
diff changeset
2053 (if (memq system-type '(ms-dos windows-nt))
0c818ae83d43 (comint-dynamic-complete-as-filename)
Richard M. Stallman <rms@gnu.org>
parents: 15361
diff changeset
2054 (let (env-var-name
0c818ae83d43 (comint-dynamic-complete-as-filename)
Richard M. Stallman <rms@gnu.org>
parents: 15361
diff changeset
2055 env-var-val)
0c818ae83d43 (comint-dynamic-complete-as-filename)
Richard M. Stallman <rms@gnu.org>
parents: 15361
diff changeset
2056 (save-match-data
0c818ae83d43 (comint-dynamic-complete-as-filename)
Richard M. Stallman <rms@gnu.org>
parents: 15361
diff changeset
2057 (while (string-match "%\\([^\\\\/]*\\)%" name)
0c818ae83d43 (comint-dynamic-complete-as-filename)
Richard M. Stallman <rms@gnu.org>
parents: 15361
diff changeset
2058 (setq env-var-name
0c818ae83d43 (comint-dynamic-complete-as-filename)
Richard M. Stallman <rms@gnu.org>
parents: 15361
diff changeset
2059 (substring name (match-beginning 1) (match-end 1)))
0c818ae83d43 (comint-dynamic-complete-as-filename)
Richard M. Stallman <rms@gnu.org>
parents: 15361
diff changeset
2060 (setq env-var-val (if (getenv env-var-name)
0c818ae83d43 (comint-dynamic-complete-as-filename)
Richard M. Stallman <rms@gnu.org>
parents: 15361
diff changeset
2061 (getenv env-var-name)
0c818ae83d43 (comint-dynamic-complete-as-filename)
Richard M. Stallman <rms@gnu.org>
parents: 15361
diff changeset
2062 ""))
0c818ae83d43 (comint-dynamic-complete-as-filename)
Richard M. Stallman <rms@gnu.org>
parents: 15361
diff changeset
2063 (setq name (replace-match env-var-val nil nil name))))))
0c818ae83d43 (comint-dynamic-complete-as-filename)
Richard M. Stallman <rms@gnu.org>
parents: 15361
diff changeset
2064 name))
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2065
6185
82a92cf44059 (comint-after-partial-filename-command,
Richard M. Stallman <rms@gnu.org>
parents: 6154
diff changeset
2066 (defun comint-match-partial-filename ()
82a92cf44059 (comint-after-partial-filename-command,
Richard M. Stallman <rms@gnu.org>
parents: 6154
diff changeset
2067 "Return the filename at point, or nil if non is found.
82a92cf44059 (comint-after-partial-filename-command,
Richard M. Stallman <rms@gnu.org>
parents: 6154
diff changeset
2068 Environment variables are substituted. See `comint-word'."
15817
9e94b5fdaab1 (comint-file-name-chars): Was comint-file-name-regexp.
Richard M. Stallman <rms@gnu.org>
parents: 15727
diff changeset
2069 (let ((filename (comint-word comint-file-name-chars)))
15369
0c818ae83d43 (comint-dynamic-complete-as-filename)
Richard M. Stallman <rms@gnu.org>
parents: 15361
diff changeset
2070 (and filename (comint-substitute-in-file-name
0c818ae83d43 (comint-dynamic-complete-as-filename)
Richard M. Stallman <rms@gnu.org>
parents: 15361
diff changeset
2071 (comint-unquote-filename filename)))))
11187
ac3611b5f490 Added support for special (quoted) characters in file names:
Simon Marshall <simon@gnu.org>
parents: 11156
diff changeset
2072
ac3611b5f490 Added support for special (quoted) characters in file names:
Simon Marshall <simon@gnu.org>
parents: 11156
diff changeset
2073
ac3611b5f490 Added support for special (quoted) characters in file names:
Simon Marshall <simon@gnu.org>
parents: 11156
diff changeset
2074 (defun comint-quote-filename (filename)
ac3611b5f490 Added support for special (quoted) characters in file names:
Simon Marshall <simon@gnu.org>
parents: 11156
diff changeset
2075 "Return FILENAME with magic characters quoted.
ac3611b5f490 Added support for special (quoted) characters in file names:
Simon Marshall <simon@gnu.org>
parents: 11156
diff changeset
2076 Magic characters are those in `comint-file-name-quote-list'."
ac3611b5f490 Added support for special (quoted) characters in file names:
Simon Marshall <simon@gnu.org>
parents: 11156
diff changeset
2077 (if (null comint-file-name-quote-list)
ac3611b5f490 Added support for special (quoted) characters in file names:
Simon Marshall <simon@gnu.org>
parents: 11156
diff changeset
2078 filename
ac3611b5f490 Added support for special (quoted) characters in file names:
Simon Marshall <simon@gnu.org>
parents: 11156
diff changeset
2079 (let ((regexp
ac3611b5f490 Added support for special (quoted) characters in file names:
Simon Marshall <simon@gnu.org>
parents: 11156
diff changeset
2080 (format "\\(^\\|[^\\]\\)\\([%s]\\)"
ac3611b5f490 Added support for special (quoted) characters in file names:
Simon Marshall <simon@gnu.org>
parents: 11156
diff changeset
2081 (mapconcat 'char-to-string comint-file-name-quote-list ""))))
ac3611b5f490 Added support for special (quoted) characters in file names:
Simon Marshall <simon@gnu.org>
parents: 11156
diff changeset
2082 (save-match-data
ac3611b5f490 Added support for special (quoted) characters in file names:
Simon Marshall <simon@gnu.org>
parents: 11156
diff changeset
2083 (while (string-match regexp filename)
ac3611b5f490 Added support for special (quoted) characters in file names:
Simon Marshall <simon@gnu.org>
parents: 11156
diff changeset
2084 (setq filename (replace-match "\\1\\\\\\2" nil nil filename)))
ac3611b5f490 Added support for special (quoted) characters in file names:
Simon Marshall <simon@gnu.org>
parents: 11156
diff changeset
2085 filename))))
ac3611b5f490 Added support for special (quoted) characters in file names:
Simon Marshall <simon@gnu.org>
parents: 11156
diff changeset
2086
ac3611b5f490 Added support for special (quoted) characters in file names:
Simon Marshall <simon@gnu.org>
parents: 11156
diff changeset
2087 (defun comint-unquote-filename (filename)
ac3611b5f490 Added support for special (quoted) characters in file names:
Simon Marshall <simon@gnu.org>
parents: 11156
diff changeset
2088 "Return FILENAME with quoted characters unquoted."
ac3611b5f490 Added support for special (quoted) characters in file names:
Simon Marshall <simon@gnu.org>
parents: 11156
diff changeset
2089 (if (null comint-file-name-quote-list)
ac3611b5f490 Added support for special (quoted) characters in file names:
Simon Marshall <simon@gnu.org>
parents: 11156
diff changeset
2090 filename
ac3611b5f490 Added support for special (quoted) characters in file names:
Simon Marshall <simon@gnu.org>
parents: 11156
diff changeset
2091 (save-match-data
15337
cf1e6f4dd2b0 (comint-dynamic-complete-filename) [ms-dos, windows-nt]:
Richard M. Stallman <rms@gnu.org>
parents: 14814
diff changeset
2092 (let ((i 0))
cf1e6f4dd2b0 (comint-dynamic-complete-filename) [ms-dos, windows-nt]:
Richard M. Stallman <rms@gnu.org>
parents: 14814
diff changeset
2093 (while (string-match "\\\\\\(.\\)" filename i)
cf1e6f4dd2b0 (comint-dynamic-complete-filename) [ms-dos, windows-nt]:
Richard M. Stallman <rms@gnu.org>
parents: 14814
diff changeset
2094 (setq filename (replace-match "\\1" nil nil filename))
cf1e6f4dd2b0 (comint-dynamic-complete-filename) [ms-dos, windows-nt]:
Richard M. Stallman <rms@gnu.org>
parents: 14814
diff changeset
2095 (setq i (+ 1 (match-beginning 0)))))
11187
ac3611b5f490 Added support for special (quoted) characters in file names:
Simon Marshall <simon@gnu.org>
parents: 11156
diff changeset
2096 filename)))
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
2097
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
2098
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
2099 (defun comint-dynamic-complete ()
6185
82a92cf44059 (comint-after-partial-filename-command,
Richard M. Stallman <rms@gnu.org>
parents: 6154
diff changeset
2100 "Dynamically perform completion at point.
82a92cf44059 (comint-after-partial-filename-command,
Richard M. Stallman <rms@gnu.org>
parents: 6154
diff changeset
2101 Calls the functions in `comint-dynamic-complete-functions' to perform
82a92cf44059 (comint-after-partial-filename-command,
Richard M. Stallman <rms@gnu.org>
parents: 6154
diff changeset
2102 completion until a function returns non-nil, at which point completion is
82a92cf44059 (comint-after-partial-filename-command,
Richard M. Stallman <rms@gnu.org>
parents: 6154
diff changeset
2103 assumed to have occurred."
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2104 (interactive)
12208
d10ef5c093ce (comint-mode): Use make-local-hook.
Karl Heuer <kwzh@gnu.org>
parents: 12058
diff changeset
2105 (run-hook-with-args-until-success 'comint-dynamic-complete-functions))
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2106
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2107
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2108 (defun comint-dynamic-complete-filename ()
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
2109 "Dynamically complete the filename at point.
6185
82a92cf44059 (comint-after-partial-filename-command,
Richard M. Stallman <rms@gnu.org>
parents: 6154
diff changeset
2110 Completes if after a filename. See `comint-match-partial-filename' and
82a92cf44059 (comint-after-partial-filename-command,
Richard M. Stallman <rms@gnu.org>
parents: 6154
diff changeset
2111 `comint-dynamic-complete-as-filename'.
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2112 This function is similar to `comint-replace-by-expanded-filename', except that
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2113 it won't change parts of the filename already entered in the buffer; it just
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2114 adds completion characters to the end of the filename. A completions listing
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2115 may be shown in a help buffer if completion is ambiguous.
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2116
6256
3810012eb29f (comint-completion-fignore): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 6239
diff changeset
2117 Completion is dependent on the value of `comint-completion-addsuffix',
3810012eb29f (comint-completion-fignore): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 6239
diff changeset
2118 `comint-completion-recexact' and `comint-completion-fignore', and the timing of
3810012eb29f (comint-completion-fignore): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 6239
diff changeset
2119 completions listing is dependent on the value of `comint-completion-autolist'.
6185
82a92cf44059 (comint-after-partial-filename-command,
Richard M. Stallman <rms@gnu.org>
parents: 6154
diff changeset
2120
82a92cf44059 (comint-after-partial-filename-command,
Richard M. Stallman <rms@gnu.org>
parents: 6154
diff changeset
2121 Returns t if successful."
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
2122 (interactive)
20986
72fa617ce5e2 Changed to use directory-sep-char rather than "/".
Simon Marshall <simon@gnu.org>
parents: 20894
diff changeset
2123 (when (comint-match-partial-filename)
72fa617ce5e2 Changed to use directory-sep-char rather than "/".
Simon Marshall <simon@gnu.org>
parents: 20894
diff changeset
2124 (unless (window-minibuffer-p (selected-window))
72fa617ce5e2 Changed to use directory-sep-char rather than "/".
Simon Marshall <simon@gnu.org>
parents: 20894
diff changeset
2125 (message "Completing file name..."))
72fa617ce5e2 Changed to use directory-sep-char rather than "/".
Simon Marshall <simon@gnu.org>
parents: 20894
diff changeset
2126 (comint-dynamic-complete-as-filename)))
6185
82a92cf44059 (comint-after-partial-filename-command,
Richard M. Stallman <rms@gnu.org>
parents: 6154
diff changeset
2127
82a92cf44059 (comint-after-partial-filename-command,
Richard M. Stallman <rms@gnu.org>
parents: 6154
diff changeset
2128 (defun comint-dynamic-complete-as-filename ()
82a92cf44059 (comint-after-partial-filename-command,
Richard M. Stallman <rms@gnu.org>
parents: 6154
diff changeset
2129 "Dynamically complete at point as a filename.
82a92cf44059 (comint-after-partial-filename-command,
Richard M. Stallman <rms@gnu.org>
parents: 6154
diff changeset
2130 See `comint-dynamic-complete-filename'. Returns t if successful."
15654
6f32894f4ad3 1. For fns like comint-postoutput-scroll-to-bottom on comint-output-filter-functions, don't count back using the length of STRING, as previous fns may have changed the buffer. Count from process-mark.
Simon Marshall <simon@gnu.org>
parents: 15541
diff changeset
2131 (let* ((completion-ignore-case (memq system-type '(ms-dos windows-nt)))
6256
3810012eb29f (comint-completion-fignore): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 6239
diff changeset
2132 (completion-ignored-extensions comint-completion-fignore)
15654
6f32894f4ad3 1. For fns like comint-postoutput-scroll-to-bottom on comint-output-filter-functions, don't count back using the length of STRING, as previous fns may have changed the buffer. Count from process-mark.
Simon Marshall <simon@gnu.org>
parents: 15541
diff changeset
2133 ;; If we bind this, it breaks remote directory tracking in rlogin.el.
6f32894f4ad3 1. For fns like comint-postoutput-scroll-to-bottom on comint-output-filter-functions, don't count back using the length of STRING, as previous fns may have changed the buffer. Count from process-mark.
Simon Marshall <simon@gnu.org>
parents: 15541
diff changeset
2134 ;; I think it was originally bound to solve file completion problems,
6f32894f4ad3 1. For fns like comint-postoutput-scroll-to-bottom on comint-output-filter-functions, don't count back using the length of STRING, as previous fns may have changed the buffer. Count from process-mark.
Simon Marshall <simon@gnu.org>
parents: 15541
diff changeset
2135 ;; but subsequent changes may have made this unnecessary. sm.
6f32894f4ad3 1. For fns like comint-postoutput-scroll-to-bottom on comint-output-filter-functions, don't count back using the length of STRING, as previous fns may have changed the buffer. Count from process-mark.
Simon Marshall <simon@gnu.org>
parents: 15541
diff changeset
2136 ;;(file-name-handler-alist nil)
10830
a774e92de39c Let file-name-handler-alist to nil in comint-dynamic-complete-as-filename and
Simon Marshall <simon@gnu.org>
parents: 10702
diff changeset
2137 (minibuffer-p (window-minibuffer-p (selected-window)))
6185
82a92cf44059 (comint-after-partial-filename-command,
Richard M. Stallman <rms@gnu.org>
parents: 6154
diff changeset
2138 (success t)
20986
72fa617ce5e2 Changed to use directory-sep-char rather than "/".
Simon Marshall <simon@gnu.org>
parents: 20894
diff changeset
2139 (dirsuffix (cond ((not comint-completion-addsuffix)
72fa617ce5e2 Changed to use directory-sep-char rather than "/".
Simon Marshall <simon@gnu.org>
parents: 20894
diff changeset
2140 "")
72fa617ce5e2 Changed to use directory-sep-char rather than "/".
Simon Marshall <simon@gnu.org>
parents: 20894
diff changeset
2141 ((not (consp comint-completion-addsuffix))
72fa617ce5e2 Changed to use directory-sep-char rather than "/".
Simon Marshall <simon@gnu.org>
parents: 20894
diff changeset
2142 (char-to-string directory-sep-char))
72fa617ce5e2 Changed to use directory-sep-char rather than "/".
Simon Marshall <simon@gnu.org>
parents: 20894
diff changeset
2143 (t
72fa617ce5e2 Changed to use directory-sep-char rather than "/".
Simon Marshall <simon@gnu.org>
parents: 20894
diff changeset
2144 (car comint-completion-addsuffix))))
72fa617ce5e2 Changed to use directory-sep-char rather than "/".
Simon Marshall <simon@gnu.org>
parents: 20894
diff changeset
2145 (filesuffix (cond ((not comint-completion-addsuffix)
72fa617ce5e2 Changed to use directory-sep-char rather than "/".
Simon Marshall <simon@gnu.org>
parents: 20894
diff changeset
2146 "")
72fa617ce5e2 Changed to use directory-sep-char rather than "/".
Simon Marshall <simon@gnu.org>
parents: 20894
diff changeset
2147 ((not (consp comint-completion-addsuffix))
72fa617ce5e2 Changed to use directory-sep-char rather than "/".
Simon Marshall <simon@gnu.org>
parents: 20894
diff changeset
2148 " ")
72fa617ce5e2 Changed to use directory-sep-char rather than "/".
Simon Marshall <simon@gnu.org>
parents: 20894
diff changeset
2149 (t
72fa617ce5e2 Changed to use directory-sep-char rather than "/".
Simon Marshall <simon@gnu.org>
parents: 20894
diff changeset
2150 (cdr comint-completion-addsuffix))))
6847
9481abcaa7de (comint-dynamic-complete-as-filename): Simplify.
Karl Heuer <kwzh@gnu.org>
parents: 6797
diff changeset
2151 (filename (or (comint-match-partial-filename) ""))
9481abcaa7de (comint-dynamic-complete-as-filename): Simplify.
Karl Heuer <kwzh@gnu.org>
parents: 6797
diff changeset
2152 (pathdir (file-name-directory filename))
9481abcaa7de (comint-dynamic-complete-as-filename): Simplify.
Karl Heuer <kwzh@gnu.org>
parents: 6797
diff changeset
2153 (pathnondir (file-name-nondirectory filename))
9481abcaa7de (comint-dynamic-complete-as-filename): Simplify.
Karl Heuer <kwzh@gnu.org>
parents: 6797
diff changeset
2154 (directory (if pathdir (comint-directory pathdir) default-directory))
10830
a774e92de39c Let file-name-handler-alist to nil in comint-dynamic-complete-as-filename and
Simon Marshall <simon@gnu.org>
parents: 10702
diff changeset
2155 (completion (file-name-completion pathnondir directory)))
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2156 (cond ((null completion)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2157 (message "No completions of %s" filename)
6185
82a92cf44059 (comint-after-partial-filename-command,
Richard M. Stallman <rms@gnu.org>
parents: 6154
diff changeset
2158 (setq success nil))
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2159 ((eq completion t) ; Means already completed "file".
11187
ac3611b5f490 Added support for special (quoted) characters in file names:
Simon Marshall <simon@gnu.org>
parents: 11156
diff changeset
2160 (insert filesuffix)
20986
72fa617ce5e2 Changed to use directory-sep-char rather than "/".
Simon Marshall <simon@gnu.org>
parents: 20894
diff changeset
2161 (unless minibuffer-p
72fa617ce5e2 Changed to use directory-sep-char rather than "/".
Simon Marshall <simon@gnu.org>
parents: 20894
diff changeset
2162 (message "Sole completion")))
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2163 ((string-equal completion "") ; Means completion on "directory/".
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2164 (comint-dynamic-list-filename-completions))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2165 (t ; Completion string returned.
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2166 (let ((file (concat (file-name-as-directory directory) completion)))
11187
ac3611b5f490 Added support for special (quoted) characters in file names:
Simon Marshall <simon@gnu.org>
parents: 11156
diff changeset
2167 (insert (comint-quote-filename
ac3611b5f490 Added support for special (quoted) characters in file names:
Simon Marshall <simon@gnu.org>
parents: 11156
diff changeset
2168 (substring (directory-file-name completion)
ac3611b5f490 Added support for special (quoted) characters in file names:
Simon Marshall <simon@gnu.org>
parents: 11156
diff changeset
2169 (length pathnondir))))
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2170 (cond ((symbolp (file-name-completion completion directory))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2171 ;; We inserted a unique completion.
11187
ac3611b5f490 Added support for special (quoted) characters in file names:
Simon Marshall <simon@gnu.org>
parents: 11156
diff changeset
2172 (insert (if (file-directory-p file) dirsuffix filesuffix))
20986
72fa617ce5e2 Changed to use directory-sep-char rather than "/".
Simon Marshall <simon@gnu.org>
parents: 20894
diff changeset
2173 (unless minibuffer-p
72fa617ce5e2 Changed to use directory-sep-char rather than "/".
Simon Marshall <simon@gnu.org>
parents: 20894
diff changeset
2174 (message "Completed")))
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2175 ((and comint-completion-recexact comint-completion-addsuffix
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2176 (string-equal pathnondir completion)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2177 (file-exists-p file))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2178 ;; It's not unique, but user wants shortest match.
11187
ac3611b5f490 Added support for special (quoted) characters in file names:
Simon Marshall <simon@gnu.org>
parents: 11156
diff changeset
2179 (insert (if (file-directory-p file) dirsuffix filesuffix))
20986
72fa617ce5e2 Changed to use directory-sep-char rather than "/".
Simon Marshall <simon@gnu.org>
parents: 20894
diff changeset
2180 (unless minibuffer-p
72fa617ce5e2 Changed to use directory-sep-char rather than "/".
Simon Marshall <simon@gnu.org>
parents: 20894
diff changeset
2181 (message "Completed shortest")))
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2182 ((or comint-completion-autolist
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2183 (string-equal pathnondir completion))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2184 ;; It's not unique, list possible completions.
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2185 (comint-dynamic-list-filename-completions))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2186 (t
20986
72fa617ce5e2 Changed to use directory-sep-char rather than "/".
Simon Marshall <simon@gnu.org>
parents: 20894
diff changeset
2187 (unless minibuffer-p
72fa617ce5e2 Changed to use directory-sep-char rather than "/".
Simon Marshall <simon@gnu.org>
parents: 20894
diff changeset
2188 (message "Partially completed")))))))
6185
82a92cf44059 (comint-after-partial-filename-command,
Richard M. Stallman <rms@gnu.org>
parents: 6154
diff changeset
2189 success))
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2190
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2191
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2192 (defun comint-replace-by-expanded-filename ()
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2193 "Dynamically expand and complete the filename at point.
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2194 Replace the filename with an expanded, canonicalised and completed replacement.
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2195 \"Expanded\" means environment variables (e.g., $HOME) and `~'s are replaced
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2196 with the corresponding directories. \"Canonicalised\" means `..' and `.' are
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2197 removed, and the filename is made absolute instead of relative. For expansion
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2198 see `expand-file-name' and `substitute-in-file-name'. For completion see
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2199 `comint-dynamic-complete-filename'."
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2200 (interactive)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2201 (replace-match (expand-file-name (comint-match-partial-filename)) t t)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2202 (comint-dynamic-complete-filename))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2203
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2204
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2205 (defun comint-dynamic-simple-complete (stub candidates)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2206 "Dynamically complete STUB from CANDIDATES list.
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2207 This function inserts completion characters at point by completing STUB from
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2208 the strings in CANDIDATES. A completions listing may be shown in a help buffer
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2209 if completion is ambiguous.
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2210
6185
82a92cf44059 (comint-after-partial-filename-command,
Richard M. Stallman <rms@gnu.org>
parents: 6154
diff changeset
2211 Returns nil if no completion was inserted.
82a92cf44059 (comint-after-partial-filename-command,
Richard M. Stallman <rms@gnu.org>
parents: 6154
diff changeset
2212 Returns `sole' if completed with the only completion match.
82a92cf44059 (comint-after-partial-filename-command,
Richard M. Stallman <rms@gnu.org>
parents: 6154
diff changeset
2213 Returns `shortest' if completed with the shortest of the completion matches.
82a92cf44059 (comint-after-partial-filename-command,
Richard M. Stallman <rms@gnu.org>
parents: 6154
diff changeset
2214 Returns `partial' if completed as far as possible with the completion matches.
82a92cf44059 (comint-after-partial-filename-command,
Richard M. Stallman <rms@gnu.org>
parents: 6154
diff changeset
2215 Returns `listed' if a completion listing was shown.
82a92cf44059 (comint-after-partial-filename-command,
Richard M. Stallman <rms@gnu.org>
parents: 6154
diff changeset
2216
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2217 See also `comint-dynamic-complete-filename'."
15654
6f32894f4ad3 1. For fns like comint-postoutput-scroll-to-bottom on comint-output-filter-functions, don't count back using the length of STRING, as previous fns may have changed the buffer. Count from process-mark.
Simon Marshall <simon@gnu.org>
parents: 15541
diff changeset
2218 (let* ((completion-ignore-case (memq system-type '(ms-dos windows-nt)))
11187
ac3611b5f490 Added support for special (quoted) characters in file names:
Simon Marshall <simon@gnu.org>
parents: 11156
diff changeset
2219 (suffix (cond ((not comint-completion-addsuffix) "")
ac3611b5f490 Added support for special (quoted) characters in file names:
Simon Marshall <simon@gnu.org>
parents: 11156
diff changeset
2220 ((not (consp comint-completion-addsuffix)) " ")
ac3611b5f490 Added support for special (quoted) characters in file names:
Simon Marshall <simon@gnu.org>
parents: 11156
diff changeset
2221 (t (cdr comint-completion-addsuffix))))
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2222 (candidates (mapcar (function (lambda (x) (list x))) candidates))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2223 (completions (all-completions stub candidates)))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2224 (cond ((null completions)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2225 (message "No completions of %s" stub)
6185
82a92cf44059 (comint-after-partial-filename-command,
Richard M. Stallman <rms@gnu.org>
parents: 6154
diff changeset
2226 nil)
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2227 ((= 1 (length completions)) ; Gotcha!
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2228 (let ((completion (car completions)))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2229 (if (string-equal completion stub)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2230 (message "Sole completion")
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2231 (insert (substring completion (length stub)))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2232 (message "Completed"))
11187
ac3611b5f490 Added support for special (quoted) characters in file names:
Simon Marshall <simon@gnu.org>
parents: 11156
diff changeset
2233 (insert suffix)
6185
82a92cf44059 (comint-after-partial-filename-command,
Richard M. Stallman <rms@gnu.org>
parents: 6154
diff changeset
2234 'sole))
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2235 (t ; There's no unique completion.
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2236 (let ((completion (try-completion stub candidates)))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2237 ;; Insert the longest substring.
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2238 (insert (substring completion (length stub)))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2239 (cond ((and comint-completion-recexact comint-completion-addsuffix
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2240 (string-equal stub completion)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2241 (member completion completions))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2242 ;; It's not unique, but user wants shortest match.
11187
ac3611b5f490 Added support for special (quoted) characters in file names:
Simon Marshall <simon@gnu.org>
parents: 11156
diff changeset
2243 (insert suffix)
6185
82a92cf44059 (comint-after-partial-filename-command,
Richard M. Stallman <rms@gnu.org>
parents: 6154
diff changeset
2244 (message "Completed shortest")
82a92cf44059 (comint-after-partial-filename-command,
Richard M. Stallman <rms@gnu.org>
parents: 6154
diff changeset
2245 'shortest)
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2246 ((or comint-completion-autolist
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2247 (string-equal stub completion))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2248 ;; It's not unique, list possible completions.
6185
82a92cf44059 (comint-after-partial-filename-command,
Richard M. Stallman <rms@gnu.org>
parents: 6154
diff changeset
2249 (comint-dynamic-list-completions completions)
82a92cf44059 (comint-after-partial-filename-command,
Richard M. Stallman <rms@gnu.org>
parents: 6154
diff changeset
2250 'listed)
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2251 (t
6185
82a92cf44059 (comint-after-partial-filename-command,
Richard M. Stallman <rms@gnu.org>
parents: 6154
diff changeset
2252 (message "Partially completed")
82a92cf44059 (comint-after-partial-filename-command,
Richard M. Stallman <rms@gnu.org>
parents: 6154
diff changeset
2253 'partial)))))))
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2254
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2255
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2256 (defun comint-dynamic-list-filename-completions ()
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2257 "List in help buffer possible completions of the filename at point."
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2258 (interactive)
15654
6f32894f4ad3 1. For fns like comint-postoutput-scroll-to-bottom on comint-output-filter-functions, don't count back using the length of STRING, as previous fns may have changed the buffer. Count from process-mark.
Simon Marshall <simon@gnu.org>
parents: 15541
diff changeset
2259 (let* ((completion-ignore-case (memq system-type '(ms-dos windows-nt)))
6f32894f4ad3 1. For fns like comint-postoutput-scroll-to-bottom on comint-output-filter-functions, don't count back using the length of STRING, as previous fns may have changed the buffer. Count from process-mark.
Simon Marshall <simon@gnu.org>
parents: 15541
diff changeset
2260 ;; If we bind this, it breaks remote directory tracking in rlogin.el.
6f32894f4ad3 1. For fns like comint-postoutput-scroll-to-bottom on comint-output-filter-functions, don't count back using the length of STRING, as previous fns may have changed the buffer. Count from process-mark.
Simon Marshall <simon@gnu.org>
parents: 15541
diff changeset
2261 ;; I think it was originally bound to solve file completion problems,
6f32894f4ad3 1. For fns like comint-postoutput-scroll-to-bottom on comint-output-filter-functions, don't count back using the length of STRING, as previous fns may have changed the buffer. Count from process-mark.
Simon Marshall <simon@gnu.org>
parents: 15541
diff changeset
2262 ;; but subsequent changes may have made this unnecessary. sm.
6f32894f4ad3 1. For fns like comint-postoutput-scroll-to-bottom on comint-output-filter-functions, don't count back using the length of STRING, as previous fns may have changed the buffer. Count from process-mark.
Simon Marshall <simon@gnu.org>
parents: 15541
diff changeset
2263 ;;(file-name-handler-alist nil)
6185
82a92cf44059 (comint-after-partial-filename-command,
Richard M. Stallman <rms@gnu.org>
parents: 6154
diff changeset
2264 (filename (or (comint-match-partial-filename) ""))
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2265 (pathdir (file-name-directory filename))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2266 (pathnondir (file-name-nondirectory filename))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2267 (directory (if pathdir (comint-directory pathdir) default-directory))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2268 (completions (file-name-all-completions pathnondir directory)))
11187
ac3611b5f490 Added support for special (quoted) characters in file names:
Simon Marshall <simon@gnu.org>
parents: 11156
diff changeset
2269 (if (not completions)
ac3611b5f490 Added support for special (quoted) characters in file names:
Simon Marshall <simon@gnu.org>
parents: 11156
diff changeset
2270 (message "No completions of %s" filename)
ac3611b5f490 Added support for special (quoted) characters in file names:
Simon Marshall <simon@gnu.org>
parents: 11156
diff changeset
2271 (comint-dynamic-list-completions
ac3611b5f490 Added support for special (quoted) characters in file names:
Simon Marshall <simon@gnu.org>
parents: 11156
diff changeset
2272 (mapcar 'comint-quote-filename completions)))))
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2273
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2274
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2275 (defun comint-dynamic-list-completions (completions)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2276 "List in help buffer sorted COMPLETIONS.
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2277 Typing SPC flushes the help buffer."
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2278 (let ((conf (current-window-configuration)))
7846
46db50437ebb (comint-dynamic-list-completions): No space in *Completions*.
Richard M. Stallman <rms@gnu.org>
parents: 7766
diff changeset
2279 (with-output-to-temp-buffer "*Completions*"
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2280 (display-completion-list (sort completions 'string-lessp)))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2281 (message "Hit space to flush")
5424
51eecae04837 (comint-last-output-start): Add defvar.
Richard M. Stallman <rms@gnu.org>
parents: 5323
diff changeset
2282 (let (key first)
51eecae04837 (comint-last-output-start): Add defvar.
Richard M. Stallman <rms@gnu.org>
parents: 5323
diff changeset
2283 (if (save-excursion
7846
46db50437ebb (comint-dynamic-list-completions): No space in *Completions*.
Richard M. Stallman <rms@gnu.org>
parents: 7766
diff changeset
2284 (set-buffer (get-buffer "*Completions*"))
5424
51eecae04837 (comint-last-output-start): Add defvar.
Richard M. Stallman <rms@gnu.org>
parents: 5323
diff changeset
2285 (setq key (read-key-sequence nil)
51eecae04837 (comint-last-output-start): Add defvar.
Richard M. Stallman <rms@gnu.org>
parents: 5323
diff changeset
2286 first (aref key 0))
10445
a657f6491234 Make sure the event read by comint-dynamic-list-completions isn't
Simon Marshall <simon@gnu.org>
parents: 10125
diff changeset
2287 (and (consp first) (consp (event-start first))
5424
51eecae04837 (comint-last-output-start): Add defvar.
Richard M. Stallman <rms@gnu.org>
parents: 5323
diff changeset
2288 (eq (window-buffer (posn-window (event-start first)))
7846
46db50437ebb (comint-dynamic-list-completions): No space in *Completions*.
Richard M. Stallman <rms@gnu.org>
parents: 7766
diff changeset
2289 (get-buffer "*Completions*"))
5424
51eecae04837 (comint-last-output-start): Add defvar.
Richard M. Stallman <rms@gnu.org>
parents: 5323
diff changeset
2290 (eq (key-binding key) 'mouse-choose-completion)))
51eecae04837 (comint-last-output-start): Add defvar.
Richard M. Stallman <rms@gnu.org>
parents: 5323
diff changeset
2291 ;; If the user does mouse-choose-completion with the mouse,
51eecae04837 (comint-last-output-start): Add defvar.
Richard M. Stallman <rms@gnu.org>
parents: 5323
diff changeset
2292 ;; execute the command, then delete the completion window.
51eecae04837 (comint-last-output-start): Add defvar.
Richard M. Stallman <rms@gnu.org>
parents: 5323
diff changeset
2293 (progn
51eecae04837 (comint-last-output-start): Add defvar.
Richard M. Stallman <rms@gnu.org>
parents: 5323
diff changeset
2294 (mouse-choose-completion first)
51eecae04837 (comint-last-output-start): Add defvar.
Richard M. Stallman <rms@gnu.org>
parents: 5323
diff changeset
2295 (set-window-configuration conf))
51eecae04837 (comint-last-output-start): Add defvar.
Richard M. Stallman <rms@gnu.org>
parents: 5323
diff changeset
2296 (if (eq first ?\ )
51eecae04837 (comint-last-output-start): Add defvar.
Richard M. Stallman <rms@gnu.org>
parents: 5323
diff changeset
2297 (set-window-configuration conf)
8332
1b4a8157f36c (comint-dynamic-list-completions): Listify the key
Richard M. Stallman <rms@gnu.org>
parents: 8266
diff changeset
2298 (setq unread-command-events (listify-key-sequence key)))))))
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
2299
22265
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
2300 (defun comint-get-next-from-history ()
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
2301 "After fetching a line from input history, this fetches the following line.
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
2302 In other words, this recalls the input line after the line you recalled last.
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
2303 You can use this to repeat a sequence of input lines."
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
2304 (interactive)
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
2305 (if comint-save-input-ring-index
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
2306 (progn
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
2307 (setq comint-input-ring-index (1+ comint-save-input-ring-index))
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
2308 (comint-next-input 1))
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
2309 (message "No previous history command")))
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
2310
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
2311 (defun comint-accumulate ()
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
2312 "Accumulate a line to send as input along with more lines.
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
2313 This inserts a newline so that you can enter more text
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
2314 to be sent along with this line. Use \\[comint-send-input]
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
2315 to send all the accumulated input, at once.
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
2316 The entire accumulated text becomes one item in the input history
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
2317 when you send it."
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
2318 (interactive)
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
2319 (insert "\n")
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
2320 (set-marker comint-accum-marker (point))
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
2321 (if comint-input-ring-index
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
2322 (setq comint-save-input-ring-index
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
2323 (- comint-input-ring-index 1))))
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
2324
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
2325 (defun comint-goto-process-mark ()
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
2326 "Move point to the process mark.
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
2327 The process mark separates output, and input already sent,
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
2328 from input that has not yet been sent."
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
2329 (interactive)
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
2330 (let ((proc (or (get-buffer-process (current-buffer))
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
2331 (error "Current buffer has no process"))))
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
2332 (goto-char (process-mark proc))
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
2333 (message "Point is now at the process mark")))
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
2334
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
2335 (defun comint-bol-or-process-mark ()
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
2336 "Move point beginning of line (after prompt) or to the process mark.
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
2337 The first time you use this command, it moves to the beginning of the line
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
2338 \(but after the prompt, if any). If you repeat it again immediately,
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
2339 it moves point to the process mark.
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
2340
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
2341 The process mark separates the process output, along with input already sent,
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
2342 from input that has not yet been sent. Ordinarily, the process mark
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
2343 is at the beginning of the current input line; but if you have
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
2344 used \\[comint-accumulate] to send multiple lines at once,
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
2345 the process mark is at the beginning of the accumulated input."
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
2346 (interactive)
22900
00d2d08d657b (comint-bol-or-process-mark): Refer to this command's name correctly.
Richard M. Stallman <rms@gnu.org>
parents: 22652
diff changeset
2347 (if (not (eq last-command 'comint-bol-or-process-mark))
22265
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
2348 (comint-bol nil)
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
2349 (comint-goto-process-mark)))
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
2350
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
2351 (defun comint-set-process-mark ()
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
2352 "Set the process mark at point."
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
2353 (interactive)
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
2354 (let ((proc (or (get-buffer-process (current-buffer))
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
2355 (error "Current buffer has no process"))))
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
2356 (set-marker (process-mark proc) (point))
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
2357 (message "Process mark set")))
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
2358
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
2359
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2360 ;; Converting process modes to use comint mode
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2361 ;; ===========================================================================
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2362 ;; The code in the Emacs 19 distribution has all been modified to use comint
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2363 ;; where needed. However, there are `third-party' packages out there that
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2364 ;; still use the old shell mode. Here's a guide to conversion.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2365 ;;
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2366 ;; Renaming variables
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2367 ;; Most of the work is renaming variables and functions. These are the common
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2368 ;; ones:
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2369 ;; Local variables:
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2370 ;; last-input-start comint-last-input-start
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2371 ;; last-input-end comint-last-input-end
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2372 ;; shell-prompt-pattern comint-prompt-regexp
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2373 ;; shell-set-directory-error-hook <no equivalent>
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2374 ;; Miscellaneous:
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2375 ;; shell-set-directory <unnecessary>
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2376 ;; shell-mode-map comint-mode-map
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2377 ;; Commands:
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2378 ;; shell-send-input comint-send-input
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2379 ;; shell-send-eof comint-delchar-or-maybe-eof
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2380 ;; kill-shell-input comint-kill-input
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2381 ;; interrupt-shell-subjob comint-interrupt-subjob
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2382 ;; stop-shell-subjob comint-stop-subjob
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2383 ;; quit-shell-subjob comint-quit-subjob
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2384 ;; kill-shell-subjob comint-kill-subjob
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2385 ;; kill-output-from-shell comint-kill-output
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2386 ;; show-output-from-shell comint-show-output
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2387 ;; copy-last-shell-input Use comint-previous-input/comint-next-input
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2388 ;;
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2389 ;; SHELL-SET-DIRECTORY is gone, its functionality taken over by
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2390 ;; SHELL-DIRECTORY-TRACKER, the shell mode's comint-input-filter-functions.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2391 ;; Comint mode does not provide functionality equivalent to
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2392 ;; shell-set-directory-error-hook; it is gone.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2393 ;;
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2394 ;; comint-last-input-start is provided for modes which want to munge
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2395 ;; the buffer after input is sent, perhaps because the inferior
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2396 ;; insists on echoing the input. The LAST-INPUT-START variable in
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2397 ;; the old shell package was used to implement a history mechanism,
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2398 ;; but you should think twice before using comint-last-input-start
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2399 ;; for this; the input history ring often does the job better.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2400 ;;
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2401 ;; If you are implementing some process-in-a-buffer mode, called foo-mode, do
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2402 ;; *not* create the comint-mode local variables in your foo-mode function.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2403 ;; This is not modular. Instead, call comint-mode, and let *it* create the
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2404 ;; necessary comint-specific local variables. Then create the
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2405 ;; foo-mode-specific local variables in foo-mode. Set the buffer's keymap to
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2406 ;; be foo-mode-map, and its mode to be foo-mode. Set the comint-mode hooks
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2407 ;; (comint-{prompt-regexp, input-filter, input-filter-functions,
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2408 ;; get-old-input) that need to be different from the defaults. Call
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2409 ;; foo-mode-hook, and you're done. Don't run the comint-mode hook yourself;
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2410 ;; comint-mode will take care of it. The following example, from shell.el,
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2411 ;; is typical:
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2412 ;;
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2413 ;; (defvar shell-mode-map '())
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2414 ;; (cond ((not shell-mode-map)
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2415 ;; (setq shell-mode-map (copy-keymap comint-mode-map))
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2416 ;; (define-key shell-mode-map "\C-c\C-f" 'shell-forward-command)
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2417 ;; (define-key shell-mode-map "\C-c\C-b" 'shell-backward-command)
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2418 ;; (define-key shell-mode-map "\t" 'comint-dynamic-complete)
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2419 ;; (define-key shell-mode-map "\M-?"
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2420 ;; 'comint-dynamic-list-filename-completions)))
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2421 ;;
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2422 ;; (defun shell-mode ()
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2423 ;; (interactive)
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2424 ;; (comint-mode)
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2425 ;; (setq comint-prompt-regexp shell-prompt-pattern)
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2426 ;; (setq major-mode 'shell-mode)
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2427 ;; (setq mode-name "Shell")
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2428 ;; (use-local-map shell-mode-map)
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2429 ;; (make-local-variable 'shell-directory-stack)
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2430 ;; (setq shell-directory-stack nil)
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2431 ;; (add-hook 'comint-input-filter-functions 'shell-directory-tracker)
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2432 ;; (run-hooks 'shell-mode-hook))
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2433 ;;
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2434 ;;
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2435 ;; Completion for comint-mode users
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2436 ;;
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2437 ;; For modes that use comint-mode, comint-dynamic-complete-functions is the
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2438 ;; hook to add completion functions to. Functions on this list should return
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2439 ;; non-nil if completion occurs (i.e., further completion should not occur).
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2440 ;; You could use comint-dynamic-simple-complete to do the bulk of the
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2441 ;; completion job.
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
2442
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
2443 (provide 'comint)
662
8a533acedb77 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 638
diff changeset
2444
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2445 ;; comint.el ends here