annotate lisp/comint.el @ 76022:e892213b9815

(w32_set_scroll_bar_thumb): Don't resize scroll-bar handle while dragging, except when we get close to eob. Fix position and size calculations so we don't scroll backwards just by clicking on the handle.
author Kim F. Storm <storm@cua.dk>
date Mon, 19 Feb 2007 14:45:39 +0000
parents 3111750977e3
children 47b27cdb3ec2 52a7f3f50b89
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
57419
658b7dadee60 (comint-mouse-insert-input): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56220
diff changeset
3 ;; Copyright (C) 1988, 1990, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
75347
e3694f1cb928 Add 2007 to copyright years.
Glenn Morris <rgm@gnu.org>
parents: 74693
diff changeset
4 ;; 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
662
8a533acedb77 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 638
diff changeset
5
38409
153f1b1f2efd Emacs lisp coding convention fixes.
Pavel Janík <Pavel@Janik.cz>
parents: 38073
diff changeset
6 ;; Author: Olin Shivers <shivers@cs.cmu.edu>
25278
cbe304a26771 Fix maintainer address.
Karl Heuer <kwzh@gnu.org>
parents: 24968
diff changeset
7 ;; Simon Marshall <simon@gnu.org>
18805
b4b9772f0877 change maintainer.
Simon Marshall <simon@gnu.org>
parents: 17970
diff changeset
8 ;; Maintainer: FSF
2247
2c7997f249eb Add or correct keywords
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2025
diff changeset
9 ;; Keywords: processes
846
20674ae6bf52 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 811
diff changeset
10
909
4c6cdb66c74c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 870
diff changeset
11 ;; This file is part of GNU Emacs.
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
12
909
4c6cdb66c74c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 870
diff changeset
13 ;; 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
14 ;; 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
15 ;; 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
16 ;; any later version.
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
17
909
4c6cdb66c74c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 870
diff changeset
18 ;; 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
19 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
4c6cdb66c74c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 870
diff changeset
20 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
4c6cdb66c74c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 870
diff changeset
21 ;; GNU General Public License for more details.
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
22
909
4c6cdb66c74c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 870
diff changeset
23 ;; 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
24 ;; along with GNU Emacs; see the file COPYING. If not, write to the
64091
6fb026ad601f Update FSF's address.
Lute Kamstra <lute@gnu.org>
parents: 64000
diff changeset
25 ;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
6fb026ad601f Update FSF's address.
Lute Kamstra <lute@gnu.org>
parents: 64000
diff changeset
26 ;; Boston, MA 02110-1301, USA.
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
27
807
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 793
diff changeset
28 ;;; Commentary:
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 793
diff changeset
29
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
30 ;; This file defines a general command-interpreter-in-a-buffer package
54879
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
31 ;; (comint mode). The idea is that you can build specific process-in-a-buffer
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
32 ;; modes on top of comint mode -- e.g., Lisp, shell, scheme, T, soar, ....
32326
b8132c394173 Cleanup whitespace.
Miles Bader <miles@gnu.org>
parents: 32196
diff changeset
33 ;; This way, all these specific packages share a common base functionality,
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
34 ;; 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
35 ;; saves code, implementation time, etc., etc.).
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
36
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
37 ;; Several packages are already defined using comint mode:
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
38 ;; - shell.el defines a shell-in-a-buffer mode.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
39 ;; - cmulisp.el defines a simple lisp-in-a-buffer mode.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
40 ;;
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
41 ;; - 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
42 ;; - The file tea.el tunes scheme and inferior-scheme modes for T.
54879
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
43 ;; - The file soar.el tunes Lisp and inferior-lisp modes for Soar.
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
44 ;; - cmutex.el defines TeX and LaTeX modes that invoke TeX, LaTeX, BibTeX,
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
45 ;; previewers, and printers from within Emacs.
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
46 ;; - background.el allows csh-like job control inside Emacs.
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
47 ;; 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
48
54879
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
49 ;; For documentation on the functionality provided by Comint mode, and
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
50 ;; the hooks available for customising it, see the comments below.
32326
b8132c394173 Cleanup whitespace.
Miles Bader <miles@gnu.org>
parents: 32196
diff changeset
51 ;; For further information on the standard derived modes (shell,
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
52 ;; inferior-lisp, inferior-scheme, ...), see the relevant source files.
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
53
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
54 ;; 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
55 ;; background, dbx, gdb, kermit, prolog, telnet) to use comint-mode
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
56 ;; 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
57
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
58
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
59 ;; Brief Command Documentation:
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
60 ;;============================================================================
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
61 ;; 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
62 ;; mode)
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
63 ;;
54879
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
64 ;; M-p comint-previous-input Cycle backwards in input history
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
65 ;; M-n comint-next-input Cycle forwards
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
66 ;; M-r comint-previous-matching-input Previous input matching a regexp
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
67 ;; M-s comint-next-matching-input Next input that matches
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
68 ;; M-C-l comint-show-output Show last batch of process output
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
69 ;; RET comint-send-input
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
70 ;; C-d comint-delchar-or-maybe-eof Delete char unless at end of buff
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
71 ;; C-c C-a comint-bol-or-process-mark First time, move point to bol;
22265
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
72 ;; second time, move to process-mark.
54879
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
73 ;; C-c C-u comint-kill-input ^u
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
74 ;; C-c C-w backward-kill-word ^w
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
75 ;; C-c C-c comint-interrupt-subjob ^c
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
76 ;; C-c C-z comint-stop-subjob ^z
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
77 ;; C-c C-\ comint-quit-subjob ^\
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
78 ;; C-c C-o comint-delete-output Delete last batch of process output
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
79 ;; C-c C-r comint-show-output Show last batch of process output
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
80 ;; C-c C-l comint-dynamic-list-input-ring List input history
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
81 ;;
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
82 ;; 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
83 ;; comint-run Run a program under comint-mode
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
84 ;; 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
85 ;; comint-dynamic-complete-filename Complete filename at point.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
86 ;; comint-dynamic-list-filename-completions List completions in help buffer.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
87 ;; 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
88 ;; replace with expanded/completed name.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
89 ;; comint-replace-by-expanded-history Expand history at point;
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
90 ;; replace with expanded name.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
91 ;; comint-magic-space Expand history and add (a) space(s).
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
92 ;; comint-kill-subjob No mercy.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
93 ;; comint-show-maximum-output Show as much output as possible.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
94 ;; comint-continue-subjob Send CONT signal to buffer's process
54879
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
95 ;; group. Useful if you accidentally
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
96 ;; 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
97 ;; 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
98 ;; 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
99 ;; as input.
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
100 ;; 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
101 ;; comint-set-process-mark Set process-mark to point.
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
102
54879
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
103 ;; 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
104
807
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 793
diff changeset
105 ;;; Code:
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 793
diff changeset
106
1131
853d0d4c61fb entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 932
diff changeset
107 (require 'ring)
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
108
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
109 ;; Buffer Local Variables:
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
110 ;;============================================================================
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
111 ;; Comint mode buffer local variables:
32326
b8132c394173 Cleanup whitespace.
Miles Bader <miles@gnu.org>
parents: 32196
diff changeset
112 ;; comint-prompt-regexp string comint-bol uses to match prompt
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
113 ;; 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
114 ;; comint-last-input-start marker Handy if inferior always echoes
32613
6aece997f0f9 (comint-delete-output): Renamed from `comint-kill-output'.
Miles Bader <miles@gnu.org>
parents: 32598
diff changeset
115 ;; comint-last-input-end marker For comint-delete-output command
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
116 ;; 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
117 ;; 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
118 ;; comint-input-ring-index number ...
22265
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
119 ;; 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
120 ;; 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
121 ;; 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
122 ;; 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
123 ;; 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
124 ;; 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
125 ;; comint-file-name-quote-list list ...
32326
b8132c394173 Cleanup whitespace.
Miles Bader <miles@gnu.org>
parents: 32196
diff changeset
126 ;; comint-get-old-input function Hooks for specific
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
127 ;; 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
128 ;; 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
129 ;; 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
130 ;; 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
131 ;; 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
132 ;; 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
133 ;; 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
134 ;; comint-scroll-to-bottom-on-input symbol For scroll behavior
74693
901d51ff105a Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 74522
diff changeset
135 ;; comint-move-point-for-output symbol ...
32326
b8132c394173 Cleanup whitespace.
Miles Bader <miles@gnu.org>
parents: 32196
diff changeset
136 ;; 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
137 ;; comint-accum-marker maker For comint-accumulate
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
138 ;;
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
139 ;; 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
140 ;; 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
141 ;; 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
142 ;; comint-completion-recexact boolean ...
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
143
17428
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
144 (defgroup comint nil
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
145 "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
146 :group 'processes)
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
147
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
148 (defgroup comint-completion nil
64000
e1ccb8b46dea (comint-completion, comint-source): Finsh `degroup' descriptions with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 63813
diff changeset
149 "Completion facilities in comint."
17428
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
150 :group 'comint)
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
151
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
152 (defgroup comint-source nil
64000
e1ccb8b46dea (comint-completion, comint-source): Finsh `degroup' descriptions with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 63813
diff changeset
153 "Source finding facilities in comint."
17428
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
154 :prefix "comint-"
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
155 :group 'comint)
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
156
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
157 (defvar comint-prompt-regexp "^"
63502
f0f76b7d0f74 (comint-replace-by-expanded-filename, comint-prompt-regexp,
Juanma Barranquero <lekktu@gmail.com>
parents: 63175
diff changeset
158 "Regexp to recognize prompts in the inferior process.
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
159 Defaults to \"^\", the null string at BOL.
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
160
30640
6f943008c543 (comint-use-prompt-regexp-instead-of-fields): New variable.
Miles Bader <miles@gnu.org>
parents: 30325
diff changeset
161 This variable is only used if the variable
61873
1cd2d4d601fa (comint-prompt-regexp, comint-get-old-input)
Luc Teirlinck <teirllm@auburn.edu>
parents: 61592
diff changeset
162 `comint-use-prompt-regexp' is non-nil.
30640
6f943008c543 (comint-use-prompt-regexp-instead-of-fields): New variable.
Miles Bader <miles@gnu.org>
parents: 30325
diff changeset
163
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
164 Good choices:
5284
9c8749be37da (comint-read-input-ring): New arg SILENT.
Richard M. Stallman <rms@gnu.org>
parents: 5166
diff changeset
165 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
166 Lucid Common Lisp: \"^\\\\(>\\\\|\\\\(->\\\\)+\\\\) *\"
fc25d1816641 * comint.el (comint-prompt-regexp): Double the backslashes in the
Jim Blandy <jimb@redhat.com>
parents: 3591
diff changeset
167 franz: \"^\\\\(->\\\\|<[0-9]*>:\\\\) *\"
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
168 kcl: \"^>+ *\"
5284
9c8749be37da (comint-read-input-ring): New arg SILENT.
Richard M. Stallman <rms@gnu.org>
parents: 5166
diff changeset
169 shell: \"^[^#$%>\\n]*[#$%>] *\"
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
170 T: \"^>+ *\"
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
171
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
172 This is a good thing to set in mode hooks.")
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
173
55223
14d50685dce0 (comint-prompt-read-only): New variable.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55123
diff changeset
174 (defcustom comint-prompt-read-only nil
14d50685dce0 (comint-prompt-read-only): New variable.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55123
diff changeset
175 "If non-nil, the comint prompt is read only.
55295
16abc166af9d (comint-prompt-read-only): Update docstring.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55223
diff changeset
176 The read only region includes the newline before the prompt.
55223
14d50685dce0 (comint-prompt-read-only): New variable.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55123
diff changeset
177 This does not affect existing prompts.
55295
16abc166af9d (comint-prompt-read-only): Update docstring.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55223
diff changeset
178 Certain derived modes may override this option.
16abc166af9d (comint-prompt-read-only): Update docstring.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55223
diff changeset
179
16abc166af9d (comint-prompt-read-only): Update docstring.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55223
diff changeset
180 If you set this option to t, then the safe way to temporarily
16abc166af9d (comint-prompt-read-only): Update docstring.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55223
diff changeset
181 override the read-only-ness of comint prompts is to call
16abc166af9d (comint-prompt-read-only): Update docstring.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55223
diff changeset
182 `comint-kill-whole-line' or `comint-kill-region' with no
16abc166af9d (comint-prompt-read-only): Update docstring.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55223
diff changeset
183 narrowing in effect. This way you will be certain that none of
16abc166af9d (comint-prompt-read-only): Update docstring.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55223
diff changeset
184 the remaining prompts will be accidentally messed up. You may
16abc166af9d (comint-prompt-read-only): Update docstring.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55223
diff changeset
185 wish to put something like the following in your `.emacs' file:
16abc166af9d (comint-prompt-read-only): Update docstring.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55223
diff changeset
186
16abc166af9d (comint-prompt-read-only): Update docstring.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55223
diff changeset
187 \(add-hook 'comint-mode-hook
57419
658b7dadee60 (comint-mouse-insert-input): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56220
diff changeset
188 (lambda ()
61302
aedce81482bf (comint-prompt-read-only): Doc fix.
Luc Teirlinck <teirllm@auburn.edu>
parents: 60898
diff changeset
189 (define-key comint-mode-map \"\\C-w\" 'comint-kill-region)
57419
658b7dadee60 (comint-mouse-insert-input): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56220
diff changeset
190 (define-key comint-mode-map [C-S-backspace]
658b7dadee60 (comint-mouse-insert-input): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56220
diff changeset
191 'comint-kill-whole-line)))
55295
16abc166af9d (comint-prompt-read-only): Update docstring.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55223
diff changeset
192
61368
015e8d66f6a0 (comint-prompt-read-only): Doc fix.
Luc Teirlinck <teirllm@auburn.edu>
parents: 61302
diff changeset
193 If you sometimes use comint-mode on text-only terminals or with `emacs -nw',
55295
16abc166af9d (comint-prompt-read-only): Update docstring.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55223
diff changeset
194 you might wish to use another binding for `comint-kill-whole-line'."
55223
14d50685dce0 (comint-prompt-read-only): New variable.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55123
diff changeset
195 :type 'boolean
14d50685dce0 (comint-prompt-read-only): New variable.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55123
diff changeset
196 :group 'comint
59996
aac0a33f5772 Change release version from 21.4 to 22.1 throughout.
Kim F. Storm <storm@cua.dk>
parents: 59776
diff changeset
197 :version "22.1")
55223
14d50685dce0 (comint-prompt-read-only): New variable.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55123
diff changeset
198
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
199 (defvar comint-delimiter-argument-list ()
63502
f0f76b7d0f74 (comint-replace-by-expanded-filename, comint-prompt-regexp,
Juanma Barranquero <lekktu@gmail.com>
parents: 63175
diff changeset
200 "List of characters to recognize as separate arguments in input.
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
201 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
202 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
203 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
204 Defaults to the empty list.
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
205
6154
385d5fe1c95c (comint-arguments): Use just one regexp to find end of arg
Richard M. Stallman <rms@gnu.org>
parents: 6148
diff changeset
206 For shells, a good value is (?\\| ?& ?< ?> ?\\( ?\\) ?;).
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
207
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
208 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
209
17428
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
210 (defcustom comint-input-autoexpand nil
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
211 "*If non-nil, expand input command history references on completion.
54879
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
212 This mirrors the optional behavior of tcsh (its autoexpand and histlist).
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
213
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
214 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
215 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
216 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
217 `comint-dynamic-complete'.
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
218
17428
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
219 This variable is buffer-local."
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
220 :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
221 (const input)
22569
b5923f76f35b (comint-input-autoexpand): Use `other' widget type.
Andreas Schwab <schwab@suse.de>
parents: 22272
diff changeset
222 (const history)
b5923f76f35b (comint-input-autoexpand): Use `other' widget type.
Andreas Schwab <schwab@suse.de>
parents: 22272
diff changeset
223 (other :tag "on" t))
17428
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
224 :group 'comint)
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
225
42450
c32f238e8a16 (comint-highlight-input): Use :weight, not :bold.
Richard M. Stallman <rms@gnu.org>
parents: 42341
diff changeset
226 (defface comint-highlight-input '((t (:weight bold)))
45727
a899b2c6ce9b (comint-send-input, comint-output-filter): Use the `font-lock-face'
Miles Bader <miles@gnu.org>
parents: 44663
diff changeset
227 "Face to use to highlight user input."
30731
4ce2b3d23348 (comint-highlight-prompt, comint-highlight-prompt-face)
Miles Bader <miles@gnu.org>
parents: 30694
diff changeset
228 :group 'comint)
4ce2b3d23348 (comint-highlight-prompt, comint-highlight-prompt-face)
Miles Bader <miles@gnu.org>
parents: 30694
diff changeset
229
32743
fd31939b0747 (comint-highlight-input, comint-highlight-prompt):
Miles Bader <miles@gnu.org>
parents: 32635
diff changeset
230 (defface comint-highlight-prompt
61404
f6ddc48bc826 (comint-highlight-prompt): Fix face spec.
Luc Teirlinck <teirllm@auburn.edu>
parents: 61396
diff changeset
231 '((((min-colors 88) (background dark)) (:foreground "cyan1"))
61394
31aa9a390538 * mh-customize.el (mh-speedbar-selected-folder-face): Special case
Dan Nicolaescu <dann@ics.uci.edu>
parents: 61368
diff changeset
232 (((background dark)) (:foreground "cyan"))
30731
4ce2b3d23348 (comint-highlight-prompt, comint-highlight-prompt-face)
Miles Bader <miles@gnu.org>
parents: 30694
diff changeset
233 (t (:foreground "dark blue")))
45727
a899b2c6ce9b (comint-send-input, comint-output-filter): Use the `font-lock-face'
Miles Bader <miles@gnu.org>
parents: 44663
diff changeset
234 "Face to use to highlight prompts."
30325
a7f5f8fff5b2 (comint-highlight-input, comint-highlight-face):
Gerd Moellmann <gerd@gnu.org>
parents: 29883
diff changeset
235 :group 'comint)
a7f5f8fff5b2 (comint-highlight-input, comint-highlight-face):
Gerd Moellmann <gerd@gnu.org>
parents: 29883
diff changeset
236
17428
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
237 (defcustom comint-input-ignoredups nil
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
238 "*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
239 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
240
17428
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
241 This variable is buffer-local."
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
242 :type 'boolean
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
243 :group 'comint)
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
244
17428
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
245 (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
246 "*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
247 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
248
17428
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
249 This variable is buffer-local, and is a good thing to set in mode hooks."
30325
a7f5f8fff5b2 (comint-highlight-input, comint-highlight-face):
Gerd Moellmann <gerd@gnu.org>
parents: 29883
diff changeset
250 :type '(choice (const :tag "nil" nil)
a7f5f8fff5b2 (comint-highlight-input, comint-highlight-face):
Gerd Moellmann <gerd@gnu.org>
parents: 29883
diff changeset
251 file)
17428
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
252 :group 'comint)
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
253
17428
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
254 (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
255 "*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
256 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
257 If `this', scroll only the selected window.
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
258
4939
d9ad390ef4e3 (comint-preinput-scroll-to-bottom): Added
Richard M. Stallman <rms@gnu.org>
parents: 4928
diff changeset
259 The default is nil.
4880
a658d0e341b1 (comint-scroll-to-bottom-on-input)
Richard M. Stallman <rms@gnu.org>
parents: 4872
diff changeset
260
17428
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
261 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
262 :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
263 (const t)
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
264 (const all)
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
265 (const this))
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
266 :group 'comint)
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
267
51421
79dc5a8eacfe (comint-move-point-for-output): Renamed from
Richard M. Stallman <rms@gnu.org>
parents: 50966
diff changeset
268 (defcustom comint-move-point-for-output nil
79dc5a8eacfe (comint-move-point-for-output): Renamed from
Richard M. Stallman <rms@gnu.org>
parents: 50966
diff changeset
269 "*Controls whether interpreter output moves point to the end of the output.
79dc5a8eacfe (comint-move-point-for-output): Renamed from
Richard M. Stallman <rms@gnu.org>
parents: 50966
diff changeset
270 If nil, then output never moves point to the output.
79dc5a8eacfe (comint-move-point-for-output): Renamed from
Richard M. Stallman <rms@gnu.org>
parents: 50966
diff changeset
271 (If the output occurs at point, it is inserted before point.)
79dc5a8eacfe (comint-move-point-for-output): Renamed from
Richard M. Stallman <rms@gnu.org>
parents: 50966
diff changeset
272 If t or `all', move point in all windows showing the buffer.
79dc5a8eacfe (comint-move-point-for-output): Renamed from
Richard M. Stallman <rms@gnu.org>
parents: 50966
diff changeset
273 If `this', move point only the selected window.
79dc5a8eacfe (comint-move-point-for-output): Renamed from
Richard M. Stallman <rms@gnu.org>
parents: 50966
diff changeset
274 If `others', move point only in other windows, not in the selected window.
4939
d9ad390ef4e3 (comint-preinput-scroll-to-bottom): Added
Richard M. Stallman <rms@gnu.org>
parents: 4928
diff changeset
275
d9ad390ef4e3 (comint-preinput-scroll-to-bottom): Added
Richard M. Stallman <rms@gnu.org>
parents: 4928
diff changeset
276 The default is nil.
4880
a658d0e341b1 (comint-scroll-to-bottom-on-input)
Richard M. Stallman <rms@gnu.org>
parents: 4872
diff changeset
277
51421
79dc5a8eacfe (comint-move-point-for-output): Renamed from
Richard M. Stallman <rms@gnu.org>
parents: 50966
diff changeset
278 See the variable `comint-scroll-show-maximum-output' and the function
79dc5a8eacfe (comint-move-point-for-output): Renamed from
Richard M. Stallman <rms@gnu.org>
parents: 50966
diff changeset
279 `comint-postoutput-scroll-to-bottom'.
54879
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
280 This variable is buffer-local in all Comint buffers."
17428
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
281 :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
282 (const t)
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
283 (const all)
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
284 (const this)
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
285 (const others))
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
286 :group 'comint)
4939
d9ad390ef4e3 (comint-preinput-scroll-to-bottom): Added
Richard M. Stallman <rms@gnu.org>
parents: 4928
diff changeset
287
51421
79dc5a8eacfe (comint-move-point-for-output): Renamed from
Richard M. Stallman <rms@gnu.org>
parents: 50966
diff changeset
288 (defvaralias 'comint-scroll-to-bottom-on-output 'comint-move-point-for-output)
79dc5a8eacfe (comint-move-point-for-output): Renamed from
Richard M. Stallman <rms@gnu.org>
parents: 50966
diff changeset
289
43028
5a7c132708d2 (comint-scroll-show-maximum-output): Default is t.
Richard M. Stallman <rms@gnu.org>
parents: 42887
diff changeset
290 (defcustom comint-scroll-show-maximum-output t
51421
79dc5a8eacfe (comint-move-point-for-output): Renamed from
Richard M. Stallman <rms@gnu.org>
parents: 50966
diff changeset
291 "*Controls how to scroll due to interpreter output.
79dc5a8eacfe (comint-move-point-for-output): Renamed from
Richard M. Stallman <rms@gnu.org>
parents: 50966
diff changeset
292 This variable applies when point is at the end of the buffer
52081
5468f0e299c4 (comint-read-noecho): Use `clear-string' instead of `fillarray'.
Juanma Barranquero <lekktu@gmail.com>
parents: 51421
diff changeset
293 \(either because it was originally there, or because
51421
79dc5a8eacfe (comint-move-point-for-output): Renamed from
Richard M. Stallman <rms@gnu.org>
parents: 50966
diff changeset
294 `comint-move-point-for-output' said to move it there)
79dc5a8eacfe (comint-move-point-for-output): Renamed from
Richard M. Stallman <rms@gnu.org>
parents: 50966
diff changeset
295 and output from the subprocess is inserted.
79dc5a8eacfe (comint-move-point-for-output): Renamed from
Richard M. Stallman <rms@gnu.org>
parents: 50966
diff changeset
296
79dc5a8eacfe (comint-move-point-for-output): Renamed from
Richard M. Stallman <rms@gnu.org>
parents: 50966
diff changeset
297 Non-nil means scroll so that the window is full of text
79dc5a8eacfe (comint-move-point-for-output): Renamed from
Richard M. Stallman <rms@gnu.org>
parents: 50966
diff changeset
298 and point is on the last line. A value of nil
54879
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
299 means don't do anything special--scroll normally.
51421
79dc5a8eacfe (comint-move-point-for-output): Renamed from
Richard M. Stallman <rms@gnu.org>
parents: 50966
diff changeset
300
79dc5a8eacfe (comint-move-point-for-output): Renamed from
Richard M. Stallman <rms@gnu.org>
parents: 50966
diff changeset
301 See also the variable `comint-move-point-for-output' and the function
79dc5a8eacfe (comint-move-point-for-output): Renamed from
Richard M. Stallman <rms@gnu.org>
parents: 50966
diff changeset
302 `comint-postoutput-scroll-to-bottom'.
54879
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
303 This variable is buffer-local in all Comint buffers."
17428
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
304 :type 'boolean
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
305 :group 'comint)
4939
d9ad390ef4e3 (comint-preinput-scroll-to-bottom): Added
Richard M. Stallman <rms@gnu.org>
parents: 4928
diff changeset
306
17428
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
307 (defcustom comint-buffer-maximum-size 1024
54879
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
308 "*The maximum size in lines for Comint buffers.
10833
77d7d3990300 Added comint-buffer-maximum-size and comint-truncate-buffer.
Simon Marshall <simon@gnu.org>
parents: 10830
diff changeset
309 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
310 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
311 :type 'integer
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
312 :group 'comint)
10833
77d7d3990300 Added comint-buffer-maximum-size and comint-truncate-buffer.
Simon Marshall <simon@gnu.org>
parents: 10830
diff changeset
313
58375
8a32e848578e (comint-input-ring-size): Increase to 150.
Richard M. Stallman <rms@gnu.org>
parents: 57895
diff changeset
314 (defvar comint-input-ring-size 150
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
315 "Size of input history ring.")
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
316
25443
a4be8e9452ef (comint-input-ring-separator): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 25278
diff changeset
317 (defvar comint-input-ring-separator "\n"
a4be8e9452ef (comint-input-ring-separator): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 25278
diff changeset
318 "Separator between commands in the history file.")
a4be8e9452ef (comint-input-ring-separator): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 25278
diff changeset
319
34977
29a7d4d1846b (comint-input-history-ignore): New variable.
Gerd Moellmann <gerd@gnu.org>
parents: 34834
diff changeset
320 (defvar comint-input-history-ignore "^#"
54879
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
321 "Regexp for history entries that should be ignored when Comint initializes.")
34977
29a7d4d1846b (comint-input-history-ignore): New variable.
Gerd Moellmann <gerd@gnu.org>
parents: 34834
diff changeset
322
17428
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
323 (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
324 "*If non-nil, assume that the subprocess echoes any input.
2539
577c77cfd199 *** empty log message ***
Noah Friedman <friedman@splode.com>
parents: 2518
diff changeset
325 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
326 appears in the buffer.
2539
577c77cfd199 *** empty log message ***
Noah Friedman <friedman@splode.com>
parents: 2518
diff changeset
327
17428
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
328 This variable is buffer-local."
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
329 :type 'boolean
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
330 :group 'comint)
2539
577c77cfd199 *** empty log message ***
Noah Friedman <friedman@splode.com>
parents: 2518
diff changeset
331
24471
cddc33d259d4 (comint-password-prompt-regexp): Accept "login password:"
Karl Heuer <kwzh@gnu.org>
parents: 23615
diff changeset
332 ;; AIX puts the name of the person being su'd to in front of the prompt.
24698
57bcdf84ce42 (comint-password-prompt-regexp): Modified so that it matches the
Joel N. Weber II <devnull@gnu.org>
parents: 24471
diff changeset
333 ;; kinit prints a prompt like `Password for devnull@GNU.ORG: '.
24719
a0382c9f41ce (comint-password-prompt-regexp): Modified to match the output of ksu
Joel N. Weber II <devnull@gnu.org>
parents: 24700
diff changeset
334 ;; ksu prints a prompt like `Kerberos password for devnull/root@GNU.ORG: '.
a0382c9f41ce (comint-password-prompt-regexp): Modified to match the output of ksu
Joel N. Weber II <devnull@gnu.org>
parents: 24700
diff changeset
335 ;; ssh-add prints a prompt like `Enter passphrase: '.
24893
c74f4b5eb657 (comint-password-prompt-regexp): Allow "(again)".
Karl Heuer <kwzh@gnu.org>
parents: 24765
diff changeset
336 ;; Some implementations of passwd use "Password (again)" as the 2nd prompt.
17428
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
337 (defcustom comint-password-prompt-regexp
44531
c60e04e0eb91 (comint-password-prompt-regexp): Match" SMB password".
Francesco Potortì <pot@gnu.org>
parents: 43843
diff changeset
338 "\\(\\([Oo]ld \\|[Nn]ew \\|'s \\|login \\|\
44646
075cd9bb6051 (comint-password-prompt-regexp): Match "Repeat passphrase".
Francesco Potortì <pot@gnu.org>
parents: 44531
diff changeset
339 Kerberos \\|CVS \\|UNIX \\| SMB \\|^\\)\
54879
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
340 \[Pp]assword\\( (again)\\)?\\|\
63813
e907a265ffd8 (comint-password-prompt-regexp): Accept ", try again".
Richard M. Stallman <rms@gnu.org>
parents: 63502
diff changeset
341 pass phrase\\|\\(Enter\\|Repeat\\|Bad\\) passphrase\\)\
e907a265ffd8 (comint-password-prompt-regexp): Accept ", try again".
Richard M. Stallman <rms@gnu.org>
parents: 63502
diff changeset
342 \\(?:, try again\\)?\\(?: for [^:]+\\)?:\\s *\\'"
8087
c22d7c5168f5 comint-password-prompt-regexp: New variable.
Noah Friedman <friedman@splode.com>
parents: 8060
diff changeset
343 "*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
344 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
345 :type 'regexp
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
346 :group 'comint)
8087
c22d7c5168f5 comint-password-prompt-regexp: New variable.
Noah Friedman <friedman@splode.com>
parents: 8060
diff changeset
347
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
348 ;; Here are the per-interpreter hooks.
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
349 (defvar comint-get-old-input (function comint-get-old-input-default)
54879
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
350 "Function that returns old text in Comint mode.
30640
6f943008c543 (comint-use-prompt-regexp-instead-of-fields): New variable.
Miles Bader <miles@gnu.org>
parents: 30325
diff changeset
351 This function is called when return is typed while the point is in old
6f943008c543 (comint-use-prompt-regexp-instead-of-fields): New variable.
Miles Bader <miles@gnu.org>
parents: 30325
diff changeset
352 text. It returns the text to be submitted as process input. The
6f943008c543 (comint-use-prompt-regexp-instead-of-fields): New variable.
Miles Bader <miles@gnu.org>
parents: 30325
diff changeset
353 default is `comint-get-old-input-default', which either grabs the
6f943008c543 (comint-use-prompt-regexp-instead-of-fields): New variable.
Miles Bader <miles@gnu.org>
parents: 30325
diff changeset
354 current input field or grabs the current line and strips off leading
6f943008c543 (comint-use-prompt-regexp-instead-of-fields): New variable.
Miles Bader <miles@gnu.org>
parents: 30325
diff changeset
355 text matching `comint-prompt-regexp', depending on the value of
61873
1cd2d4d601fa (comint-prompt-regexp, comint-get-old-input)
Luc Teirlinck <teirllm@auburn.edu>
parents: 61592
diff changeset
356 `comint-use-prompt-regexp'.")
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
357
6185
82a92cf44059 (comint-after-partial-filename-command,
Richard M. Stallman <rms@gnu.org>
parents: 6154
diff changeset
358 (defvar comint-dynamic-complete-functions
82a92cf44059 (comint-after-partial-filename-command,
Richard M. Stallman <rms@gnu.org>
parents: 6154
diff changeset
359 '(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
360 "List of functions called to perform completion.
82a92cf44059 (comint-after-partial-filename-command,
Richard M. Stallman <rms@gnu.org>
parents: 6154
diff changeset
361 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
362 See also `comint-dynamic-complete'.
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
363
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
364 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
365
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
366 (defvar comint-input-filter
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
367 (function (lambda (str) (not (string-match "\\`\\s *\\'" str))))
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
368 "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
369 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
370 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
371
6187
280d4a97da69 (comint-input-filter-functions)
Richard M. Stallman <rms@gnu.org>
parents: 6185
diff changeset
372 (defvar comint-input-filter-functions '()
57603
bdfa227d18a8 (comint-insert-input): Use @ in `interactive'.
Richard M. Stallman <rms@gnu.org>
parents: 57539
diff changeset
373 "Abnormal hook run before input is sent to the process.
57419
658b7dadee60 (comint-mouse-insert-input): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56220
diff changeset
374 These functions get one argument, a string containing the text to send.")
6185
82a92cf44059 (comint-after-partial-filename-command,
Richard M. Stallman <rms@gnu.org>
parents: 6154
diff changeset
375
61922
073c1d646ae1 (comint-output-filter-functions): Add autoload cookie.
Luc Teirlinck <teirllm@auburn.edu>
parents: 61873
diff changeset
376 ;;;###autoload
57539
8c6fc4afae74 (comint-output-filter-functions): Add comint-watch-for-password-prompt.
Richard M. Stallman <rms@gnu.org>
parents: 57420
diff changeset
377 (defvar comint-output-filter-functions '(comint-postoutput-scroll-to-bottom comint-watch-for-password-prompt)
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
378 "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
379 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
380 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
381 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
382 `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
383 functions have already modified the buffer.
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
384
19515
a0ecbe13b54b (comint-preoutput-filter-functions): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 18805
diff changeset
385 See also `comint-preoutput-filter-functions'.
a0ecbe13b54b (comint-preoutput-filter-functions): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 18805
diff changeset
386
43579
ebb2754ac469 (comint-preoutput-filter-functions): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 43530
diff changeset
387 You can use `add-hook' to add functions to this list
ebb2754ac469 (comint-preoutput-filter-functions): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 43530
diff changeset
388 either globally or locally.")
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
389
42693
13a21b2786c0 (comint-input-sender): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 42669
diff changeset
390 (defvar comint-input-sender-no-newline nil
13a21b2786c0 (comint-input-sender): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 42669
diff changeset
391 "Non-nil directs the `comint-input-sender' function not to send a newline.")
13a21b2786c0 (comint-input-sender): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 42669
diff changeset
392
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
393 (defvar comint-input-sender (function comint-simple-send)
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
394 "Function to actually send to PROCESS the STRING submitted by user.
32326
b8132c394173 Cleanup whitespace.
Miles Bader <miles@gnu.org>
parents: 32196
diff changeset
395 Usually this is just `comint-simple-send', but if your mode needs to
3386
bc4729d67e6e (comint-filter): Put window-start before the input.
Richard M. Stallman <rms@gnu.org>
parents: 3113
diff changeset
396 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
397 `comint-simple-send' just sends the string plus a newline.
42693
13a21b2786c0 (comint-input-sender): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 42669
diff changeset
398 \(If `comint-input-sender-no-newline' is non-nil, it omits the newline.)
3386
bc4729d67e6e (comint-filter): Put window-start before the input.
Richard M. Stallman <rms@gnu.org>
parents: 3113
diff changeset
399 This is called from the user command `comint-send-input'.")
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
400
17428
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
401 (defcustom comint-eol-on-send t
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
402 "*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
403 See `comint-send-input'."
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
404 :type 'boolean
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
405 :group 'comint)
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
406
30640
6f943008c543 (comint-use-prompt-regexp-instead-of-fields): New variable.
Miles Bader <miles@gnu.org>
parents: 30325
diff changeset
407 ;; Note: If it is decided to purge comint-prompt-regexp from the source
6f943008c543 (comint-use-prompt-regexp-instead-of-fields): New variable.
Miles Bader <miles@gnu.org>
parents: 30325
diff changeset
408 ;; entirely, searching for uses of this variable will help to identify
6f943008c543 (comint-use-prompt-regexp-instead-of-fields): New variable.
Miles Bader <miles@gnu.org>
parents: 30325
diff changeset
409 ;; places that need attention.
61873
1cd2d4d601fa (comint-prompt-regexp, comint-get-old-input)
Luc Teirlinck <teirllm@auburn.edu>
parents: 61592
diff changeset
410 (defcustom comint-use-prompt-regexp nil
1cd2d4d601fa (comint-prompt-regexp, comint-get-old-input)
Luc Teirlinck <teirllm@auburn.edu>
parents: 61592
diff changeset
411 "*If non-nil, use `comint-prompt-regexp' to recognize prompts.
30640
6f943008c543 (comint-use-prompt-regexp-instead-of-fields): New variable.
Miles Bader <miles@gnu.org>
parents: 30325
diff changeset
412 If nil, then program output and user-input are given different `field'
57419
658b7dadee60 (comint-mouse-insert-input): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56220
diff changeset
413 properties, which Emacs commands can use to distinguish them (in
64570
76a0015820fb (comint-use-prompt-regexp, comint-send-input, comint-source-default,
Juanma Barranquero <lekktu@gmail.com>
parents: 64169
diff changeset
414 particular, common movement commands such as `beginning-of-line'
76a0015820fb (comint-use-prompt-regexp, comint-send-input, comint-source-default,
Juanma Barranquero <lekktu@gmail.com>
parents: 64169
diff changeset
415 respect field boundaries in a natural way)."
30640
6f943008c543 (comint-use-prompt-regexp-instead-of-fields): New variable.
Miles Bader <miles@gnu.org>
parents: 30325
diff changeset
416 :type 'boolean
6f943008c543 (comint-use-prompt-regexp-instead-of-fields): New variable.
Miles Bader <miles@gnu.org>
parents: 30325
diff changeset
417 :group 'comint)
6f943008c543 (comint-use-prompt-regexp-instead-of-fields): New variable.
Miles Bader <miles@gnu.org>
parents: 30325
diff changeset
418
61873
1cd2d4d601fa (comint-prompt-regexp, comint-get-old-input)
Luc Teirlinck <teirllm@auburn.edu>
parents: 61592
diff changeset
419 ;; Autoload is necessary for Custom to recognize old alias.
1cd2d4d601fa (comint-prompt-regexp, comint-get-old-input)
Luc Teirlinck <teirllm@auburn.edu>
parents: 61592
diff changeset
420 ;;;###autoload
64570
76a0015820fb (comint-use-prompt-regexp, comint-send-input, comint-source-default,
Juanma Barranquero <lekktu@gmail.com>
parents: 64169
diff changeset
421 (define-obsolete-variable-alias 'comint-use-prompt-regexp-instead-of-fields
76a0015820fb (comint-use-prompt-regexp, comint-send-input, comint-source-default,
Juanma Barranquero <lekktu@gmail.com>
parents: 64169
diff changeset
422 'comint-use-prompt-regexp "22.1")
61873
1cd2d4d601fa (comint-prompt-regexp, comint-get-old-input)
Luc Teirlinck <teirllm@auburn.edu>
parents: 61592
diff changeset
423
63172
14e29b4d395f (comint-mode-hook): Do not enable Font Lock by default.
Luc Teirlinck <teirllm@auburn.edu>
parents: 63170
diff changeset
424 (defcustom comint-mode-hook nil
54879
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
425 "Hook run upon entry to `comint-mode'.
17428
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
426 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
427 :type 'hook
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
428 :group 'comint)
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
429
17428
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
430 (defcustom comint-exec-hook '()
54879
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
431 "Hook run each time a process is exec'd by `comint-exec'.
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
432 This is called after the process is cranked up. It is useful for things that
54879
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
433 must be done each time a process is executed in a Comint mode buffer (e.g.,
3386
bc4729d67e6e (comint-filter): Put window-start before the input.
Richard M. Stallman <rms@gnu.org>
parents: 3113
diff changeset
434 `(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
435 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
436 :type 'hook
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
437 :group 'comint)
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
438
57419
658b7dadee60 (comint-mouse-insert-input): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56220
diff changeset
439 (defvar comint-mode-map
658b7dadee60 (comint-mouse-insert-input): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56220
diff changeset
440 (let ((map (make-sparse-keymap)))
658b7dadee60 (comint-mouse-insert-input): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56220
diff changeset
441 ;; Keys:
658b7dadee60 (comint-mouse-insert-input): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56220
diff changeset
442 (define-key map "\ep" 'comint-previous-input)
658b7dadee60 (comint-mouse-insert-input): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56220
diff changeset
443 (define-key map "\en" 'comint-next-input)
658b7dadee60 (comint-mouse-insert-input): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56220
diff changeset
444 (define-key map [C-up] 'comint-previous-input)
658b7dadee60 (comint-mouse-insert-input): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56220
diff changeset
445 (define-key map [C-down] 'comint-next-input)
658b7dadee60 (comint-mouse-insert-input): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56220
diff changeset
446 (define-key map "\er" 'comint-previous-matching-input)
658b7dadee60 (comint-mouse-insert-input): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56220
diff changeset
447 (define-key map "\es" 'comint-next-matching-input)
658b7dadee60 (comint-mouse-insert-input): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56220
diff changeset
448 (define-key map [?\C-c ?\M-r] 'comint-previous-matching-input-from-input)
658b7dadee60 (comint-mouse-insert-input): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56220
diff changeset
449 (define-key map [?\C-c ?\M-s] 'comint-next-matching-input-from-input)
658b7dadee60 (comint-mouse-insert-input): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56220
diff changeset
450 (define-key map "\e\C-l" 'comint-show-output)
658b7dadee60 (comint-mouse-insert-input): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56220
diff changeset
451 (define-key map "\C-m" 'comint-send-input)
658b7dadee60 (comint-mouse-insert-input): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56220
diff changeset
452 (define-key map "\C-d" 'comint-delchar-or-maybe-eof)
658b7dadee60 (comint-mouse-insert-input): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56220
diff changeset
453 (define-key map "\C-c " 'comint-accumulate)
658b7dadee60 (comint-mouse-insert-input): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56220
diff changeset
454 (define-key map "\C-c\C-x" 'comint-get-next-from-history)
658b7dadee60 (comint-mouse-insert-input): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56220
diff changeset
455 (define-key map "\C-c\C-a" 'comint-bol-or-process-mark)
658b7dadee60 (comint-mouse-insert-input): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56220
diff changeset
456 (define-key map "\C-c\C-u" 'comint-kill-input)
658b7dadee60 (comint-mouse-insert-input): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56220
diff changeset
457 (define-key map "\C-c\C-w" 'backward-kill-word)
658b7dadee60 (comint-mouse-insert-input): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56220
diff changeset
458 (define-key map "\C-c\C-c" 'comint-interrupt-subjob)
658b7dadee60 (comint-mouse-insert-input): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56220
diff changeset
459 (define-key map "\C-c\C-z" 'comint-stop-subjob)
658b7dadee60 (comint-mouse-insert-input): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56220
diff changeset
460 (define-key map "\C-c\C-\\" 'comint-quit-subjob)
70575
aaf48e9df47b (comint-insert-input): Just make it when
Nick Roberts <nickrob@snap.net.nz>
parents: 70553
diff changeset
461 (define-key map "\C-c\C-m" 'comint-copy-old-input)
57419
658b7dadee60 (comint-mouse-insert-input): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56220
diff changeset
462 (define-key map "\C-c\C-o" 'comint-delete-output)
658b7dadee60 (comint-mouse-insert-input): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56220
diff changeset
463 (define-key map "\C-c\C-r" 'comint-show-output)
658b7dadee60 (comint-mouse-insert-input): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56220
diff changeset
464 (define-key map "\C-c\C-e" 'comint-show-maximum-output)
658b7dadee60 (comint-mouse-insert-input): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56220
diff changeset
465 (define-key map "\C-c\C-l" 'comint-dynamic-list-input-ring)
658b7dadee60 (comint-mouse-insert-input): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56220
diff changeset
466 (define-key map "\C-c\C-n" 'comint-next-prompt)
658b7dadee60 (comint-mouse-insert-input): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56220
diff changeset
467 (define-key map "\C-c\C-p" 'comint-previous-prompt)
658b7dadee60 (comint-mouse-insert-input): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56220
diff changeset
468 (define-key map "\C-c\C-d" 'comint-send-eof)
658b7dadee60 (comint-mouse-insert-input): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56220
diff changeset
469 (define-key map "\C-c\C-s" 'comint-write-output)
658b7dadee60 (comint-mouse-insert-input): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56220
diff changeset
470 (define-key map "\C-c." 'comint-insert-previous-argument)
658b7dadee60 (comint-mouse-insert-input): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56220
diff changeset
471 ;; Mouse Buttons:
658b7dadee60 (comint-mouse-insert-input): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56220
diff changeset
472 (define-key map [mouse-2] 'comint-insert-input)
658b7dadee60 (comint-mouse-insert-input): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56220
diff changeset
473 ;; Menu bars:
658b7dadee60 (comint-mouse-insert-input): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56220
diff changeset
474 ;; completion:
658b7dadee60 (comint-mouse-insert-input): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56220
diff changeset
475 (define-key map [menu-bar completion]
658b7dadee60 (comint-mouse-insert-input): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56220
diff changeset
476 (cons "Complete" (make-sparse-keymap "Complete")))
658b7dadee60 (comint-mouse-insert-input): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56220
diff changeset
477 (define-key map [menu-bar completion complete-expand]
658b7dadee60 (comint-mouse-insert-input): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56220
diff changeset
478 '("Expand File Name" . comint-replace-by-expanded-filename))
658b7dadee60 (comint-mouse-insert-input): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56220
diff changeset
479 (define-key map [menu-bar completion complete-listing]
658b7dadee60 (comint-mouse-insert-input): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56220
diff changeset
480 '("File Completion Listing" . comint-dynamic-list-filename-completions))
658b7dadee60 (comint-mouse-insert-input): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56220
diff changeset
481 (define-key map [menu-bar completion complete-file]
658b7dadee60 (comint-mouse-insert-input): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56220
diff changeset
482 '("Complete File Name" . comint-dynamic-complete-filename))
658b7dadee60 (comint-mouse-insert-input): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56220
diff changeset
483 (define-key map [menu-bar completion complete]
658b7dadee60 (comint-mouse-insert-input): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56220
diff changeset
484 '("Complete Before Point" . comint-dynamic-complete))
658b7dadee60 (comint-mouse-insert-input): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56220
diff changeset
485 ;; Input history:
658b7dadee60 (comint-mouse-insert-input): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56220
diff changeset
486 (define-key map [menu-bar inout]
658b7dadee60 (comint-mouse-insert-input): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56220
diff changeset
487 (cons "In/Out" (make-sparse-keymap "In/Out")))
658b7dadee60 (comint-mouse-insert-input): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56220
diff changeset
488 (define-key map [menu-bar inout delete-output]
658b7dadee60 (comint-mouse-insert-input): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56220
diff changeset
489 '("Delete Current Output Group" . comint-delete-output))
658b7dadee60 (comint-mouse-insert-input): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56220
diff changeset
490 (define-key map [menu-bar inout append-output-to-file]
658b7dadee60 (comint-mouse-insert-input): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56220
diff changeset
491 '("Append Current Output Group to File" . comint-append-output-to-file))
658b7dadee60 (comint-mouse-insert-input): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56220
diff changeset
492 (define-key map [menu-bar inout write-output]
658b7dadee60 (comint-mouse-insert-input): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56220
diff changeset
493 '("Write Current Output Group to File" . comint-write-output))
658b7dadee60 (comint-mouse-insert-input): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56220
diff changeset
494 (define-key map [menu-bar inout next-prompt]
658b7dadee60 (comint-mouse-insert-input): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56220
diff changeset
495 '("Forward Output Group" . comint-next-prompt))
658b7dadee60 (comint-mouse-insert-input): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56220
diff changeset
496 (define-key map [menu-bar inout previous-prompt]
658b7dadee60 (comint-mouse-insert-input): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56220
diff changeset
497 '("Backward Output Group" . comint-previous-prompt))
658b7dadee60 (comint-mouse-insert-input): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56220
diff changeset
498 (define-key map [menu-bar inout show-maximum-output]
658b7dadee60 (comint-mouse-insert-input): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56220
diff changeset
499 '("Show Maximum Output" . comint-show-maximum-output))
658b7dadee60 (comint-mouse-insert-input): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56220
diff changeset
500 (define-key map [menu-bar inout show-output]
658b7dadee60 (comint-mouse-insert-input): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56220
diff changeset
501 '("Show Current Output Group" . comint-show-output))
658b7dadee60 (comint-mouse-insert-input): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56220
diff changeset
502 (define-key map [menu-bar inout kill-input]
658b7dadee60 (comint-mouse-insert-input): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56220
diff changeset
503 '("Kill Current Input" . comint-kill-input))
658b7dadee60 (comint-mouse-insert-input): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56220
diff changeset
504 (define-key map [menu-bar inout copy-input]
70575
aaf48e9df47b (comint-insert-input): Just make it when
Nick Roberts <nickrob@snap.net.nz>
parents: 70553
diff changeset
505 '("Copy Old Input" . comint-copy-old-input))
57419
658b7dadee60 (comint-mouse-insert-input): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56220
diff changeset
506 (define-key map [menu-bar inout forward-matching-history]
658b7dadee60 (comint-mouse-insert-input): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56220
diff changeset
507 '("Forward Matching Input..." . comint-forward-matching-input))
658b7dadee60 (comint-mouse-insert-input): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56220
diff changeset
508 (define-key map [menu-bar inout backward-matching-history]
658b7dadee60 (comint-mouse-insert-input): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56220
diff changeset
509 '("Backward Matching Input..." . comint-backward-matching-input))
658b7dadee60 (comint-mouse-insert-input): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56220
diff changeset
510 (define-key map [menu-bar inout next-matching-history]
658b7dadee60 (comint-mouse-insert-input): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56220
diff changeset
511 '("Next Matching Input..." . comint-next-matching-input))
658b7dadee60 (comint-mouse-insert-input): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56220
diff changeset
512 (define-key map [menu-bar inout previous-matching-history]
658b7dadee60 (comint-mouse-insert-input): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56220
diff changeset
513 '("Previous Matching Input..." . comint-previous-matching-input))
658b7dadee60 (comint-mouse-insert-input): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56220
diff changeset
514 (define-key map [menu-bar inout next-matching-history-from-input]
658b7dadee60 (comint-mouse-insert-input): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56220
diff changeset
515 '("Next Matching Current Input" . comint-next-matching-input-from-input))
658b7dadee60 (comint-mouse-insert-input): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56220
diff changeset
516 (define-key map [menu-bar inout previous-matching-history-from-input]
658b7dadee60 (comint-mouse-insert-input): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56220
diff changeset
517 '("Previous Matching Current Input" . comint-previous-matching-input-from-input))
658b7dadee60 (comint-mouse-insert-input): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56220
diff changeset
518 (define-key map [menu-bar inout next-history]
658b7dadee60 (comint-mouse-insert-input): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56220
diff changeset
519 '("Next Input" . comint-next-input))
658b7dadee60 (comint-mouse-insert-input): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56220
diff changeset
520 (define-key map [menu-bar inout previous-history]
658b7dadee60 (comint-mouse-insert-input): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56220
diff changeset
521 '("Previous Input" . comint-previous-input))
658b7dadee60 (comint-mouse-insert-input): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56220
diff changeset
522 (define-key map [menu-bar inout list-history]
658b7dadee60 (comint-mouse-insert-input): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56220
diff changeset
523 '("List Input History" . comint-dynamic-list-input-ring))
658b7dadee60 (comint-mouse-insert-input): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56220
diff changeset
524 (define-key map [menu-bar inout expand-history]
658b7dadee60 (comint-mouse-insert-input): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56220
diff changeset
525 '("Expand History Before Point" . comint-replace-by-expanded-history))
658b7dadee60 (comint-mouse-insert-input): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56220
diff changeset
526 ;; Signals
658b7dadee60 (comint-mouse-insert-input): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56220
diff changeset
527 (let ((signals-map (make-sparse-keymap "Signals")))
658b7dadee60 (comint-mouse-insert-input): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56220
diff changeset
528 (define-key map [menu-bar signals] (cons "Signals" signals-map))
658b7dadee60 (comint-mouse-insert-input): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56220
diff changeset
529 (define-key signals-map [eof] '("EOF" . comint-send-eof))
658b7dadee60 (comint-mouse-insert-input): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56220
diff changeset
530 (define-key signals-map [kill] '("KILL" . comint-kill-subjob))
658b7dadee60 (comint-mouse-insert-input): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56220
diff changeset
531 (define-key signals-map [quit] '("QUIT" . comint-quit-subjob))
658b7dadee60 (comint-mouse-insert-input): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56220
diff changeset
532 (define-key signals-map [cont] '("CONT" . comint-continue-subjob))
658b7dadee60 (comint-mouse-insert-input): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56220
diff changeset
533 (define-key signals-map [stop] '("STOP" . comint-stop-subjob))
658b7dadee60 (comint-mouse-insert-input): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56220
diff changeset
534 (define-key signals-map [break] '("BREAK" . comint-interrupt-subjob)))
658b7dadee60 (comint-mouse-insert-input): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56220
diff changeset
535 ;; Put them in the menu bar:
658b7dadee60 (comint-mouse-insert-input): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56220
diff changeset
536 (setq menu-bar-final-items (append '(completion inout signals)
658b7dadee60 (comint-mouse-insert-input): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56220
diff changeset
537 menu-bar-final-items))
658b7dadee60 (comint-mouse-insert-input): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56220
diff changeset
538 map))
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
539
54879
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
540 ;; Fixme: Is this still relevant?
1131
853d0d4c61fb entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 932
diff changeset
541 (defvar comint-ptyp t
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
542 "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
543 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
544
932
a93f0b1ba909 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 925
diff changeset
545 (defvar comint-input-ring nil)
54879
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
546 (defvar comint-last-input-start nil)
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
547 (defvar comint-last-input-end nil)
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
548 (defvar comint-last-output-start nil)
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
549 (defvar comint-input-ring-index nil
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
550 "Index of last matched history element.")
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
551 (defvar comint-matching-input-from-input-string ""
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
552 "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
553 (defvar comint-save-input-ring-index
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
554 "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
555 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
556
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
557 (defvar comint-accum-marker nil
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
558 "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
559 The command \\[comint-accumulate] sets this.")
6507
ff41e0e932b8 (comint-run): New command.
Richard M. Stallman <rms@gnu.org>
parents: 6256
diff changeset
560
70108
3233d9998115 (comint-previous-input): Don't clobber input line when moving off either
J.D. Smith <jdsmith@as.arizona.edu>
parents: 69687
diff changeset
561 (defvar comint-stored-incomplete-input nil
3233d9998115 (comint-previous-input): Don't clobber input line when moving off either
J.D. Smith <jdsmith@as.arizona.edu>
parents: 69687
diff changeset
562 "Stored input for history cycling.")
3233d9998115 (comint-previous-input): Don't clobber input line when moving off either
J.D. Smith <jdsmith@as.arizona.edu>
parents: 69687
diff changeset
563
6507
ff41e0e932b8 (comint-run): New command.
Richard M. Stallman <rms@gnu.org>
parents: 6256
diff changeset
564 (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
565 (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
566 (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
567 (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
568 (put 'comint-input-autoexpand 'permanent-local t)
6187
280d4a97da69 (comint-input-filter-functions)
Richard M. Stallman <rms@gnu.org>
parents: 6185
diff changeset
569 (put 'comint-input-filter-functions 'permanent-local t)
280d4a97da69 (comint-input-filter-functions)
Richard M. Stallman <rms@gnu.org>
parents: 6185
diff changeset
570 (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
571 (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
572 (put 'comint-scroll-to-bottom-on-input 'permanent-local t)
51421
79dc5a8eacfe (comint-move-point-for-output): Renamed from
Richard M. Stallman <rms@gnu.org>
parents: 50966
diff changeset
573 (put 'comint-move-point-for-output 'permanent-local t)
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
574 (put 'comint-scroll-show-maximum-output 'permanent-local t)
1131
853d0d4c61fb entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 932
diff changeset
575 (put 'comint-ptyp 'permanent-local t)
861
345296f94a1e *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 846
diff changeset
576
17652
0d08e67b280f (comint-mode): Add a mode-class property.
Richard M. Stallman <rms@gnu.org>
parents: 17583
diff changeset
577 (put 'comint-mode 'mode-class 'special)
0d08e67b280f (comint-mode): Add a mode-class property.
Richard M. Stallman <rms@gnu.org>
parents: 17583
diff changeset
578
31970
ebe991a7d6f9 (comint-mode-hook): Docstring fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31581
diff changeset
579 (define-derived-mode comint-mode fundamental-mode "Comint"
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
580 "Major mode for interacting with an inferior interpreter.
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
581 Interpreter name is same as buffer name, sans the asterisks.
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
582 Return at end of buffer sends line as input.
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
583 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
584 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
585 before submitting new input.
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
586
63175
b09a11c8c73e (comint-check-proc, make-comint-in-buffer, comint-source-default): Doc fixes.
Juanma Barranquero <lekktu@gmail.com>
parents: 63172
diff changeset
587 This mode is customized to create major modes such as Inferior Lisp
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
588 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
589 `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
590 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
591 `comint-prompt-regexp' to the appropriate regular expression.
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
592
3386
bc4729d67e6e (comint-filter): Put window-start before the input.
Richard M. Stallman <rms@gnu.org>
parents: 3113
diff changeset
593 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
594 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
595 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
596 \\[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
597 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
598 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
599
3386
bc4729d67e6e (comint-filter): Put window-start before the input.
Richard M. Stallman <rms@gnu.org>
parents: 3113
diff changeset
600 Commands with no default key bindings include `send-invisible',
32326
b8132c394173 Cleanup whitespace.
Miles Bader <miles@gnu.org>
parents: 32196
diff changeset
601 `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
602 `comint-magic-space'.
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
603
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
604 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
605 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
606 `comint-preoutput-filter-functions', `comint-scroll-to-bottom-on-input',
51421
79dc5a8eacfe (comint-move-point-for-output): Renamed from
Richard M. Stallman <rms@gnu.org>
parents: 50966
diff changeset
607 and `comint-move-point-for-output'.
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
608
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
609 If you accidentally suspend your process, use \\[comint-continue-subjob]
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
610 to continue it.
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
611
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
612 \\{comint-mode-map}
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
613
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
614 Entry to this mode runs the hooks on `comint-mode-hook'."
7071
058f19d36c07 (comint-mode): Remove space after `:' in mode-line-process.
Richard M. Stallman <rms@gnu.org>
parents: 7048
diff changeset
615 (setq mode-line-process '(":%s"))
41143
f1315eeb4c0b (comint-mode): Simplify.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40828
diff changeset
616 (set (make-local-variable 'comint-last-input-start) (point-min-marker))
f1315eeb4c0b (comint-mode): Simplify.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40828
diff changeset
617 (set (make-local-variable 'comint-last-input-end) (point-min-marker))
f1315eeb4c0b (comint-mode): Simplify.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40828
diff changeset
618 (set (make-local-variable 'comint-last-output-start) (make-marker))
30731
4ce2b3d23348 (comint-highlight-prompt, comint-highlight-prompt-face)
Miles Bader <miles@gnu.org>
parents: 30694
diff changeset
619 (make-local-variable 'comint-last-prompt-overlay)
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
620 (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
621 (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
622 (make-local-variable 'comint-input-ring)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
623 (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
624 (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
625 (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
626 (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
627 (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
628 (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
629 (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
630 (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
631 (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
632 (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
633 (make-local-variable 'comint-input-autoexpand)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
634 (make-local-variable 'comint-input-ignoredups)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
635 (make-local-variable 'comint-delimiter-argument-list)
6256
3810012eb29f (comint-completion-fignore): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 6239
diff changeset
636 (make-local-variable 'comint-completion-fignore)
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
637 (make-local-variable 'comint-get-old-input)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
638 (make-local-variable 'comint-input-filter)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
639 (make-local-variable 'comint-input-sender)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
640 (make-local-variable 'comint-eol-on-send)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
641 (make-local-variable 'comint-scroll-to-bottom-on-input)
51421
79dc5a8eacfe (comint-move-point-for-output): Renamed from
Richard M. Stallman <rms@gnu.org>
parents: 50966
diff changeset
642 (make-local-variable 'comint-move-point-for-output)
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
643 (make-local-variable 'comint-scroll-show-maximum-output)
70108
3233d9998115 (comint-previous-input): Don't clobber input line when moving off either
J.D. Smith <jdsmith@as.arizona.edu>
parents: 69687
diff changeset
644 (make-local-variable 'comint-stored-incomplete-input)
48987
0bf251ecfd1a (comint-mode): Localy set scroll-conservatively.
Richard M. Stallman <rms@gnu.org>
parents: 47377
diff changeset
645 ;; This makes it really work to keep point at the bottom.
0bf251ecfd1a (comint-mode): Localy set scroll-conservatively.
Richard M. Stallman <rms@gnu.org>
parents: 47377
diff changeset
646 (make-local-variable 'scroll-conservatively)
0bf251ecfd1a (comint-mode): Localy set scroll-conservatively.
Richard M. Stallman <rms@gnu.org>
parents: 47377
diff changeset
647 (setq scroll-conservatively 10000)
23347
49e47671810d make pre-command-hook & comint-exec-hook local hooks.
Simon Marshall <simon@gnu.org>
parents: 23209
diff changeset
648 (add-hook 'pre-command-hook 'comint-preinput-scroll-to-bottom t t)
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
649 (make-local-variable 'comint-ptyp)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
650 (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
651 (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
652 (make-local-variable 'comint-file-name-quote-list)
73154
7efd5d5388ea (comint-mode): Bind font-lock-defaults non-nil.
Richard M. Stallman <rms@gnu.org>
parents: 72833
diff changeset
653 (make-local-variable 'comint-accum-marker)
7efd5d5388ea (comint-mode): Bind font-lock-defaults non-nil.
Richard M. Stallman <rms@gnu.org>
parents: 72833
diff changeset
654 (setq comint-accum-marker (make-marker))
7efd5d5388ea (comint-mode): Bind font-lock-defaults non-nil.
Richard M. Stallman <rms@gnu.org>
parents: 72833
diff changeset
655 (make-local-variable 'font-lock-defaults)
75562
44a852ca2266 - Prevent non-keyword fontification by default.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 75491
diff changeset
656 (setq font-lock-defaults '(nil t))
47377
5ce6684c420c (comint-mode): Add font-lock-defontify to change-major-mode-hook.
Richard M. Stallman <rms@gnu.org>
parents: 47073
diff changeset
657 (add-hook 'change-major-mode-hook 'font-lock-defontify nil t)
32892
25182c4fd302 (comint-mode): Locally set `next-line-add-newlines' to nil.
Miles Bader <miles@gnu.org>
parents: 32852
diff changeset
658 ;; This behavior is not useful in comint buffers, and is annoying
25182c4fd302 (comint-mode): Locally set `next-line-add-newlines' to nil.
Miles Bader <miles@gnu.org>
parents: 32852
diff changeset
659 (set (make-local-variable 'next-line-add-newlines) nil))
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
660
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
661 (defun comint-check-proc (buffer)
63175
b09a11c8c73e (comint-check-proc, make-comint-in-buffer, comint-source-default): Doc fixes.
Juanma Barranquero <lekktu@gmail.com>
parents: 63172
diff changeset
662 "Return non-nil 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
663 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
664 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
665 (let ((proc (get-buffer-process buffer)))
9388
c9b5541ec9f5 (comint-check-proc): Recognise `open'.
Richard M. Stallman <rms@gnu.org>
parents: 9245
diff changeset
666 (and proc (memq (process-status proc) '(open run stop)))))
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
667
14644
325bc6726a7b (make-comint, comint-run): Fix autoload cookie.
Erik Naggum <erik@naggum.no>
parents: 14169
diff changeset
668 ;;;###autoload
32942
395a1cdfb022 (make-comint-in-buffer): New function.
Miles Bader <miles@gnu.org>
parents: 32892
diff changeset
669 (defun make-comint-in-buffer (name buffer program &optional startfile &rest switches)
54879
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
670 "Make a Comint process NAME in BUFFER, running PROGRAM.
32942
395a1cdfb022 (make-comint-in-buffer): New function.
Miles Bader <miles@gnu.org>
parents: 32892
diff changeset
671 If BUFFER is nil, it defaults to NAME surrounded by `*'s.
395a1cdfb022 (make-comint-in-buffer): New function.
Miles Bader <miles@gnu.org>
parents: 32892
diff changeset
672 PROGRAM should be either a string denoting an executable program to create
395a1cdfb022 (make-comint-in-buffer): New function.
Miles Bader <miles@gnu.org>
parents: 32892
diff changeset
673 via `start-process', or a cons pair of the form (HOST . SERVICE) denoting a TCP
395a1cdfb022 (make-comint-in-buffer): New function.
Miles Bader <miles@gnu.org>
parents: 32892
diff changeset
674 connection to be opened via `open-network-stream'. If there is already a
63175
b09a11c8c73e (comint-check-proc, make-comint-in-buffer, comint-source-default): Doc fixes.
Juanma Barranquero <lekktu@gmail.com>
parents: 63172
diff changeset
675 running process in that buffer, it is not restarted. Optional fourth arg
32942
395a1cdfb022 (make-comint-in-buffer): New function.
Miles Bader <miles@gnu.org>
parents: 32892
diff changeset
676 STARTFILE is the name of a file to send the contents of to the process.
395a1cdfb022 (make-comint-in-buffer): New function.
Miles Bader <miles@gnu.org>
parents: 32892
diff changeset
677
395a1cdfb022 (make-comint-in-buffer): New function.
Miles Bader <miles@gnu.org>
parents: 32892
diff changeset
678 If PROGRAM is a string, any more args are arguments to PROGRAM."
395a1cdfb022 (make-comint-in-buffer): New function.
Miles Bader <miles@gnu.org>
parents: 32892
diff changeset
679 (or (fboundp 'start-process)
395a1cdfb022 (make-comint-in-buffer): New function.
Miles Bader <miles@gnu.org>
parents: 32892
diff changeset
680 (error "Multi-processing is not supported for this system"))
395a1cdfb022 (make-comint-in-buffer): New function.
Miles Bader <miles@gnu.org>
parents: 32892
diff changeset
681 (setq buffer (get-buffer-create (or buffer (concat "*" name "*"))))
395a1cdfb022 (make-comint-in-buffer): New function.
Miles Bader <miles@gnu.org>
parents: 32892
diff changeset
682 ;; If no process, or nuked process, crank up a new one and put buffer in
395a1cdfb022 (make-comint-in-buffer): New function.
Miles Bader <miles@gnu.org>
parents: 32892
diff changeset
683 ;; comint mode. Otherwise, leave buffer and existing process alone.
395a1cdfb022 (make-comint-in-buffer): New function.
Miles Bader <miles@gnu.org>
parents: 32892
diff changeset
684 (unless (comint-check-proc buffer)
395a1cdfb022 (make-comint-in-buffer): New function.
Miles Bader <miles@gnu.org>
parents: 32892
diff changeset
685 (with-current-buffer buffer
41143
f1315eeb4c0b (comint-mode): Simplify.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40828
diff changeset
686 (unless (derived-mode-p 'comint-mode)
f1315eeb4c0b (comint-mode): Simplify.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40828
diff changeset
687 (comint-mode))) ; Install local vars, mode, keymap, ...
32942
395a1cdfb022 (make-comint-in-buffer): New function.
Miles Bader <miles@gnu.org>
parents: 32892
diff changeset
688 (comint-exec buffer name program startfile switches))
395a1cdfb022 (make-comint-in-buffer): New function.
Miles Bader <miles@gnu.org>
parents: 32892
diff changeset
689 buffer)
395a1cdfb022 (make-comint-in-buffer): New function.
Miles Bader <miles@gnu.org>
parents: 32892
diff changeset
690
395a1cdfb022 (make-comint-in-buffer): New function.
Miles Bader <miles@gnu.org>
parents: 32892
diff changeset
691 ;;;###autoload
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
692 (defun make-comint (name program &optional startfile &rest switches)
54879
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
693 "Make a Comint process NAME in a buffer, running PROGRAM.
1839
e10cdcb857d2 (make-comint): Added docstring.
Roland McGrath <roland@gnu.org>
parents: 1821
diff changeset
694 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
695 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
696 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
697 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
698 running process in that buffer, it is not restarted. Optional third arg
54879
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
699 STARTFILE is the name of a file to send the contents of the process to.
9388
c9b5541ec9f5 (comint-check-proc): Recognise `open'.
Richard M. Stallman <rms@gnu.org>
parents: 9245
diff changeset
700
c9b5541ec9f5 (comint-check-proc): Recognise `open'.
Richard M. Stallman <rms@gnu.org>
parents: 9245
diff changeset
701 If PROGRAM is a string, any more args are arguments to PROGRAM."
32942
395a1cdfb022 (make-comint-in-buffer): New function.
Miles Bader <miles@gnu.org>
parents: 32892
diff changeset
702 (apply #'make-comint-in-buffer name nil program startfile switches))
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
703
14644
325bc6726a7b (make-comint, comint-run): Fix autoload cookie.
Erik Naggum <erik@naggum.no>
parents: 14169
diff changeset
704 ;;;###autoload
6507
ff41e0e932b8 (comint-run): New command.
Richard M. Stallman <rms@gnu.org>
parents: 6256
diff changeset
705 (defun comint-run (program)
54879
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
706 "Run PROGRAM in a Comint buffer and switch to it.
6507
ff41e0e932b8 (comint-run): New command.
Richard M. Stallman <rms@gnu.org>
parents: 6256
diff changeset
707 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
708 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
709 hooks on this symbol are run in the buffer.
ff41e0e932b8 (comint-run): New command.
Richard M. Stallman <rms@gnu.org>
parents: 6256
diff changeset
710 See `make-comint' and `comint-exec'."
ff41e0e932b8 (comint-run): New command.
Richard M. Stallman <rms@gnu.org>
parents: 6256
diff changeset
711 (interactive "sRun program: ")
ff41e0e932b8 (comint-run): New command.
Richard M. Stallman <rms@gnu.org>
parents: 6256
diff changeset
712 (let ((name (file-name-nondirectory program)))
ff41e0e932b8 (comint-run): New command.
Richard M. Stallman <rms@gnu.org>
parents: 6256
diff changeset
713 (switch-to-buffer (make-comint name program))
ff41e0e932b8 (comint-run): New command.
Richard M. Stallman <rms@gnu.org>
parents: 6256
diff changeset
714 (run-hooks (intern-soft (concat "comint-" name "-hook")))))
ff41e0e932b8 (comint-run): New command.
Richard M. Stallman <rms@gnu.org>
parents: 6256
diff changeset
715
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
716 (defun comint-exec (buffer name command startfile switches)
54879
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
717 "Start up a process named NAME in buffer BUFFER for Comint modes.
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
718 Runs the given COMMAND with SWITCHES with output to STARTFILE.
1839
e10cdcb857d2 (make-comint): Added docstring.
Roland McGrath <roland@gnu.org>
parents: 1821
diff changeset
719 Blasts any old process running in the buffer. Doesn't set the buffer mode.
54879
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
720 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
721 buffer. The hook `comint-exec-hook' is run after each exec."
50966
379cf00d7016 (comint-carriage-motion, comint-output-filter):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49549
diff changeset
722 (with-current-buffer buffer
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
723 (let ((proc (get-buffer-process buffer))) ; Blast any old process.
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
724 (if proc (delete-process proc)))
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
725 ;; Crank up a new process
9388
c9b5541ec9f5 (comint-check-proc): Recognise `open'.
Richard M. Stallman <rms@gnu.org>
parents: 9245
diff changeset
726 (let ((proc
c9b5541ec9f5 (comint-check-proc): Recognise `open'.
Richard M. Stallman <rms@gnu.org>
parents: 9245
diff changeset
727 (if (consp command)
c9b5541ec9f5 (comint-check-proc): Recognise `open'.
Richard M. Stallman <rms@gnu.org>
parents: 9245
diff changeset
728 (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
729 (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
730 (set-process-filter proc 'comint-output-filter)
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
731 (make-local-variable 'comint-ptyp)
42205
7308bbc423d5 Doc fixes.
Pavel Janík <Pavel@Janik.cz>
parents: 42119
diff changeset
732 (setq comint-ptyp process-connection-type) ; t if pty, nil if pipe.
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
733 ;; Jump to the end, and set the process mark.
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
734 (goto-char (point-max))
705
c7d478752305 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 662
diff changeset
735 (set-marker (process-mark proc) (point))
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
736 ;; Feed it the startfile.
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
737 (cond (startfile
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
738 ;;This is guaranteed to wait long enough
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
739 ;;but has bad results if the comint does not prompt at all
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
740 ;; (while (= size (buffer-size))
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
741 ;; (sleep-for 1))
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
742 ;;I hope 1 second is enough!
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
743 (sleep-for 1)
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
744 (goto-char (point-max))
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
745 (insert-file-contents startfile)
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
746 (setq startfile (buffer-substring (point) (point-max)))
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
747 (delete-region (point) (point-max))
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
748 (comint-send-string proc startfile)))
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
749 (run-hooks 'comint-exec-hook)
705
c7d478752305 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 662
diff changeset
750 buffer)))
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
751
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
752 ;; 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
753 ;; the appropriate environment.
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
754
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
755 (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
756 (let ((process-environment
6750
a864110c6fc7 (comint-exec-1): Handle both termcap and terminfo.
Karl Heuer <kwzh@gnu.org>
parents: 6507
diff changeset
757 (nconc
7327
1e2d4da6b5c4 Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 7071
diff changeset
758 ;; If using termcap, we specify `emacs' as the terminal type
1e2d4da6b5c4 Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 7071
diff changeset
759 ;; 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
760 ;; If using terminfo, we specify `dumb' because that is
7327
1e2d4da6b5c4 Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 7071
diff changeset
761 ;; a defined terminal type. `emacs' is not a defined terminal type
1e2d4da6b5c4 Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 7071
diff changeset
762 ;; and there is no way for us to define it here.
1e2d4da6b5c4 Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 7071
diff changeset
763 ;; Some programs that use terminfo get very confused
1e2d4da6b5c4 Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 7071
diff changeset
764 ;; if TERM is not a valid terminal type.
42341
e0faaa516289 Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 42205
diff changeset
765 ;; ;; There is similar code in compile.el.
6750
a864110c6fc7 (comint-exec-1): Handle both termcap and terminfo.
Karl Heuer <kwzh@gnu.org>
parents: 6507
diff changeset
766 (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
767 (list "TERM=dumb" "TERMCAP="
36896
76fed386fc02 (comint-exec-1): Set columns of the terminal to
Gerd Moellmann <gerd@gnu.org>
parents: 36695
diff changeset
768 (format "COLUMNS=%d" (window-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
769 (list "TERM=emacs"
36896
76fed386fc02 (comint-exec-1): Set columns of the terminal to
Gerd Moellmann <gerd@gnu.org>
parents: 36695
diff changeset
770 (format "TERMCAP=emacs:co#%d:tc=unknown:" (window-width))))
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 71142
diff changeset
771 (unless (getenv "EMACS")
74058
05d799bc0cda (comint-exec-1): Set EMACS and INSIDE_EMACS to t.
Chong Yidong <cyd@stupidchicken.com>
parents: 73154
diff changeset
772 (list "EMACS=t"))
74280
548fcfa53e5e (comint-exec-1): Provide Emacs version and `comint' in INSIDE_EMACS.
Richard M. Stallman <rms@gnu.org>
parents: 74058
diff changeset
773 (list (format "INSIDE_EMACS=%s,comint" emacs-version))
9873
03f3cfdb6a11 (comint-exec-1): Make sure default-directory is a real dir.
Richard M. Stallman <rms@gnu.org>
parents: 9764
diff changeset
774 process-environment))
03f3cfdb6a11 (comint-exec-1): Make sure default-directory is a real dir.
Richard M. Stallman <rms@gnu.org>
parents: 9764
diff changeset
775 (default-directory
16944
54108c7f46e6 (comint-exec-1): Use file-accessible-directory-p.
Richard M. Stallman <rms@gnu.org>
parents: 16849
diff changeset
776 (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
777 default-directory
51421
79dc5a8eacfe (comint-move-point-for-output): Renamed from
Richard M. Stallman <rms@gnu.org>
parents: 50966
diff changeset
778 "/"))
22652
a453ed3fb89f (comint-exec-1): Setup coding systems appropriately.
Richard M. Stallman <rms@gnu.org>
parents: 22569
diff changeset
779 proc decoding encoding changed)
28064
34cb92c8c3e4 (comint-exec-1): Add the current-dir to the exec-path when
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 26734
diff changeset
780 (let ((exec-path (if (file-name-directory command)
34cb92c8c3e4 (comint-exec-1): Add the current-dir to the exec-path when
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 26734
diff changeset
781 ;; If the command has slashes, make sure we
34cb92c8c3e4 (comint-exec-1): Add the current-dir to the exec-path when
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 26734
diff changeset
782 ;; first look relative to the current directory.
34cb92c8c3e4 (comint-exec-1): Add the current-dir to the exec-path when
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 26734
diff changeset
783 (cons default-directory exec-path) exec-path)))
34cb92c8c3e4 (comint-exec-1): Add the current-dir to the exec-path when
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 26734
diff changeset
784 (setq proc (apply 'start-process name buffer command switches)))
22652
a453ed3fb89f (comint-exec-1): Setup coding systems appropriately.
Richard M. Stallman <rms@gnu.org>
parents: 22569
diff changeset
785 (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
786 (setq decoding (car coding-systems)
a453ed3fb89f (comint-exec-1): Setup coding systems appropriately.
Richard M. Stallman <rms@gnu.org>
parents: 22569
diff changeset
787 encoding (cdr coding-systems)))
a453ed3fb89f (comint-exec-1): Setup coding systems appropriately.
Richard M. Stallman <rms@gnu.org>
parents: 22569
diff changeset
788 ;; If start-process decided to use some coding system for decoding
28064
34cb92c8c3e4 (comint-exec-1): Add the current-dir to the exec-path when
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 26734
diff changeset
789 ;; data sent from the process and the coding system doesn't
22652
a453ed3fb89f (comint-exec-1): Setup coding systems appropriately.
Richard M. Stallman <rms@gnu.org>
parents: 22569
diff changeset
790 ;; 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
791 (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
792 (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
793 changed t))
a453ed3fb89f (comint-exec-1): Setup coding systems appropriately.
Richard M. Stallman <rms@gnu.org>
parents: 22569
diff changeset
794 ;; 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
795 ;; 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
796 ;; 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
797 ;; conversion.
a453ed3fb89f (comint-exec-1): Setup coding systems appropriately.
Richard M. Stallman <rms@gnu.org>
parents: 22569
diff changeset
798 (if (and decoding (not encoding))
a453ed3fb89f (comint-exec-1): Setup coding systems appropriately.
Richard M. Stallman <rms@gnu.org>
parents: 22569
diff changeset
799 (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
800 changed t))
a453ed3fb89f (comint-exec-1): Setup coding systems appropriately.
Richard M. Stallman <rms@gnu.org>
parents: 22569
diff changeset
801 (if changed
a453ed3fb89f (comint-exec-1): Setup coding systems appropriately.
Richard M. Stallman <rms@gnu.org>
parents: 22569
diff changeset
802 (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
803 proc))
30325
a7f5f8fff5b2 (comint-highlight-input, comint-highlight-face):
Gerd Moellmann <gerd@gnu.org>
parents: 29883
diff changeset
804
70575
aaf48e9df47b (comint-insert-input): Just make it when
Nick Roberts <nickrob@snap.net.nz>
parents: 70553
diff changeset
805 (defun comint-insert-input (event)
75491
1fa2c9c50f03 (comint-insert-input): Handle situation where the selected buffer is
Chong Yidong <cyd@stupidchicken.com>
parents: 75347
diff changeset
806 "In a Comint buffer, set the current input to the previous input at point.
1fa2c9c50f03 (comint-insert-input): Handle situation where the selected buffer is
Chong Yidong <cyd@stupidchicken.com>
parents: 75347
diff changeset
807 If there is no previous input at point, run the command specified
1fa2c9c50f03 (comint-insert-input): Handle situation where the selected buffer is
Chong Yidong <cyd@stupidchicken.com>
parents: 75347
diff changeset
808 by the global keymap (usually `mouse-yank-at-point')."
70575
aaf48e9df47b (comint-insert-input): Just make it when
Nick Roberts <nickrob@snap.net.nz>
parents: 70553
diff changeset
809 (interactive "e")
75491
1fa2c9c50f03 (comint-insert-input): Handle situation where the selected buffer is
Chong Yidong <cyd@stupidchicken.com>
parents: 75347
diff changeset
810 (let ((pos (posn-point (event-end event)))
1fa2c9c50f03 (comint-insert-input): Handle situation where the selected buffer is
Chong Yidong <cyd@stupidchicken.com>
parents: 75347
diff changeset
811 field input)
1fa2c9c50f03 (comint-insert-input): Handle situation where the selected buffer is
Chong Yidong <cyd@stupidchicken.com>
parents: 75347
diff changeset
812 (with-selected-window (posn-window (event-end event))
1fa2c9c50f03 (comint-insert-input): Handle situation where the selected buffer is
Chong Yidong <cyd@stupidchicken.com>
parents: 75347
diff changeset
813 (and (setq field (field-at-pos pos))
1fa2c9c50f03 (comint-insert-input): Handle situation where the selected buffer is
Chong Yidong <cyd@stupidchicken.com>
parents: 75347
diff changeset
814 (setq input (field-string-no-properties pos))))
1fa2c9c50f03 (comint-insert-input): Handle situation where the selected buffer is
Chong Yidong <cyd@stupidchicken.com>
parents: 75347
diff changeset
815 (if (or (null comint-accum-marker)
1fa2c9c50f03 (comint-insert-input): Handle situation where the selected buffer is
Chong Yidong <cyd@stupidchicken.com>
parents: 75347
diff changeset
816 (not (eq field 'input)))
1fa2c9c50f03 (comint-insert-input): Handle situation where the selected buffer is
Chong Yidong <cyd@stupidchicken.com>
parents: 75347
diff changeset
817 ;; Fall back to the global definition if (i) the selected
1fa2c9c50f03 (comint-insert-input): Handle situation where the selected buffer is
Chong Yidong <cyd@stupidchicken.com>
parents: 75347
diff changeset
818 ;; buffer is not a comint buffer (which can happen if a
1fa2c9c50f03 (comint-insert-input): Handle situation where the selected buffer is
Chong Yidong <cyd@stupidchicken.com>
parents: 75347
diff changeset
819 ;; non-comint window was selected and we clicked in a comint
1fa2c9c50f03 (comint-insert-input): Handle situation where the selected buffer is
Chong Yidong <cyd@stupidchicken.com>
parents: 75347
diff changeset
820 ;; window), or (ii) there is no input at POS.
70575
aaf48e9df47b (comint-insert-input): Just make it when
Nick Roberts <nickrob@snap.net.nz>
parents: 70553
diff changeset
821 (let* ((keys (this-command-keys))
aaf48e9df47b (comint-insert-input): Just make it when
Nick Roberts <nickrob@snap.net.nz>
parents: 70553
diff changeset
822 (last-key (and (vectorp keys) (aref keys (1- (length keys)))))
aaf48e9df47b (comint-insert-input): Just make it when
Nick Roberts <nickrob@snap.net.nz>
parents: 70553
diff changeset
823 (fun (and last-key (lookup-key global-map (vector last-key)))))
75491
1fa2c9c50f03 (comint-insert-input): Handle situation where the selected buffer is
Chong Yidong <cyd@stupidchicken.com>
parents: 75347
diff changeset
824 (and fun (not (eq fun 'comint-insert-input))
1fa2c9c50f03 (comint-insert-input): Handle situation where the selected buffer is
Chong Yidong <cyd@stupidchicken.com>
parents: 75347
diff changeset
825 (call-interactively fun)))
1fa2c9c50f03 (comint-insert-input): Handle situation where the selected buffer is
Chong Yidong <cyd@stupidchicken.com>
parents: 75347
diff changeset
826 ;; Otherwise, insert the previous input.
70575
aaf48e9df47b (comint-insert-input): Just make it when
Nick Roberts <nickrob@snap.net.nz>
parents: 70553
diff changeset
827 (goto-char (point-max))
aaf48e9df47b (comint-insert-input): Just make it when
Nick Roberts <nickrob@snap.net.nz>
parents: 70553
diff changeset
828 ;; First delete any old unsent input at the end
aaf48e9df47b (comint-insert-input): Just make it when
Nick Roberts <nickrob@snap.net.nz>
parents: 70553
diff changeset
829 (delete-region
aaf48e9df47b (comint-insert-input): Just make it when
Nick Roberts <nickrob@snap.net.nz>
parents: 70553
diff changeset
830 (or (marker-position comint-accum-marker)
aaf48e9df47b (comint-insert-input): Just make it when
Nick Roberts <nickrob@snap.net.nz>
parents: 70553
diff changeset
831 (process-mark (get-buffer-process (current-buffer))))
aaf48e9df47b (comint-insert-input): Just make it when
Nick Roberts <nickrob@snap.net.nz>
parents: 70553
diff changeset
832 (point))
aaf48e9df47b (comint-insert-input): Just make it when
Nick Roberts <nickrob@snap.net.nz>
parents: 70553
diff changeset
833 ;; Insert the input at point
75491
1fa2c9c50f03 (comint-insert-input): Handle situation where the selected buffer is
Chong Yidong <cyd@stupidchicken.com>
parents: 75347
diff changeset
834 (insert input))))
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
835
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
836 ;; Input history processing in a buffer
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
837 ;; ===========================================================================
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
838 ;; 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
839
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
840 ;; Eleven commands:
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
841 ;; comint-dynamic-list-input-ring List history in help buffer.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
842 ;; comint-previous-input Previous input...
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
843 ;; comint-previous-matching-input ...matching a string.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
844 ;; comint-previous-matching-input-from-input ... matching the current input.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
845 ;; comint-next-input Next input...
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
846 ;; comint-next-matching-input ...matching a string.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
847 ;; comint-next-matching-input-from-input ... matching the current input.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
848 ;; comint-backward-matching-input Backwards input...
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
849 ;; comint-forward-matching-input ...matching a string.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
850 ;; comint-replace-by-expanded-history Expand history at point;
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
851 ;; replace with expanded history.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
852 ;; comint-magic-space Expand history and insert space.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
853 ;;
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
854 ;; Three functions:
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
855 ;; comint-read-input-ring Read into comint-input-ring...
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
856 ;; 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
857 ;; 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
858
5284
9c8749be37da (comint-read-input-ring): New arg SILENT.
Richard M. Stallman <rms@gnu.org>
parents: 5166
diff changeset
859 (defun comint-read-input-ring (&optional silent)
54879
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
860 "Set the buffer's `comint-input-ring' from a history file.
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
861 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
862 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
863 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
864
5284
9c8749be37da (comint-read-input-ring): New arg SILENT.
Richard M. Stallman <rms@gnu.org>
parents: 5166
diff changeset
865 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
866 failure to read the history file.
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
867
5284
9c8749be37da (comint-read-input-ring): New arg SILENT.
Richard M. Stallman <rms@gnu.org>
parents: 5166
diff changeset
868 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
869
25443
a4be8e9452ef (comint-input-ring-separator): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 25278
diff changeset
870 The commands stored in the history file are separated by the
34977
29a7d4d1846b (comint-input-history-ignore): New variable.
Gerd Moellmann <gerd@gnu.org>
parents: 34834
diff changeset
871 `comint-input-ring-separator', and entries that match
29a7d4d1846b (comint-input-history-ignore): New variable.
Gerd Moellmann <gerd@gnu.org>
parents: 34834
diff changeset
872 `comint-input-history-ignore' are ignored. The most recent command
29a7d4d1846b (comint-input-history-ignore): New variable.
Gerd Moellmann <gerd@gnu.org>
parents: 34834
diff changeset
873 comes last.
25443
a4be8e9452ef (comint-input-ring-separator): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 25278
diff changeset
874
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
875 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
876 (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
877 (equal comint-input-ring-file-name ""))
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
878 nil)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
879 ((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
880 (or silent
9c8749be37da (comint-read-input-ring): New arg SILENT.
Richard M. Stallman <rms@gnu.org>
parents: 5166
diff changeset
881 (message "Cannot read history file %s"
9c8749be37da (comint-read-input-ring): New arg SILENT.
Richard M. Stallman <rms@gnu.org>
parents: 5166
diff changeset
882 comint-input-ring-file-name)))
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
883 (t
28880
a0115904eda4 (comint-read-input-ring): Move reference to
Gerd Moellmann <gerd@gnu.org>
parents: 28064
diff changeset
884 (let* ((history-buf (get-buffer-create " *temp*"))
a0115904eda4 (comint-read-input-ring): Move reference to
Gerd Moellmann <gerd@gnu.org>
parents: 28064
diff changeset
885 (file comint-input-ring-file-name)
a0115904eda4 (comint-read-input-ring): Move reference to
Gerd Moellmann <gerd@gnu.org>
parents: 28064
diff changeset
886 (count 0)
a0115904eda4 (comint-read-input-ring): Move reference to
Gerd Moellmann <gerd@gnu.org>
parents: 28064
diff changeset
887 (size comint-input-ring-size)
a0115904eda4 (comint-read-input-ring): Move reference to
Gerd Moellmann <gerd@gnu.org>
parents: 28064
diff changeset
888 (ring (make-ring size)))
8032
936532a595dd (comint-read-input-ring): Use ring-insert-at-beginning.
Richard M. Stallman <rms@gnu.org>
parents: 7846
diff changeset
889 (unwind-protect
936532a595dd (comint-read-input-ring): Use ring-insert-at-beginning.
Richard M. Stallman <rms@gnu.org>
parents: 7846
diff changeset
890 (save-excursion
936532a595dd (comint-read-input-ring): Use ring-insert-at-beginning.
Richard M. Stallman <rms@gnu.org>
parents: 7846
diff changeset
891 (set-buffer history-buf)
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
892 (widen)
8032
936532a595dd (comint-read-input-ring): Use ring-insert-at-beginning.
Richard M. Stallman <rms@gnu.org>
parents: 7846
diff changeset
893 (erase-buffer)
936532a595dd (comint-read-input-ring): Use ring-insert-at-beginning.
Richard M. Stallman <rms@gnu.org>
parents: 7846
diff changeset
894 (insert-file-contents file)
936532a595dd (comint-read-input-ring): Use ring-insert-at-beginning.
Richard M. Stallman <rms@gnu.org>
parents: 7846
diff changeset
895 ;; 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
896 ;; 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
897 (goto-char (point-max))
32623
69b2744032ce (comint-read-input-ring): Bugfix such that the first
Gerd Moellmann <gerd@gnu.org>
parents: 32613
diff changeset
898 (let (start end history)
69b2744032ce (comint-read-input-ring): Bugfix such that the first
Gerd Moellmann <gerd@gnu.org>
parents: 32613
diff changeset
899 (while (and (< count comint-input-ring-size)
69b2744032ce (comint-read-input-ring): Bugfix such that the first
Gerd Moellmann <gerd@gnu.org>
parents: 32613
diff changeset
900 (re-search-backward comint-input-ring-separator nil t)
69b2744032ce (comint-read-input-ring): Bugfix such that the first
Gerd Moellmann <gerd@gnu.org>
parents: 32613
diff changeset
901 (setq end (match-beginning 0)))
69b2744032ce (comint-read-input-ring): Bugfix such that the first
Gerd Moellmann <gerd@gnu.org>
parents: 32613
diff changeset
902 (if (re-search-backward comint-input-ring-separator nil t)
69b2744032ce (comint-read-input-ring): Bugfix such that the first
Gerd Moellmann <gerd@gnu.org>
parents: 32613
diff changeset
903 (setq start (match-end 0))
69b2744032ce (comint-read-input-ring): Bugfix such that the first
Gerd Moellmann <gerd@gnu.org>
parents: 32613
diff changeset
904 (setq start (point-min)))
69b2744032ce (comint-read-input-ring): Bugfix such that the first
Gerd Moellmann <gerd@gnu.org>
parents: 32613
diff changeset
905 (setq history (buffer-substring start end))
69b2744032ce (comint-read-input-ring): Bugfix such that the first
Gerd Moellmann <gerd@gnu.org>
parents: 32613
diff changeset
906 (goto-char start)
34977
29a7d4d1846b (comint-input-history-ignore): New variable.
Gerd Moellmann <gerd@gnu.org>
parents: 34834
diff changeset
907 (if (and (not (string-match comint-input-history-ignore history))
29a7d4d1846b (comint-input-history-ignore): New variable.
Gerd Moellmann <gerd@gnu.org>
parents: 34834
diff changeset
908 (or (null comint-input-ignoredups)
29a7d4d1846b (comint-input-history-ignore): New variable.
Gerd Moellmann <gerd@gnu.org>
parents: 34834
diff changeset
909 (ring-empty-p ring)
29a7d4d1846b (comint-input-history-ignore): New variable.
Gerd Moellmann <gerd@gnu.org>
parents: 34834
diff changeset
910 (not (string-equal (ring-ref ring 0) history))))
32623
69b2744032ce (comint-read-input-ring): Bugfix such that the first
Gerd Moellmann <gerd@gnu.org>
parents: 32613
diff changeset
911 (progn
69b2744032ce (comint-read-input-ring): Bugfix such that the first
Gerd Moellmann <gerd@gnu.org>
parents: 32613
diff changeset
912 (ring-insert-at-beginning ring history)
69b2744032ce (comint-read-input-ring): Bugfix such that the first
Gerd Moellmann <gerd@gnu.org>
parents: 32613
diff changeset
913 (setq count (1+ count)))))))
8032
936532a595dd (comint-read-input-ring): Use ring-insert-at-beginning.
Richard M. Stallman <rms@gnu.org>
parents: 7846
diff changeset
914 (kill-buffer history-buf))
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
915 (setq comint-input-ring ring
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
916 comint-input-ring-index nil)))))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
917
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
918 (defun comint-write-input-ring ()
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
919 "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
920 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
921 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
922 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
923
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
924 Useful within process sentinels.
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
925
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
926 See also `comint-read-input-ring'."
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
927 (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
928 (equal comint-input-ring-file-name "")
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
929 (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
930 nil)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
931 ((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
932 (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
933 (t
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
934 (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
935 (ring comint-input-ring)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
936 (file comint-input-ring-file-name)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
937 (index (ring-length ring)))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
938 ;; 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
939 ;; 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
940 (save-excursion
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
941 (set-buffer history-buf)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
942 (erase-buffer)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
943 (while (> index 0)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
944 (setq index (1- index))
32326
b8132c394173 Cleanup whitespace.
Miles Bader <miles@gnu.org>
parents: 32196
diff changeset
945 (insert (ring-ref ring index) comint-input-ring-separator))
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
946 (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
947 (kill-buffer nil))))))
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
948
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
949
42119
cfeff2859949 (comint-dynamic-list-input-ring-select): New function.
Richard M. Stallman <rms@gnu.org>
parents: 41932
diff changeset
950 (defvar comint-dynamic-list-input-ring-window-conf)
cfeff2859949 (comint-dynamic-list-input-ring-select): New function.
Richard M. Stallman <rms@gnu.org>
parents: 41932
diff changeset
951
cfeff2859949 (comint-dynamic-list-input-ring-select): New function.
Richard M. Stallman <rms@gnu.org>
parents: 41932
diff changeset
952 (defun comint-dynamic-list-input-ring-select ()
cfeff2859949 (comint-dynamic-list-input-ring-select): New function.
Richard M. Stallman <rms@gnu.org>
parents: 41932
diff changeset
953 "Choose the input history entry that point is in or next to."
cfeff2859949 (comint-dynamic-list-input-ring-select): New function.
Richard M. Stallman <rms@gnu.org>
parents: 41932
diff changeset
954 (interactive)
cfeff2859949 (comint-dynamic-list-input-ring-select): New function.
Richard M. Stallman <rms@gnu.org>
parents: 41932
diff changeset
955 (let (beg end completion (buffer completion-reference-buffer)
cfeff2859949 (comint-dynamic-list-input-ring-select): New function.
Richard M. Stallman <rms@gnu.org>
parents: 41932
diff changeset
956 (base-size completion-base-size))
cfeff2859949 (comint-dynamic-list-input-ring-select): New function.
Richard M. Stallman <rms@gnu.org>
parents: 41932
diff changeset
957 (if (and (not (eobp)) (get-text-property (point) 'mouse-face))
cfeff2859949 (comint-dynamic-list-input-ring-select): New function.
Richard M. Stallman <rms@gnu.org>
parents: 41932
diff changeset
958 (setq end (point) beg (1+ (point))))
cfeff2859949 (comint-dynamic-list-input-ring-select): New function.
Richard M. Stallman <rms@gnu.org>
parents: 41932
diff changeset
959 (if (and (not (bobp)) (get-text-property (1- (point)) 'mouse-face))
cfeff2859949 (comint-dynamic-list-input-ring-select): New function.
Richard M. Stallman <rms@gnu.org>
parents: 41932
diff changeset
960 (setq end (1- (point)) beg (point)))
cfeff2859949 (comint-dynamic-list-input-ring-select): New function.
Richard M. Stallman <rms@gnu.org>
parents: 41932
diff changeset
961 (if (null beg)
cfeff2859949 (comint-dynamic-list-input-ring-select): New function.
Richard M. Stallman <rms@gnu.org>
parents: 41932
diff changeset
962 (error "No history entry here"))
cfeff2859949 (comint-dynamic-list-input-ring-select): New function.
Richard M. Stallman <rms@gnu.org>
parents: 41932
diff changeset
963 (setq beg (previous-single-property-change beg 'mouse-face))
cfeff2859949 (comint-dynamic-list-input-ring-select): New function.
Richard M. Stallman <rms@gnu.org>
parents: 41932
diff changeset
964 (setq end (or (next-single-property-change end 'mouse-face) (point-max)))
cfeff2859949 (comint-dynamic-list-input-ring-select): New function.
Richard M. Stallman <rms@gnu.org>
parents: 41932
diff changeset
965 (setq completion (buffer-substring beg end))
cfeff2859949 (comint-dynamic-list-input-ring-select): New function.
Richard M. Stallman <rms@gnu.org>
parents: 41932
diff changeset
966 (set-window-configuration comint-dynamic-list-input-ring-window-conf)
cfeff2859949 (comint-dynamic-list-input-ring-select): New function.
Richard M. Stallman <rms@gnu.org>
parents: 41932
diff changeset
967 (choose-completion-string completion buffer base-size)))
cfeff2859949 (comint-dynamic-list-input-ring-select): New function.
Richard M. Stallman <rms@gnu.org>
parents: 41932
diff changeset
968
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
969 (defun comint-dynamic-list-input-ring ()
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
970 "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
971 (interactive)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
972 (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
973 (ring-empty-p comint-input-ring))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
974 (message "No history")
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
975 (let ((history nil)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
976 (history-buffer " *Input History*")
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
977 (index (1- (ring-length comint-input-ring)))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
978 (conf (current-window-configuration)))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
979 ;; 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
980 (while (>= index 0)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
981 (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
982 index (1- index)))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
983 ;; Change "completion" to "history reference"
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
984 ;; to make the display accurate.
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
985 (with-output-to-temp-buffer history-buffer
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
986 (display-completion-list history)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
987 (set-buffer history-buffer)
42119
cfeff2859949 (comint-dynamic-list-input-ring-select): New function.
Richard M. Stallman <rms@gnu.org>
parents: 41932
diff changeset
988 (let ((keymap (make-sparse-keymap)))
cfeff2859949 (comint-dynamic-list-input-ring-select): New function.
Richard M. Stallman <rms@gnu.org>
parents: 41932
diff changeset
989 (set-keymap-parent keymap (current-local-map))
cfeff2859949 (comint-dynamic-list-input-ring-select): New function.
Richard M. Stallman <rms@gnu.org>
parents: 41932
diff changeset
990 (define-key keymap "\C-m" 'comint-dynamic-list-input-ring-select)
cfeff2859949 (comint-dynamic-list-input-ring-select): New function.
Richard M. Stallman <rms@gnu.org>
parents: 41932
diff changeset
991 (use-local-map keymap))
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
992 (forward-line 3)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
993 (while (search-backward "completion" nil 'move)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
994 (replace-match "history reference")))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
995 (sit-for 0)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
996 (message "Hit space to flush")
42119
cfeff2859949 (comint-dynamic-list-input-ring-select): New function.
Richard M. Stallman <rms@gnu.org>
parents: 41932
diff changeset
997 (setq comint-dynamic-list-input-ring-window-conf conf)
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
998 (let ((ch (read-event)))
64000
e1ccb8b46dea (comint-completion, comint-source): Finsh `degroup' descriptions with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 63813
diff changeset
999 (if (eq ch ?\s)
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1000 (set-window-configuration conf)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1001 (setq unread-command-events (list ch)))))))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1002
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
1003
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1004 (defun comint-regexp-arg (prompt)
54879
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
1005 "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
1006 (let* (;; Don't clobber this.
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1007 (last-command last-command)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1008 (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
1009 'minibuffer-history-search-history)))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1010 (list (if (string-equal regexp "")
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1011 (setcar minibuffer-history-search-history
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1012 (nth 1 minibuffer-history-search-history))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1013 regexp)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1014 (prefix-numeric-value current-prefix-arg))))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1015
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1016 (defun comint-search-arg (arg)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1017 ;; 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
1018 (cond ((not (comint-after-pmark-p))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1019 (error "Not at command line"))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1020 ((or (null comint-input-ring)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1021 (ring-empty-p comint-input-ring))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1022 (error "Empty input ring"))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1023 ((zerop arg)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1024 ;; 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
1025 (setq comint-input-ring-index nil)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1026 1)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1027 (t
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1028 arg)))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1029
70108
3233d9998115 (comint-previous-input): Don't clobber input line when moving off either
J.D. Smith <jdsmith@as.arizona.edu>
parents: 69687
diff changeset
1030 (defun comint-restore-input ()
3233d9998115 (comint-previous-input): Don't clobber input line when moving off either
J.D. Smith <jdsmith@as.arizona.edu>
parents: 69687
diff changeset
1031 "Restore unfinished input."
3233d9998115 (comint-previous-input): Don't clobber input line when moving off either
J.D. Smith <jdsmith@as.arizona.edu>
parents: 69687
diff changeset
1032 (interactive)
3233d9998115 (comint-previous-input): Don't clobber input line when moving off either
J.D. Smith <jdsmith@as.arizona.edu>
parents: 69687
diff changeset
1033 (when comint-input-ring-index
3233d9998115 (comint-previous-input): Don't clobber input line when moving off either
J.D. Smith <jdsmith@as.arizona.edu>
parents: 69687
diff changeset
1034 (comint-delete-input)
3233d9998115 (comint-previous-input): Don't clobber input line when moving off either
J.D. Smith <jdsmith@as.arizona.edu>
parents: 69687
diff changeset
1035 (when (> (length comint-stored-incomplete-input) 0)
3233d9998115 (comint-previous-input): Don't clobber input line when moving off either
J.D. Smith <jdsmith@as.arizona.edu>
parents: 69687
diff changeset
1036 (insert comint-stored-incomplete-input)
3233d9998115 (comint-previous-input): Don't clobber input line when moving off either
J.D. Smith <jdsmith@as.arizona.edu>
parents: 69687
diff changeset
1037 (message "Input restored"))
3233d9998115 (comint-previous-input): Don't clobber input line when moving off either
J.D. Smith <jdsmith@as.arizona.edu>
parents: 69687
diff changeset
1038 (setq comint-input-ring-index nil)))
3233d9998115 (comint-previous-input): Don't clobber input line when moving off either
J.D. Smith <jdsmith@as.arizona.edu>
parents: 69687
diff changeset
1039
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1040 (defun comint-search-start (arg)
54879
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
1041 "Index to start a directional search, starting at `comint-input-ring-index'."
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1042 (if comint-input-ring-index
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1043 ;; 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
1044 (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
1045 (ring-length comint-input-ring))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1046 ;; 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
1047 (if (>= arg 0)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1048 0 ; First elt for forward search
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1049 (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
1050
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1051 (defun comint-previous-input-string (arg)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1052 "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
1053 Moves relative to `comint-input-ring-index'."
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1054 (ring-ref comint-input-ring (if comint-input-ring-index
32326
b8132c394173 Cleanup whitespace.
Miles Bader <miles@gnu.org>
parents: 32196
diff changeset
1055 (mod (+ arg comint-input-ring-index)
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1056 (ring-length comint-input-ring))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1057 arg)))
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1058
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1059 (defun comint-previous-input (arg)
70108
3233d9998115 (comint-previous-input): Don't clobber input line when moving off either
J.D. Smith <jdsmith@as.arizona.edu>
parents: 69687
diff changeset
1060 "Cycle backwards through input history, saving input."
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1061 (interactive "*p")
71142
f912b6f4d358 (comint-send-input): Do not add help-echo and mouse-face to input if
Luc Teirlinck <teirllm@auburn.edu>
parents: 70963
diff changeset
1062 (if (and comint-input-ring-index
70108
3233d9998115 (comint-previous-input): Don't clobber input line when moving off either
J.D. Smith <jdsmith@as.arizona.edu>
parents: 69687
diff changeset
1063 (or ;; leaving the "end" of the ring
3233d9998115 (comint-previous-input): Don't clobber input line when moving off either
J.D. Smith <jdsmith@as.arizona.edu>
parents: 69687
diff changeset
1064 (and (< arg 0) ; going down
3233d9998115 (comint-previous-input): Don't clobber input line when moving off either
J.D. Smith <jdsmith@as.arizona.edu>
parents: 69687
diff changeset
1065 (eq comint-input-ring-index 0))
3233d9998115 (comint-previous-input): Don't clobber input line when moving off either
J.D. Smith <jdsmith@as.arizona.edu>
parents: 69687
diff changeset
1066 (and (> arg 0) ; going up
71142
f912b6f4d358 (comint-send-input): Do not add help-echo and mouse-face to input if
Luc Teirlinck <teirllm@auburn.edu>
parents: 70963
diff changeset
1067 (eq comint-input-ring-index
70108
3233d9998115 (comint-previous-input): Don't clobber input line when moving off either
J.D. Smith <jdsmith@as.arizona.edu>
parents: 69687
diff changeset
1068 (1- (ring-length comint-input-ring)))))
3233d9998115 (comint-previous-input): Don't clobber input line when moving off either
J.D. Smith <jdsmith@as.arizona.edu>
parents: 69687
diff changeset
1069 comint-stored-incomplete-input)
3233d9998115 (comint-previous-input): Don't clobber input line when moving off either
J.D. Smith <jdsmith@as.arizona.edu>
parents: 69687
diff changeset
1070 (comint-restore-input)
3233d9998115 (comint-previous-input): Don't clobber input line when moving off either
J.D. Smith <jdsmith@as.arizona.edu>
parents: 69687
diff changeset
1071 (comint-previous-matching-input "." arg)))
909
4c6cdb66c74c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 870
diff changeset
1072
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1073 (defun comint-next-input (arg)
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1074 "Cycle forwards through input history."
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1075 (interactive "*p")
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1076 (comint-previous-input (- arg)))
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1077
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1078 (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
1079 "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
1080 Moves relative to `comint-input-ring-index'."
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1081 (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
1082 (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
1083
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1084 (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
1085 "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
1086 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
1087 (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
1088 (ring-empty-p comint-input-ring))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1089 (error "No history"))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1090 (let* ((len (ring-length comint-input-ring))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1091 (motion (if (> arg 0) 1 -1))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1092 (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
1093 (tried-each-ring-item nil)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1094 (prev nil))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1095 ;; 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
1096 (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
1097 ;; Step once.
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1098 (setq prev n
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1099 n (mod (+ n motion) len))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1100 ;; 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
1101 (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
1102 (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
1103 (setq n (mod (+ n motion) len)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1104 ;; 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
1105 tried-each-ring-item (= n prev)))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1106 (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
1107 ;; 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
1108 (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
1109 n)))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1110
70108
3233d9998115 (comint-previous-input): Don't clobber input line when moving off either
J.D. Smith <jdsmith@as.arizona.edu>
parents: 69687
diff changeset
1111 (defun comint-delete-input ()
3233d9998115 (comint-previous-input): Don't clobber input line when moving off either
J.D. Smith <jdsmith@as.arizona.edu>
parents: 69687
diff changeset
1112 "Delete all input between accumulation or process mark and point."
3233d9998115 (comint-previous-input): Don't clobber input line when moving off either
J.D. Smith <jdsmith@as.arizona.edu>
parents: 69687
diff changeset
1113 (delete-region
3233d9998115 (comint-previous-input): Don't clobber input line when moving off either
J.D. Smith <jdsmith@as.arizona.edu>
parents: 69687
diff changeset
1114 ;; Can't use kill-region as it sets this-command
3233d9998115 (comint-previous-input): Don't clobber input line when moving off either
J.D. Smith <jdsmith@as.arizona.edu>
parents: 69687
diff changeset
1115 (or (marker-position comint-accum-marker)
3233d9998115 (comint-previous-input): Don't clobber input line when moving off either
J.D. Smith <jdsmith@as.arizona.edu>
parents: 69687
diff changeset
1116 (process-mark (get-buffer-process (current-buffer))))
3233d9998115 (comint-previous-input): Don't clobber input line when moving off either
J.D. Smith <jdsmith@as.arizona.edu>
parents: 69687
diff changeset
1117 (point-max)))
3233d9998115 (comint-previous-input): Don't clobber input line when moving off either
J.D. Smith <jdsmith@as.arizona.edu>
parents: 69687
diff changeset
1118
64570
76a0015820fb (comint-use-prompt-regexp, comint-send-input, comint-source-default,
Juanma Barranquero <lekktu@gmail.com>
parents: 64169
diff changeset
1119 (defun comint-previous-matching-input (regexp n)
2673
27dd7479b158 (comint-previous-matching-input): New command, on M-r.
Richard M. Stallman <rms@gnu.org>
parents: 2627
diff changeset
1120 "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
1121 \(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
1122 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
1123 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
1124 (interactive (comint-regexp-arg "Previous input matching (regexp): "))
64570
76a0015820fb (comint-use-prompt-regexp, comint-send-input, comint-source-default,
Juanma Barranquero <lekktu@gmail.com>
parents: 64169
diff changeset
1125 (setq n (comint-search-arg n))
76a0015820fb (comint-use-prompt-regexp, comint-send-input, comint-source-default,
Juanma Barranquero <lekktu@gmail.com>
parents: 64169
diff changeset
1126 (let ((pos (comint-previous-matching-input-string-position regexp n)))
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1127 ;; Has a match been found?
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1128 (if (null pos)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1129 (error "Not found")
70108
3233d9998115 (comint-previous-input): Don't clobber input line when moving off either
J.D. Smith <jdsmith@as.arizona.edu>
parents: 69687
diff changeset
1130 ;; If leaving the edit line, save partial input
3233d9998115 (comint-previous-input): Don't clobber input line when moving off either
J.D. Smith <jdsmith@as.arizona.edu>
parents: 69687
diff changeset
1131 (if (null comint-input-ring-index) ;not yet on ring
3233d9998115 (comint-previous-input): Don't clobber input line when moving off either
J.D. Smith <jdsmith@as.arizona.edu>
parents: 69687
diff changeset
1132 (setq comint-stored-incomplete-input
3233d9998115 (comint-previous-input): Don't clobber input line when moving off either
J.D. Smith <jdsmith@as.arizona.edu>
parents: 69687
diff changeset
1133 (funcall comint-get-old-input)))
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1134 (setq comint-input-ring-index pos)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1135 (message "History item: %d" (1+ pos))
70108
3233d9998115 (comint-previous-input): Don't clobber input line when moving off either
J.D. Smith <jdsmith@as.arizona.edu>
parents: 69687
diff changeset
1136 (comint-delete-input)
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1137 (insert (ring-ref comint-input-ring pos)))))
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
1138
64570
76a0015820fb (comint-use-prompt-regexp, comint-send-input, comint-source-default,
Juanma Barranquero <lekktu@gmail.com>
parents: 64169
diff changeset
1139 (defun comint-next-matching-input (regexp n)
2673
27dd7479b158 (comint-previous-matching-input): New command, on M-r.
Richard M. Stallman <rms@gnu.org>
parents: 2627
diff changeset
1140 "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
1141 \(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
1142 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
1143 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
1144 (interactive (comint-regexp-arg "Next input matching (regexp): "))
64570
76a0015820fb (comint-use-prompt-regexp, comint-send-input, comint-source-default,
Juanma Barranquero <lekktu@gmail.com>
parents: 64169
diff changeset
1145 (comint-previous-matching-input regexp (- n)))
76a0015820fb (comint-use-prompt-regexp, comint-send-input, comint-source-default,
Juanma Barranquero <lekktu@gmail.com>
parents: 64169
diff changeset
1146
76a0015820fb (comint-use-prompt-regexp, comint-send-input, comint-source-default,
Juanma Barranquero <lekktu@gmail.com>
parents: 64169
diff changeset
1147 (defun comint-previous-matching-input-from-input (n)
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1148 "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
1149 \(Previous history elements are earlier commands.)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1150 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
1151 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
1152 (interactive "p")
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1153 (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
1154 comint-next-matching-input-from-input)))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1155 ;; Starting a new search
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1156 (setq comint-matching-input-from-input-string
32326
b8132c394173 Cleanup whitespace.
Miles Bader <miles@gnu.org>
parents: 32196
diff changeset
1157 (buffer-substring
22265
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
1158 (or (marker-position comint-accum-marker)
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
1159 (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
1160 (point))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1161 comint-input-ring-index nil))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1162 (comint-previous-matching-input
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1163 (concat "^" (regexp-quote comint-matching-input-from-input-string))
64570
76a0015820fb (comint-use-prompt-regexp, comint-send-input, comint-source-default,
Juanma Barranquero <lekktu@gmail.com>
parents: 64169
diff changeset
1164 n))
76a0015820fb (comint-use-prompt-regexp, comint-send-input, comint-source-default,
Juanma Barranquero <lekktu@gmail.com>
parents: 64169
diff changeset
1165
76a0015820fb (comint-use-prompt-regexp, comint-send-input, comint-source-default,
Juanma Barranquero <lekktu@gmail.com>
parents: 64169
diff changeset
1166 (defun comint-next-matching-input-from-input (n)
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1167 "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
1168 \(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
1169 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
1170 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
1171 (interactive "p")
64570
76a0015820fb (comint-use-prompt-regexp, comint-send-input, comint-source-default,
Juanma Barranquero <lekktu@gmail.com>
parents: 64169
diff changeset
1172 (comint-previous-matching-input-from-input (- n)))
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1173
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1174
21714
9c454e5e03fa (comint-replace-by-expanded-history): New arg START.
Richard M. Stallman <rms@gnu.org>
parents: 21617
diff changeset
1175 (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
1176 "Expand input command history references before point.
6185
82a92cf44059 (comint-after-partial-filename-command,
Richard M. Stallman <rms@gnu.org>
parents: 6154
diff changeset
1177 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
1178
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1179 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
1180 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
1181
54879
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
1182 Assumes history syntax is like typical Un*x shells'. However, since Emacs
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1183 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
1184 it cannot expand absolute input line number references.
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
1185
5284
9c8749be37da (comint-read-input-ring): New arg SILENT.
Richard M. Stallman <rms@gnu.org>
parents: 5166
diff changeset
1186 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
1187 even if history reference seems erroneous.
9c8749be37da (comint-read-input-ring): New arg SILENT.
Richard M. Stallman <rms@gnu.org>
parents: 5166
diff changeset
1188
21714
9c454e5e03fa (comint-replace-by-expanded-history): New arg START.
Richard M. Stallman <rms@gnu.org>
parents: 21617
diff changeset
1189 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
1190 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
1191 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
1192
6185
82a92cf44059 (comint-after-partial-filename-command,
Richard M. Stallman <rms@gnu.org>
parents: 6154
diff changeset
1193 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
1194
82a92cf44059 (comint-after-partial-filename-command,
Richard M. Stallman <rms@gnu.org>
parents: 6154
diff changeset
1195 Returns t if successful."
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1196 (interactive)
6185
82a92cf44059 (comint-after-partial-filename-command,
Richard M. Stallman <rms@gnu.org>
parents: 6154
diff changeset
1197 (if (and comint-input-autoexpand
61873
1cd2d4d601fa (comint-prompt-regexp, comint-get-old-input)
Luc Teirlinck <teirllm@auburn.edu>
parents: 61592
diff changeset
1198 (if comint-use-prompt-regexp
30640
6f943008c543 (comint-use-prompt-regexp-instead-of-fields): New variable.
Miles Bader <miles@gnu.org>
parents: 30325
diff changeset
1199 ;; Use comint-prompt-regexp
33053
eb3d446c4a6e (comint-replace-by-expanded-history): Don't use
Miles Bader <miles@gnu.org>
parents: 33023
diff changeset
1200 (save-excursion
eb3d446c4a6e (comint-replace-by-expanded-history): Don't use
Miles Bader <miles@gnu.org>
parents: 33023
diff changeset
1201 (beginning-of-line)
eb3d446c4a6e (comint-replace-by-expanded-history): Don't use
Miles Bader <miles@gnu.org>
parents: 33023
diff changeset
1202 (looking-at (concat comint-prompt-regexp "!\\|\\^")))
30640
6f943008c543 (comint-use-prompt-regexp-instead-of-fields): New variable.
Miles Bader <miles@gnu.org>
parents: 30325
diff changeset
1203 ;; Use input fields. User input that hasn't been entered
6f943008c543 (comint-use-prompt-regexp-instead-of-fields): New variable.
Miles Bader <miles@gnu.org>
parents: 30325
diff changeset
1204 ;; yet, at the end of the buffer, has a nil `field' property.
33053
eb3d446c4a6e (comint-replace-by-expanded-history): Don't use
Miles Bader <miles@gnu.org>
parents: 33023
diff changeset
1205 (and (null (get-char-property (point) 'field))
eb3d446c4a6e (comint-replace-by-expanded-history): Don't use
Miles Bader <miles@gnu.org>
parents: 33023
diff changeset
1206 (string-match "!\\|^\\^" (field-string)))))
6185
82a92cf44059 (comint-after-partial-filename-command,
Richard M. Stallman <rms@gnu.org>
parents: 6154
diff changeset
1207 ;; 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
1208 (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
1209 (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
1210 (/= previous-modified-tick (buffer-modified-tick)))))
82a92cf44059 (comint-after-partial-filename-command,
Richard M. Stallman <rms@gnu.org>
parents: 6154
diff changeset
1211
82a92cf44059 (comint-after-partial-filename-command,
Richard M. Stallman <rms@gnu.org>
parents: 6154
diff changeset
1212
21714
9c454e5e03fa (comint-replace-by-expanded-history): New arg START.
Richard M. Stallman <rms@gnu.org>
parents: 21617
diff changeset
1213 (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
1214 "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
1215 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
1216
9c454e5e03fa (comint-replace-by-expanded-history): New arg START.
Richard M. Stallman <rms@gnu.org>
parents: 21617
diff changeset
1217 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
1218 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
1219 than the logical beginning of line."
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1220 (save-excursion
30640
6f943008c543 (comint-use-prompt-regexp-instead-of-fields): New variable.
Miles Bader <miles@gnu.org>
parents: 30325
diff changeset
1221 (let ((toend (- (line-end-position) (point)))
55881
79a700a71463 (comint-replace-by-expanded-history-before-point):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55295
diff changeset
1222 (start (or start (comint-line-beginning-position))))
35514
e25ec5ecc3f5 (comint-replace-by-expanded-history-before-point): Fix
Gerd Moellmann <gerd@gnu.org>
parents: 35236
diff changeset
1223 (goto-char start)
5284
9c8749be37da (comint-read-input-ring): New arg SILENT.
Richard M. Stallman <rms@gnu.org>
parents: 5166
diff changeset
1224 (while (progn
30640
6f943008c543 (comint-use-prompt-regexp-instead-of-fields): New variable.
Miles Bader <miles@gnu.org>
parents: 30325
diff changeset
1225 (skip-chars-forward "^!^" (- (line-end-position) toend))
6f943008c543 (comint-use-prompt-regexp-instead-of-fields): New variable.
Miles Bader <miles@gnu.org>
parents: 30325
diff changeset
1226 (< (point) (- (line-end-position) toend)))
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1227 ;; 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
1228 ;; !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
1229 ;; 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
1230 ;; range specifiers.
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1231 ;; 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
1232 ;; 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
1233 (setq comint-input-ring-index nil)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1234 (cond ((or (= (preceding-char) ?\\)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1235 (comint-within-quotes start (point)))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1236 ;; 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
1237 (goto-char (1+ (point))))
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1238 ((looking-at "![0-9]+\\($\\|[^-]\\)")
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1239 ;; 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
1240 (goto-char (match-end 0))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1241 (message "Absolute reference cannot be expanded"))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1242 ((looking-at "!-\\([0-9]+\\)\\(:?[0-9^$*-]+\\)?")
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1243 ;; 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
1244 (let ((number (1- (string-to-number
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1245 (buffer-substring (match-beginning 1)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1246 (match-end 1))))))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1247 (if (<= number (ring-length comint-input-ring))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1248 (progn
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1249 (replace-match
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1250 (comint-args (comint-previous-input-string number)
6187
280d4a97da69 (comint-input-filter-functions)
Richard M. Stallman <rms@gnu.org>
parents: 6185
diff changeset
1251 (match-beginning 2) (match-end 2))
280d4a97da69 (comint-input-filter-functions)
Richard M. Stallman <rms@gnu.org>
parents: 6185
diff changeset
1252 t t)
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1253 (setq comint-input-ring-index number)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1254 (message "History item: %d" (1+ number)))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1255 (goto-char (match-end 0))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1256 (message "Relative reference exceeds input history size"))))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1257 ((or (looking-at "!!?:?\\([0-9^$*-]+\\)") (looking-at "!!"))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1258 ;; 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
1259 (replace-match
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1260 (comint-args (comint-previous-input-string 0)
6187
280d4a97da69 (comint-input-filter-functions)
Richard M. Stallman <rms@gnu.org>
parents: 6185
diff changeset
1261 (match-beginning 1) (match-end 1))
280d4a97da69 (comint-input-filter-functions)
Richard M. Stallman <rms@gnu.org>
parents: 6185
diff changeset
1262 t t)
6185
82a92cf44059 (comint-after-partial-filename-command,
Richard M. Stallman <rms@gnu.org>
parents: 6154
diff changeset
1263 (message "History item: previous"))
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1264 ((looking-at
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1265 "!\\??\\({\\(.+\\)}\\|\\(\\sw+\\)\\)\\(:?[0-9^$*-]+\\)?")
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1266 ;; 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
1267 ;; 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
1268 (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
1269 (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
1270 (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
1271 (pref (if (save-match-data (looking-at "!\\?")) "" "^"))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1272 (pos (save-match-data
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1273 (comint-previous-matching-input-string-position
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1274 (concat pref (regexp-quote exp)) 1))))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1275 (if (null pos)
6886
d4010211153e (comint-replace-by-expanded-history-before-point): Advance point
Karl Heuer <kwzh@gnu.org>
parents: 6847
diff changeset
1276 (progn
d4010211153e (comint-replace-by-expanded-history-before-point): Advance point
Karl Heuer <kwzh@gnu.org>
parents: 6847
diff changeset
1277 (goto-char (match-end 0))
d4010211153e (comint-replace-by-expanded-history-before-point): Advance point
Karl Heuer <kwzh@gnu.org>
parents: 6847
diff changeset
1278 (or silent
d4010211153e (comint-replace-by-expanded-history-before-point): Advance point
Karl Heuer <kwzh@gnu.org>
parents: 6847
diff changeset
1279 (progn (message "Not found")
d4010211153e (comint-replace-by-expanded-history-before-point): Advance point
Karl Heuer <kwzh@gnu.org>
parents: 6847
diff changeset
1280 (ding))))
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1281 (setq comint-input-ring-index pos)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1282 (replace-match
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1283 (comint-args (ring-ref comint-input-ring pos)
6187
280d4a97da69 (comint-input-filter-functions)
Richard M. Stallman <rms@gnu.org>
parents: 6185
diff changeset
1284 (match-beginning 4) (match-end 4))
280d4a97da69 (comint-input-filter-functions)
Richard M. Stallman <rms@gnu.org>
parents: 6185
diff changeset
1285 t t)
6185
82a92cf44059 (comint-after-partial-filename-command,
Richard M. Stallman <rms@gnu.org>
parents: 6154
diff changeset
1286 (message "History item: %d" (1+ pos)))))
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1287 ((looking-at "\\^\\([^^]+\\)\\^?\\([^^]*\\)\\^?")
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1288 ;; Quick substitution on the previous input line.
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1289 (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
1290 (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
1291 (pos nil))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1292 (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
1293 (setq pos (point))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1294 (goto-char (match-beginning 0))
6185
82a92cf44059 (comint-after-partial-filename-command,
Richard M. Stallman <rms@gnu.org>
parents: 6154
diff changeset
1295 (if (not (search-forward old pos t))
82a92cf44059 (comint-after-partial-filename-command,
Richard M. Stallman <rms@gnu.org>
parents: 6154
diff changeset
1296 (or silent
82a92cf44059 (comint-after-partial-filename-command,
Richard M. Stallman <rms@gnu.org>
parents: 6154
diff changeset
1297 (error "Not found"))
82a92cf44059 (comint-after-partial-filename-command,
Richard M. Stallman <rms@gnu.org>
parents: 6154
diff changeset
1298 (replace-match new t t)
82a92cf44059 (comint-after-partial-filename-command,
Richard M. Stallman <rms@gnu.org>
parents: 6154
diff changeset
1299 (message "History item: substituted"))))
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1300 (t
21951
ab7fa71c0957 (comint-replace-by-expanded-history-before-point):
Richard M. Stallman <rms@gnu.org>
parents: 21714
diff changeset
1301 (forward-char 1)))))))
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1302
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1303
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1304 (defun comint-magic-space (arg)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1305 "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
1306 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
1307 (interactive "p")
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1308 (comint-replace-by-expanded-history)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1309 (self-insert-command arg))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1310
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1311 (defun comint-within-quotes (beg end)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1312 "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
1313 Quotes are single and double."
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1314 (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
1315 (countdq (comint-how-many-region "\\(^\\|[^\\\\]\\)\"" beg end)))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1316 (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
1317
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1318 (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
1319 "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
1320 (let ((count 0))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1321 (save-excursion
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1322 (save-match-data
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1323 (goto-char beg)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1324 (while (re-search-forward regexp end t)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1325 (setq count (1+ count)))))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1326 count))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1327
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1328 (defun comint-args (string begin end)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1329 ;; 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
1330 ;; 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
1331 ;; 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
1332 (save-match-data
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1333 (if (null begin)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1334 (comint-arguments string 0 nil)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1335 (let* ((range (buffer-substring
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1336 (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
1337 (nth (cond ((string-match "^[*^]" range) 1)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1338 ((string-match "^-" range) 0)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1339 ((string-equal range "$") nil)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1340 (t (string-to-number range))))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1341 (mth (cond ((string-match "[-*$]$" range) nil)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1342 ((string-match "-" range)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1343 (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
1344 (t nth))))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1345 (comint-arguments string nth mth)))))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1346
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1347 (defun comint-delim-arg (arg)
54879
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
1348 "Return a list of arguments from ARG.
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
1349 Break it up at the delimiters in `comint-delimiter-argument-list'.
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
1350 Returned list is backwards."
6154
385d5fe1c95c (comint-arguments): Use just one regexp to find end of arg
Richard M. Stallman <rms@gnu.org>
parents: 6148
diff changeset
1351 (if (null comint-delimiter-argument-list)
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1352 (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
1353 (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
1354 (pos 0)
385d5fe1c95c (comint-arguments): Use just one regexp to find end of arg
Richard M. Stallman <rms@gnu.org>
parents: 6148
diff changeset
1355 (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
1356 (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
1357 (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
1358 (start pos))
385d5fe1c95c (comint-arguments): Use just one regexp to find end of arg
Richard M. Stallman <rms@gnu.org>
parents: 6148
diff changeset
1359 (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
1360 (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
1361 (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
1362 (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
1363 (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
1364 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
1365 (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
1366 (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
1367 args)))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1368
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1369 (defun comint-arguments (string nth mth)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1370 "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
1371 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
1372 Returned arguments are separated by single spaces.
24968
ced85898ea55 (comint-arguments): Handle \ followed by space or tab.
Karl Heuer <kwzh@gnu.org>
parents: 24893
diff changeset
1373 We assume whitespace separates arguments, except within quotes
ced85898ea55 (comint-arguments): Handle \ followed by space or tab.
Karl Heuer <kwzh@gnu.org>
parents: 24893
diff changeset
1374 and except for a space or tab that immediately follows a backslash.
6154
385d5fe1c95c (comint-arguments): Use just one regexp to find end of arg
Richard M. Stallman <rms@gnu.org>
parents: 6148
diff changeset
1375 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
1376 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
1377 Argument 0 is the command name."
23209
601bf7681009 (comint-arguments): Ignore backslashes when using
Geoff Voelker <voelker@cs.washington.edu>
parents: 23036
diff changeset
1378 ;; 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
1379 ;; (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
1380 ;; 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
1381 ;; 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
1382 ;; 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
1383 ;; This seems to fit the syntax of BASH 2.0.
54879
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
1384 (let* ((first (if (if (fboundp 'w32-shell-dos-semantics)
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
1385 (w32-shell-dos-semantics))
23209
601bf7681009 (comint-arguments): Ignore backslashes when using
Geoff Voelker <voelker@cs.washington.edu>
parents: 23036
diff changeset
1386 "[^ \n\t\"'`]+\\|"
24968
ced85898ea55 (comint-arguments): Handle \ followed by space or tab.
Karl Heuer <kwzh@gnu.org>
parents: 24893
diff changeset
1387 "[^ \n\t\"'`\\]+\\|\\\\[\"'`\\ \t]+\\|"))
23209
601bf7681009 (comint-arguments): Ignore backslashes when using
Geoff Voelker <voelker@cs.washington.edu>
parents: 23036
diff changeset
1388 (argpart (concat first
601bf7681009 (comint-arguments): Ignore backslashes when using
Geoff Voelker <voelker@cs.washington.edu>
parents: 23036
diff changeset
1389 "\\(\"\\([^\"\\]\\|\\\\.\\)*\"\\|\
21018
edbd4156cf68 (comint-arguments): Treat \" and such as part of one arg.
Richard M. Stallman <rms@gnu.org>
parents: 20986
diff changeset
1390 '[^']*'\\|\
23209
601bf7681009 (comint-arguments): Ignore backslashes when using
Geoff Voelker <voelker@cs.washington.edu>
parents: 23036
diff changeset
1391 `[^`]*`\\)"))
601bf7681009 (comint-arguments): Ignore backslashes when using
Geoff Voelker <voelker@cs.washington.edu>
parents: 23036
diff changeset
1392 (args ()) (pos 0)
601bf7681009 (comint-arguments): Ignore backslashes when using
Geoff Voelker <voelker@cs.washington.edu>
parents: 23036
diff changeset
1393 (count 0)
54879
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
1394 beg str quotes)
8616
b9a9389714e1 (comint-arguments): Rewrite for speed.
Richard M. Stallman <rms@gnu.org>
parents: 8400
diff changeset
1395 ;; 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
1396 (while (and (or (null mth) (<= count mth))
b9a9389714e1 (comint-arguments): Rewrite for speed.
Richard M. Stallman <rms@gnu.org>
parents: 8400
diff changeset
1397 (string-match argpart string pos))
b9a9389714e1 (comint-arguments): Rewrite for speed.
Richard M. Stallman <rms@gnu.org>
parents: 8400
diff changeset
1398 (if (and beg (= pos (match-beginning 0)))
b9a9389714e1 (comint-arguments): Rewrite for speed.
Richard M. Stallman <rms@gnu.org>
parents: 8400
diff changeset
1399 ;; It's contiguous, part of the same arg.
b9a9389714e1 (comint-arguments): Rewrite for speed.
Richard M. Stallman <rms@gnu.org>
parents: 8400
diff changeset
1400 (setq pos (match-end 0)
b9a9389714e1 (comint-arguments): Rewrite for speed.
Richard M. Stallman <rms@gnu.org>
parents: 8400
diff changeset
1401 quotes (or quotes (match-beginning 1)))
b9a9389714e1 (comint-arguments): Rewrite for speed.
Richard M. Stallman <rms@gnu.org>
parents: 8400
diff changeset
1402 ;; It's a new separate arg.
b9a9389714e1 (comint-arguments): Rewrite for speed.
Richard M. Stallman <rms@gnu.org>
parents: 8400
diff changeset
1403 (if beg
b9a9389714e1 (comint-arguments): Rewrite for speed.
Richard M. Stallman <rms@gnu.org>
parents: 8400
diff changeset
1404 ;; 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
1405 (setq str (substring string beg pos)
b9a9389714e1 (comint-arguments): Rewrite for speed.
Richard M. Stallman <rms@gnu.org>
parents: 8400
diff changeset
1406 args (if quotes (cons str args)
53399
9a9d11c249b9 (comint-arguments): Set COUNT after ARGS is complete.
Richard M. Stallman <rms@gnu.org>
parents: 53391
diff changeset
1407 (nconc (comint-delim-arg str) args))))
9a9d11c249b9 (comint-arguments): Set COUNT after ARGS is complete.
Richard M. Stallman <rms@gnu.org>
parents: 53391
diff changeset
1408 (setq count (length args))
8616
b9a9389714e1 (comint-arguments): Rewrite for speed.
Richard M. Stallman <rms@gnu.org>
parents: 8400
diff changeset
1409 (setq quotes (match-beginning 1))
b9a9389714e1 (comint-arguments): Rewrite for speed.
Richard M. Stallman <rms@gnu.org>
parents: 8400
diff changeset
1410 (setq beg (match-beginning 0))
b9a9389714e1 (comint-arguments): Rewrite for speed.
Richard M. Stallman <rms@gnu.org>
parents: 8400
diff changeset
1411 (setq pos (match-end 0))))
b9a9389714e1 (comint-arguments): Rewrite for speed.
Richard M. Stallman <rms@gnu.org>
parents: 8400
diff changeset
1412 (if beg
b9a9389714e1 (comint-arguments): Rewrite for speed.
Richard M. Stallman <rms@gnu.org>
parents: 8400
diff changeset
1413 (setq str (substring string beg pos)
b9a9389714e1 (comint-arguments): Rewrite for speed.
Richard M. Stallman <rms@gnu.org>
parents: 8400
diff changeset
1414 args (if quotes (cons str args)
53399
9a9d11c249b9 (comint-arguments): Set COUNT after ARGS is complete.
Richard M. Stallman <rms@gnu.org>
parents: 53391
diff changeset
1415 (nconc (comint-delim-arg str) args))))
9a9d11c249b9 (comint-arguments): Set COUNT after ARGS is complete.
Richard M. Stallman <rms@gnu.org>
parents: 53391
diff changeset
1416 (setq count (length args))
8616
b9a9389714e1 (comint-arguments): Rewrite for speed.
Richard M. Stallman <rms@gnu.org>
parents: 8400
diff changeset
1417 (let ((n (or nth (1- count)))
b9a9389714e1 (comint-arguments): Rewrite for speed.
Richard M. Stallman <rms@gnu.org>
parents: 8400
diff changeset
1418 (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
1419 (mapconcat
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1420 (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
1421
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1422 ;;
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1423 ;; Input processing stuff
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1424 ;;
33138
1d835756e8e7 (comint-add-to-input-history): New function.
Eric M. Ludlam <zappo@gnu.org>
parents: 33055
diff changeset
1425 (defun comint-add-to-input-history (cmd)
1d835756e8e7 (comint-add-to-input-history): New function.
Eric M. Ludlam <zappo@gnu.org>
parents: 33055
diff changeset
1426 "Add CMD to the input history.
1d835756e8e7 (comint-add-to-input-history): New function.
Eric M. Ludlam <zappo@gnu.org>
parents: 33055
diff changeset
1427 Ignore duplicates if `comint-input-ignoredups' is non-nil."
1d835756e8e7 (comint-add-to-input-history): New function.
Eric M. Ludlam <zappo@gnu.org>
parents: 33055
diff changeset
1428 (if (and (funcall comint-input-filter cmd)
1d835756e8e7 (comint-add-to-input-history): New function.
Eric M. Ludlam <zappo@gnu.org>
parents: 33055
diff changeset
1429 (or (null comint-input-ignoredups)
1d835756e8e7 (comint-add-to-input-history): New function.
Eric M. Ludlam <zappo@gnu.org>
parents: 33055
diff changeset
1430 (not (ring-p comint-input-ring))
1d835756e8e7 (comint-add-to-input-history): New function.
Eric M. Ludlam <zappo@gnu.org>
parents: 33055
diff changeset
1431 (ring-empty-p comint-input-ring)
1d835756e8e7 (comint-add-to-input-history): New function.
Eric M. Ludlam <zappo@gnu.org>
parents: 33055
diff changeset
1432 (not (string-equal (ring-ref comint-input-ring 0)
1d835756e8e7 (comint-add-to-input-history): New function.
Eric M. Ludlam <zappo@gnu.org>
parents: 33055
diff changeset
1433 cmd))))
1d835756e8e7 (comint-add-to-input-history): New function.
Eric M. Ludlam <zappo@gnu.org>
parents: 33055
diff changeset
1434 (ring-insert comint-input-ring cmd)))
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
1435
61449
a8e7bc540c1c (comint-send-input): New arg ARTIFICIAL. Callers in this file changed.
Richard M. Stallman <rms@gnu.org>
parents: 61404
diff changeset
1436 (defun comint-send-input (&optional no-newline artificial)
1356
dcf780f7ae1b Doc fix.
Christopher Zaborsky <rogue@erratum.com>
parents: 1131
diff changeset
1437 "Send input to process.
dcf780f7ae1b Doc fix.
Christopher Zaborsky <rogue@erratum.com>
parents: 1131
diff changeset
1438 After the process output mark, sends all text from the process mark to
40828
966dca4af18e (comint-send-input): Fix description of `comint-process-echoes' in the
Miles Bader <miles@gnu.org>
parents: 40003
diff changeset
1439 point as input to the process. Before the process output mark, calls
966dca4af18e (comint-send-input): Fix description of `comint-process-echoes' in the
Miles Bader <miles@gnu.org>
parents: 40003
diff changeset
1440 value of variable `comint-get-old-input' to retrieve old input, copies
61449
a8e7bc540c1c (comint-send-input): New arg ARTIFICIAL. Callers in this file changed.
Richard M. Stallman <rms@gnu.org>
parents: 61404
diff changeset
1441 it to the process mark, and sends it.
a8e7bc540c1c (comint-send-input): New arg ARTIFICIAL. Callers in this file changed.
Richard M. Stallman <rms@gnu.org>
parents: 61404
diff changeset
1442
a8e7bc540c1c (comint-send-input): New arg ARTIFICIAL. Callers in this file changed.
Richard M. Stallman <rms@gnu.org>
parents: 61404
diff changeset
1443 This command also sends and inserts a final newline, unless
a8e7bc540c1c (comint-send-input): New arg ARTIFICIAL. Callers in this file changed.
Richard M. Stallman <rms@gnu.org>
parents: 61404
diff changeset
1444 NO-NEWLINE is non-nil.
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1445
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1446 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
1447 `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
1448 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
1449 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
1450 `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
1451
bc4729d67e6e (comint-filter): Put window-start before the input.
Richard M. Stallman <rms@gnu.org>
parents: 3113
diff changeset
1452 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
1453 end of line before sending the input.
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1454
40828
966dca4af18e (comint-send-input): Fix description of `comint-process-echoes' in the
Miles Bader <miles@gnu.org>
parents: 40003
diff changeset
1455 After the input has been sent, if `comint-process-echoes' is non-nil,
54879
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
1456 then `comint-send-input' waits to see if the process outputs a string
40828
966dca4af18e (comint-send-input): Fix description of `comint-process-echoes' in the
Miles Bader <miles@gnu.org>
parents: 40003
diff changeset
1457 matching the input, and if so, deletes that part of the output.
61449
a8e7bc540c1c (comint-send-input): New arg ARTIFICIAL. Callers in this file changed.
Richard M. Stallman <rms@gnu.org>
parents: 61404
diff changeset
1458 If ARTIFICIAL is non-nil, it inhibits such deletion.
a8e7bc540c1c (comint-send-input): New arg ARTIFICIAL. Callers in this file changed.
Richard M. Stallman <rms@gnu.org>
parents: 61404
diff changeset
1459 Callers sending input not from the user should use ARTIFICIAL = t.
40828
966dca4af18e (comint-send-input): Fix description of `comint-process-echoes' in the
Miles Bader <miles@gnu.org>
parents: 40003
diff changeset
1460
6187
280d4a97da69 (comint-input-filter-functions)
Richard M. Stallman <rms@gnu.org>
parents: 6185
diff changeset
1461 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
1462 `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
1463 in the buffer. E.g.,
82a92cf44059 (comint-after-partial-filename-command,
Richard M. Stallman <rms@gnu.org>
parents: 6154
diff changeset
1464
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1465 If the interpreter is the csh,
54879
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
1466 `comint-get-old-input' is the default:
61873
1cd2d4d601fa (comint-prompt-regexp, comint-get-old-input)
Luc Teirlinck <teirllm@auburn.edu>
parents: 61592
diff changeset
1467 If `comint-use-prompt-regexp' is nil, then
38971
478f11ee1d4c (comint-get-old-input-default): Don't signal an error if point is not on
Miles Bader <miles@gnu.org>
parents: 38848
diff changeset
1468 either return the current input field, if point is on an input
478f11ee1d4c (comint-get-old-input-default): Don't signal an error if point is not on
Miles Bader <miles@gnu.org>
parents: 38848
diff changeset
1469 field, or the current line, if point is on an output field.
61873
1cd2d4d601fa (comint-prompt-regexp, comint-get-old-input)
Luc Teirlinck <teirllm@auburn.edu>
parents: 61592
diff changeset
1470 If `comint-use-prompt-regexp' is non-nil, then
38971
478f11ee1d4c (comint-get-old-input-default): Don't signal an error if point is not on
Miles Bader <miles@gnu.org>
parents: 38848
diff changeset
1471 return the current line with any initial string matching the
478f11ee1d4c (comint-get-old-input-default): Don't signal an error if point is not on
Miles Bader <miles@gnu.org>
parents: 38848
diff changeset
1472 regexp `comint-prompt-regexp' removed.
54879
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
1473 `comint-input-filter-functions' monitors input for \"cd\", \"pushd\", and
64570
76a0015820fb (comint-use-prompt-regexp, comint-send-input, comint-source-default,
Juanma Barranquero <lekktu@gmail.com>
parents: 64169
diff changeset
1474 \"popd\" commands. When it sees one, it cd's the buffer.
76a0015820fb (comint-use-prompt-regexp, comint-send-input, comint-source-default,
Juanma Barranquero <lekktu@gmail.com>
parents: 64169
diff changeset
1475 `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
1476 space.
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1477
54879
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
1478 If the Comint is Lucid Common Lisp,
64570
76a0015820fb (comint-use-prompt-regexp, comint-send-input, comint-source-default,
Juanma Barranquero <lekktu@gmail.com>
parents: 64169
diff changeset
1479 `comint-get-old-input' snarfs the sexp ending at point.
76a0015820fb (comint-use-prompt-regexp, comint-send-input, comint-source-default,
Juanma Barranquero <lekktu@gmail.com>
parents: 64169
diff changeset
1480 `comint-input-filter-functions' does nothing.
76a0015820fb (comint-use-prompt-regexp, comint-send-input, comint-source-default,
Juanma Barranquero <lekktu@gmail.com>
parents: 64169
diff changeset
1481 `comint-input-filter' returns nil if the input matches input-filter-regexp,
32326
b8132c394173 Cleanup whitespace.
Miles Bader <miles@gnu.org>
parents: 32196
diff changeset
1482 which matches (1) all whitespace (2) :a, :c, etc.
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1483
909
4c6cdb66c74c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 870
diff changeset
1484 Similarly for Soar, Scheme, etc."
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1485 (interactive)
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1486 ;; 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
1487 (let ((proc (get-buffer-process (current-buffer))))
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
1488 (if (not proc) (error "Current buffer has no process")
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
1489 (let* ((pmark (process-mark proc))
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1490 (intxt (if (>= (point) (marker-position pmark))
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
1491 (progn (if comint-eol-on-send (end-of-line))
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
1492 (buffer-substring pmark (point)))
705
c7d478752305 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 662
diff changeset
1493 (let ((copy (funcall comint-get-old-input)))
c7d478752305 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 662
diff changeset
1494 (goto-char pmark)
c7d478752305 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 662
diff changeset
1495 (insert copy)
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1496 copy)))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1497 (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
1498 ;; Just whatever's already there
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1499 intxt
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1500 ;; 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
1501 (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
1502 (buffer-substring pmark (point))))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1503 (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
1504 input
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1505 ;; This is messy 'cos ultimately the original
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1506 ;; functions used do insertion, rather than return
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1507 ;; 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
1508 (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
1509 (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
1510 (start (point)))
7af8470b665a Use insert to preserve marker positions (pmark) and delete last.
Simon Marshall <simon@gnu.org>
parents: 17652
diff changeset
1511 (insert input)
7af8470b665a Use insert to preserve marker positions (pmark) and delete last.
Simon Marshall <simon@gnu.org>
parents: 17652
diff changeset
1512 (delete-region pmark start)
5166
7e66b092f331 (comint-send-input): Don't call comint-arguments
Richard M. Stallman <rms@gnu.org>
parents: 5152
diff changeset
1513 copy))))
30640
6f943008c543 (comint-use-prompt-regexp-instead-of-fields): New variable.
Miles Bader <miles@gnu.org>
parents: 30325
diff changeset
1514
42693
13a21b2786c0 (comint-input-sender): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 42669
diff changeset
1515 (unless no-newline
13a21b2786c0 (comint-input-sender): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 42669
diff changeset
1516 (insert ?\n))
30640
6f943008c543 (comint-use-prompt-regexp-instead-of-fields): New variable.
Miles Bader <miles@gnu.org>
parents: 30325
diff changeset
1517
33138
1d835756e8e7 (comint-add-to-input-history): New function.
Eric M. Ludlam <zappo@gnu.org>
parents: 33055
diff changeset
1518 (comint-add-to-input-history history)
30640
6f943008c543 (comint-use-prompt-regexp-instead-of-fields): New variable.
Miles Bader <miles@gnu.org>
parents: 30325
diff changeset
1519
12208
d10ef5c093ce (comint-mode): Use make-local-hook.
Karl Heuer <kwzh@gnu.org>
parents: 12058
diff changeset
1520 (run-hook-with-args 'comint-input-filter-functions
42693
13a21b2786c0 (comint-input-sender): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 42669
diff changeset
1521 (if no-newline input
13a21b2786c0 (comint-input-sender): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 42669
diff changeset
1522 (concat input "\n")))
30640
6f943008c543 (comint-use-prompt-regexp-instead-of-fields): New variable.
Miles Bader <miles@gnu.org>
parents: 30325
diff changeset
1523
30325
a7f5f8fff5b2 (comint-highlight-input, comint-highlight-face):
Gerd Moellmann <gerd@gnu.org>
parents: 29883
diff changeset
1524 (let ((beg (marker-position pmark))
71142
f912b6f4d358 (comint-send-input): Do not add help-echo and mouse-face to input if
Luc Teirlinck <teirllm@auburn.edu>
parents: 70963
diff changeset
1525 (end (if no-newline (point) (1- (point))))
f912b6f4d358 (comint-send-input): Do not add help-echo and mouse-face to input if
Luc Teirlinck <teirllm@auburn.edu>
parents: 70963
diff changeset
1526 (inhibit-modification-hooks t))
45770
159963013ec6 (comint-send-input): Properly handle empty and no-newline input regions.
Miles Bader <miles@gnu.org>
parents: 45732
diff changeset
1527 (when (> end beg)
71142
f912b6f4d358 (comint-send-input): Do not add help-echo and mouse-face to input if
Luc Teirlinck <teirllm@auburn.edu>
parents: 70963
diff changeset
1528 (add-text-properties beg end
f912b6f4d358 (comint-send-input): Do not add help-echo and mouse-face to input if
Luc Teirlinck <teirllm@auburn.edu>
parents: 70963
diff changeset
1529 '(front-sticky t
f912b6f4d358 (comint-send-input): Do not add help-echo and mouse-face to input if
Luc Teirlinck <teirllm@auburn.edu>
parents: 70963
diff changeset
1530 font-lock-face comint-highlight-input))
61873
1cd2d4d601fa (comint-prompt-regexp, comint-get-old-input)
Luc Teirlinck <teirllm@auburn.edu>
parents: 61592
diff changeset
1531 (unless comint-use-prompt-regexp
45732
5555fce97d97 Make comint use text properties for highlighting instead of overlays:
Miles Bader <miles@gnu.org>
parents: 45727
diff changeset
1532 ;; Give old user input a field property of `input', to
5555fce97d97 Make comint use text properties for highlighting instead of overlays:
Miles Bader <miles@gnu.org>
parents: 45727
diff changeset
1533 ;; distinguish it from both process output and unsent
5555fce97d97 Make comint use text properties for highlighting instead of overlays:
Miles Bader <miles@gnu.org>
parents: 45727
diff changeset
1534 ;; input. The terminating newline is put into a special
5555fce97d97 Make comint use text properties for highlighting instead of overlays:
Miles Bader <miles@gnu.org>
parents: 45727
diff changeset
1535 ;; `boundary' field to make cursor movement between input
5555fce97d97 Make comint use text properties for highlighting instead of overlays:
Miles Bader <miles@gnu.org>
parents: 45727
diff changeset
1536 ;; and output fields smoother.
71142
f912b6f4d358 (comint-send-input): Do not add help-echo and mouse-face to input if
Luc Teirlinck <teirllm@auburn.edu>
parents: 70963
diff changeset
1537 (add-text-properties
f912b6f4d358 (comint-send-input): Do not add help-echo and mouse-face to input if
Luc Teirlinck <teirllm@auburn.edu>
parents: 70963
diff changeset
1538 beg end
f912b6f4d358 (comint-send-input): Do not add help-echo and mouse-face to input if
Luc Teirlinck <teirllm@auburn.edu>
parents: 70963
diff changeset
1539 '(mouse-face highlight
f912b6f4d358 (comint-send-input): Do not add help-echo and mouse-face to input if
Luc Teirlinck <teirllm@auburn.edu>
parents: 70963
diff changeset
1540 help-echo "mouse-2: insert after prompt as new input"
f912b6f4d358 (comint-send-input): Do not add help-echo and mouse-face to input if
Luc Teirlinck <teirllm@auburn.edu>
parents: 70963
diff changeset
1541 field input))))
61873
1cd2d4d601fa (comint-prompt-regexp, comint-get-old-input)
Luc Teirlinck <teirllm@auburn.edu>
parents: 61592
diff changeset
1542 (unless (or no-newline comint-use-prompt-regexp)
45732
5555fce97d97 Make comint use text properties for highlighting instead of overlays:
Miles Bader <miles@gnu.org>
parents: 45727
diff changeset
1543 ;; Cover the terminating newline
5555fce97d97 Make comint use text properties for highlighting instead of overlays:
Miles Bader <miles@gnu.org>
parents: 45727
diff changeset
1544 (add-text-properties end (1+ end)
5555fce97d97 Make comint use text properties for highlighting instead of overlays:
Miles Bader <miles@gnu.org>
parents: 45727
diff changeset
1545 '(rear-nonsticky t
5555fce97d97 Make comint use text properties for highlighting instead of overlays:
Miles Bader <miles@gnu.org>
parents: 45727
diff changeset
1546 field boundary
5555fce97d97 Make comint use text properties for highlighting instead of overlays:
Miles Bader <miles@gnu.org>
parents: 45727
diff changeset
1547 inhibit-line-move-field-capture t))))
30640
6f943008c543 (comint-use-prompt-regexp-instead-of-fields): New variable.
Miles Bader <miles@gnu.org>
parents: 30325
diff changeset
1548
30731
4ce2b3d23348 (comint-highlight-prompt, comint-highlight-prompt-face)
Miles Bader <miles@gnu.org>
parents: 30694
diff changeset
1549 (comint-snapshot-last-prompt)
4ce2b3d23348 (comint-highlight-prompt, comint-highlight-prompt-face)
Miles Bader <miles@gnu.org>
parents: 30694
diff changeset
1550
22265
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
1551 (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
1552 (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
1553 ;; 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
1554 ;; in case we get output amidst sending the input.
705
c7d478752305 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 662
diff changeset
1555 (set-marker comint-last-input-start pmark)
c7d478752305 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 662
diff changeset
1556 (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
1557 (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
1558 ;; clear the "accumulation" marker
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
1559 (set-marker comint-accum-marker nil)
42693
13a21b2786c0 (comint-input-sender): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 42669
diff changeset
1560 (let ((comint-input-sender-no-newline no-newline))
13a21b2786c0 (comint-input-sender): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 42669
diff changeset
1561 (funcall comint-input-sender proc input))
39182
ed28d0187d3c (comint-send-input): Handle comint-process-echoes
Gerd Moellmann <gerd@gnu.org>
parents: 39124
diff changeset
1562
ed28d0187d3c (comint-send-input): Handle comint-process-echoes
Gerd Moellmann <gerd@gnu.org>
parents: 39124
diff changeset
1563 ;; Optionally delete echoed input (after checking it).
61449
a8e7bc540c1c (comint-send-input): New arg ARTIFICIAL. Callers in this file changed.
Richard M. Stallman <rms@gnu.org>
parents: 61404
diff changeset
1564 (when (and comint-process-echoes (not artificial))
39240
e2d428b5bfea (comint-send-input): When waiting for echoed input, don't save the
Miles Bader <miles@gnu.org>
parents: 39182
diff changeset
1565 (let ((echo-len (- comint-last-input-end
e2d428b5bfea (comint-send-input): When waiting for echoed input, don't save the
Miles Bader <miles@gnu.org>
parents: 39182
diff changeset
1566 comint-last-input-start)))
e2d428b5bfea (comint-send-input): When waiting for echoed input, don't save the
Miles Bader <miles@gnu.org>
parents: 39182
diff changeset
1567 ;; Wait for all input to be echoed:
e2d428b5bfea (comint-send-input): When waiting for echoed input, don't save the
Miles Bader <miles@gnu.org>
parents: 39182
diff changeset
1568 (while (and (accept-process-output proc)
e2d428b5bfea (comint-send-input): When waiting for echoed input, don't save the
Miles Bader <miles@gnu.org>
parents: 39182
diff changeset
1569 (> (+ comint-last-input-end echo-len)
e2d428b5bfea (comint-send-input): When waiting for echoed input, don't save the
Miles Bader <miles@gnu.org>
parents: 39182
diff changeset
1570 (point-max))
e2d428b5bfea (comint-send-input): When waiting for echoed input, don't save the
Miles Bader <miles@gnu.org>
parents: 39182
diff changeset
1571 (zerop
e2d428b5bfea (comint-send-input): When waiting for echoed input, don't save the
Miles Bader <miles@gnu.org>
parents: 39182
diff changeset
1572 (compare-buffer-substrings
e2d428b5bfea (comint-send-input): When waiting for echoed input, don't save the
Miles Bader <miles@gnu.org>
parents: 39182
diff changeset
1573 nil comint-last-input-start
e2d428b5bfea (comint-send-input): When waiting for echoed input, don't save the
Miles Bader <miles@gnu.org>
parents: 39182
diff changeset
1574 (- (point-max) echo-len)
e2d428b5bfea (comint-send-input): When waiting for echoed input, don't save the
Miles Bader <miles@gnu.org>
parents: 39182
diff changeset
1575 ;; Above difference is equivalent to
e2d428b5bfea (comint-send-input): When waiting for echoed input, don't save the
Miles Bader <miles@gnu.org>
parents: 39182
diff changeset
1576 ;; (+ comint-last-input-start
e2d428b5bfea (comint-send-input): When waiting for echoed input, don't save the
Miles Bader <miles@gnu.org>
parents: 39182
diff changeset
1577 ;; (- (point-max) comint-last-input-end))
e2d428b5bfea (comint-send-input): When waiting for echoed input, don't save the
Miles Bader <miles@gnu.org>
parents: 39182
diff changeset
1578 nil comint-last-input-end (point-max)))))
e2d428b5bfea (comint-send-input): When waiting for echoed input, don't save the
Miles Bader <miles@gnu.org>
parents: 39182
diff changeset
1579 (if (and
e2d428b5bfea (comint-send-input): When waiting for echoed input, don't save the
Miles Bader <miles@gnu.org>
parents: 39182
diff changeset
1580 (<= (+ comint-last-input-end echo-len)
e2d428b5bfea (comint-send-input): When waiting for echoed input, don't save the
Miles Bader <miles@gnu.org>
parents: 39182
diff changeset
1581 (point-max))
e2d428b5bfea (comint-send-input): When waiting for echoed input, don't save the
Miles Bader <miles@gnu.org>
parents: 39182
diff changeset
1582 (zerop
e2d428b5bfea (comint-send-input): When waiting for echoed input, don't save the
Miles Bader <miles@gnu.org>
parents: 39182
diff changeset
1583 (compare-buffer-substrings
e2d428b5bfea (comint-send-input): When waiting for echoed input, don't save the
Miles Bader <miles@gnu.org>
parents: 39182
diff changeset
1584 nil comint-last-input-start comint-last-input-end
e2d428b5bfea (comint-send-input): When waiting for echoed input, don't save the
Miles Bader <miles@gnu.org>
parents: 39182
diff changeset
1585 nil comint-last-input-end
e2d428b5bfea (comint-send-input): When waiting for echoed input, don't save the
Miles Bader <miles@gnu.org>
parents: 39182
diff changeset
1586 (+ comint-last-input-end echo-len))))
63170
14aba7b7076a (comint-send-input): Bind `inhibit-read-only' around call to `delete-region'.
Luc Teirlinck <teirllm@auburn.edu>
parents: 62740
diff changeset
1587 ;; Certain parts of the text to be deleted may have
14aba7b7076a (comint-send-input): Bind `inhibit-read-only' around call to `delete-region'.
Luc Teirlinck <teirllm@auburn.edu>
parents: 62740
diff changeset
1588 ;; been mistaken for prompts. We have to prevent
14aba7b7076a (comint-send-input): Bind `inhibit-read-only' around call to `delete-region'.
Luc Teirlinck <teirllm@auburn.edu>
parents: 62740
diff changeset
1589 ;; problems when `comint-prompt-read-only' is non-nil.
14aba7b7076a (comint-send-input): Bind `inhibit-read-only' around call to `delete-region'.
Luc Teirlinck <teirllm@auburn.edu>
parents: 62740
diff changeset
1590 (let ((inhibit-read-only t))
14aba7b7076a (comint-send-input): Bind `inhibit-read-only' around call to `delete-region'.
Luc Teirlinck <teirllm@auburn.edu>
parents: 62740
diff changeset
1591 (delete-region comint-last-input-end
66560
232f770dbf0f (comint-send-input): Call `comint-update-fence' when
Luc Teirlinck <teirllm@auburn.edu>
parents: 65784
diff changeset
1592 (+ comint-last-input-end echo-len))
232f770dbf0f (comint-send-input): Call `comint-update-fence' when
Luc Teirlinck <teirllm@auburn.edu>
parents: 65784
diff changeset
1593 (when comint-prompt-read-only
232f770dbf0f (comint-send-input): Call `comint-update-fence' when
Luc Teirlinck <teirllm@auburn.edu>
parents: 65784
diff changeset
1594 (save-excursion
232f770dbf0f (comint-send-input): Call `comint-update-fence' when
Luc Teirlinck <teirllm@auburn.edu>
parents: 65784
diff changeset
1595 (goto-char comint-last-input-end)
232f770dbf0f (comint-send-input): Call `comint-update-fence' when
Luc Teirlinck <teirllm@auburn.edu>
parents: 65784
diff changeset
1596 (comint-update-fence)))))))
39182
ed28d0187d3c (comint-send-input): Handle comint-process-echoes
Gerd Moellmann <gerd@gnu.org>
parents: 39124
diff changeset
1597
16546
06f92ef2857c (comint-output-filter): Run comint-output-filter-functions
Richard M. Stallman <rms@gnu.org>
parents: 16409
diff changeset
1598 ;; 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
1599 ;; 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
1600 (run-hook-with-args 'comint-output-filter-functions "")))))
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1601
32326
b8132c394173 Cleanup whitespace.
Miles Bader <miles@gnu.org>
parents: 32196
diff changeset
1602 (defvar comint-preoutput-filter-functions nil
26616
615e184ede1b (comint-preoutput-filter-functions): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 26553
diff changeset
1603 "List of functions to call before inserting Comint output into the buffer.
615e184ede1b (comint-preoutput-filter-functions): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 26553
diff changeset
1604 Each function gets one argument, a string containing the text received
615e184ede1b (comint-preoutput-filter-functions): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 26553
diff changeset
1605 from the subprocess. It should return the string to insert, perhaps
615e184ede1b (comint-preoutput-filter-functions): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 26553
diff changeset
1606 the same string that was received, or perhaps a modified or transformed
615e184ede1b (comint-preoutput-filter-functions): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 26553
diff changeset
1607 string.
615e184ede1b (comint-preoutput-filter-functions): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 26553
diff changeset
1608
615e184ede1b (comint-preoutput-filter-functions): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 26553
diff changeset
1609 The functions on the list are called sequentially, and each one is
615e184ede1b (comint-preoutput-filter-functions): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 26553
diff changeset
1610 given the string returned by the previous one. The string returned by
615e184ede1b (comint-preoutput-filter-functions): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 26553
diff changeset
1611 the last function is the text that is actually inserted in the
26627
173f907a5812 Fix last change.
Dave Love <fx@gnu.org>
parents: 26616
diff changeset
1612 redirection buffer.
26616
615e184ede1b (comint-preoutput-filter-functions): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 26553
diff changeset
1613
43579
ebb2754ac469 (comint-preoutput-filter-functions): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 43530
diff changeset
1614 You can use `add-hook' to add functions to this list
ebb2754ac469 (comint-preoutput-filter-functions): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 43530
diff changeset
1615 either globally or locally.")
19515
a0ecbe13b54b (comint-preoutput-filter-functions): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 18805
diff changeset
1616
46941
1241ed1e9eee [original idea from Luc Teirlinck <teirllm@mail.auburn.edu>]
Miles Bader <miles@gnu.org>
parents: 46250
diff changeset
1617 (defvar comint-inhibit-carriage-motion nil
54879
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
1618 "If nil, Comint will interpret `carriage control' characters in output.
46941
1241ed1e9eee [original idea from Luc Teirlinck <teirllm@mail.auburn.edu>]
Miles Bader <miles@gnu.org>
parents: 46250
diff changeset
1619 See `comint-carriage-motion' for details.")
1241ed1e9eee [original idea from Luc Teirlinck <teirllm@mail.auburn.edu>]
Miles Bader <miles@gnu.org>
parents: 46250
diff changeset
1620
30731
4ce2b3d23348 (comint-highlight-prompt, comint-highlight-prompt-face)
Miles Bader <miles@gnu.org>
parents: 30694
diff changeset
1621 ;; When non-nil, this is an overlay over the last recognized prompt in
4ce2b3d23348 (comint-highlight-prompt, comint-highlight-prompt-face)
Miles Bader <miles@gnu.org>
parents: 30694
diff changeset
1622 ;; the buffer; it is used when highlighting the prompt.
4ce2b3d23348 (comint-highlight-prompt, comint-highlight-prompt-face)
Miles Bader <miles@gnu.org>
parents: 30694
diff changeset
1623 (defvar comint-last-prompt-overlay nil)
4ce2b3d23348 (comint-highlight-prompt, comint-highlight-prompt-face)
Miles Bader <miles@gnu.org>
parents: 30694
diff changeset
1624
4ce2b3d23348 (comint-highlight-prompt, comint-highlight-prompt-face)
Miles Bader <miles@gnu.org>
parents: 30694
diff changeset
1625 (defun comint-snapshot-last-prompt ()
54879
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
1626 "`snapshot' any current `comint-last-prompt-overlay'.
63175
b09a11c8c73e (comint-check-proc, make-comint-in-buffer, comint-source-default): Doc fixes.
Juanma Barranquero <lekktu@gmail.com>
parents: 63172
diff changeset
1627 Freeze its attributes in place, even when more input comes along
54879
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
1628 and moves the prompt overlay."
30731
4ce2b3d23348 (comint-highlight-prompt, comint-highlight-prompt-face)
Miles Bader <miles@gnu.org>
parents: 30694
diff changeset
1629 (when comint-last-prompt-overlay
55881
79a700a71463 (comint-replace-by-expanded-history-before-point):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55295
diff changeset
1630 (let ((inhibit-read-only t)
79a700a71463 (comint-replace-by-expanded-history-before-point):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55295
diff changeset
1631 (inhibit-modification-hooks t))
45826
ffa13f09e36d (comint-snapshot-last-prompt): Bind `inhibit-read-only' to t to support
Juanma Barranquero <lekktu@gmail.com>
parents: 45794
diff changeset
1632 (add-text-properties (overlay-start comint-last-prompt-overlay)
ffa13f09e36d (comint-snapshot-last-prompt): Bind `inhibit-read-only' to t to support
Juanma Barranquero <lekktu@gmail.com>
parents: 45794
diff changeset
1633 (overlay-end comint-last-prompt-overlay)
ffa13f09e36d (comint-snapshot-last-prompt): Bind `inhibit-read-only' to t to support
Juanma Barranquero <lekktu@gmail.com>
parents: 45794
diff changeset
1634 (overlay-properties comint-last-prompt-overlay)))))
30731
4ce2b3d23348 (comint-highlight-prompt, comint-highlight-prompt-face)
Miles Bader <miles@gnu.org>
parents: 30694
diff changeset
1635
46941
1241ed1e9eee [original idea from Luc Teirlinck <teirllm@mail.auburn.edu>]
Miles Bader <miles@gnu.org>
parents: 46250
diff changeset
1636 (defun comint-carriage-motion (start end)
1241ed1e9eee [original idea from Luc Teirlinck <teirllm@mail.auburn.edu>]
Miles Bader <miles@gnu.org>
parents: 46250
diff changeset
1637 "Interpret carriage control characters in the region from START to END.
37928
689e6d3dbdc2 (comint-carriage-motion): Doc-string tweaks.
Miles Bader <miles@gnu.org>
parents: 37921
diff changeset
1638 Translate carriage return/linefeed sequences to linefeeds.
689e6d3dbdc2 (comint-carriage-motion): Doc-string tweaks.
Miles Bader <miles@gnu.org>
parents: 37921
diff changeset
1639 Make single carriage returns delete to the beginning of the line.
46941
1241ed1e9eee [original idea from Luc Teirlinck <teirllm@mail.auburn.edu>]
Miles Bader <miles@gnu.org>
parents: 46250
diff changeset
1640 Make backspaces delete the previous character."
1241ed1e9eee [original idea from Luc Teirlinck <teirllm@mail.auburn.edu>]
Miles Bader <miles@gnu.org>
parents: 46250
diff changeset
1641 (save-excursion
1241ed1e9eee [original idea from Luc Teirlinck <teirllm@mail.auburn.edu>]
Miles Bader <miles@gnu.org>
parents: 46250
diff changeset
1642 ;; First do a quick check to see if there are any applicable
1241ed1e9eee [original idea from Luc Teirlinck <teirllm@mail.auburn.edu>]
Miles Bader <miles@gnu.org>
parents: 46250
diff changeset
1643 ;; characters, so we can avoid calling save-match-data and
1241ed1e9eee [original idea from Luc Teirlinck <teirllm@mail.auburn.edu>]
Miles Bader <miles@gnu.org>
parents: 46250
diff changeset
1644 ;; save-restriction if not.
47073
714225426f8e (comint-carriage-motion): Start at START.
Miles Bader <miles@gnu.org>
parents: 46941
diff changeset
1645 (goto-char start)
46941
1241ed1e9eee [original idea from Luc Teirlinck <teirllm@mail.auburn.edu>]
Miles Bader <miles@gnu.org>
parents: 46250
diff changeset
1646 (when (< (skip-chars-forward "^\b\r" end) (- end start))
1241ed1e9eee [original idea from Luc Teirlinck <teirllm@mail.auburn.edu>]
Miles Bader <miles@gnu.org>
parents: 46250
diff changeset
1647 (save-match-data
1241ed1e9eee [original idea from Luc Teirlinck <teirllm@mail.auburn.edu>]
Miles Bader <miles@gnu.org>
parents: 46250
diff changeset
1648 (save-restriction
1241ed1e9eee [original idea from Luc Teirlinck <teirllm@mail.auburn.edu>]
Miles Bader <miles@gnu.org>
parents: 46250
diff changeset
1649 (widen)
1241ed1e9eee [original idea from Luc Teirlinck <teirllm@mail.auburn.edu>]
Miles Bader <miles@gnu.org>
parents: 46250
diff changeset
1650 (let ((inhibit-field-text-motion t)
50966
379cf00d7016 (comint-carriage-motion, comint-output-filter):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49549
diff changeset
1651 (inhibit-read-only t))
46941
1241ed1e9eee [original idea from Luc Teirlinck <teirllm@mail.auburn.edu>]
Miles Bader <miles@gnu.org>
parents: 46250
diff changeset
1652 ;; CR LF -> LF
1241ed1e9eee [original idea from Luc Teirlinck <teirllm@mail.auburn.edu>]
Miles Bader <miles@gnu.org>
parents: 46250
diff changeset
1653 ;; Note that this won't work properly when the CR and LF
1241ed1e9eee [original idea from Luc Teirlinck <teirllm@mail.auburn.edu>]
Miles Bader <miles@gnu.org>
parents: 46250
diff changeset
1654 ;; are in different output chunks, but this is probably an
1241ed1e9eee [original idea from Luc Teirlinck <teirllm@mail.auburn.edu>]
Miles Bader <miles@gnu.org>
parents: 46250
diff changeset
1655 ;; exceedingly rare case (because they are generally
1241ed1e9eee [original idea from Luc Teirlinck <teirllm@mail.auburn.edu>]
Miles Bader <miles@gnu.org>
parents: 46250
diff changeset
1656 ;; written as a unit), and to delay interpretation of a
1241ed1e9eee [original idea from Luc Teirlinck <teirllm@mail.auburn.edu>]
Miles Bader <miles@gnu.org>
parents: 46250
diff changeset
1657 ;; trailing CR in a chunk would result in odd interactive
1241ed1e9eee [original idea from Luc Teirlinck <teirllm@mail.auburn.edu>]
Miles Bader <miles@gnu.org>
parents: 46250
diff changeset
1658 ;; behavior (and this case is probably far more common).
1241ed1e9eee [original idea from Luc Teirlinck <teirllm@mail.auburn.edu>]
Miles Bader <miles@gnu.org>
parents: 46250
diff changeset
1659 (while (re-search-forward "\r$" end t)
1241ed1e9eee [original idea from Luc Teirlinck <teirllm@mail.auburn.edu>]
Miles Bader <miles@gnu.org>
parents: 46250
diff changeset
1660 (delete-char -1))
1241ed1e9eee [original idea from Luc Teirlinck <teirllm@mail.auburn.edu>]
Miles Bader <miles@gnu.org>
parents: 46250
diff changeset
1661 ;; bare CR -> delete preceding line
1241ed1e9eee [original idea from Luc Teirlinck <teirllm@mail.auburn.edu>]
Miles Bader <miles@gnu.org>
parents: 46250
diff changeset
1662 (goto-char start)
1241ed1e9eee [original idea from Luc Teirlinck <teirllm@mail.auburn.edu>]
Miles Bader <miles@gnu.org>
parents: 46250
diff changeset
1663 (while (search-forward "\r" end t)
1241ed1e9eee [original idea from Luc Teirlinck <teirllm@mail.auburn.edu>]
Miles Bader <miles@gnu.org>
parents: 46250
diff changeset
1664 (delete-region (point) (line-beginning-position)))
1241ed1e9eee [original idea from Luc Teirlinck <teirllm@mail.auburn.edu>]
Miles Bader <miles@gnu.org>
parents: 46250
diff changeset
1665 ;; BS -> delete preceding character
1241ed1e9eee [original idea from Luc Teirlinck <teirllm@mail.auburn.edu>]
Miles Bader <miles@gnu.org>
parents: 46250
diff changeset
1666 (goto-char start)
1241ed1e9eee [original idea from Luc Teirlinck <teirllm@mail.auburn.edu>]
Miles Bader <miles@gnu.org>
parents: 46250
diff changeset
1667 (while (search-forward "\b" end t)
1241ed1e9eee [original idea from Luc Teirlinck <teirllm@mail.auburn.edu>]
Miles Bader <miles@gnu.org>
parents: 46250
diff changeset
1668 (delete-char -2))))))))
39182
ed28d0187d3c (comint-send-input): Handle comint-process-echoes
Gerd Moellmann <gerd@gnu.org>
parents: 39124
diff changeset
1669
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1670 ;; 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
1671 ;; 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
1672 ;; when output is inserted.
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1673 (defun comint-output-filter (process string)
4939
d9ad390ef4e3 (comint-preinput-scroll-to-bottom): Added
Richard M. Stallman <rms@gnu.org>
parents: 4928
diff changeset
1674 (let ((oprocbuf (process-buffer process)))
26174
6860bca6e233 (comint-output-filter): Make the Comint buffer current
Gerd Moellmann <gerd@gnu.org>
parents: 25443
diff changeset
1675 ;; First check for killed buffer or no input.
6860bca6e233 (comint-output-filter): Make the Comint buffer current
Gerd Moellmann <gerd@gnu.org>
parents: 25443
diff changeset
1676 (when (and string oprocbuf (buffer-name oprocbuf))
6860bca6e233 (comint-output-filter): Make the Comint buffer current
Gerd Moellmann <gerd@gnu.org>
parents: 25443
diff changeset
1677 (with-current-buffer oprocbuf
30740
46364997df9c (comint-output-filter): Doc fixes & misc code cleanup.
Miles Bader <miles@gnu.org>
parents: 30735
diff changeset
1678 ;; Run preoutput filters
26174
6860bca6e233 (comint-output-filter): Make the Comint buffer current
Gerd Moellmann <gerd@gnu.org>
parents: 25443
diff changeset
1679 (let ((functions comint-preoutput-filter-functions))
6860bca6e233 (comint-output-filter): Make the Comint buffer current
Gerd Moellmann <gerd@gnu.org>
parents: 25443
diff changeset
1680 (while (and functions string)
43579
ebb2754ac469 (comint-preoutput-filter-functions): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 43530
diff changeset
1681 (if (eq (car functions) t)
ebb2754ac469 (comint-preoutput-filter-functions): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 43530
diff changeset
1682 (let ((functions (default-value 'comint-preoutput-filter-functions)))
ebb2754ac469 (comint-preoutput-filter-functions): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 43530
diff changeset
1683 (while (and functions string)
ebb2754ac469 (comint-preoutput-filter-functions): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 43530
diff changeset
1684 (setq string (funcall (car functions) string))
ebb2754ac469 (comint-preoutput-filter-functions): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 43530
diff changeset
1685 (setq functions (cdr functions))))
ebb2754ac469 (comint-preoutput-filter-functions): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 43530
diff changeset
1686 (setq string (funcall (car functions) string)))
26174
6860bca6e233 (comint-output-filter): Make the Comint buffer current
Gerd Moellmann <gerd@gnu.org>
parents: 25443
diff changeset
1687 (setq functions (cdr functions))))
30735
7960e7b84348 (comint-send-input): Make the newline boundary overlay rear-nonsticky.
Miles Bader <miles@gnu.org>
parents: 30731
diff changeset
1688
30958
ec347dd209e8 (comint-output-filter): Remove ad-hoc saving of restriction, and just
Miles Bader <miles@gnu.org>
parents: 30782
diff changeset
1689 ;; Insert STRING
50966
379cf00d7016 (comint-carriage-motion, comint-output-filter):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49549
diff changeset
1690 (let ((inhibit-read-only t)
30958
ec347dd209e8 (comint-output-filter): Remove ad-hoc saving of restriction, and just
Miles Bader <miles@gnu.org>
parents: 30782
diff changeset
1691 ;; Avoid the overhead of save-excursion, since we just
ec347dd209e8 (comint-output-filter): Remove ad-hoc saving of restriction, and just
Miles Bader <miles@gnu.org>
parents: 30782
diff changeset
1692 ;; fiddle with the point
30964
c6ebff75e052 (comint-output-filter):
Miles Bader <miles@gnu.org>
parents: 30958
diff changeset
1693 (saved-point (point-marker)))
30740
46364997df9c (comint-output-filter): Doc fixes & misc code cleanup.
Miles Bader <miles@gnu.org>
parents: 30735
diff changeset
1694
31038
9e1d7707876b (comint-output-filter):
Miles Bader <miles@gnu.org>
parents: 30964
diff changeset
1695 ;; The point should float after any insertion we do
9e1d7707876b (comint-output-filter):
Miles Bader <miles@gnu.org>
parents: 30964
diff changeset
1696 (set-marker-insertion-type saved-point t)
9e1d7707876b (comint-output-filter):
Miles Bader <miles@gnu.org>
parents: 30964
diff changeset
1697
30958
ec347dd209e8 (comint-output-filter): Remove ad-hoc saving of restriction, and just
Miles Bader <miles@gnu.org>
parents: 30782
diff changeset
1698 ;; We temporarly remove any buffer narrowing, in case the
ec347dd209e8 (comint-output-filter): Remove ad-hoc saving of restriction, and just
Miles Bader <miles@gnu.org>
parents: 30782
diff changeset
1699 ;; process mark is outside of the restriction
ec347dd209e8 (comint-output-filter): Remove ad-hoc saving of restriction, and just
Miles Bader <miles@gnu.org>
parents: 30782
diff changeset
1700 (save-restriction
ec347dd209e8 (comint-output-filter): Remove ad-hoc saving of restriction, and just
Miles Bader <miles@gnu.org>
parents: 30782
diff changeset
1701 (widen)
30740
46364997df9c (comint-output-filter): Doc fixes & misc code cleanup.
Miles Bader <miles@gnu.org>
parents: 30735
diff changeset
1702
30958
ec347dd209e8 (comint-output-filter): Remove ad-hoc saving of restriction, and just
Miles Bader <miles@gnu.org>
parents: 30782
diff changeset
1703 (goto-char (process-mark process))
ec347dd209e8 (comint-output-filter): Remove ad-hoc saving of restriction, and just
Miles Bader <miles@gnu.org>
parents: 30782
diff changeset
1704 (set-marker comint-last-output-start (point))
ec347dd209e8 (comint-output-filter): Remove ad-hoc saving of restriction, and just
Miles Bader <miles@gnu.org>
parents: 30782
diff changeset
1705
31581
e4d30cac5296 (comint-output-filter):
Miles Bader <miles@gnu.org>
parents: 31260
diff changeset
1706 ;; insert-before-markers is a bad thing. XXX
e4d30cac5296 (comint-output-filter):
Miles Bader <miles@gnu.org>
parents: 31260
diff changeset
1707 ;;
e4d30cac5296 (comint-output-filter):
Miles Bader <miles@gnu.org>
parents: 31260
diff changeset
1708 ;; It is used here to force window-point markers (used to
e4d30cac5296 (comint-output-filter):
Miles Bader <miles@gnu.org>
parents: 31260
diff changeset
1709 ;; store the value of point in non-selected windows) to
e4d30cac5296 (comint-output-filter):
Miles Bader <miles@gnu.org>
parents: 31260
diff changeset
1710 ;; advance, but it also screws up any other markers that we
e4d30cac5296 (comint-output-filter):
Miles Bader <miles@gnu.org>
parents: 31260
diff changeset
1711 ;; don't _want_ to advance, such as the start-marker of some
e4d30cac5296 (comint-output-filter):
Miles Bader <miles@gnu.org>
parents: 31260
diff changeset
1712 ;; of the overlays we create.
e4d30cac5296 (comint-output-filter):
Miles Bader <miles@gnu.org>
parents: 31260
diff changeset
1713 ;;
e4d30cac5296 (comint-output-filter):
Miles Bader <miles@gnu.org>
parents: 31260
diff changeset
1714 ;; We work around the problem with the overlays by
e4d30cac5296 (comint-output-filter):
Miles Bader <miles@gnu.org>
parents: 31260
diff changeset
1715 ;; explicitly adjusting them after we do the insertion, but
e4d30cac5296 (comint-output-filter):
Miles Bader <miles@gnu.org>
parents: 31260
diff changeset
1716 ;; in the future this problem should be solved correctly, by
e4d30cac5296 (comint-output-filter):
Miles Bader <miles@gnu.org>
parents: 31260
diff changeset
1717 ;; using `insert', and making the insertion-type of
e4d30cac5296 (comint-output-filter):
Miles Bader <miles@gnu.org>
parents: 31260
diff changeset
1718 ;; window-point markers settable (via a buffer-local
e4d30cac5296 (comint-output-filter):
Miles Bader <miles@gnu.org>
parents: 31260
diff changeset
1719 ;; variable). In comint buffers, this variable would be set
e4d30cac5296 (comint-output-filter):
Miles Bader <miles@gnu.org>
parents: 31260
diff changeset
1720 ;; to `t', to cause point in non-select windows to advance.
e4d30cac5296 (comint-output-filter):
Miles Bader <miles@gnu.org>
parents: 31260
diff changeset
1721 (insert-before-markers string)
e4d30cac5296 (comint-output-filter):
Miles Bader <miles@gnu.org>
parents: 31260
diff changeset
1722 ;; Fixup markers and overlays that got screwed up because we
e4d30cac5296 (comint-output-filter):
Miles Bader <miles@gnu.org>
parents: 31260
diff changeset
1723 ;; used `insert-before-markers'.
e4d30cac5296 (comint-output-filter):
Miles Bader <miles@gnu.org>
parents: 31260
diff changeset
1724 (let ((old-point (- (point) (length string))))
32598
b7462e534fdc (comint-output-filter):
Miles Bader <miles@gnu.org>
parents: 32326
diff changeset
1725 ;; comint-last-output-start
31581
e4d30cac5296 (comint-output-filter):
Miles Bader <miles@gnu.org>
parents: 31260
diff changeset
1726 (set-marker comint-last-output-start old-point)
32598
b7462e534fdc (comint-output-filter):
Miles Bader <miles@gnu.org>
parents: 32326
diff changeset
1727 ;; comint-last-input-end
b7462e534fdc (comint-output-filter):
Miles Bader <miles@gnu.org>
parents: 32326
diff changeset
1728 (when (and comint-last-input-end
b7462e534fdc (comint-output-filter):
Miles Bader <miles@gnu.org>
parents: 32326
diff changeset
1729 (equal (marker-position comint-last-input-end)
b7462e534fdc (comint-output-filter):
Miles Bader <miles@gnu.org>
parents: 32326
diff changeset
1730 (point)))
b7462e534fdc (comint-output-filter):
Miles Bader <miles@gnu.org>
parents: 32326
diff changeset
1731 (set-marker comint-last-input-end old-point))
31581
e4d30cac5296 (comint-output-filter):
Miles Bader <miles@gnu.org>
parents: 31260
diff changeset
1732 ;; No overlays we create are set to advance upon insertion
e4d30cac5296 (comint-output-filter):
Miles Bader <miles@gnu.org>
parents: 31260
diff changeset
1733 ;; (at the start/end), so we assume that any overlay which
e4d30cac5296 (comint-output-filter):
Miles Bader <miles@gnu.org>
parents: 31260
diff changeset
1734 ;; is at the current point was incorrectly advanced by
e4d30cac5296 (comint-output-filter):
Miles Bader <miles@gnu.org>
parents: 31260
diff changeset
1735 ;; insert-before-markers. First fixup overlays that might
e4d30cac5296 (comint-output-filter):
Miles Bader <miles@gnu.org>
parents: 31260
diff changeset
1736 ;; start at point:
e4d30cac5296 (comint-output-filter):
Miles Bader <miles@gnu.org>
parents: 31260
diff changeset
1737 (dolist (over (overlays-at (point)))
e4d30cac5296 (comint-output-filter):
Miles Bader <miles@gnu.org>
parents: 31260
diff changeset
1738 (when (= (overlay-start over) (point))
e4d30cac5296 (comint-output-filter):
Miles Bader <miles@gnu.org>
parents: 31260
diff changeset
1739 (let ((end (overlay-end over)))
e4d30cac5296 (comint-output-filter):
Miles Bader <miles@gnu.org>
parents: 31260
diff changeset
1740 (move-overlay over
e4d30cac5296 (comint-output-filter):
Miles Bader <miles@gnu.org>
parents: 31260
diff changeset
1741 old-point
e4d30cac5296 (comint-output-filter):
Miles Bader <miles@gnu.org>
parents: 31260
diff changeset
1742 (if (= end (point)) old-point end)))))
e4d30cac5296 (comint-output-filter):
Miles Bader <miles@gnu.org>
parents: 31260
diff changeset
1743 ;; Then do overlays that might end at point:
e4d30cac5296 (comint-output-filter):
Miles Bader <miles@gnu.org>
parents: 31260
diff changeset
1744 (dolist (over (overlays-at (1- (point))))
e4d30cac5296 (comint-output-filter):
Miles Bader <miles@gnu.org>
parents: 31260
diff changeset
1745 (when (= (overlay-end over) (point))
e4d30cac5296 (comint-output-filter):
Miles Bader <miles@gnu.org>
parents: 31260
diff changeset
1746 (move-overlay over
e4d30cac5296 (comint-output-filter):
Miles Bader <miles@gnu.org>
parents: 31260
diff changeset
1747 (min (overlay-start over) old-point)
e4d30cac5296 (comint-output-filter):
Miles Bader <miles@gnu.org>
parents: 31260
diff changeset
1748 old-point))))
30958
ec347dd209e8 (comint-output-filter): Remove ad-hoc saving of restriction, and just
Miles Bader <miles@gnu.org>
parents: 30782
diff changeset
1749
31581
e4d30cac5296 (comint-output-filter):
Miles Bader <miles@gnu.org>
parents: 31260
diff changeset
1750 ;; Advance process-mark
30958
ec347dd209e8 (comint-output-filter): Remove ad-hoc saving of restriction, and just
Miles Bader <miles@gnu.org>
parents: 30782
diff changeset
1751 (set-marker (process-mark process) (point))
30640
6f943008c543 (comint-use-prompt-regexp-instead-of-fields): New variable.
Miles Bader <miles@gnu.org>
parents: 30325
diff changeset
1752
46941
1241ed1e9eee [original idea from Luc Teirlinck <teirllm@mail.auburn.edu>]
Miles Bader <miles@gnu.org>
parents: 46250
diff changeset
1753 (unless comint-inhibit-carriage-motion
1241ed1e9eee [original idea from Luc Teirlinck <teirllm@mail.auburn.edu>]
Miles Bader <miles@gnu.org>
parents: 46250
diff changeset
1754 ;; Interpret any carriage motion characters (newline, backspace)
1241ed1e9eee [original idea from Luc Teirlinck <teirllm@mail.auburn.edu>]
Miles Bader <miles@gnu.org>
parents: 46250
diff changeset
1755 (comint-carriage-motion comint-last-output-start (point)))
1241ed1e9eee [original idea from Luc Teirlinck <teirllm@mail.auburn.edu>]
Miles Bader <miles@gnu.org>
parents: 46250
diff changeset
1756
61592
7c224837fcfe (comint-output-filter): Run comint-output-filter-functions
Richard M. Stallman <rms@gnu.org>
parents: 61449
diff changeset
1757 ;; Run these hooks with point where the user had it.
7c224837fcfe (comint-output-filter): Run comint-output-filter-functions
Richard M. Stallman <rms@gnu.org>
parents: 61449
diff changeset
1758 (goto-char saved-point)
45916
e8271a03c1eb (comint-get-old-input-default): Strip text properties for fields too.
Miles Bader <miles@gnu.org>
parents: 45898
diff changeset
1759 (run-hook-with-args 'comint-output-filter-functions string)
61592
7c224837fcfe (comint-output-filter): Run comint-output-filter-functions
Richard M. Stallman <rms@gnu.org>
parents: 61449
diff changeset
1760 (set-marker saved-point (point))
46941
1241ed1e9eee [original idea from Luc Teirlinck <teirllm@mail.auburn.edu>]
Miles Bader <miles@gnu.org>
parents: 46250
diff changeset
1761
45916
e8271a03c1eb (comint-get-old-input-default): Strip text properties for fields too.
Miles Bader <miles@gnu.org>
parents: 45898
diff changeset
1762 (goto-char (process-mark process)) ; in case a filter moved it
e8271a03c1eb (comint-get-old-input-default): Strip text properties for fields too.
Miles Bader <miles@gnu.org>
parents: 45898
diff changeset
1763
61873
1cd2d4d601fa (comint-prompt-regexp, comint-get-old-input)
Luc Teirlinck <teirllm@auburn.edu>
parents: 61592
diff changeset
1764 (unless comint-use-prompt-regexp
55881
79a700a71463 (comint-replace-by-expanded-history-before-point):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55295
diff changeset
1765 (let ((inhibit-read-only t)
79a700a71463 (comint-replace-by-expanded-history-before-point):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55295
diff changeset
1766 (inhibit-modification-hooks t))
45826
ffa13f09e36d (comint-snapshot-last-prompt): Bind `inhibit-read-only' to t to support
Juanma Barranquero <lekktu@gmail.com>
parents: 45794
diff changeset
1767 (add-text-properties comint-last-output-start (point)
ffa13f09e36d (comint-snapshot-last-prompt): Bind `inhibit-read-only' to t to support
Juanma Barranquero <lekktu@gmail.com>
parents: 45794
diff changeset
1768 '(rear-nonsticky t
55223
14d50685dce0 (comint-prompt-read-only): New variable.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55123
diff changeset
1769 field output
14d50685dce0 (comint-prompt-read-only): New variable.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55123
diff changeset
1770 inhibit-line-move-field-capture t))))
30640
6f943008c543 (comint-use-prompt-regexp-instead-of-fields): New variable.
Miles Bader <miles@gnu.org>
parents: 30325
diff changeset
1771
45727
a899b2c6ce9b (comint-send-input, comint-output-filter): Use the `font-lock-face'
Miles Bader <miles@gnu.org>
parents: 44663
diff changeset
1772 ;; Highlight the prompt, where we define `prompt' to mean
a899b2c6ce9b (comint-send-input, comint-output-filter): Use the `font-lock-face'
Miles Bader <miles@gnu.org>
parents: 44663
diff changeset
1773 ;; the most recent output that doesn't end with a newline.
55223
14d50685dce0 (comint-prompt-read-only): New variable.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55123
diff changeset
1774 (let ((prompt-start (save-excursion (forward-line 0) (point)))
55881
79a700a71463 (comint-replace-by-expanded-history-before-point):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55295
diff changeset
1775 (inhibit-read-only t)
79a700a71463 (comint-replace-by-expanded-history-before-point):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55295
diff changeset
1776 (inhibit-modification-hooks t))
55223
14d50685dce0 (comint-prompt-read-only): New variable.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55123
diff changeset
1777 (when comint-prompt-read-only
14d50685dce0 (comint-prompt-read-only): New variable.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55123
diff changeset
1778 (or (= (point-min) prompt-start)
14d50685dce0 (comint-prompt-read-only): New variable.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55123
diff changeset
1779 (get-text-property (1- prompt-start) 'read-only)
14d50685dce0 (comint-prompt-read-only): New variable.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55123
diff changeset
1780 (put-text-property
14d50685dce0 (comint-prompt-read-only): New variable.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55123
diff changeset
1781 (1- prompt-start) prompt-start 'read-only 'fence))
14d50685dce0 (comint-prompt-read-only): New variable.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55123
diff changeset
1782 (add-text-properties
14d50685dce0 (comint-prompt-read-only): New variable.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55123
diff changeset
1783 prompt-start (point)
57420
bcfb3a26a3bd (comint-output-filter): Typo.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57419
diff changeset
1784 '(read-only t rear-nonsticky t front-sticky (read-only))))
55223
14d50685dce0 (comint-prompt-read-only): New variable.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55123
diff changeset
1785 (unless (and (bolp) (null comint-last-prompt-overlay))
14d50685dce0 (comint-prompt-read-only): New variable.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55123
diff changeset
1786 ;; Need to create or move the prompt overlay (in the case
14d50685dce0 (comint-prompt-read-only): New variable.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55123
diff changeset
1787 ;; where there is no prompt ((bolp) == t), we still do
14d50685dce0 (comint-prompt-read-only): New variable.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55123
diff changeset
1788 ;; this if there's already an existing overlay).
45727
a899b2c6ce9b (comint-send-input, comint-output-filter): Use the `font-lock-face'
Miles Bader <miles@gnu.org>
parents: 44663
diff changeset
1789 (if comint-last-prompt-overlay
a899b2c6ce9b (comint-send-input, comint-output-filter): Use the `font-lock-face'
Miles Bader <miles@gnu.org>
parents: 44663
diff changeset
1790 ;; Just move an existing overlay
a899b2c6ce9b (comint-send-input, comint-output-filter): Use the `font-lock-face'
Miles Bader <miles@gnu.org>
parents: 44663
diff changeset
1791 (move-overlay comint-last-prompt-overlay
a899b2c6ce9b (comint-send-input, comint-output-filter): Use the `font-lock-face'
Miles Bader <miles@gnu.org>
parents: 44663
diff changeset
1792 prompt-start (point))
a899b2c6ce9b (comint-send-input, comint-output-filter): Use the `font-lock-face'
Miles Bader <miles@gnu.org>
parents: 44663
diff changeset
1793 ;; Need to create the overlay
a899b2c6ce9b (comint-send-input, comint-output-filter): Use the `font-lock-face'
Miles Bader <miles@gnu.org>
parents: 44663
diff changeset
1794 (setq comint-last-prompt-overlay
a899b2c6ce9b (comint-send-input, comint-output-filter): Use the `font-lock-face'
Miles Bader <miles@gnu.org>
parents: 44663
diff changeset
1795 (make-overlay prompt-start (point)))
a899b2c6ce9b (comint-send-input, comint-output-filter): Use the `font-lock-face'
Miles Bader <miles@gnu.org>
parents: 44663
diff changeset
1796 (overlay-put comint-last-prompt-overlay
a899b2c6ce9b (comint-send-input, comint-output-filter): Use the `font-lock-face'
Miles Bader <miles@gnu.org>
parents: 44663
diff changeset
1797 'font-lock-face 'comint-highlight-prompt))))
30731
4ce2b3d23348 (comint-highlight-prompt, comint-highlight-prompt-face)
Miles Bader <miles@gnu.org>
parents: 30694
diff changeset
1798
45916
e8271a03c1eb (comint-get-old-input-default): Strip text properties for fields too.
Miles Bader <miles@gnu.org>
parents: 45898
diff changeset
1799 (goto-char saved-point)))))))
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1800
4890
dab300dfe449 (comint-scroll-to-bottom-on-input): Default to nil.
Richard M. Stallman <rms@gnu.org>
parents: 4880
diff changeset
1801 (defun comint-preinput-scroll-to-bottom ()
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1802 "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
1803 Movement occurs if point in the selected window is not after the process mark,
63502
f0f76b7d0f74 (comint-replace-by-expanded-filename, comint-prompt-regexp,
Juanma Barranquero <lekktu@gmail.com>
parents: 63175
diff changeset
1804 and `this-command' is an insertion command. Insertion commands recognized
5284
9c8749be37da (comint-read-input-ring): New arg SILENT.
Richard M. Stallman <rms@gnu.org>
parents: 5166
diff changeset
1805 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
1806 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
1807
4890
dab300dfe449 (comint-scroll-to-bottom-on-input): Default to nil.
Richard M. Stallman <rms@gnu.org>
parents: 4880
diff changeset
1808 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
1809 (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
1810 (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
1811 hilit-yank)))
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1812 (let* ((selected (selected-window))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1813 (current (current-buffer))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1814 (process (get-buffer-process current))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1815 (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
1816 (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
1817 (if (eq scroll 'this)
23f6d57ced16 (comint-preinput-scroll-to-bottom): If SCROLL is `this',
Richard M. Stallman <rms@gnu.org>
parents: 5058
diff changeset
1818 (goto-char (point-max))
23f6d57ced16 (comint-preinput-scroll-to-bottom): If SCROLL is `this',
Richard M. Stallman <rms@gnu.org>
parents: 5058
diff changeset
1819 (walk-windows
23f6d57ced16 (comint-preinput-scroll-to-bottom): If SCROLL is `this',
Richard M. Stallman <rms@gnu.org>
parents: 5058
diff changeset
1820 (function (lambda (window)
23f6d57ced16 (comint-preinput-scroll-to-bottom): If SCROLL is `this',
Richard M. Stallman <rms@gnu.org>
parents: 5058
diff changeset
1821 (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
1822 (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
1823 (progn
23f6d57ced16 (comint-preinput-scroll-to-bottom): If SCROLL is `this',
Richard M. Stallman <rms@gnu.org>
parents: 5058
diff changeset
1824 (select-window window)
23f6d57ced16 (comint-preinput-scroll-to-bottom): If SCROLL is `this',
Richard M. Stallman <rms@gnu.org>
parents: 5058
diff changeset
1825 (goto-char (point-max))
23f6d57ced16 (comint-preinput-scroll-to-bottom): If SCROLL is `this',
Richard M. Stallman <rms@gnu.org>
parents: 5058
diff changeset
1826 (select-window selected)))))
5284
9c8749be37da (comint-read-input-ring): New arg SILENT.
Richard M. Stallman <rms@gnu.org>
parents: 5166
diff changeset
1827 nil t))))))
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1828
4890
dab300dfe449 (comint-scroll-to-bottom-on-input): Default to nil.
Richard M. Stallman <rms@gnu.org>
parents: 4880
diff changeset
1829 (defun comint-postoutput-scroll-to-bottom (string)
51421
79dc5a8eacfe (comint-move-point-for-output): Renamed from
Richard M. Stallman <rms@gnu.org>
parents: 50966
diff changeset
1830 "Go to the end of buffer in some or all windows showing it.
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1831 Does not scroll if the current line is the last line in the buffer.
51421
79dc5a8eacfe (comint-move-point-for-output): Renamed from
Richard M. Stallman <rms@gnu.org>
parents: 50966
diff changeset
1832 Depends on the value of `comint-move-point-for-output' and
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1833 `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
1834
6187
280d4a97da69 (comint-input-filter-functions)
Richard M. Stallman <rms@gnu.org>
parents: 6185
diff changeset
1835 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
1836 (let* ((selected (selected-window))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1837 (current (current-buffer))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1838 (process (get-buffer-process current))
51421
79dc5a8eacfe (comint-move-point-for-output): Renamed from
Richard M. Stallman <rms@gnu.org>
parents: 50966
diff changeset
1839 (scroll comint-move-point-for-output))
5284
9c8749be37da (comint-read-input-ring): New arg SILENT.
Richard M. Stallman <rms@gnu.org>
parents: 5166
diff changeset
1840 (unwind-protect
9c8749be37da (comint-read-input-ring): New arg SILENT.
Richard M. Stallman <rms@gnu.org>
parents: 5166
diff changeset
1841 (if process
9c8749be37da (comint-read-input-ring): New arg SILENT.
Richard M. Stallman <rms@gnu.org>
parents: 5166
diff changeset
1842 (walk-windows
9c8749be37da (comint-read-input-ring): New arg SILENT.
Richard M. Stallman <rms@gnu.org>
parents: 5166
diff changeset
1843 (function (lambda (window)
9c8749be37da (comint-read-input-ring): New arg SILENT.
Richard M. Stallman <rms@gnu.org>
parents: 5166
diff changeset
1844 (if (eq (window-buffer window) current)
9c8749be37da (comint-read-input-ring): New arg SILENT.
Richard M. Stallman <rms@gnu.org>
parents: 5166
diff changeset
1845 (progn
9c8749be37da (comint-read-input-ring): New arg SILENT.
Richard M. Stallman <rms@gnu.org>
parents: 5166
diff changeset
1846 (select-window window)
9c8749be37da (comint-read-input-ring): New arg SILENT.
Richard M. Stallman <rms@gnu.org>
parents: 5166
diff changeset
1847 (if (and (< (point) (process-mark process))
9c8749be37da (comint-read-input-ring): New arg SILENT.
Richard M. Stallman <rms@gnu.org>
parents: 5166
diff changeset
1848 (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
1849 ;; 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
1850 (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
1851 (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
1852 ;; If point was at the end, keep it at end.
32326
b8132c394173 Cleanup whitespace.
Miles Bader <miles@gnu.org>
parents: 32196
diff changeset
1853 (and (marker-position comint-last-output-start)
b8132c394173 Cleanup whitespace.
Miles Bader <miles@gnu.org>
parents: 32196
diff changeset
1854 (>= (point) comint-last-output-start))))
5284
9c8749be37da (comint-read-input-ring): New arg SILENT.
Richard M. Stallman <rms@gnu.org>
parents: 5166
diff changeset
1855 (goto-char (process-mark process)))
9c8749be37da (comint-read-input-ring): New arg SILENT.
Richard M. Stallman <rms@gnu.org>
parents: 5166
diff changeset
1856 ;; Optionally scroll so that the text
9c8749be37da (comint-read-input-ring): New arg SILENT.
Richard M. Stallman <rms@gnu.org>
parents: 5166
diff changeset
1857 ;; 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
1858 (if (and comint-scroll-show-maximum-output
48987
0bf251ecfd1a (comint-mode): Localy set scroll-conservatively.
Richard M. Stallman <rms@gnu.org>
parents: 47377
diff changeset
1859 (= (point) (point-max)))
5284
9c8749be37da (comint-read-input-ring): New arg SILENT.
Richard M. Stallman <rms@gnu.org>
parents: 5166
diff changeset
1860 (save-excursion
9c8749be37da (comint-read-input-ring): New arg SILENT.
Richard M. Stallman <rms@gnu.org>
parents: 5166
diff changeset
1861 (goto-char (point-max))
64169
20da0da3a956 (comint-postoutput-scroll-to-bottom)
Eli Zaretskii <eliz@gnu.org>
parents: 64091
diff changeset
1862 (recenter (- -1 scroll-margin))))
5284
9c8749be37da (comint-read-input-ring): New arg SILENT.
Richard M. Stallman <rms@gnu.org>
parents: 5166
diff changeset
1863 (select-window selected)))))
9c8749be37da (comint-read-input-ring): New arg SILENT.
Richard M. Stallman <rms@gnu.org>
parents: 5166
diff changeset
1864 nil t))
9c8749be37da (comint-read-input-ring): New arg SILENT.
Richard M. Stallman <rms@gnu.org>
parents: 5166
diff changeset
1865 (set-buffer current))))
2683
21ab70613c42 (comint-filter): New function.
Richard M. Stallman <rms@gnu.org>
parents: 2680
diff changeset
1866
10833
77d7d3990300 Added comint-buffer-maximum-size and comint-truncate-buffer.
Simon Marshall <simon@gnu.org>
parents: 10830
diff changeset
1867 (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
1868 "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
1869 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
1870 (interactive)
77d7d3990300 Added comint-buffer-maximum-size and comint-truncate-buffer.
Simon Marshall <simon@gnu.org>
parents: 10830
diff changeset
1871 (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
1872 (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
1873 (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
1874 (beginning-of-line)
50966
379cf00d7016 (comint-carriage-motion, comint-output-filter):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49549
diff changeset
1875 (let ((inhibit-read-only t))
379cf00d7016 (comint-carriage-motion, comint-output-filter):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49549
diff changeset
1876 (delete-region (point-min) (point)))))
10833
77d7d3990300 Added comint-buffer-maximum-size and comint-truncate-buffer.
Simon Marshall <simon@gnu.org>
parents: 10830
diff changeset
1877
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
1878 (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
1879 "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
1880 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
1881 (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
1882 (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
1883 (save-excursion
20458
ad0d2c5040a0 (comint-strip-ctrl-m): Don't die if
Karl Heuer <kwzh@gnu.org>
parents: 20020
diff changeset
1884 (condition-case nil
ad0d2c5040a0 (comint-strip-ctrl-m): Don't die if
Karl Heuer <kwzh@gnu.org>
parents: 20020
diff changeset
1885 (goto-char
ad0d2c5040a0 (comint-strip-ctrl-m): Don't die if
Karl Heuer <kwzh@gnu.org>
parents: 20020
diff changeset
1886 (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
1887 (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
1888 (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
1889 (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
1890 (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
1891
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1892 (defun comint-show-maximum-output ()
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1893 "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
1894 (interactive)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1895 (goto-char (point-max))
64169
20da0da3a956 (comint-postoutput-scroll-to-bottom)
Eli Zaretskii <eliz@gnu.org>
parents: 64091
diff changeset
1896 (recenter (- -1 scroll-margin)))
2683
21ab70613c42 (comint-filter): New function.
Richard M. Stallman <rms@gnu.org>
parents: 2680
diff changeset
1897
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1898 (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
1899 "Default for `comint-get-old-input'.
61873
1cd2d4d601fa (comint-prompt-regexp, comint-get-old-input)
Luc Teirlinck <teirllm@auburn.edu>
parents: 61592
diff changeset
1900 If `comint-use-prompt-regexp' is nil, then either
38971
478f11ee1d4c (comint-get-old-input-default): Don't signal an error if point is not on
Miles Bader <miles@gnu.org>
parents: 38848
diff changeset
1901 return the current input field, if point is on an input field, or the
478f11ee1d4c (comint-get-old-input-default): Don't signal an error if point is not on
Miles Bader <miles@gnu.org>
parents: 38848
diff changeset
1902 current line, if point is on an output field.
61873
1cd2d4d601fa (comint-prompt-regexp, comint-get-old-input)
Luc Teirlinck <teirllm@auburn.edu>
parents: 61592
diff changeset
1903 If `comint-use-prompt-regexp' is non-nil, then return
38971
478f11ee1d4c (comint-get-old-input-default): Don't signal an error if point is not on
Miles Bader <miles@gnu.org>
parents: 38848
diff changeset
1904 the current line with any initial string matching the regexp
478f11ee1d4c (comint-get-old-input-default): Don't signal an error if point is not on
Miles Bader <miles@gnu.org>
parents: 38848
diff changeset
1905 `comint-prompt-regexp' removed."
478f11ee1d4c (comint-get-old-input-default): Don't signal an error if point is not on
Miles Bader <miles@gnu.org>
parents: 38848
diff changeset
1906 (let ((bof (field-beginning)))
478f11ee1d4c (comint-get-old-input-default): Don't signal an error if point is not on
Miles Bader <miles@gnu.org>
parents: 38848
diff changeset
1907 (if (eq (get-char-property bof 'field) 'input)
45916
e8271a03c1eb (comint-get-old-input-default): Strip text properties for fields too.
Miles Bader <miles@gnu.org>
parents: 45898
diff changeset
1908 (field-string-no-properties bof)
38971
478f11ee1d4c (comint-get-old-input-default): Don't signal an error if point is not on
Miles Bader <miles@gnu.org>
parents: 38848
diff changeset
1909 (comint-bol)
45732
5555fce97d97 Make comint use text properties for highlighting instead of overlays:
Miles Bader <miles@gnu.org>
parents: 45727
diff changeset
1910 (buffer-substring-no-properties (point) (line-end-position)))))
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
1911
70575
aaf48e9df47b (comint-insert-input): Just make it when
Nick Roberts <nickrob@snap.net.nz>
parents: 70553
diff changeset
1912 (defun comint-copy-old-input ()
aaf48e9df47b (comint-insert-input): Just make it when
Nick Roberts <nickrob@snap.net.nz>
parents: 70553
diff changeset
1913 "Insert after prompt old input at point as new input to be edited.
aaf48e9df47b (comint-insert-input): Just make it when
Nick Roberts <nickrob@snap.net.nz>
parents: 70553
diff changeset
1914 Calls `comint-get-old-input' to get old input."
aaf48e9df47b (comint-insert-input): Just make it when
Nick Roberts <nickrob@snap.net.nz>
parents: 70553
diff changeset
1915 (interactive)
aaf48e9df47b (comint-insert-input): Just make it when
Nick Roberts <nickrob@snap.net.nz>
parents: 70553
diff changeset
1916 (let ((input (funcall comint-get-old-input))
aaf48e9df47b (comint-insert-input): Just make it when
Nick Roberts <nickrob@snap.net.nz>
parents: 70553
diff changeset
1917 (process (get-buffer-process (current-buffer))))
aaf48e9df47b (comint-insert-input): Just make it when
Nick Roberts <nickrob@snap.net.nz>
parents: 70553
diff changeset
1918 (if (not process)
aaf48e9df47b (comint-insert-input): Just make it when
Nick Roberts <nickrob@snap.net.nz>
parents: 70553
diff changeset
1919 (error "Current buffer has no process")
aaf48e9df47b (comint-insert-input): Just make it when
Nick Roberts <nickrob@snap.net.nz>
parents: 70553
diff changeset
1920 (goto-char (process-mark process))
aaf48e9df47b (comint-insert-input): Just make it when
Nick Roberts <nickrob@snap.net.nz>
parents: 70553
diff changeset
1921 (insert input))))
aaf48e9df47b (comint-insert-input): Just make it when
Nick Roberts <nickrob@snap.net.nz>
parents: 70553
diff changeset
1922
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
1923 (defun comint-skip-prompt ()
3386
bc4729d67e6e (comint-filter): Put window-start before the input.
Richard M. Stallman <rms@gnu.org>
parents: 3113
diff changeset
1924 "Skip past the text matching regexp `comint-prompt-regexp'.
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
1925 If this takes us past the end of the current line, don't skip at all."
54879
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
1926 (if (and (looking-at comint-prompt-regexp)
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
1927 (<= (match-end 0) (line-end-position)))
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
1928 (goto-char (match-end 0))))
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
1929
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
1930 (defun comint-after-pmark-p ()
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
1931 "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
1932 (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
1933 (<= (marker-position pmark) (point))))
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
1934
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
1935 (defun comint-simple-send (proc string)
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
1936 "Default function for sending to PROC input STRING.
54879
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
1937 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
1938 set the hook `comint-input-sender'."
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
1939 (comint-send-string proc string)
42693
13a21b2786c0 (comint-input-sender): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 42669
diff changeset
1940 (if comint-input-sender-no-newline
42803
aeec841a65cf (comint-simple-send): Fix previous change.
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1941 (if (not (string-equal string ""))
42693
13a21b2786c0 (comint-input-sender): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 42669
diff changeset
1942 (process-send-eof))
13a21b2786c0 (comint-input-sender): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 42669
diff changeset
1943 (comint-send-string proc "\n")))
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1944
30640
6f943008c543 (comint-use-prompt-regexp-instead-of-fields): New variable.
Miles Bader <miles@gnu.org>
parents: 30325
diff changeset
1945 (defun comint-line-beginning-position ()
54879
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
1946 "Return the buffer position of the beginning of the line, after any prompt.
61873
1cd2d4d601fa (comint-prompt-regexp, comint-get-old-input)
Luc Teirlinck <teirllm@auburn.edu>
parents: 61592
diff changeset
1947 If `comint-use-prompt-regexp' is non-nil, then the prompt skip is done by
1cd2d4d601fa (comint-prompt-regexp, comint-get-old-input)
Luc Teirlinck <teirllm@auburn.edu>
parents: 61592
diff changeset
1948 skipping text matching the regular expression `comint-prompt-regexp',
1cd2d4d601fa (comint-prompt-regexp, comint-get-old-input)
Luc Teirlinck <teirllm@auburn.edu>
parents: 61592
diff changeset
1949 a buffer local variable."
1cd2d4d601fa (comint-prompt-regexp, comint-get-old-input)
Luc Teirlinck <teirllm@auburn.edu>
parents: 61592
diff changeset
1950 (if comint-use-prompt-regexp
30640
6f943008c543 (comint-use-prompt-regexp-instead-of-fields): New variable.
Miles Bader <miles@gnu.org>
parents: 30325
diff changeset
1951 ;; Use comint-prompt-regexp
6f943008c543 (comint-use-prompt-regexp-instead-of-fields): New variable.
Miles Bader <miles@gnu.org>
parents: 30325
diff changeset
1952 (save-excursion
6f943008c543 (comint-use-prompt-regexp-instead-of-fields): New variable.
Miles Bader <miles@gnu.org>
parents: 30325
diff changeset
1953 (beginning-of-line)
6f943008c543 (comint-use-prompt-regexp-instead-of-fields): New variable.
Miles Bader <miles@gnu.org>
parents: 30325
diff changeset
1954 (comint-skip-prompt)
6f943008c543 (comint-use-prompt-regexp-instead-of-fields): New variable.
Miles Bader <miles@gnu.org>
parents: 30325
diff changeset
1955 (point))
6f943008c543 (comint-use-prompt-regexp-instead-of-fields): New variable.
Miles Bader <miles@gnu.org>
parents: 30325
diff changeset
1956 ;; Use input fields. Note that, unlike the behavior of
6f943008c543 (comint-use-prompt-regexp-instead-of-fields): New variable.
Miles Bader <miles@gnu.org>
parents: 30325
diff changeset
1957 ;; `line-beginning-position' inside a field, this function will
6f943008c543 (comint-use-prompt-regexp-instead-of-fields): New variable.
Miles Bader <miles@gnu.org>
parents: 30325
diff changeset
1958 ;; return the position of the end of a prompt, even if the point is
6f943008c543 (comint-use-prompt-regexp-instead-of-fields): New variable.
Miles Bader <miles@gnu.org>
parents: 30325
diff changeset
1959 ;; already inside the prompt. In order to do this, it assumes that
6f943008c543 (comint-use-prompt-regexp-instead-of-fields): New variable.
Miles Bader <miles@gnu.org>
parents: 30325
diff changeset
1960 ;; if there are two fields on a line, then the first one is the
6f943008c543 (comint-use-prompt-regexp-instead-of-fields): New variable.
Miles Bader <miles@gnu.org>
parents: 30325
diff changeset
1961 ;; prompt, and the second one is an input field, and is front-sticky
6f943008c543 (comint-use-prompt-regexp-instead-of-fields): New variable.
Miles Bader <miles@gnu.org>
parents: 30325
diff changeset
1962 ;; (as input fields should be).
6f943008c543 (comint-use-prompt-regexp-instead-of-fields): New variable.
Miles Bader <miles@gnu.org>
parents: 30325
diff changeset
1963 (constrain-to-field (line-beginning-position) (line-end-position))))
6f943008c543 (comint-use-prompt-regexp-instead-of-fields): New variable.
Miles Bader <miles@gnu.org>
parents: 30325
diff changeset
1964
6f943008c543 (comint-use-prompt-regexp-instead-of-fields): New variable.
Miles Bader <miles@gnu.org>
parents: 30325
diff changeset
1965 (defun comint-bol (&optional arg)
54879
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
1966 "Go to the beginning of line, then skip past the prompt, if any.
30640
6f943008c543 (comint-use-prompt-regexp-instead-of-fields): New variable.
Miles Bader <miles@gnu.org>
parents: 30325
diff changeset
1967 If prefix argument is given (\\[universal-argument]) the prompt is not skipped.
61873
1cd2d4d601fa (comint-prompt-regexp, comint-get-old-input)
Luc Teirlinck <teirllm@auburn.edu>
parents: 61592
diff changeset
1968 If `comint-use-prompt-regexp' is non-nil, then the prompt skip is done
1cd2d4d601fa (comint-prompt-regexp, comint-get-old-input)
Luc Teirlinck <teirllm@auburn.edu>
parents: 61592
diff changeset
1969 by skipping text matching the regular expression `comint-prompt-regexp',
1cd2d4d601fa (comint-prompt-regexp, comint-get-old-input)
Luc Teirlinck <teirllm@auburn.edu>
parents: 61592
diff changeset
1970 a buffer local variable."
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1971 (interactive "P")
30640
6f943008c543 (comint-use-prompt-regexp-instead-of-fields): New variable.
Miles Bader <miles@gnu.org>
parents: 30325
diff changeset
1972 (if arg
30782
bc1377250f7c (comint-bol): Use `forward-line 0' instead of calling beginning-of-line
Miles Bader <miles@gnu.org>
parents: 30768
diff changeset
1973 ;; Unlike `beginning-of-line', forward-line ignores field boundaries
bc1377250f7c (comint-bol): Use `forward-line 0' instead of calling beginning-of-line
Miles Bader <miles@gnu.org>
parents: 30768
diff changeset
1974 (forward-line 0)
30640
6f943008c543 (comint-use-prompt-regexp-instead-of-fields): New variable.
Miles Bader <miles@gnu.org>
parents: 30325
diff changeset
1975 (goto-char (comint-line-beginning-position))))
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
1976
58588
a44a4cdb021d (comint-read-noecho): Add trivial compatibility definition.
Richard M. Stallman <rms@gnu.org>
parents: 58375
diff changeset
1977 ;; For compatibility.
a44a4cdb021d (comint-read-noecho): Add trivial compatibility definition.
Richard M. Stallman <rms@gnu.org>
parents: 58375
diff changeset
1978 (defun comint-read-noecho (prompt &optional ignore)
a44a4cdb021d (comint-read-noecho): Add trivial compatibility definition.
Richard M. Stallman <rms@gnu.org>
parents: 58375
diff changeset
1979 (read-passwd prompt))
a44a4cdb021d (comint-read-noecho): Add trivial compatibility definition.
Richard M. Stallman <rms@gnu.org>
parents: 58375
diff changeset
1980
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
1981 ;; 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
1982 ;; saved -- typically passwords to ftp, telnet, or somesuch.
57539
8c6fc4afae74 (comint-output-filter-functions): Add comint-watch-for-password-prompt.
Richard M. Stallman <rms@gnu.org>
parents: 57420
diff changeset
1983 ;; Just enter m-x send-invisible and type in your line.
705
c7d478752305 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 662
diff changeset
1984
53391
ab9195f48a6f (comint-watch-for-password-prompt): Pass `string' as
Eli Zaretskii <eliz@is.elta.co.il>
parents: 53272
diff changeset
1985 (defun send-invisible (&optional prompt)
1356
dcf780f7ae1b Doc fix.
Christopher Zaborsky <rogue@erratum.com>
parents: 1131
diff changeset
1986 "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
1987 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
1988 The string is sent using `comint-input-sender'.
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
1989 Security bug: your string can still be temporarily recovered with
53391
ab9195f48a6f (comint-watch-for-password-prompt): Pass `string' as
Eli Zaretskii <eliz@is.elta.co.il>
parents: 53272
diff changeset
1990 \\[view-lossage]; `clear-this-command-keys' can fix that."
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
1991 (interactive "P") ; Defeat snooping via C-x ESC ESC
64819
fe9134f14297 (send-invisible): Identify buffer, if not selected.
Richard M. Stallman <rms@gnu.org>
parents: 64762
diff changeset
1992 (let ((proc (get-buffer-process (current-buffer)))
fe9134f14297 (send-invisible): Identify buffer, if not selected.
Richard M. Stallman <rms@gnu.org>
parents: 64762
diff changeset
1993 (prefix
fe9134f14297 (send-invisible): Identify buffer, if not selected.
Richard M. Stallman <rms@gnu.org>
parents: 64762
diff changeset
1994 (if (eq (window-buffer (selected-window)) (current-buffer))
fe9134f14297 (send-invisible): Identify buffer, if not selected.
Richard M. Stallman <rms@gnu.org>
parents: 64762
diff changeset
1995 ""
fe9134f14297 (send-invisible): Identify buffer, if not selected.
Richard M. Stallman <rms@gnu.org>
parents: 64762
diff changeset
1996 (format "(In buffer %s) "
fe9134f14297 (send-invisible): Identify buffer, if not selected.
Richard M. Stallman <rms@gnu.org>
parents: 64762
diff changeset
1997 (current-buffer)))))
53391
ab9195f48a6f (comint-watch-for-password-prompt): Pass `string' as
Eli Zaretskii <eliz@is.elta.co.il>
parents: 53272
diff changeset
1998 (if proc
64819
fe9134f14297 (send-invisible): Identify buffer, if not selected.
Richard M. Stallman <rms@gnu.org>
parents: 64762
diff changeset
1999 (let ((str (read-passwd (concat prefix
fe9134f14297 (send-invisible): Identify buffer, if not selected.
Richard M. Stallman <rms@gnu.org>
parents: 64762
diff changeset
2000 (or prompt "Non-echoed text: ")))))
53391
ab9195f48a6f (comint-watch-for-password-prompt): Pass `string' as
Eli Zaretskii <eliz@is.elta.co.il>
parents: 53272
diff changeset
2001 (if (stringp str)
ab9195f48a6f (comint-watch-for-password-prompt): Pass `string' as
Eli Zaretskii <eliz@is.elta.co.il>
parents: 53272
diff changeset
2002 (progn
ab9195f48a6f (comint-watch-for-password-prompt): Pass `string' as
Eli Zaretskii <eliz@is.elta.co.il>
parents: 53272
diff changeset
2003 (comint-snapshot-last-prompt)
ab9195f48a6f (comint-watch-for-password-prompt): Pass `string' as
Eli Zaretskii <eliz@is.elta.co.il>
parents: 53272
diff changeset
2004 (funcall comint-input-sender proc str))
ab9195f48a6f (comint-watch-for-password-prompt): Pass `string' as
Eli Zaretskii <eliz@is.elta.co.il>
parents: 53272
diff changeset
2005 (message "Warning: text will be echoed")))
64819
fe9134f14297 (send-invisible): Identify buffer, if not selected.
Richard M. Stallman <rms@gnu.org>
parents: 64762
diff changeset
2006 (error "Buffer %s has no process" (current-buffer)))))
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
2007
32326
b8132c394173 Cleanup whitespace.
Miles Bader <miles@gnu.org>
parents: 32196
diff changeset
2008 (defun comint-watch-for-password-prompt (string)
6507
ff41e0e932b8 (comint-run): New command.
Richard M. Stallman <rms@gnu.org>
parents: 6256
diff changeset
2009 "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
2010 This function uses `send-invisible' to read and send a password to the buffer's
32326
b8132c394173 Cleanup whitespace.
Miles Bader <miles@gnu.org>
parents: 32196
diff changeset
2011 process if STRING contains a password prompt defined by
8087
c22d7c5168f5 comint-password-prompt-regexp: New variable.
Noah Friedman <friedman@splode.com>
parents: 8060
diff changeset
2012 `comint-password-prompt-regexp'.
6507
ff41e0e932b8 (comint-run): New command.
Richard M. Stallman <rms@gnu.org>
parents: 6256
diff changeset
2013
ff41e0e932b8 (comint-run): New command.
Richard M. Stallman <rms@gnu.org>
parents: 6256
diff changeset
2014 This function could be in the list `comint-output-filter-functions'."
32196
219a95f2ef05 (comint-watch-for-password-prompt): Use STRING as a prompt.
Miles Bader <miles@gnu.org>
parents: 31970
diff changeset
2015 (when (string-match comint-password-prompt-regexp string)
44663
0dc61586b801 (comint-watch-for-password-prompt): Remove whitespace
Francesco Potortì <pot@gnu.org>
parents: 44646
diff changeset
2016 (when (string-match "^[ \n\r\t\v\f\b\a]+" string)
0dc61586b801 (comint-watch-for-password-prompt): Remove whitespace
Francesco Potortì <pot@gnu.org>
parents: 44646
diff changeset
2017 (setq string (replace-match "" t t string)))
53391
ab9195f48a6f (comint-watch-for-password-prompt): Pass `string' as
Eli Zaretskii <eliz@is.elta.co.il>
parents: 53272
diff changeset
2018 (send-invisible string)))
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
2019
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2020 ;; Low-level process communication
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
2021
30766
dacf4830a9a0 (comint-send-string, comint-send-region): Make into real functions.
Miles Bader <miles@gnu.org>
parents: 30740
diff changeset
2022 (defun comint-send-string (process string)
54879
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
2023 "Like `process-send-string', but also does extra bookkeeping for Comint mode."
34606
52fc3d972e9c (comint-send-string, comint-send-region): Also accept a buffer, buffer-name,
Miles Bader <miles@gnu.org>
parents: 33182
diff changeset
2024 (if process
52fc3d972e9c (comint-send-string, comint-send-region): Also accept a buffer, buffer-name,
Miles Bader <miles@gnu.org>
parents: 33182
diff changeset
2025 (with-current-buffer (if (processp process)
52fc3d972e9c (comint-send-string, comint-send-region): Also accept a buffer, buffer-name,
Miles Bader <miles@gnu.org>
parents: 33182
diff changeset
2026 (process-buffer process)
52fc3d972e9c (comint-send-string, comint-send-region): Also accept a buffer, buffer-name,
Miles Bader <miles@gnu.org>
parents: 33182
diff changeset
2027 (get-buffer process))
52fc3d972e9c (comint-send-string, comint-send-region): Also accept a buffer, buffer-name,
Miles Bader <miles@gnu.org>
parents: 33182
diff changeset
2028 (comint-snapshot-last-prompt))
30766
dacf4830a9a0 (comint-send-string, comint-send-region): Make into real functions.
Miles Bader <miles@gnu.org>
parents: 30740
diff changeset
2029 (comint-snapshot-last-prompt))
dacf4830a9a0 (comint-send-string, comint-send-region): Make into real functions.
Miles Bader <miles@gnu.org>
parents: 30740
diff changeset
2030 (process-send-string process string))
dacf4830a9a0 (comint-send-string, comint-send-region): Make into real functions.
Miles Bader <miles@gnu.org>
parents: 30740
diff changeset
2031
dacf4830a9a0 (comint-send-string, comint-send-region): Make into real functions.
Miles Bader <miles@gnu.org>
parents: 30740
diff changeset
2032 (defun comint-send-region (process start end)
54879
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
2033 "Like `process-send-region', but also does extra bookkeeping for Comint mode."
34606
52fc3d972e9c (comint-send-string, comint-send-region): Also accept a buffer, buffer-name,
Miles Bader <miles@gnu.org>
parents: 33182
diff changeset
2034 (if process
52fc3d972e9c (comint-send-string, comint-send-region): Also accept a buffer, buffer-name,
Miles Bader <miles@gnu.org>
parents: 33182
diff changeset
2035 (with-current-buffer (if (processp process)
52fc3d972e9c (comint-send-string, comint-send-region): Also accept a buffer, buffer-name,
Miles Bader <miles@gnu.org>
parents: 33182
diff changeset
2036 (process-buffer process)
52fc3d972e9c (comint-send-string, comint-send-region): Also accept a buffer, buffer-name,
Miles Bader <miles@gnu.org>
parents: 33182
diff changeset
2037 (get-buffer process))
52fc3d972e9c (comint-send-string, comint-send-region): Also accept a buffer, buffer-name,
Miles Bader <miles@gnu.org>
parents: 33182
diff changeset
2038 (comint-snapshot-last-prompt))
30766
dacf4830a9a0 (comint-send-string, comint-send-region): Make into real functions.
Miles Bader <miles@gnu.org>
parents: 30740
diff changeset
2039 (comint-snapshot-last-prompt))
dacf4830a9a0 (comint-send-string, comint-send-region): Make into real functions.
Miles Bader <miles@gnu.org>
parents: 30740
diff changeset
2040 (process-send-region process start end))
39713
25d48943cd58 (comint-insert-previous-argument): New function.
Miles Bader <miles@gnu.org>
parents: 39240
diff changeset
2041
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
2042
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2043 ;; Random input hackage
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
2044
32613
6aece997f0f9 (comint-delete-output): Renamed from `comint-kill-output'.
Miles Bader <miles@gnu.org>
parents: 32598
diff changeset
2045 (defun comint-delete-output ()
32631
ba88cc6434f3 (comint-write-output, comint-append-output-to-file): New functions.
Miles Bader <miles@gnu.org>
parents: 32623
diff changeset
2046 "Delete all output from interpreter since last input.
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2047 Does not delete the prompt."
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
2048 (interactive)
6998
40163ff9fc7c (comint-mode): Set comint-last-input-start and
Richard M. Stallman <rms@gnu.org>
parents: 6958
diff changeset
2049 (let ((proc (get-buffer-process (current-buffer)))
55123
a27729919ff1 (comint-delete-output): Bind inhibit-read-only to t.
Luc Teirlinck <teirllm@auburn.edu>
parents: 54879
diff changeset
2050 (replacement nil)
a27729919ff1 (comint-delete-output): Bind inhibit-read-only to t.
Luc Teirlinck <teirllm@auburn.edu>
parents: 54879
diff changeset
2051 (inhibit-read-only t))
6998
40163ff9fc7c (comint-mode): Set comint-last-input-start and
Richard M. Stallman <rms@gnu.org>
parents: 6958
diff changeset
2052 (save-excursion
40163ff9fc7c (comint-mode): Set comint-last-input-start and
Richard M. Stallman <rms@gnu.org>
parents: 6958
diff changeset
2053 (let ((pmark (progn (goto-char (process-mark proc))
32598
b7462e534fdc (comint-output-filter):
Miles Bader <miles@gnu.org>
parents: 32326
diff changeset
2054 (forward-line 0)
6998
40163ff9fc7c (comint-mode): Set comint-last-input-start and
Richard M. Stallman <rms@gnu.org>
parents: 6958
diff changeset
2055 (point-marker))))
40163ff9fc7c (comint-mode): Set comint-last-input-start and
Richard M. Stallman <rms@gnu.org>
parents: 6958
diff changeset
2056 (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
2057 (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
2058 (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
2059 (buffer-substring pmark (point))))
40163ff9fc7c (comint-mode): Set comint-last-input-start and
Richard M. Stallman <rms@gnu.org>
parents: 6958
diff changeset
2060 (delete-region pmark (point))))
40163ff9fc7c (comint-mode): Set comint-last-input-start and
Richard M. Stallman <rms@gnu.org>
parents: 6958
diff changeset
2061 ;; 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
2062 (comint-output-filter proc replacement)))
64570
76a0015820fb (comint-use-prompt-regexp, comint-send-input, comint-source-default,
Juanma Barranquero <lekktu@gmail.com>
parents: 64169
diff changeset
2063 (define-obsolete-function-alias 'comint-kill-output
76a0015820fb (comint-use-prompt-regexp, comint-send-input, comint-source-default,
Juanma Barranquero <lekktu@gmail.com>
parents: 64169
diff changeset
2064 'comint-delete-output "21.1")
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
2065
32635
9a3072529aa5 (comint-write-output): Add APPEND argument. Rework interactive spec.
Miles Bader <miles@gnu.org>
parents: 32633
diff changeset
2066 (defun comint-write-output (filename &optional append mustbenew)
32631
ba88cc6434f3 (comint-write-output, comint-append-output-to-file): New functions.
Miles Bader <miles@gnu.org>
parents: 32623
diff changeset
2067 "Write output from interpreter since last input to FILENAME.
ba88cc6434f3 (comint-write-output, comint-append-output-to-file): New functions.
Miles Bader <miles@gnu.org>
parents: 32623
diff changeset
2068 Any prompt at the end of the output is not written.
ba88cc6434f3 (comint-write-output, comint-append-output-to-file): New functions.
Miles Bader <miles@gnu.org>
parents: 32623
diff changeset
2069
32635
9a3072529aa5 (comint-write-output): Add APPEND argument. Rework interactive spec.
Miles Bader <miles@gnu.org>
parents: 32633
diff changeset
2070 If the optional argument APPEND (the prefix argument when interactive)
9a3072529aa5 (comint-write-output): Add APPEND argument. Rework interactive spec.
Miles Bader <miles@gnu.org>
parents: 32633
diff changeset
2071 is non-nil, the output is appended to the file instead.
9a3072529aa5 (comint-write-output): Add APPEND argument. Rework interactive spec.
Miles Bader <miles@gnu.org>
parents: 32633
diff changeset
2072
9a3072529aa5 (comint-write-output): Add APPEND argument. Rework interactive spec.
Miles Bader <miles@gnu.org>
parents: 32633
diff changeset
2073 If the optional argument MUSTBENEW is non-nil, check for an existing
9a3072529aa5 (comint-write-output): Add APPEND argument. Rework interactive spec.
Miles Bader <miles@gnu.org>
parents: 32633
diff changeset
2074 file with the same name. If MUSTBENEW is `excl', that means to get an
9a3072529aa5 (comint-write-output): Add APPEND argument. Rework interactive spec.
Miles Bader <miles@gnu.org>
parents: 32633
diff changeset
2075 error if the file already exists; never overwrite. If MUSTBENEW is
9a3072529aa5 (comint-write-output): Add APPEND argument. Rework interactive spec.
Miles Bader <miles@gnu.org>
parents: 32633
diff changeset
2076 neither nil nor `excl', that means ask for confirmation before
9a3072529aa5 (comint-write-output): Add APPEND argument. Rework interactive spec.
Miles Bader <miles@gnu.org>
parents: 32633
diff changeset
2077 overwriting, but do go ahead and overwrite the file if the user
9a3072529aa5 (comint-write-output): Add APPEND argument. Rework interactive spec.
Miles Bader <miles@gnu.org>
parents: 32633
diff changeset
2078 confirms. When interactive, MUSTBENEW is nil when appending, and t
9a3072529aa5 (comint-write-output): Add APPEND argument. Rework interactive spec.
Miles Bader <miles@gnu.org>
parents: 32633
diff changeset
2079 otherwise."
9a3072529aa5 (comint-write-output): Add APPEND argument. Rework interactive spec.
Miles Bader <miles@gnu.org>
parents: 32633
diff changeset
2080 (interactive
9a3072529aa5 (comint-write-output): Add APPEND argument. Rework interactive spec.
Miles Bader <miles@gnu.org>
parents: 32633
diff changeset
2081 (list (read-file-name
9a3072529aa5 (comint-write-output): Add APPEND argument. Rework interactive spec.
Miles Bader <miles@gnu.org>
parents: 32633
diff changeset
2082 (if current-prefix-arg
9a3072529aa5 (comint-write-output): Add APPEND argument. Rework interactive spec.
Miles Bader <miles@gnu.org>
parents: 32633
diff changeset
2083 "Append output to file: "
9a3072529aa5 (comint-write-output): Add APPEND argument. Rework interactive spec.
Miles Bader <miles@gnu.org>
parents: 32633
diff changeset
2084 "Write output to file: "))
9a3072529aa5 (comint-write-output): Add APPEND argument. Rework interactive spec.
Miles Bader <miles@gnu.org>
parents: 32633
diff changeset
2085 current-prefix-arg
9a3072529aa5 (comint-write-output): Add APPEND argument. Rework interactive spec.
Miles Bader <miles@gnu.org>
parents: 32633
diff changeset
2086 (not current-prefix-arg)))
32631
ba88cc6434f3 (comint-write-output, comint-append-output-to-file): New functions.
Miles Bader <miles@gnu.org>
parents: 32623
diff changeset
2087 (save-excursion
ba88cc6434f3 (comint-write-output, comint-append-output-to-file): New functions.
Miles Bader <miles@gnu.org>
parents: 32623
diff changeset
2088 (goto-char (process-mark (get-buffer-process (current-buffer))))
ba88cc6434f3 (comint-write-output, comint-append-output-to-file): New functions.
Miles Bader <miles@gnu.org>
parents: 32623
diff changeset
2089 (forward-line 0)
32635
9a3072529aa5 (comint-write-output): Add APPEND argument. Rework interactive spec.
Miles Bader <miles@gnu.org>
parents: 32633
diff changeset
2090 (write-region comint-last-input-end (point) filename
9a3072529aa5 (comint-write-output): Add APPEND argument. Rework interactive spec.
Miles Bader <miles@gnu.org>
parents: 32633
diff changeset
2091 append nil nil mustbenew)))
32631
ba88cc6434f3 (comint-write-output, comint-append-output-to-file): New functions.
Miles Bader <miles@gnu.org>
parents: 32623
diff changeset
2092
32892
25182c4fd302 (comint-mode): Locally set `next-line-add-newlines' to nil.
Miles Bader <miles@gnu.org>
parents: 32852
diff changeset
2093 ;; This function exists for the benefit of the menu; from the keyboard,
25182c4fd302 (comint-mode): Locally set `next-line-add-newlines' to nil.
Miles Bader <miles@gnu.org>
parents: 32852
diff changeset
2094 ;; users can just use `comint-write-output' with a prefix arg.
25182c4fd302 (comint-mode): Locally set `next-line-add-newlines' to nil.
Miles Bader <miles@gnu.org>
parents: 32852
diff changeset
2095 (defun comint-append-output-to-file (filename)
25182c4fd302 (comint-mode): Locally set `next-line-add-newlines' to nil.
Miles Bader <miles@gnu.org>
parents: 32852
diff changeset
2096 "Append output from interpreter since last input to FILENAME.
25182c4fd302 (comint-mode): Locally set `next-line-add-newlines' to nil.
Miles Bader <miles@gnu.org>
parents: 32852
diff changeset
2097 Any prompt at the end of the output is not written."
25182c4fd302 (comint-mode): Locally set `next-line-add-newlines' to nil.
Miles Bader <miles@gnu.org>
parents: 32852
diff changeset
2098 (interactive "fAppend output to file: ")
25182c4fd302 (comint-mode): Locally set `next-line-add-newlines' to nil.
Miles Bader <miles@gnu.org>
parents: 32852
diff changeset
2099 (comint-write-output filename t))
25182c4fd302 (comint-mode): Locally set `next-line-add-newlines' to nil.
Miles Bader <miles@gnu.org>
parents: 32852
diff changeset
2100
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
2101 (defun comint-show-output ()
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
2102 "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
2103 Sets mark to the value of point when this command is run."
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
2104 (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
2105 (push-mark)
30640
6f943008c543 (comint-use-prompt-regexp-instead-of-fields): New variable.
Miles Bader <miles@gnu.org>
parents: 30325
diff changeset
2106 (let ((pos (or (marker-position comint-last-input-end) (point-max))))
61873
1cd2d4d601fa (comint-prompt-regexp, comint-get-old-input)
Luc Teirlinck <teirllm@auburn.edu>
parents: 61592
diff changeset
2107 (cond (comint-use-prompt-regexp
30640
6f943008c543 (comint-use-prompt-regexp-instead-of-fields): New variable.
Miles Bader <miles@gnu.org>
parents: 30325
diff changeset
2108 (goto-char pos)
6f943008c543 (comint-use-prompt-regexp-instead-of-fields): New variable.
Miles Bader <miles@gnu.org>
parents: 30325
diff changeset
2109 (beginning-of-line 0)
6f943008c543 (comint-use-prompt-regexp-instead-of-fields): New variable.
Miles Bader <miles@gnu.org>
parents: 30325
diff changeset
2110 (set-window-start (selected-window) (point))
6f943008c543 (comint-use-prompt-regexp-instead-of-fields): New variable.
Miles Bader <miles@gnu.org>
parents: 30325
diff changeset
2111 (comint-skip-prompt))
6f943008c543 (comint-use-prompt-regexp-instead-of-fields): New variable.
Miles Bader <miles@gnu.org>
parents: 30325
diff changeset
2112 (t
65724
e0ee2d15f961 (comint-show-output): Really set point at the beginning of the output
Romain Francoise <romain@orebokech.com>
parents: 65113
diff changeset
2113 (let* ((beg (field-beginning pos))
e0ee2d15f961 (comint-show-output): Really set point at the beginning of the output
Romain Francoise <romain@orebokech.com>
parents: 65113
diff changeset
2114 (pt (if (= (point-min) beg)
e0ee2d15f961 (comint-show-output): Really set point at the beginning of the output
Romain Francoise <romain@orebokech.com>
parents: 65113
diff changeset
2115 (point-min)
e0ee2d15f961 (comint-show-output): Really set point at the beginning of the output
Romain Francoise <romain@orebokech.com>
parents: 65113
diff changeset
2116 (1+ beg))))
e0ee2d15f961 (comint-show-output): Really set point at the beginning of the output
Romain Francoise <romain@orebokech.com>
parents: 65113
diff changeset
2117 (goto-char pt))
30640
6f943008c543 (comint-use-prompt-regexp-instead-of-fields): New variable.
Miles Bader <miles@gnu.org>
parents: 30325
diff changeset
2118 (set-window-start (selected-window) (point))))))
6f943008c543 (comint-use-prompt-regexp-instead-of-fields): New variable.
Miles Bader <miles@gnu.org>
parents: 30325
diff changeset
2119
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
2120
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
2121 (defun comint-interrupt-subjob ()
20894
962d8c41cfa2 (comint-interrupt-subjob): Call comint-kill-input.
Richard M. Stallman <rms@gnu.org>
parents: 20458
diff changeset
2122 "Interrupt the current subjob.
962d8c41cfa2 (comint-interrupt-subjob): Call comint-kill-input.
Richard M. Stallman <rms@gnu.org>
parents: 20458
diff changeset
2123 This command also kills the pending input
54879
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
2124 between the process mark and point."
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
2125 (interactive)
45836
e4a48b5ab2fb (comint-skip-input): New function.
Richard M. Stallman <rms@gnu.org>
parents: 45826
diff changeset
2126 (comint-skip-input)
51421
79dc5a8eacfe (comint-move-point-for-output): Renamed from
Richard M. Stallman <rms@gnu.org>
parents: 50966
diff changeset
2127 (interrupt-process nil comint-ptyp)
79dc5a8eacfe (comint-move-point-for-output): Renamed from
Richard M. Stallman <rms@gnu.org>
parents: 50966
diff changeset
2128 ;; (process-send-string nil "\n")
53399
9a9d11c249b9 (comint-arguments): Set COUNT after ARGS is complete.
Richard M. Stallman <rms@gnu.org>
parents: 53391
diff changeset
2129 )
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
2130
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
2131 (defun comint-kill-subjob ()
20894
962d8c41cfa2 (comint-interrupt-subjob): Call comint-kill-input.
Richard M. Stallman <rms@gnu.org>
parents: 20458
diff changeset
2132 "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
2133 This command also kills the pending input
54879
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
2134 between the process mark and point."
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
2135 (interactive)
45836
e4a48b5ab2fb (comint-skip-input): New function.
Richard M. Stallman <rms@gnu.org>
parents: 45826
diff changeset
2136 (comint-skip-input)
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
2137 (kill-process nil comint-ptyp))
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
2138
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
2139 (defun comint-quit-subjob ()
20894
962d8c41cfa2 (comint-interrupt-subjob): Call comint-kill-input.
Richard M. Stallman <rms@gnu.org>
parents: 20458
diff changeset
2140 "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
2141 This command also kills the pending input
54879
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
2142 between the process mark and point."
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
2143 (interactive)
45836
e4a48b5ab2fb (comint-skip-input): New function.
Richard M. Stallman <rms@gnu.org>
parents: 45826
diff changeset
2144 (comint-skip-input)
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
2145 (quit-process nil comint-ptyp))
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
2146
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
2147 (defun comint-stop-subjob ()
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
2148 "Stop the current subjob.
20894
962d8c41cfa2 (comint-interrupt-subjob): Call comint-kill-input.
Richard M. Stallman <rms@gnu.org>
parents: 20458
diff changeset
2149 This command also kills the pending input
54879
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
2150 between the process mark and point.
20894
962d8c41cfa2 (comint-interrupt-subjob): Call comint-kill-input.
Richard M. Stallman <rms@gnu.org>
parents: 20458
diff changeset
2151
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
2152 WARNING: if there is no current subjob, you can end up suspending
57419
658b7dadee60 (comint-mouse-insert-input): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56220
diff changeset
2153 the top-level process running in the buffer. If you accidentally do
658b7dadee60 (comint-mouse-insert-input): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56220
diff changeset
2154 this, use \\[comint-continue-subjob] to resume the process. (This
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
2155 is not a problem with most shells, since they ignore this signal.)"
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
2156 (interactive)
45836
e4a48b5ab2fb (comint-skip-input): New function.
Richard M. Stallman <rms@gnu.org>
parents: 45826
diff changeset
2157 (comint-skip-input)
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
2158 (stop-process nil comint-ptyp))
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
2159
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
2160 (defun comint-continue-subjob ()
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
2161 "Send CONT signal to process buffer's process group.
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
2162 Useful if you accidentally suspend the top-level process."
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
2163 (interactive)
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
2164 (continue-process nil comint-ptyp))
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
2165
45836
e4a48b5ab2fb (comint-skip-input): New function.
Richard M. Stallman <rms@gnu.org>
parents: 45826
diff changeset
2166 (defun comint-skip-input ()
e4a48b5ab2fb (comint-skip-input): New function.
Richard M. Stallman <rms@gnu.org>
parents: 45826
diff changeset
2167 "Skip all pending input, from last stuff output by interpreter to point.
e4a48b5ab2fb (comint-skip-input): New function.
Richard M. Stallman <rms@gnu.org>
parents: 45826
diff changeset
2168 This means mark it as if it had been sent as input, without sending it."
e4a48b5ab2fb (comint-skip-input): New function.
Richard M. Stallman <rms@gnu.org>
parents: 45826
diff changeset
2169 (let ((comint-input-sender 'ignore)
e4a48b5ab2fb (comint-skip-input): New function.
Richard M. Stallman <rms@gnu.org>
parents: 45826
diff changeset
2170 (comint-input-filter-functions nil))
61449
a8e7bc540c1c (comint-send-input): New arg ARTIFICIAL. Callers in this file changed.
Richard M. Stallman <rms@gnu.org>
parents: 61404
diff changeset
2171 (comint-send-input t t))
45836
e4a48b5ab2fb (comint-skip-input): New function.
Richard M. Stallman <rms@gnu.org>
parents: 45826
diff changeset
2172 (end-of-line)
e4a48b5ab2fb (comint-skip-input): New function.
Richard M. Stallman <rms@gnu.org>
parents: 45826
diff changeset
2173 (let ((pos (point))
e4a48b5ab2fb (comint-skip-input): New function.
Richard M. Stallman <rms@gnu.org>
parents: 45826
diff changeset
2174 (marker (process-mark (get-buffer-process (current-buffer)))))
e4a48b5ab2fb (comint-skip-input): New function.
Richard M. Stallman <rms@gnu.org>
parents: 45826
diff changeset
2175 (insert " " (key-description (this-command-keys)))
e4a48b5ab2fb (comint-skip-input): New function.
Richard M. Stallman <rms@gnu.org>
parents: 45826
diff changeset
2176 (if (= marker pos)
e4a48b5ab2fb (comint-skip-input): New function.
Richard M. Stallman <rms@gnu.org>
parents: 45826
diff changeset
2177 (set-marker marker (point)))))
e4a48b5ab2fb (comint-skip-input): New function.
Richard M. Stallman <rms@gnu.org>
parents: 45826
diff changeset
2178
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
2179 (defun comint-kill-input ()
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
2180 "Kill all text from last stuff output by interpreter to point."
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
2181 (interactive)
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2182 (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
2183 (if (> (point) (marker-position pmark))
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
2184 (kill-region pmark (point)))))
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
2185
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
2186 (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
2187 "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
2188 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
2189 (interactive "p")
17269
b177ee3c4f0e (comint-delchar-or-maybe-eof): Check for null proc.
Karl Heuer <kwzh@gnu.org>
parents: 17159
diff changeset
2190 (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
2191 (if (and (eobp) proc (= (point) (marker-position (process-mark proc))))
30731
4ce2b3d23348 (comint-highlight-prompt, comint-highlight-prompt-face)
Miles Bader <miles@gnu.org>
parents: 30694
diff changeset
2192 (comint-send-eof)
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
2193 (delete-char arg))))
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
2194
4112
ab7dee78e335 (comint-{next,prev}-prompt, comint-send-eof): New functions.
Roland McGrath <roland@gnu.org>
parents: 3985
diff changeset
2195 (defun comint-send-eof ()
ab7dee78e335 (comint-{next,prev}-prompt, comint-send-eof): New functions.
Roland McGrath <roland@gnu.org>
parents: 3985
diff changeset
2196 "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
2197 (interactive)
61449
a8e7bc540c1c (comint-send-input): New arg ARTIFICIAL. Callers in this file changed.
Richard M. Stallman <rms@gnu.org>
parents: 61404
diff changeset
2198 (comint-send-input t t)
4112
ab7dee78e335 (comint-{next,prev}-prompt, comint-send-eof): New functions.
Roland McGrath <roland@gnu.org>
parents: 3985
diff changeset
2199 (process-send-eof))
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
2200
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2201
54879
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
2202 (defun comint-backward-matching-input (regexp n)
30640
6f943008c543 (comint-use-prompt-regexp-instead-of-fields): New variable.
Miles Bader <miles@gnu.org>
parents: 30325
diff changeset
2203 "Search backward through buffer for input fields that match REGEXP.
61873
1cd2d4d601fa (comint-prompt-regexp, comint-get-old-input)
Luc Teirlinck <teirllm@auburn.edu>
parents: 61592
diff changeset
2204 If `comint-use-prompt-regexp' is non-nil, then input fields are identified
1cd2d4d601fa (comint-prompt-regexp, comint-get-old-input)
Luc Teirlinck <teirllm@auburn.edu>
parents: 61592
diff changeset
2205 by lines that match `comint-prompt-regexp'.
30640
6f943008c543 (comint-use-prompt-regexp-instead-of-fields): New variable.
Miles Bader <miles@gnu.org>
parents: 30325
diff changeset
2206
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2207 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
2208 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
2209 (interactive (comint-regexp-arg "Backward input matching (regexp): "))
61873
1cd2d4d601fa (comint-prompt-regexp, comint-get-old-input)
Luc Teirlinck <teirllm@auburn.edu>
parents: 61592
diff changeset
2210 (if comint-use-prompt-regexp
30640
6f943008c543 (comint-use-prompt-regexp-instead-of-fields): New variable.
Miles Bader <miles@gnu.org>
parents: 30325
diff changeset
2211 ;; Use comint-prompt-regexp
6f943008c543 (comint-use-prompt-regexp-instead-of-fields): New variable.
Miles Bader <miles@gnu.org>
parents: 30325
diff changeset
2212 (let* ((re (concat comint-prompt-regexp ".*" regexp))
54879
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
2213 (pos (save-excursion (end-of-line (if (> n 0) 0 1))
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
2214 (if (re-search-backward re nil t n)
30640
6f943008c543 (comint-use-prompt-regexp-instead-of-fields): New variable.
Miles Bader <miles@gnu.org>
parents: 30325
diff changeset
2215 (point)))))
6f943008c543 (comint-use-prompt-regexp-instead-of-fields): New variable.
Miles Bader <miles@gnu.org>
parents: 30325
diff changeset
2216 (if (null pos)
6f943008c543 (comint-use-prompt-regexp-instead-of-fields): New variable.
Miles Bader <miles@gnu.org>
parents: 30325
diff changeset
2217 (progn (message "Not found")
6f943008c543 (comint-use-prompt-regexp-instead-of-fields): New variable.
Miles Bader <miles@gnu.org>
parents: 30325
diff changeset
2218 (ding))
6f943008c543 (comint-use-prompt-regexp-instead-of-fields): New variable.
Miles Bader <miles@gnu.org>
parents: 30325
diff changeset
2219 (goto-char pos)
6f943008c543 (comint-use-prompt-regexp-instead-of-fields): New variable.
Miles Bader <miles@gnu.org>
parents: 30325
diff changeset
2220 (comint-bol nil)))
6f943008c543 (comint-use-prompt-regexp-instead-of-fields): New variable.
Miles Bader <miles@gnu.org>
parents: 30325
diff changeset
2221 ;; Use input fields
54879
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
2222 (let* ((dir (if (< n 0) -1 1))
30640
6f943008c543 (comint-use-prompt-regexp-instead-of-fields): New variable.
Miles Bader <miles@gnu.org>
parents: 30325
diff changeset
2223 (pos
6f943008c543 (comint-use-prompt-regexp-instead-of-fields): New variable.
Miles Bader <miles@gnu.org>
parents: 30325
diff changeset
2224 (save-excursion
54879
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
2225 (while (/= n 0)
30640
6f943008c543 (comint-use-prompt-regexp-instead-of-fields): New variable.
Miles Bader <miles@gnu.org>
parents: 30325
diff changeset
2226 (unless (re-search-backward regexp nil t dir)
6f943008c543 (comint-use-prompt-regexp-instead-of-fields): New variable.
Miles Bader <miles@gnu.org>
parents: 30325
diff changeset
2227 (error "Not found"))
6f943008c543 (comint-use-prompt-regexp-instead-of-fields): New variable.
Miles Bader <miles@gnu.org>
parents: 30325
diff changeset
2228 (when (eq (get-char-property (point) 'field) 'input)
54879
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
2229 (setq n (- n dir))))
30640
6f943008c543 (comint-use-prompt-regexp-instead-of-fields): New variable.
Miles Bader <miles@gnu.org>
parents: 30325
diff changeset
2230 (field-beginning))))
6f943008c543 (comint-use-prompt-regexp-instead-of-fields): New variable.
Miles Bader <miles@gnu.org>
parents: 30325
diff changeset
2231 (goto-char pos))))
6f943008c543 (comint-use-prompt-regexp-instead-of-fields): New variable.
Miles Bader <miles@gnu.org>
parents: 30325
diff changeset
2232
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2233
64570
76a0015820fb (comint-use-prompt-regexp, comint-send-input, comint-source-default,
Juanma Barranquero <lekktu@gmail.com>
parents: 64169
diff changeset
2234 (defun comint-forward-matching-input (regexp n)
30640
6f943008c543 (comint-use-prompt-regexp-instead-of-fields): New variable.
Miles Bader <miles@gnu.org>
parents: 30325
diff changeset
2235 "Search forward through buffer for input fields that match REGEXP.
61873
1cd2d4d601fa (comint-prompt-regexp, comint-get-old-input)
Luc Teirlinck <teirllm@auburn.edu>
parents: 61592
diff changeset
2236 If `comint-use-prompt-regexp' is non-nil, then input fields are identified
1cd2d4d601fa (comint-prompt-regexp, comint-get-old-input)
Luc Teirlinck <teirllm@auburn.edu>
parents: 61592
diff changeset
2237 by lines that match `comint-prompt-regexp'.
30640
6f943008c543 (comint-use-prompt-regexp-instead-of-fields): New variable.
Miles Bader <miles@gnu.org>
parents: 30325
diff changeset
2238
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2239 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
2240 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
2241 (interactive (comint-regexp-arg "Forward input matching (regexp): "))
64570
76a0015820fb (comint-use-prompt-regexp, comint-send-input, comint-source-default,
Juanma Barranquero <lekktu@gmail.com>
parents: 64169
diff changeset
2242 (comint-backward-matching-input regexp (- n)))
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2243
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2244
4112
ab7dee78e335 (comint-{next,prev}-prompt, comint-send-eof): New functions.
Roland McGrath <roland@gnu.org>
parents: 3985
diff changeset
2245 (defun comint-next-prompt (n)
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2246 "Move to end of Nth next prompt in the buffer.
61873
1cd2d4d601fa (comint-prompt-regexp, comint-get-old-input)
Luc Teirlinck <teirllm@auburn.edu>
parents: 61592
diff changeset
2247 If `comint-use-prompt-regexp' is nil, then this means the beginning of
1cd2d4d601fa (comint-prompt-regexp, comint-get-old-input)
Luc Teirlinck <teirllm@auburn.edu>
parents: 61592
diff changeset
2248 the Nth next `input' field, otherwise, it means the Nth occurrence of
1cd2d4d601fa (comint-prompt-regexp, comint-get-old-input)
Luc Teirlinck <teirllm@auburn.edu>
parents: 61592
diff changeset
2249 text matching `comint-prompt-regexp'."
4112
ab7dee78e335 (comint-{next,prev}-prompt, comint-send-eof): New functions.
Roland McGrath <roland@gnu.org>
parents: 3985
diff changeset
2250 (interactive "p")
61873
1cd2d4d601fa (comint-prompt-regexp, comint-get-old-input)
Luc Teirlinck <teirllm@auburn.edu>
parents: 61592
diff changeset
2251 (if comint-use-prompt-regexp
30640
6f943008c543 (comint-use-prompt-regexp-instead-of-fields): New variable.
Miles Bader <miles@gnu.org>
parents: 30325
diff changeset
2252 ;; Use comint-prompt-regexp
6f943008c543 (comint-use-prompt-regexp-instead-of-fields): New variable.
Miles Bader <miles@gnu.org>
parents: 30325
diff changeset
2253 (let ((paragraph-start comint-prompt-regexp))
6f943008c543 (comint-use-prompt-regexp-instead-of-fields): New variable.
Miles Bader <miles@gnu.org>
parents: 30325
diff changeset
2254 (end-of-line (if (> n 0) 1 0))
6f943008c543 (comint-use-prompt-regexp-instead-of-fields): New variable.
Miles Bader <miles@gnu.org>
parents: 30325
diff changeset
2255 (forward-paragraph n)
6f943008c543 (comint-use-prompt-regexp-instead-of-fields): New variable.
Miles Bader <miles@gnu.org>
parents: 30325
diff changeset
2256 (comint-skip-prompt))
6f943008c543 (comint-use-prompt-regexp-instead-of-fields): New variable.
Miles Bader <miles@gnu.org>
parents: 30325
diff changeset
2257 ;; Use input fields
6f943008c543 (comint-use-prompt-regexp-instead-of-fields): New variable.
Miles Bader <miles@gnu.org>
parents: 30325
diff changeset
2258 (let ((pos (point))
38977
3037adea8353 (comint-next-prompt): Don't loop infinitely if
Miles Bader <miles@gnu.org>
parents: 38971
diff changeset
2259 (input-pos nil)
3037adea8353 (comint-next-prompt): Don't loop infinitely if
Miles Bader <miles@gnu.org>
parents: 38971
diff changeset
2260 prev-pos)
30640
6f943008c543 (comint-use-prompt-regexp-instead-of-fields): New variable.
Miles Bader <miles@gnu.org>
parents: 30325
diff changeset
2261 (while (/= n 0)
38977
3037adea8353 (comint-next-prompt): Don't loop infinitely if
Miles Bader <miles@gnu.org>
parents: 38971
diff changeset
2262 (setq prev-pos pos)
30640
6f943008c543 (comint-use-prompt-regexp-instead-of-fields): New variable.
Miles Bader <miles@gnu.org>
parents: 30325
diff changeset
2263 (setq pos
6f943008c543 (comint-use-prompt-regexp-instead-of-fields): New variable.
Miles Bader <miles@gnu.org>
parents: 30325
diff changeset
2264 (if (> n 0)
6f943008c543 (comint-use-prompt-regexp-instead-of-fields): New variable.
Miles Bader <miles@gnu.org>
parents: 30325
diff changeset
2265 (next-single-char-property-change pos 'field)
6f943008c543 (comint-use-prompt-regexp-instead-of-fields): New variable.
Miles Bader <miles@gnu.org>
parents: 30325
diff changeset
2266 (previous-single-char-property-change pos 'field)))
38977
3037adea8353 (comint-next-prompt): Don't loop infinitely if
Miles Bader <miles@gnu.org>
parents: 38971
diff changeset
2267 (cond ((or (null pos) (= pos prev-pos))
30640
6f943008c543 (comint-use-prompt-regexp-instead-of-fields): New variable.
Miles Bader <miles@gnu.org>
parents: 30325
diff changeset
2268 ;; Ran off the end of the buffer.
38977
3037adea8353 (comint-next-prompt): Don't loop infinitely if
Miles Bader <miles@gnu.org>
parents: 38971
diff changeset
2269 (when (> n 0)
3037adea8353 (comint-next-prompt): Don't loop infinitely if
Miles Bader <miles@gnu.org>
parents: 38971
diff changeset
2270 ;; There's always an input field at the end of the
3037adea8353 (comint-next-prompt): Don't loop infinitely if
Miles Bader <miles@gnu.org>
parents: 38971
diff changeset
2271 ;; buffer, but it has a `field' property of nil.
3037adea8353 (comint-next-prompt): Don't loop infinitely if
Miles Bader <miles@gnu.org>
parents: 38971
diff changeset
2272 (setq input-pos (point-max)))
3037adea8353 (comint-next-prompt): Don't loop infinitely if
Miles Bader <miles@gnu.org>
parents: 38971
diff changeset
2273 ;; stop iterating
30640
6f943008c543 (comint-use-prompt-regexp-instead-of-fields): New variable.
Miles Bader <miles@gnu.org>
parents: 30325
diff changeset
2274 (setq n 0))
6f943008c543 (comint-use-prompt-regexp-instead-of-fields): New variable.
Miles Bader <miles@gnu.org>
parents: 30325
diff changeset
2275 ((eq (get-char-property pos 'field) 'input)
6f943008c543 (comint-use-prompt-regexp-instead-of-fields): New variable.
Miles Bader <miles@gnu.org>
parents: 30325
diff changeset
2276 (setq n (if (< n 0) (1+ n) (1- n)))
6f943008c543 (comint-use-prompt-regexp-instead-of-fields): New variable.
Miles Bader <miles@gnu.org>
parents: 30325
diff changeset
2277 (setq input-pos pos))))
6f943008c543 (comint-use-prompt-regexp-instead-of-fields): New variable.
Miles Bader <miles@gnu.org>
parents: 30325
diff changeset
2278 (when input-pos
6f943008c543 (comint-use-prompt-regexp-instead-of-fields): New variable.
Miles Bader <miles@gnu.org>
parents: 30325
diff changeset
2279 (goto-char input-pos)))))
6f943008c543 (comint-use-prompt-regexp-instead-of-fields): New variable.
Miles Bader <miles@gnu.org>
parents: 30325
diff changeset
2280
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
2281
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2282 (defun comint-previous-prompt (n)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2283 "Move to end of Nth previous prompt in the buffer.
61873
1cd2d4d601fa (comint-prompt-regexp, comint-get-old-input)
Luc Teirlinck <teirllm@auburn.edu>
parents: 61592
diff changeset
2284 If `comint-use-prompt-regexp' is nil, then this means the beginning of
1cd2d4d601fa (comint-prompt-regexp, comint-get-old-input)
Luc Teirlinck <teirllm@auburn.edu>
parents: 61592
diff changeset
2285 the Nth previous `input' field, otherwise, it means the Nth occurrence of
1cd2d4d601fa (comint-prompt-regexp, comint-get-old-input)
Luc Teirlinck <teirllm@auburn.edu>
parents: 61592
diff changeset
2286 text matching `comint-prompt-regexp'."
4112
ab7dee78e335 (comint-{next,prev}-prompt, comint-send-eof): New functions.
Roland McGrath <roland@gnu.org>
parents: 3985
diff changeset
2287 (interactive "p")
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2288 (comint-next-prompt (- n)))
39713
25d48943cd58 (comint-insert-previous-argument): New function.
Miles Bader <miles@gnu.org>
parents: 39240
diff changeset
2289
25d48943cd58 (comint-insert-previous-argument): New function.
Miles Bader <miles@gnu.org>
parents: 39240
diff changeset
2290 ;; State used by `comint-insert-previous-argument' when cycling.
25d48943cd58 (comint-insert-previous-argument): New function.
Miles Bader <miles@gnu.org>
parents: 39240
diff changeset
2291 (defvar comint-insert-previous-argument-last-start-pos nil)
25d48943cd58 (comint-insert-previous-argument): New function.
Miles Bader <miles@gnu.org>
parents: 39240
diff changeset
2292 (make-variable-buffer-local 'comint-insert-previous-argument-last-start-pos)
25d48943cd58 (comint-insert-previous-argument): New function.
Miles Bader <miles@gnu.org>
parents: 39240
diff changeset
2293 (defvar comint-insert-previous-argument-last-index nil)
25d48943cd58 (comint-insert-previous-argument): New function.
Miles Bader <miles@gnu.org>
parents: 39240
diff changeset
2294 (make-variable-buffer-local 'comint-insert-previous-argument-last-index)
25d48943cd58 (comint-insert-previous-argument): New function.
Miles Bader <miles@gnu.org>
parents: 39240
diff changeset
2295
25d48943cd58 (comint-insert-previous-argument): New function.
Miles Bader <miles@gnu.org>
parents: 39240
diff changeset
2296 ;; Needs fixing:
25d48943cd58 (comint-insert-previous-argument): New function.
Miles Bader <miles@gnu.org>
parents: 39240
diff changeset
2297 ;; make comint-arguments understand negative indices as bash does
25d48943cd58 (comint-insert-previous-argument): New function.
Miles Bader <miles@gnu.org>
parents: 39240
diff changeset
2298 (defun comint-insert-previous-argument (index)
54879
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
2299 "Insert the INDEXth argument from the previous Comint command-line at point.
39713
25d48943cd58 (comint-insert-previous-argument): New function.
Miles Bader <miles@gnu.org>
parents: 39240
diff changeset
2300 Spaces are added at beginning and/or end of the inserted string if
25d48943cd58 (comint-insert-previous-argument): New function.
Miles Bader <miles@gnu.org>
parents: 39240
diff changeset
2301 necessary to ensure that it's separated from adjacent arguments.
25d48943cd58 (comint-insert-previous-argument): New function.
Miles Bader <miles@gnu.org>
parents: 39240
diff changeset
2302 Interactively, if no prefix argument is given, the last argument is inserted.
25d48943cd58 (comint-insert-previous-argument): New function.
Miles Bader <miles@gnu.org>
parents: 39240
diff changeset
2303 Repeated interactive invocations will cycle through the same argument
25d48943cd58 (comint-insert-previous-argument): New function.
Miles Bader <miles@gnu.org>
parents: 39240
diff changeset
2304 from progressively earlier commands (using the value of INDEX specified
25d48943cd58 (comint-insert-previous-argument): New function.
Miles Bader <miles@gnu.org>
parents: 39240
diff changeset
2305 with the first command).
25d48943cd58 (comint-insert-previous-argument): New function.
Miles Bader <miles@gnu.org>
parents: 39240
diff changeset
2306 This command is like `M-.' in bash."
25d48943cd58 (comint-insert-previous-argument): New function.
Miles Bader <miles@gnu.org>
parents: 39240
diff changeset
2307 (interactive "P")
25d48943cd58 (comint-insert-previous-argument): New function.
Miles Bader <miles@gnu.org>
parents: 39240
diff changeset
2308 (unless (null index)
25d48943cd58 (comint-insert-previous-argument): New function.
Miles Bader <miles@gnu.org>
parents: 39240
diff changeset
2309 (setq index (prefix-numeric-value index)))
25d48943cd58 (comint-insert-previous-argument): New function.
Miles Bader <miles@gnu.org>
parents: 39240
diff changeset
2310 (cond ((eq last-command this-command)
25d48943cd58 (comint-insert-previous-argument): New function.
Miles Bader <miles@gnu.org>
parents: 39240
diff changeset
2311 ;; Delete last input inserted by this command.
25d48943cd58 (comint-insert-previous-argument): New function.
Miles Bader <miles@gnu.org>
parents: 39240
diff changeset
2312 (delete-region comint-insert-previous-argument-last-start-pos (point))
25d48943cd58 (comint-insert-previous-argument): New function.
Miles Bader <miles@gnu.org>
parents: 39240
diff changeset
2313 (setq index comint-insert-previous-argument-last-index))
25d48943cd58 (comint-insert-previous-argument): New function.
Miles Bader <miles@gnu.org>
parents: 39240
diff changeset
2314 (t
25d48943cd58 (comint-insert-previous-argument): New function.
Miles Bader <miles@gnu.org>
parents: 39240
diff changeset
2315 ;; This is a non-repeat invocation, so initialize state.
25d48943cd58 (comint-insert-previous-argument): New function.
Miles Bader <miles@gnu.org>
parents: 39240
diff changeset
2316 (setq comint-input-ring-index nil)
25d48943cd58 (comint-insert-previous-argument): New function.
Miles Bader <miles@gnu.org>
parents: 39240
diff changeset
2317 (setq comint-insert-previous-argument-last-index index)
25d48943cd58 (comint-insert-previous-argument): New function.
Miles Bader <miles@gnu.org>
parents: 39240
diff changeset
2318 (when (null comint-insert-previous-argument-last-start-pos)
25d48943cd58 (comint-insert-previous-argument): New function.
Miles Bader <miles@gnu.org>
parents: 39240
diff changeset
2319 ;; First usage; initialize to a marker
25d48943cd58 (comint-insert-previous-argument): New function.
Miles Bader <miles@gnu.org>
parents: 39240
diff changeset
2320 (setq comint-insert-previous-argument-last-start-pos
25d48943cd58 (comint-insert-previous-argument): New function.
Miles Bader <miles@gnu.org>
parents: 39240
diff changeset
2321 (make-marker)))))
25d48943cd58 (comint-insert-previous-argument): New function.
Miles Bader <miles@gnu.org>
parents: 39240
diff changeset
2322 ;; Make sure we're not in the prompt, and add a beginning space if necess.
25d48943cd58 (comint-insert-previous-argument): New function.
Miles Bader <miles@gnu.org>
parents: 39240
diff changeset
2323 (if (<= (point) (comint-line-beginning-position))
25d48943cd58 (comint-insert-previous-argument): New function.
Miles Bader <miles@gnu.org>
parents: 39240
diff changeset
2324 (comint-bol)
25d48943cd58 (comint-insert-previous-argument): New function.
Miles Bader <miles@gnu.org>
parents: 39240
diff changeset
2325 (just-one-space))
25d48943cd58 (comint-insert-previous-argument): New function.
Miles Bader <miles@gnu.org>
parents: 39240
diff changeset
2326 ;; Remember the beginning of what we insert, so we can delete it if
25d48943cd58 (comint-insert-previous-argument): New function.
Miles Bader <miles@gnu.org>
parents: 39240
diff changeset
2327 ;; the command is repeated.
25d48943cd58 (comint-insert-previous-argument): New function.
Miles Bader <miles@gnu.org>
parents: 39240
diff changeset
2328 (set-marker comint-insert-previous-argument-last-start-pos (point))
25d48943cd58 (comint-insert-previous-argument): New function.
Miles Bader <miles@gnu.org>
parents: 39240
diff changeset
2329 ;; Insert the argument.
25d48943cd58 (comint-insert-previous-argument): New function.
Miles Bader <miles@gnu.org>
parents: 39240
diff changeset
2330 (let ((input-string (comint-previous-input-string 0)))
25d48943cd58 (comint-insert-previous-argument): New function.
Miles Bader <miles@gnu.org>
parents: 39240
diff changeset
2331 (when (string-match "[ \t\n]*&" input-string)
25d48943cd58 (comint-insert-previous-argument): New function.
Miles Bader <miles@gnu.org>
parents: 39240
diff changeset
2332 ;; strip terminating '&'
25d48943cd58 (comint-insert-previous-argument): New function.
Miles Bader <miles@gnu.org>
parents: 39240
diff changeset
2333 (setq input-string (substring input-string 0 (match-beginning 0))))
25d48943cd58 (comint-insert-previous-argument): New function.
Miles Bader <miles@gnu.org>
parents: 39240
diff changeset
2334 (insert (comint-arguments input-string index index)))
25d48943cd58 (comint-insert-previous-argument): New function.
Miles Bader <miles@gnu.org>
parents: 39240
diff changeset
2335 ;; Make next invocation return arg from previous input
25d48943cd58 (comint-insert-previous-argument): New function.
Miles Bader <miles@gnu.org>
parents: 39240
diff changeset
2336 (setq comint-input-ring-index (1+ (or comint-input-ring-index 0)))
25d48943cd58 (comint-insert-previous-argument): New function.
Miles Bader <miles@gnu.org>
parents: 39240
diff changeset
2337 ;; Add a terminating space if necessary.
25d48943cd58 (comint-insert-previous-argument): New function.
Miles Bader <miles@gnu.org>
parents: 39240
diff changeset
2338 (unless (eolp)
25d48943cd58 (comint-insert-previous-argument): New function.
Miles Bader <miles@gnu.org>
parents: 39240
diff changeset
2339 (just-one-space)))
25d48943cd58 (comint-insert-previous-argument): New function.
Miles Bader <miles@gnu.org>
parents: 39240
diff changeset
2340
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
2341
55295
16abc166af9d (comint-prompt-read-only): Update docstring.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55223
diff changeset
2342 ;; Support editing with `comint-prompt-read-only' set to t.
16abc166af9d (comint-prompt-read-only): Update docstring.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55223
diff changeset
2343
16abc166af9d (comint-prompt-read-only): Update docstring.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55223
diff changeset
2344 (defun comint-update-fence ()
16abc166af9d (comint-prompt-read-only): Update docstring.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55223
diff changeset
2345 "Update read-only status of newline before point.
16abc166af9d (comint-prompt-read-only): Update docstring.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55223
diff changeset
2346 The `fence' read-only property is used to indicate that a newline
16abc166af9d (comint-prompt-read-only): Update docstring.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55223
diff changeset
2347 is read-only for no other reason than to \"fence off\" a
16abc166af9d (comint-prompt-read-only): Update docstring.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55223
diff changeset
2348 following front-sticky read-only region. This is used to
16abc166af9d (comint-prompt-read-only): Update docstring.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55223
diff changeset
2349 implement comint read-only prompts. If the text after a newline
16abc166af9d (comint-prompt-read-only): Update docstring.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55223
diff changeset
2350 changes, the read-only status of that newline may need updating.
16abc166af9d (comint-prompt-read-only): Update docstring.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55223
diff changeset
2351 That is what this function does.
16abc166af9d (comint-prompt-read-only): Update docstring.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55223
diff changeset
2352
16abc166af9d (comint-prompt-read-only): Update docstring.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55223
diff changeset
2353 This function does nothing if point is not at the beginning of a
16abc166af9d (comint-prompt-read-only): Update docstring.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55223
diff changeset
2354 line, or is at the beginning of the accessible portion of the buffer.
16abc166af9d (comint-prompt-read-only): Update docstring.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55223
diff changeset
2355 Otherwise, if the character after point has a front-sticky
16abc166af9d (comint-prompt-read-only): Update docstring.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55223
diff changeset
2356 read-only property, then the preceding newline is given a
16abc166af9d (comint-prompt-read-only): Update docstring.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55223
diff changeset
2357 read-only property of `fence', unless it already is read-only.
16abc166af9d (comint-prompt-read-only): Update docstring.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55223
diff changeset
2358 If the character after point does not have a front-sticky
16abc166af9d (comint-prompt-read-only): Update docstring.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55223
diff changeset
2359 read-only property, any read-only property of `fence' on the
16abc166af9d (comint-prompt-read-only): Update docstring.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55223
diff changeset
2360 preceding newline is removed."
55881
79a700a71463 (comint-replace-by-expanded-history-before-point):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55295
diff changeset
2361 (let* ((pt (point)) (lst (get-text-property pt 'front-sticky))
79a700a71463 (comint-replace-by-expanded-history-before-point):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55295
diff changeset
2362 (inhibit-modification-hooks t))
55295
16abc166af9d (comint-prompt-read-only): Update docstring.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55223
diff changeset
2363 (and (bolp)
16abc166af9d (comint-prompt-read-only): Update docstring.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55223
diff changeset
2364 (not (bobp))
16abc166af9d (comint-prompt-read-only): Update docstring.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55223
diff changeset
2365 (if (and (get-text-property pt 'read-only)
16abc166af9d (comint-prompt-read-only): Update docstring.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55223
diff changeset
2366 (if (listp lst) (memq 'read-only lst) t))
16abc166af9d (comint-prompt-read-only): Update docstring.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55223
diff changeset
2367 (unless (get-text-property (1- pt) 'read-only)
16abc166af9d (comint-prompt-read-only): Update docstring.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55223
diff changeset
2368 (put-text-property (1- pt) pt 'read-only 'fence))
16abc166af9d (comint-prompt-read-only): Update docstring.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55223
diff changeset
2369 (when (eq (get-text-property (1- pt) 'read-only) 'fence)
16abc166af9d (comint-prompt-read-only): Update docstring.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55223
diff changeset
2370 (remove-list-of-text-properties (1- pt) pt '(read-only)))))))
16abc166af9d (comint-prompt-read-only): Update docstring.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55223
diff changeset
2371
70963
098d9b195f6e (comint-kill-whole-line): Rename arg to count. Fix
Reiner Steib <Reiner.Steib@gmx.de>
parents: 70575
diff changeset
2372 (defun comint-kill-whole-line (&optional count)
55295
16abc166af9d (comint-prompt-read-only): Update docstring.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55223
diff changeset
2373 "Kill current line, ignoring read-only and field properties.
70963
098d9b195f6e (comint-kill-whole-line): Rename arg to count. Fix
Reiner Steib <Reiner.Steib@gmx.de>
parents: 70575
diff changeset
2374 With prefix arg COUNT, kill that many lines starting from the current line.
098d9b195f6e (comint-kill-whole-line): Rename arg to count. Fix
Reiner Steib <Reiner.Steib@gmx.de>
parents: 70575
diff changeset
2375 If COUNT is negative, kill backward. Also kill the preceding newline,
57419
658b7dadee60 (comint-mouse-insert-input): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56220
diff changeset
2376 instead of the trailing one. \(This is meant to make \\[repeat] work well
55295
16abc166af9d (comint-prompt-read-only): Update docstring.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55223
diff changeset
2377 with negative arguments.)
70963
098d9b195f6e (comint-kill-whole-line): Rename arg to count. Fix
Reiner Steib <Reiner.Steib@gmx.de>
parents: 70575
diff changeset
2378 If COUNT is zero, kill current line but exclude the trailing newline.
55295
16abc166af9d (comint-prompt-read-only): Update docstring.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55223
diff changeset
2379 The read-only status of newlines is updated with `comint-update-fence',
16abc166af9d (comint-prompt-read-only): Update docstring.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55223
diff changeset
2380 if necessary."
16abc166af9d (comint-prompt-read-only): Update docstring.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55223
diff changeset
2381 (interactive "p")
16abc166af9d (comint-prompt-read-only): Update docstring.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55223
diff changeset
2382 (let ((inhibit-read-only t) (inhibit-field-text-motion t))
70963
098d9b195f6e (comint-kill-whole-line): Rename arg to count. Fix
Reiner Steib <Reiner.Steib@gmx.de>
parents: 70575
diff changeset
2383 (kill-whole-line count)
098d9b195f6e (comint-kill-whole-line): Rename arg to count. Fix
Reiner Steib <Reiner.Steib@gmx.de>
parents: 70575
diff changeset
2384 (when (>= count 0) (comint-update-fence))))
55295
16abc166af9d (comint-prompt-read-only): Update docstring.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55223
diff changeset
2385
16abc166af9d (comint-prompt-read-only): Update docstring.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55223
diff changeset
2386 (defun comint-kill-region (beg end &optional yank-handler)
16abc166af9d (comint-prompt-read-only): Update docstring.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55223
diff changeset
2387 "Like `kill-region', but ignores read-only properties, if safe.
16abc166af9d (comint-prompt-read-only): Update docstring.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55223
diff changeset
2388 This command assumes that the buffer contains read-only
16abc166af9d (comint-prompt-read-only): Update docstring.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55223
diff changeset
2389 \"prompts\" which are regions with front-sticky read-only
16abc166af9d (comint-prompt-read-only): Update docstring.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55223
diff changeset
2390 properties at the beginning of a line, with the preceding newline
16abc166af9d (comint-prompt-read-only): Update docstring.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55223
diff changeset
2391 being read-only to protect the prompt. This is true of the
16abc166af9d (comint-prompt-read-only): Update docstring.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55223
diff changeset
2392 comint prompts if `comint-prompt-read-only' is non-nil. This
16abc166af9d (comint-prompt-read-only): Update docstring.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55223
diff changeset
2393 command will not delete the region if this would create mutilated
16abc166af9d (comint-prompt-read-only): Update docstring.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55223
diff changeset
2394 or out of place prompts. That is, if any part of a prompt is
16abc166af9d (comint-prompt-read-only): Update docstring.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55223
diff changeset
2395 deleted, the entire prompt must be deleted and all remaining
16abc166af9d (comint-prompt-read-only): Update docstring.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55223
diff changeset
2396 prompts should stay at the beginning of a line. If this is not
16abc166af9d (comint-prompt-read-only): Update docstring.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55223
diff changeset
2397 the case, this command just calls `kill-region' with all
16abc166af9d (comint-prompt-read-only): Update docstring.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55223
diff changeset
2398 read-only properties intact. The read-only status of newlines is
16abc166af9d (comint-prompt-read-only): Update docstring.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55223
diff changeset
2399 updated using `comint-update-fence', if necessary."
16abc166af9d (comint-prompt-read-only): Update docstring.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55223
diff changeset
2400 (interactive "r")
16abc166af9d (comint-prompt-read-only): Update docstring.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55223
diff changeset
2401 (save-excursion
16abc166af9d (comint-prompt-read-only): Update docstring.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55223
diff changeset
2402 (let* ((true-beg (min beg end))
16abc166af9d (comint-prompt-read-only): Update docstring.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55223
diff changeset
2403 (true-end (max beg end))
16abc166af9d (comint-prompt-read-only): Update docstring.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55223
diff changeset
2404 (beg-bolp (progn (goto-char true-beg) (bolp)))
16abc166af9d (comint-prompt-read-only): Update docstring.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55223
diff changeset
2405 (beg-lst (get-text-property true-beg 'front-sticky))
16abc166af9d (comint-prompt-read-only): Update docstring.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55223
diff changeset
2406 (beg-bad (and (get-text-property true-beg 'read-only)
16abc166af9d (comint-prompt-read-only): Update docstring.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55223
diff changeset
2407 (if (listp beg-lst) (memq 'read-only beg-lst) t)))
16abc166af9d (comint-prompt-read-only): Update docstring.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55223
diff changeset
2408 (end-bolp (progn (goto-char true-end) (bolp)))
16abc166af9d (comint-prompt-read-only): Update docstring.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55223
diff changeset
2409 (end-lst (get-text-property true-end 'front-sticky))
16abc166af9d (comint-prompt-read-only): Update docstring.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55223
diff changeset
2410 (end-bad (and (get-text-property true-end 'read-only)
16abc166af9d (comint-prompt-read-only): Update docstring.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55223
diff changeset
2411 (if (listp end-lst) (memq 'read-only end-lst) t))))
16abc166af9d (comint-prompt-read-only): Update docstring.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55223
diff changeset
2412 (if (or (and (not beg-bolp) (or beg-bad end-bad))
16abc166af9d (comint-prompt-read-only): Update docstring.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55223
diff changeset
2413 (and (not end-bolp) end-bad))
16abc166af9d (comint-prompt-read-only): Update docstring.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55223
diff changeset
2414 (kill-region beg end yank-handler)
16abc166af9d (comint-prompt-read-only): Update docstring.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55223
diff changeset
2415 (let ((inhibit-read-only t))
16abc166af9d (comint-prompt-read-only): Update docstring.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55223
diff changeset
2416 (kill-region beg end yank-handler)
16abc166af9d (comint-prompt-read-only): Update docstring.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55223
diff changeset
2417 (comint-update-fence))))))
16abc166af9d (comint-prompt-read-only): Update docstring.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55223
diff changeset
2418
16abc166af9d (comint-prompt-read-only): Update docstring.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55223
diff changeset
2419
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2420 ;; Support for source-file processing commands.
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 ;; Many command-interpreters (e.g., Lisp, Scheme, Soar) have
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2423 ;; commands that process files of source text (e.g. loading or compiling
42205
7308bbc423d5 Doc fixes.
Pavel Janík <Pavel@Janik.cz>
parents: 42119
diff changeset
2424 ;; files). So the corresponding process-in-a-buffer modes have commands
7308bbc423d5 Doc fixes.
Pavel Janík <Pavel@Janik.cz>
parents: 42119
diff changeset
2425 ;; for doing this (e.g., lisp-load-file). The functions below are useful
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2426 ;; for defining these commands.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2427 ;;
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2428 ;; 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
2429 ;; 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
2430 ;; So the compile/load interface gets the wrong default occasionally.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2431 ;; 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
2432 ;; doesn't know about the relationship between filename extensions and
42205
7308bbc423d5 Doc fixes.
Pavel Janík <Pavel@Janik.cz>
parents: 42119
diff changeset
2433 ;; whether the file is source or executable. If you compile foo.lisp
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2434 ;; with compile-file, then the next load-file should use foo.bin for
42205
7308bbc423d5 Doc fixes.
Pavel Janík <Pavel@Janik.cz>
parents: 42119
diff changeset
2435 ;; the default, not foo.lisp. This is tricky to do right, particularly
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2436 ;; 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
2437 ;; .lbin, .mo, .vo, .ao, ...).
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
2438
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
2439
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2440 ;; COMINT-SOURCE-DEFAULT -- determines defaults for source-file processing
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2441 ;; commands.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2442 ;;
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2443 ;; 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
2444 ;; 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
2445 ;; interpreter.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2446 ;;
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2447 ;; 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
2448 ;; for the file to process.
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
2449
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
2450 (defun comint-source-default (previous-dir/file source-modes)
54879
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
2451 "Compute the defaults for `load-file' and `compile-file' commands.
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
2452
64570
76a0015820fb (comint-use-prompt-regexp, comint-send-input, comint-source-default,
Juanma Barranquero <lekktu@gmail.com>
parents: 64169
diff changeset
2453 PREVIOUS-DIR/FILE is a pair (DIRECTORY . FILENAME) from the last
63175
b09a11c8c73e (comint-check-proc, make-comint-in-buffer, comint-source-default): Doc fixes.
Juanma Barranquero <lekktu@gmail.com>
parents: 63172
diff changeset
2454 source-file processing command, or nil if there hasn't been one yet.
54879
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
2455 SOURCE-MODES is a list used to determine what buffers contain source
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
2456 files: if the major mode of the buffer is in SOURCE-MODES, it's source.
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
2457 Typically, (lisp-mode) or (scheme-mode).
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
2458
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
2459 If the command is given while the cursor is inside a string, *and*
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
2460 the string is an existing filename, *and* the filename is not a directory,
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
2461 then the string is taken as default. This allows you to just position
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
2462 your cursor over a string that's a filename and have it taken as default.
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
2463
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
2464 If the command is given in a file buffer whose major mode is in
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
2465 SOURCE-MODES, then the filename is the default file, and the
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
2466 file's directory is the default directory.
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
2467
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
2468 If the buffer isn't a source file buffer (e.g., it's the process buffer),
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
2469 then the default directory & file are what was used in the last source-file
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
2470 processing command (i.e., PREVIOUS-DIR/FILE). If this is the first time
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
2471 the command has been run (PREVIOUS-DIR/FILE is nil), the default directory
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
2472 is the cwd, with no default file. (\"no default file\" = nil)
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
2473
64570
76a0015820fb (comint-use-prompt-regexp, comint-send-input, comint-source-default,
Juanma Barranquero <lekktu@gmail.com>
parents: 64169
diff changeset
2474 SOURCE-MODES is typically going to be something like (tea-mode)
54879
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
2475 for T programs, (lisp-mode) for Lisp programs, (soar-mode lisp-mode)
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
2476 for Soar programs, etc.
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
2477
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
2478 The function returns a pair: (default-directory . default-file)."
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
2479 (cond ((and buffer-file-name (memq major-mode source-modes))
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
2480 (cons (file-name-directory buffer-file-name)
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
2481 (file-name-nondirectory buffer-file-name)))
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
2482 (previous-dir/file)
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
2483 (t
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
2484 (cons default-directory nil))))
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
2485
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
2486
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
2487 (defun comint-check-source (fname)
54879
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
2488 "Check whether to save buffers visiting file FNAME.
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
2489 Prior to loading or compiling (or otherwise processing) a file (in the CMU
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
2490 process-in-a-buffer modes), this function can be called on the filename.
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
2491 If the file is loaded into a buffer, and the buffer is modified, the user
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
2492 is queried to see if he wants to save the buffer before proceeding with
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
2493 the load or compile."
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
2494 (let ((buff (get-file-buffer fname)))
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
2495 (if (and buff
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
2496 (buffer-modified-p buff)
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2497 (y-or-n-p (format "Save buffer %s first? " (buffer-name buff))))
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
2498 ;; save BUFF.
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
2499 (let ((old-buffer (current-buffer)))
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
2500 (set-buffer buff)
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
2501 (save-buffer)
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
2502 (set-buffer old-buffer)))))
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
2503
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
2504 (defun comint-extract-string ()
64570
76a0015820fb (comint-use-prompt-regexp, comint-send-input, comint-source-default,
Juanma Barranquero <lekktu@gmail.com>
parents: 64169
diff changeset
2505 "Return string around point, or nil."
54879
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
2506 (let ((syntax (syntax-ppss)))
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
2507 (when (nth 3 syntax)
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
2508 (condition-case ()
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
2509 (buffer-substring-no-properties (1+ (nth 8 syntax))
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
2510 (progn (goto-char (nth 8 syntax))
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
2511 (forward-sexp)
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
2512 (1- (point))))
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
2513 (error nil)))))
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
2514
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
2515 (defun comint-get-source (prompt prev-dir/file source-modes mustmatch-p)
54879
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
2516 "Prompt for filenames in commands that process source files,
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
2517 e.g. loading or compiling a file.
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
2518 Provides a default, if there is one, and returns the result filename.
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
2519
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
2520 See `comint-source-default' for more on determining defaults.
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
2521
57603
bdfa227d18a8 (comint-insert-input): Use @ in `interactive'.
Richard M. Stallman <rms@gnu.org>
parents: 57539
diff changeset
2522 PROMPT is the prompt string. PREV-DIR/FILE is the (DIRECTORY . FILE) pair
54879
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
2523 from the last source processing command. SOURCE-MODES is a list of major
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
2524 modes used to determine what file buffers contain source files. (These
64570
76a0015820fb (comint-use-prompt-regexp, comint-send-input, comint-source-default,
Juanma Barranquero <lekktu@gmail.com>
parents: 64169
diff changeset
2525 two arguments are used for determining defaults.) If MUSTMATCH-P is true,
54879
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
2526 then the filename reader will only accept a file that exists.
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
2527
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
2528 A typical use:
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
2529 (interactive (comint-get-source \"Compile file: \" prev-lisp-dir/file
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
2530 '(lisp-mode) t))"
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
2531 (let* ((def (comint-source-default prev-dir/file source-modes))
32326
b8132c394173 Cleanup whitespace.
Miles Bader <miles@gnu.org>
parents: 32196
diff changeset
2532 (stringfile (comint-extract-string))
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
2533 (sfile-p (and stringfile
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
2534 (condition-case ()
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
2535 (file-exists-p stringfile)
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
2536 (error nil))
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
2537 (not (file-directory-p stringfile))))
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
2538 (defdir (if sfile-p (file-name-directory stringfile)
32326
b8132c394173 Cleanup whitespace.
Miles Bader <miles@gnu.org>
parents: 32196
diff changeset
2539 (car def)))
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
2540 (deffile (if sfile-p (file-name-nondirectory stringfile)
32326
b8132c394173 Cleanup whitespace.
Miles Bader <miles@gnu.org>
parents: 32196
diff changeset
2541 (cdr def)))
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
2542 (ans (read-file-name (if deffile (format "%s(default %s) "
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
2543 prompt deffile)
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
2544 prompt)
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
2545 defdir
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
2546 (concat defdir deffile)
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
2547 mustmatch-p)))
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
2548 (list (expand-file-name (substitute-in-file-name ans)))))
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
2549
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2550 ;; 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
2551 ;; 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
2552 ;; 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
2553 ;; 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
2554 ;; 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
2555 ;; on this.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2556 ;; -Olin
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
2557
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
2558
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2559 ;; Simple process query facility.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2560 ;; ===========================================================================
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2561 ;; 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
2562 ;; 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
2563 ;; 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
2564 ;; to an inferior Common Lisp process.
32326
b8132c394173 Cleanup whitespace.
Miles Bader <miles@gnu.org>
parents: 32196
diff changeset
2565 ;;
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2566 ;; 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
2567 ;; 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
2568 ;; 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
2569 ;; 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
2570 ;; line. We just display the buffer. Low tech. Simple. Works good.
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
2571
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
2572 (defun comint-proc-query (proc str)
54879
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
2573 "Send to the inferior process PROC the string STR.
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
2574 Pop-up but do not select a window for the inferior process so that
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
2575 its response can be seen."
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
2576 (let* ((proc-buf (process-buffer proc))
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
2577 (proc-mark (process-mark proc)))
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
2578 (display-buffer proc-buf)
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
2579 (set-buffer proc-buf) ; but it's not the selected *window*
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
2580 (let ((proc-win (get-buffer-window proc-buf))
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
2581 (proc-pt (marker-position proc-mark)))
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
2582 (comint-send-string proc str) ; send the query
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
2583 (accept-process-output proc) ; wait for some output
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
2584 ;; Try to position the proc window so you can see the answer.
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
2585 ;; This is bogus code. If you delete the (sit-for 0), it breaks.
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
2586 ;; 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
2587 (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
2588 (let ((opoint (window-point proc-win)))
72fa617ce5e2 Changed to use directory-sep-char rather than "/".
Simon Marshall <simon@gnu.org>
parents: 20894
diff changeset
2589 (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
2590 (sit-for 0)
72fa617ce5e2 Changed to use directory-sep-char rather than "/".
Simon Marshall <simon@gnu.org>
parents: 20894
diff changeset
2591 (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
2592 (push-mark opoint)
72fa617ce5e2 Changed to use directory-sep-char rather than "/".
Simon Marshall <simon@gnu.org>
parents: 20894
diff changeset
2593 (set-window-point proc-win opoint)))))))
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
2594
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
2595
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2596 ;; Filename/command/history completion in a buffer
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2597 ;; ===========================================================================
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2598 ;; Useful completion functions, courtesy of the Ergo group.
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
2599
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2600 ;; Six commands:
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2601 ;; comint-dynamic-complete Complete or expand command, filename,
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2602 ;; history at point.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2603 ;; comint-dynamic-complete-filename Complete filename at point.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2604 ;; comint-dynamic-list-filename-completions List completions in help buffer.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2605 ;; 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
2606 ;; replace with expanded/completed name.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2607 ;; 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
2608
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2609 ;; 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
2610 ;; available for people who want them. Shell-mode installs them:
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2611 ;; (define-key shell-mode-map "\t" 'comint-dynamic-complete)
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2612 ;; (define-key shell-mode-map "\M-?"
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2613 ;; 'comint-dynamic-list-filename-completions)))
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2614 ;;
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
2615 ;; 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
2616 ;; want them present in specific modes.
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
2617
17428
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
2618 (defcustom comint-completion-autolist nil
13971
49207f2e2130 (comint-ptyp, comint-completion-autolist): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents: 13702
diff changeset
2619 "*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
2620 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
2621 :type 'boolean
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
2622 :group 'comint-completion)
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
2623
17428
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
2624 (defcustom comint-completion-addsuffix t
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2625 "*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
2626 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
2627 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
2628 This mirrors the optional behavior of tcsh."
33166
61e62bc5bd7f (comint-completion-addsuffix): Fix custom type.
Dave Love <fx@gnu.org>
parents: 33138
diff changeset
2629 :type '(choice (const :tag "None" nil)
33167
e821d3197110 Capital in last change.
Dave Love <fx@gnu.org>
parents: 33166
diff changeset
2630 (const :tag "Add /" t)
33166
61e62bc5bd7f (comint-completion-addsuffix): Fix custom type.
Dave Love <fx@gnu.org>
parents: 33138
diff changeset
2631 (cons :tag "Suffix pair"
61e62bc5bd7f (comint-completion-addsuffix): Fix custom type.
Dave Love <fx@gnu.org>
parents: 33138
diff changeset
2632 (string :tag "Directory suffix")
61e62bc5bd7f (comint-completion-addsuffix): Fix custom type.
Dave Love <fx@gnu.org>
parents: 33138
diff changeset
2633 (string :tag "File suffix")))
17428
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
2634 :group 'comint-completion)
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2635
17428
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
2636 (defcustom comint-completion-recexact nil
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2637 "*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
2638 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
2639
17428
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
2640 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
2641 :type 'boolean
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
2642 :group 'comint-completion)
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2643
17428
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
2644 (defcustom comint-completion-fignore nil
6256
3810012eb29f (comint-completion-fignore): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 6239
diff changeset
2645 "*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
2646 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
2647
17428
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
2648 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
2649 :type '(repeat (string :tag "Suffix"))
653c0e2e1b31 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17269
diff changeset
2650 :group 'comint-completion)
6256
3810012eb29f (comint-completion-fignore): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 6239
diff changeset
2651
65113
58d4ddcf0c9a (comint-file-name-prefix): Add autoload.
Richard M. Stallman <rms@gnu.org>
parents: 64819
diff changeset
2652 ;;;###autoload
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2653 (defvar comint-file-name-prefix ""
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2654 "Prefix prepended to absolute file names taken from process input.
54879
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
2655 This is used by Comint's and shell's completion functions, and by shell's
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2656 directory tracking functions.")
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2657
15817
9e94b5fdaab1 (comint-file-name-chars): Was comint-file-name-regexp.
Richard M. Stallman <rms@gnu.org>
parents: 15727
diff changeset
2658 (defvar comint-file-name-chars
49549
99be3a1e2589 Cygwin support patch.
Juanma Barranquero <lekktu@gmail.com>
parents: 48987
diff changeset
2659 (if (memq system-type '(ms-dos windows-nt cygwin))
21617
c944e3c8ebe2 (comint-filename-chars): Combine DOS and Windows strings.
Geoff Voelker <voelker@cs.washington.edu>
parents: 21243
diff changeset
2660 "~/A-Za-z0-9_^$!#%&{}@`'.,:()-"
53399
9a9d11c249b9 (comint-arguments): Set COUNT after ARGS is complete.
Richard M. Stallman <rms@gnu.org>
parents: 53391
diff changeset
2661 "[]~/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
2662 "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
2663 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
2664 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
2665
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
2666 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
2667
11187
ac3611b5f490 Added support for special (quoted) characters in file names:
Simon Marshall <simon@gnu.org>
parents: 11156
diff changeset
2668 (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
2669 "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
2670
ac3611b5f490 Added support for special (quoted) characters in file names:
Simon Marshall <simon@gnu.org>
parents: 11156
diff changeset
2671 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
2672
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2673
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2674 (defun comint-directory (directory)
54879
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
2675 "Return expanded DIRECTORY, with `comint-file-name-prefix' if absolute."
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2676 (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
2677 (concat comint-file-name-prefix directory)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2678 directory)))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2679
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2680
6185
82a92cf44059 (comint-after-partial-filename-command,
Richard M. Stallman <rms@gnu.org>
parents: 6154
diff changeset
2681 (defun comint-word (word-chars)
54879
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
2682 "Return the word of WORD-CHARS at point, or nil if none is found.
6185
82a92cf44059 (comint-after-partial-filename-command,
Richard M. Stallman <rms@gnu.org>
parents: 6154
diff changeset
2683 Word constituents are considered to be those in WORD-CHARS, which is like the
64570
76a0015820fb (comint-use-prompt-regexp, comint-send-input, comint-source-default,
Juanma Barranquero <lekktu@gmail.com>
parents: 64169
diff changeset
2684 inside of a \"[...]\" (see `skip-chars-forward'), plus all non-ASCII characters."
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
2685 (save-excursion
53399
9a9d11c249b9 (comint-arguments): Set COUNT after ARGS is complete.
Richard M. Stallman <rms@gnu.org>
parents: 53391
diff changeset
2686 (let ((here (point))
9a9d11c249b9 (comint-arguments): Set COUNT after ARGS is complete.
Richard M. Stallman <rms@gnu.org>
parents: 53391
diff changeset
2687 giveup)
9a9d11c249b9 (comint-arguments): Set COUNT after ARGS is complete.
Richard M. Stallman <rms@gnu.org>
parents: 53391
diff changeset
2688 (while (not giveup)
9a9d11c249b9 (comint-arguments): Set COUNT after ARGS is complete.
Richard M. Stallman <rms@gnu.org>
parents: 53391
diff changeset
2689 (let ((startpoint (point)))
9a9d11c249b9 (comint-arguments): Set COUNT after ARGS is complete.
Richard M. Stallman <rms@gnu.org>
parents: 53391
diff changeset
2690 (skip-chars-backward (concat "\\\\" word-chars))
54879
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
2691 ;; Fixme: This isn't consistent with Bash, at least -- not
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
2692 ;; all non-ASCII chars should be word constituents.
53399
9a9d11c249b9 (comint-arguments): Set COUNT after ARGS is complete.
Richard M. Stallman <rms@gnu.org>
parents: 53391
diff changeset
2693 (if (and (> (- (point) 2) (point-min))
9a9d11c249b9 (comint-arguments): Set COUNT after ARGS is complete.
Richard M. Stallman <rms@gnu.org>
parents: 53391
diff changeset
2694 (= (char-after (- (point) 2)) ?\\))
9a9d11c249b9 (comint-arguments): Set COUNT after ARGS is complete.
Richard M. Stallman <rms@gnu.org>
parents: 53391
diff changeset
2695 (forward-char -2))
9a9d11c249b9 (comint-arguments): Set COUNT after ARGS is complete.
Richard M. Stallman <rms@gnu.org>
parents: 53391
diff changeset
2696 (if (and (> (- (point) 1) (point-min))
9a9d11c249b9 (comint-arguments): Set COUNT after ARGS is complete.
Richard M. Stallman <rms@gnu.org>
parents: 53391
diff changeset
2697 (>= (char-after (- (point) 1)) 128))
9a9d11c249b9 (comint-arguments): Set COUNT after ARGS is complete.
Richard M. Stallman <rms@gnu.org>
parents: 53391
diff changeset
2698 (forward-char -1))
9a9d11c249b9 (comint-arguments): Set COUNT after ARGS is complete.
Richard M. Stallman <rms@gnu.org>
parents: 53391
diff changeset
2699 (if (= (point) startpoint)
9a9d11c249b9 (comint-arguments): Set COUNT after ARGS is complete.
Richard M. Stallman <rms@gnu.org>
parents: 53391
diff changeset
2700 (setq giveup t))))
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
2701 ;; 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
2702 (when (< (point) here)
21152
8197c659e85c (comint-word): store-match-data => set-match-data.
Richard M. Stallman <rms@gnu.org>
parents: 21018
diff changeset
2703 (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
2704 (match-string 0)))))
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
2705
15369
0c818ae83d43 (comint-dynamic-complete-as-filename)
Richard M. Stallman <rms@gnu.org>
parents: 15361
diff changeset
2706 (defun comint-substitute-in-file-name (filename)
0c818ae83d43 (comint-dynamic-complete-as-filename)
Richard M. Stallman <rms@gnu.org>
parents: 15361
diff changeset
2707 "Return FILENAME with environment variables substituted.
0c818ae83d43 (comint-dynamic-complete-as-filename)
Richard M. Stallman <rms@gnu.org>
parents: 15361
diff changeset
2708 Supports additional environment variable syntax of the command
0c818ae83d43 (comint-dynamic-complete-as-filename)
Richard M. Stallman <rms@gnu.org>
parents: 15361
diff changeset
2709 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
2710 (let ((name (substitute-in-file-name filename)))
0c818ae83d43 (comint-dynamic-complete-as-filename)
Richard M. Stallman <rms@gnu.org>
parents: 15361
diff changeset
2711 (if (memq system-type '(ms-dos windows-nt))
0c818ae83d43 (comint-dynamic-complete-as-filename)
Richard M. Stallman <rms@gnu.org>
parents: 15361
diff changeset
2712 (let (env-var-name
0c818ae83d43 (comint-dynamic-complete-as-filename)
Richard M. Stallman <rms@gnu.org>
parents: 15361
diff changeset
2713 env-var-val)
0c818ae83d43 (comint-dynamic-complete-as-filename)
Richard M. Stallman <rms@gnu.org>
parents: 15361
diff changeset
2714 (save-match-data
0c818ae83d43 (comint-dynamic-complete-as-filename)
Richard M. Stallman <rms@gnu.org>
parents: 15361
diff changeset
2715 (while (string-match "%\\([^\\\\/]*\\)%" name)
32326
b8132c394173 Cleanup whitespace.
Miles Bader <miles@gnu.org>
parents: 32196
diff changeset
2716 (setq env-var-name
15369
0c818ae83d43 (comint-dynamic-complete-as-filename)
Richard M. Stallman <rms@gnu.org>
parents: 15361
diff changeset
2717 (substring name (match-beginning 1) (match-end 1)))
0c818ae83d43 (comint-dynamic-complete-as-filename)
Richard M. Stallman <rms@gnu.org>
parents: 15361
diff changeset
2718 (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
2719 (getenv env-var-name)
0c818ae83d43 (comint-dynamic-complete-as-filename)
Richard M. Stallman <rms@gnu.org>
parents: 15361
diff changeset
2720 ""))
29883
53bc9bb1f0b8 (comint-substitute-in-file-name): Call replace-match
Gerd Moellmann <gerd@gnu.org>
parents: 29078
diff changeset
2721 (setq name (replace-match env-var-val t t name))))))
15369
0c818ae83d43 (comint-dynamic-complete-as-filename)
Richard M. Stallman <rms@gnu.org>
parents: 15361
diff changeset
2722 name))
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2723
6185
82a92cf44059 (comint-after-partial-filename-command,
Richard M. Stallman <rms@gnu.org>
parents: 6154
diff changeset
2724 (defun comint-match-partial-filename ()
70186
a2173a369f78 (comint-match-partial-filename): Doc fix.
Romain Francoise <romain@orebokech.com>
parents: 70116
diff changeset
2725 "Return the filename at point, or nil if none is found.
6185
82a92cf44059 (comint-after-partial-filename-command,
Richard M. Stallman <rms@gnu.org>
parents: 6154
diff changeset
2726 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
2727 (let ((filename (comint-word comint-file-name-chars)))
32326
b8132c394173 Cleanup whitespace.
Miles Bader <miles@gnu.org>
parents: 32196
diff changeset
2728 (and filename (comint-substitute-in-file-name
15369
0c818ae83d43 (comint-dynamic-complete-as-filename)
Richard M. Stallman <rms@gnu.org>
parents: 15361
diff changeset
2729 (comint-unquote-filename filename)))))
11187
ac3611b5f490 Added support for special (quoted) characters in file names:
Simon Marshall <simon@gnu.org>
parents: 11156
diff changeset
2730
ac3611b5f490 Added support for special (quoted) characters in file names:
Simon Marshall <simon@gnu.org>
parents: 11156
diff changeset
2731
ac3611b5f490 Added support for special (quoted) characters in file names:
Simon Marshall <simon@gnu.org>
parents: 11156
diff changeset
2732 (defun comint-quote-filename (filename)
ac3611b5f490 Added support for special (quoted) characters in file names:
Simon Marshall <simon@gnu.org>
parents: 11156
diff changeset
2733 "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
2734 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
2735 (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
2736 filename
ac3611b5f490 Added support for special (quoted) characters in file names:
Simon Marshall <simon@gnu.org>
parents: 11156
diff changeset
2737 (let ((regexp
53272
bb2708b976f1 (comint-quote-filename): Correctly handle backslash
Andreas Schwab <schwab@suse.de>
parents: 52401
diff changeset
2738 (format "[%s]"
11187
ac3611b5f490 Added support for special (quoted) characters in file names:
Simon Marshall <simon@gnu.org>
parents: 11156
diff changeset
2739 (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
2740 (save-match-data
53272
bb2708b976f1 (comint-quote-filename): Correctly handle backslash
Andreas Schwab <schwab@suse.de>
parents: 52401
diff changeset
2741 (let ((i 0))
bb2708b976f1 (comint-quote-filename): Correctly handle backslash
Andreas Schwab <schwab@suse.de>
parents: 52401
diff changeset
2742 (while (string-match regexp filename i)
bb2708b976f1 (comint-quote-filename): Correctly handle backslash
Andreas Schwab <schwab@suse.de>
parents: 52401
diff changeset
2743 (setq filename (replace-match "\\\\\\&" nil nil filename))
bb2708b976f1 (comint-quote-filename): Correctly handle backslash
Andreas Schwab <schwab@suse.de>
parents: 52401
diff changeset
2744 (setq i (1+ (match-end 0)))))
11187
ac3611b5f490 Added support for special (quoted) characters in file names:
Simon Marshall <simon@gnu.org>
parents: 11156
diff changeset
2745 filename))))
ac3611b5f490 Added support for special (quoted) characters in file names:
Simon Marshall <simon@gnu.org>
parents: 11156
diff changeset
2746
ac3611b5f490 Added support for special (quoted) characters in file names:
Simon Marshall <simon@gnu.org>
parents: 11156
diff changeset
2747 (defun comint-unquote-filename (filename)
ac3611b5f490 Added support for special (quoted) characters in file names:
Simon Marshall <simon@gnu.org>
parents: 11156
diff changeset
2748 "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
2749 (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
2750 filename
ac3611b5f490 Added support for special (quoted) characters in file names:
Simon Marshall <simon@gnu.org>
parents: 11156
diff changeset
2751 (save-match-data
15337
cf1e6f4dd2b0 (comint-dynamic-complete-filename) [ms-dos, windows-nt]:
Richard M. Stallman <rms@gnu.org>
parents: 14814
diff changeset
2752 (let ((i 0))
cf1e6f4dd2b0 (comint-dynamic-complete-filename) [ms-dos, windows-nt]:
Richard M. Stallman <rms@gnu.org>
parents: 14814
diff changeset
2753 (while (string-match "\\\\\\(.\\)" filename i)
cf1e6f4dd2b0 (comint-dynamic-complete-filename) [ms-dos, windows-nt]:
Richard M. Stallman <rms@gnu.org>
parents: 14814
diff changeset
2754 (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
2755 (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
2756 filename)))
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
2757
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
2758
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
2759 (defun comint-dynamic-complete ()
6185
82a92cf44059 (comint-after-partial-filename-command,
Richard M. Stallman <rms@gnu.org>
parents: 6154
diff changeset
2760 "Dynamically perform completion at point.
82a92cf44059 (comint-after-partial-filename-command,
Richard M. Stallman <rms@gnu.org>
parents: 6154
diff changeset
2761 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
2762 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
2763 assumed to have occurred."
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2764 (interactive)
12208
d10ef5c093ce (comint-mode): Use make-local-hook.
Karl Heuer <kwzh@gnu.org>
parents: 12058
diff changeset
2765 (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
2766
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2767
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2768 (defun comint-dynamic-complete-filename ()
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
2769 "Dynamically complete the filename at point.
6185
82a92cf44059 (comint-after-partial-filename-command,
Richard M. Stallman <rms@gnu.org>
parents: 6154
diff changeset
2770 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
2771 `comint-dynamic-complete-as-filename'.
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2772 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
2773 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
2774 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
2775 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
2776
6256
3810012eb29f (comint-completion-fignore): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 6239
diff changeset
2777 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
2778 `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
2779 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
2780
82a92cf44059 (comint-after-partial-filename-command,
Richard M. Stallman <rms@gnu.org>
parents: 6154
diff changeset
2781 Returns t if successful."
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
2782 (interactive)
20986
72fa617ce5e2 Changed to use directory-sep-char rather than "/".
Simon Marshall <simon@gnu.org>
parents: 20894
diff changeset
2783 (when (comint-match-partial-filename)
72fa617ce5e2 Changed to use directory-sep-char rather than "/".
Simon Marshall <simon@gnu.org>
parents: 20894
diff changeset
2784 (unless (window-minibuffer-p (selected-window))
72fa617ce5e2 Changed to use directory-sep-char rather than "/".
Simon Marshall <simon@gnu.org>
parents: 20894
diff changeset
2785 (message "Completing file name..."))
72fa617ce5e2 Changed to use directory-sep-char rather than "/".
Simon Marshall <simon@gnu.org>
parents: 20894
diff changeset
2786 (comint-dynamic-complete-as-filename)))
6185
82a92cf44059 (comint-after-partial-filename-command,
Richard M. Stallman <rms@gnu.org>
parents: 6154
diff changeset
2787
82a92cf44059 (comint-after-partial-filename-command,
Richard M. Stallman <rms@gnu.org>
parents: 6154
diff changeset
2788 (defun comint-dynamic-complete-as-filename ()
82a92cf44059 (comint-after-partial-filename-command,
Richard M. Stallman <rms@gnu.org>
parents: 6154
diff changeset
2789 "Dynamically complete at point as a filename.
82a92cf44059 (comint-after-partial-filename-command,
Richard M. Stallman <rms@gnu.org>
parents: 6154
diff changeset
2790 See `comint-dynamic-complete-filename'. Returns t if successful."
49549
99be3a1e2589 Cygwin support patch.
Juanma Barranquero <lekktu@gmail.com>
parents: 48987
diff changeset
2791 (let* ((completion-ignore-case (memq system-type '(ms-dos windows-nt cygwin)))
6256
3810012eb29f (comint-completion-fignore): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 6239
diff changeset
2792 (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
2793 ;; 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
2794 ;; 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
2795 ;; 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
2796 ;;(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
2797 (minibuffer-p (window-minibuffer-p (selected-window)))
6185
82a92cf44059 (comint-after-partial-filename-command,
Richard M. Stallman <rms@gnu.org>
parents: 6154
diff changeset
2798 (success t)
20986
72fa617ce5e2 Changed to use directory-sep-char rather than "/".
Simon Marshall <simon@gnu.org>
parents: 20894
diff changeset
2799 (dirsuffix (cond ((not comint-completion-addsuffix)
72fa617ce5e2 Changed to use directory-sep-char rather than "/".
Simon Marshall <simon@gnu.org>
parents: 20894
diff changeset
2800 "")
72fa617ce5e2 Changed to use directory-sep-char rather than "/".
Simon Marshall <simon@gnu.org>
parents: 20894
diff changeset
2801 ((not (consp comint-completion-addsuffix))
51421
79dc5a8eacfe (comint-move-point-for-output): Renamed from
Richard M. Stallman <rms@gnu.org>
parents: 50966
diff changeset
2802 "/")
20986
72fa617ce5e2 Changed to use directory-sep-char rather than "/".
Simon Marshall <simon@gnu.org>
parents: 20894
diff changeset
2803 (t
72fa617ce5e2 Changed to use directory-sep-char rather than "/".
Simon Marshall <simon@gnu.org>
parents: 20894
diff changeset
2804 (car comint-completion-addsuffix))))
72fa617ce5e2 Changed to use directory-sep-char rather than "/".
Simon Marshall <simon@gnu.org>
parents: 20894
diff changeset
2805 (filesuffix (cond ((not comint-completion-addsuffix)
72fa617ce5e2 Changed to use directory-sep-char rather than "/".
Simon Marshall <simon@gnu.org>
parents: 20894
diff changeset
2806 "")
72fa617ce5e2 Changed to use directory-sep-char rather than "/".
Simon Marshall <simon@gnu.org>
parents: 20894
diff changeset
2807 ((not (consp comint-completion-addsuffix))
72fa617ce5e2 Changed to use directory-sep-char rather than "/".
Simon Marshall <simon@gnu.org>
parents: 20894
diff changeset
2808 " ")
72fa617ce5e2 Changed to use directory-sep-char rather than "/".
Simon Marshall <simon@gnu.org>
parents: 20894
diff changeset
2809 (t
72fa617ce5e2 Changed to use directory-sep-char rather than "/".
Simon Marshall <simon@gnu.org>
parents: 20894
diff changeset
2810 (cdr comint-completion-addsuffix))))
6847
9481abcaa7de (comint-dynamic-complete-as-filename): Simplify.
Karl Heuer <kwzh@gnu.org>
parents: 6797
diff changeset
2811 (filename (or (comint-match-partial-filename) ""))
53399
9a9d11c249b9 (comint-arguments): Set COUNT after ARGS is complete.
Richard M. Stallman <rms@gnu.org>
parents: 53391
diff changeset
2812 (filedir (file-name-directory filename))
9a9d11c249b9 (comint-arguments): Set COUNT after ARGS is complete.
Richard M. Stallman <rms@gnu.org>
parents: 53391
diff changeset
2813 (filenondir (file-name-nondirectory filename))
9a9d11c249b9 (comint-arguments): Set COUNT after ARGS is complete.
Richard M. Stallman <rms@gnu.org>
parents: 53391
diff changeset
2814 (directory (if filedir (comint-directory filedir) default-directory))
9a9d11c249b9 (comint-arguments): Set COUNT after ARGS is complete.
Richard M. Stallman <rms@gnu.org>
parents: 53391
diff changeset
2815 (completion (file-name-completion filenondir directory)))
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2816 (cond ((null completion)
32326
b8132c394173 Cleanup whitespace.
Miles Bader <miles@gnu.org>
parents: 32196
diff changeset
2817 (message "No completions of %s" filename)
6185
82a92cf44059 (comint-after-partial-filename-command,
Richard M. Stallman <rms@gnu.org>
parents: 6154
diff changeset
2818 (setq success nil))
32326
b8132c394173 Cleanup whitespace.
Miles Bader <miles@gnu.org>
parents: 32196
diff changeset
2819 ((eq completion t) ; Means already completed "file".
b8132c394173 Cleanup whitespace.
Miles Bader <miles@gnu.org>
parents: 32196
diff changeset
2820 (insert filesuffix)
b8132c394173 Cleanup whitespace.
Miles Bader <miles@gnu.org>
parents: 32196
diff changeset
2821 (unless minibuffer-p
20986
72fa617ce5e2 Changed to use directory-sep-char rather than "/".
Simon Marshall <simon@gnu.org>
parents: 20894
diff changeset
2822 (message "Sole completion")))
32326
b8132c394173 Cleanup whitespace.
Miles Bader <miles@gnu.org>
parents: 32196
diff changeset
2823 ((string-equal completion "") ; Means completion on "directory/".
b8132c394173 Cleanup whitespace.
Miles Bader <miles@gnu.org>
parents: 32196
diff changeset
2824 (comint-dynamic-list-filename-completions))
b8132c394173 Cleanup whitespace.
Miles Bader <miles@gnu.org>
parents: 32196
diff changeset
2825 (t ; Completion string returned.
b8132c394173 Cleanup whitespace.
Miles Bader <miles@gnu.org>
parents: 32196
diff changeset
2826 (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
2827 (insert (comint-quote-filename
ac3611b5f490 Added support for special (quoted) characters in file names:
Simon Marshall <simon@gnu.org>
parents: 11156
diff changeset
2828 (substring (directory-file-name completion)
53399
9a9d11c249b9 (comint-arguments): Set COUNT after ARGS is complete.
Richard M. Stallman <rms@gnu.org>
parents: 53391
diff changeset
2829 (length filenondir))))
32326
b8132c394173 Cleanup whitespace.
Miles Bader <miles@gnu.org>
parents: 32196
diff changeset
2830 (cond ((symbolp (file-name-completion completion directory))
b8132c394173 Cleanup whitespace.
Miles Bader <miles@gnu.org>
parents: 32196
diff changeset
2831 ;; 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
2832 (insert (if (file-directory-p file) dirsuffix filesuffix))
32326
b8132c394173 Cleanup whitespace.
Miles Bader <miles@gnu.org>
parents: 32196
diff changeset
2833 (unless minibuffer-p
20986
72fa617ce5e2 Changed to use directory-sep-char rather than "/".
Simon Marshall <simon@gnu.org>
parents: 20894
diff changeset
2834 (message "Completed")))
32326
b8132c394173 Cleanup whitespace.
Miles Bader <miles@gnu.org>
parents: 32196
diff changeset
2835 ((and comint-completion-recexact comint-completion-addsuffix
53399
9a9d11c249b9 (comint-arguments): Set COUNT after ARGS is complete.
Richard M. Stallman <rms@gnu.org>
parents: 53391
diff changeset
2836 (string-equal filenondir completion)
32326
b8132c394173 Cleanup whitespace.
Miles Bader <miles@gnu.org>
parents: 32196
diff changeset
2837 (file-exists-p file))
b8132c394173 Cleanup whitespace.
Miles Bader <miles@gnu.org>
parents: 32196
diff changeset
2838 ;; It's not unique, but user wants shortest match.
b8132c394173 Cleanup whitespace.
Miles Bader <miles@gnu.org>
parents: 32196
diff changeset
2839 (insert (if (file-directory-p file) dirsuffix filesuffix))
b8132c394173 Cleanup whitespace.
Miles Bader <miles@gnu.org>
parents: 32196
diff changeset
2840 (unless minibuffer-p
20986
72fa617ce5e2 Changed to use directory-sep-char rather than "/".
Simon Marshall <simon@gnu.org>
parents: 20894
diff changeset
2841 (message "Completed shortest")))
32326
b8132c394173 Cleanup whitespace.
Miles Bader <miles@gnu.org>
parents: 32196
diff changeset
2842 ((or comint-completion-autolist
53399
9a9d11c249b9 (comint-arguments): Set COUNT after ARGS is complete.
Richard M. Stallman <rms@gnu.org>
parents: 53391
diff changeset
2843 (string-equal filenondir completion))
32326
b8132c394173 Cleanup whitespace.
Miles Bader <miles@gnu.org>
parents: 32196
diff changeset
2844 ;; It's not unique, list possible completions.
b8132c394173 Cleanup whitespace.
Miles Bader <miles@gnu.org>
parents: 32196
diff changeset
2845 (comint-dynamic-list-filename-completions))
b8132c394173 Cleanup whitespace.
Miles Bader <miles@gnu.org>
parents: 32196
diff changeset
2846 (t
b8132c394173 Cleanup whitespace.
Miles Bader <miles@gnu.org>
parents: 32196
diff changeset
2847 (unless minibuffer-p
20986
72fa617ce5e2 Changed to use directory-sep-char rather than "/".
Simon Marshall <simon@gnu.org>
parents: 20894
diff changeset
2848 (message "Partially completed")))))))
6185
82a92cf44059 (comint-after-partial-filename-command,
Richard M. Stallman <rms@gnu.org>
parents: 6154
diff changeset
2849 success))
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2850
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2851
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2852 (defun comint-replace-by-expanded-filename ()
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2853 "Dynamically expand and complete the filename at point.
63502
f0f76b7d0f74 (comint-replace-by-expanded-filename, comint-prompt-regexp,
Juanma Barranquero <lekktu@gmail.com>
parents: 63175
diff changeset
2854 Replace the filename with an expanded, canonicalized and completed replacement.
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2855 \"Expanded\" means environment variables (e.g., $HOME) and `~'s are replaced
63502
f0f76b7d0f74 (comint-replace-by-expanded-filename, comint-prompt-regexp,
Juanma Barranquero <lekktu@gmail.com>
parents: 63175
diff changeset
2856 with the corresponding directories. \"Canonicalized\" means `..' and `.' are
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2857 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
2858 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
2859 `comint-dynamic-complete-filename'."
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2860 (interactive)
43530
aee3db99fcca (comint-replace-by-expanded-filename): Do nothing if
Kim F. Storm <storm@cua.dk>
parents: 43492
diff changeset
2861 (let ((filename (comint-match-partial-filename)))
aee3db99fcca (comint-replace-by-expanded-filename): Do nothing if
Kim F. Storm <storm@cua.dk>
parents: 43492
diff changeset
2862 (when filename
aee3db99fcca (comint-replace-by-expanded-filename): Do nothing if
Kim F. Storm <storm@cua.dk>
parents: 43492
diff changeset
2863 (replace-match (expand-file-name filename) t t)
aee3db99fcca (comint-replace-by-expanded-filename): Do nothing if
Kim F. Storm <storm@cua.dk>
parents: 43492
diff changeset
2864 (comint-dynamic-complete-filename))))
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2865
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2866
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2867 (defun comint-dynamic-simple-complete (stub candidates)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2868 "Dynamically complete STUB from CANDIDATES list.
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2869 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
2870 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
2871 if completion is ambiguous.
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2872
6185
82a92cf44059 (comint-after-partial-filename-command,
Richard M. Stallman <rms@gnu.org>
parents: 6154
diff changeset
2873 Returns nil if no completion was inserted.
82a92cf44059 (comint-after-partial-filename-command,
Richard M. Stallman <rms@gnu.org>
parents: 6154
diff changeset
2874 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
2875 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
2876 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
2877 Returns `listed' if a completion listing was shown.
82a92cf44059 (comint-after-partial-filename-command,
Richard M. Stallman <rms@gnu.org>
parents: 6154
diff changeset
2878
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2879 See also `comint-dynamic-complete-filename'."
49549
99be3a1e2589 Cygwin support patch.
Juanma Barranquero <lekktu@gmail.com>
parents: 48987
diff changeset
2880 (let* ((completion-ignore-case (memq system-type '(ms-dos windows-nt cygwin)))
11187
ac3611b5f490 Added support for special (quoted) characters in file names:
Simon Marshall <simon@gnu.org>
parents: 11156
diff changeset
2881 (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
2882 ((not (consp comint-completion-addsuffix)) " ")
ac3611b5f490 Added support for special (quoted) characters in file names:
Simon Marshall <simon@gnu.org>
parents: 11156
diff changeset
2883 (t (cdr comint-completion-addsuffix))))
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2884 (completions (all-completions stub candidates)))
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2885 (cond ((null completions)
32326
b8132c394173 Cleanup whitespace.
Miles Bader <miles@gnu.org>
parents: 32196
diff changeset
2886 (message "No completions of %s" stub)
6185
82a92cf44059 (comint-after-partial-filename-command,
Richard M. Stallman <rms@gnu.org>
parents: 6154
diff changeset
2887 nil)
32326
b8132c394173 Cleanup whitespace.
Miles Bader <miles@gnu.org>
parents: 32196
diff changeset
2888 ((= 1 (length completions)) ; Gotcha!
b8132c394173 Cleanup whitespace.
Miles Bader <miles@gnu.org>
parents: 32196
diff changeset
2889 (let ((completion (car completions)))
b8132c394173 Cleanup whitespace.
Miles Bader <miles@gnu.org>
parents: 32196
diff changeset
2890 (if (string-equal completion stub)
b8132c394173 Cleanup whitespace.
Miles Bader <miles@gnu.org>
parents: 32196
diff changeset
2891 (message "Sole completion")
b8132c394173 Cleanup whitespace.
Miles Bader <miles@gnu.org>
parents: 32196
diff changeset
2892 (insert (substring completion (length stub)))
b8132c394173 Cleanup whitespace.
Miles Bader <miles@gnu.org>
parents: 32196
diff changeset
2893 (message "Completed"))
11187
ac3611b5f490 Added support for special (quoted) characters in file names:
Simon Marshall <simon@gnu.org>
parents: 11156
diff changeset
2894 (insert suffix)
6185
82a92cf44059 (comint-after-partial-filename-command,
Richard M. Stallman <rms@gnu.org>
parents: 6154
diff changeset
2895 'sole))
32326
b8132c394173 Cleanup whitespace.
Miles Bader <miles@gnu.org>
parents: 32196
diff changeset
2896 (t ; There's no unique completion.
b8132c394173 Cleanup whitespace.
Miles Bader <miles@gnu.org>
parents: 32196
diff changeset
2897 (let ((completion (try-completion stub candidates)))
b8132c394173 Cleanup whitespace.
Miles Bader <miles@gnu.org>
parents: 32196
diff changeset
2898 ;; Insert the longest substring.
b8132c394173 Cleanup whitespace.
Miles Bader <miles@gnu.org>
parents: 32196
diff changeset
2899 (insert (substring completion (length stub)))
b8132c394173 Cleanup whitespace.
Miles Bader <miles@gnu.org>
parents: 32196
diff changeset
2900 (cond ((and comint-completion-recexact comint-completion-addsuffix
b8132c394173 Cleanup whitespace.
Miles Bader <miles@gnu.org>
parents: 32196
diff changeset
2901 (string-equal stub completion)
b8132c394173 Cleanup whitespace.
Miles Bader <miles@gnu.org>
parents: 32196
diff changeset
2902 (member completion completions))
b8132c394173 Cleanup whitespace.
Miles Bader <miles@gnu.org>
parents: 32196
diff changeset
2903 ;; It's not unique, but user wants shortest match.
b8132c394173 Cleanup whitespace.
Miles Bader <miles@gnu.org>
parents: 32196
diff changeset
2904 (insert suffix)
b8132c394173 Cleanup whitespace.
Miles Bader <miles@gnu.org>
parents: 32196
diff changeset
2905 (message "Completed shortest")
6185
82a92cf44059 (comint-after-partial-filename-command,
Richard M. Stallman <rms@gnu.org>
parents: 6154
diff changeset
2906 'shortest)
32326
b8132c394173 Cleanup whitespace.
Miles Bader <miles@gnu.org>
parents: 32196
diff changeset
2907 ((or comint-completion-autolist
b8132c394173 Cleanup whitespace.
Miles Bader <miles@gnu.org>
parents: 32196
diff changeset
2908 (string-equal stub completion))
b8132c394173 Cleanup whitespace.
Miles Bader <miles@gnu.org>
parents: 32196
diff changeset
2909 ;; It's not unique, list possible completions.
b8132c394173 Cleanup whitespace.
Miles Bader <miles@gnu.org>
parents: 32196
diff changeset
2910 (comint-dynamic-list-completions completions)
6185
82a92cf44059 (comint-after-partial-filename-command,
Richard M. Stallman <rms@gnu.org>
parents: 6154
diff changeset
2911 'listed)
32326
b8132c394173 Cleanup whitespace.
Miles Bader <miles@gnu.org>
parents: 32196
diff changeset
2912 (t
6185
82a92cf44059 (comint-after-partial-filename-command,
Richard M. Stallman <rms@gnu.org>
parents: 6154
diff changeset
2913 (message "Partially completed")
82a92cf44059 (comint-after-partial-filename-command,
Richard M. Stallman <rms@gnu.org>
parents: 6154
diff changeset
2914 'partial)))))))
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2915
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2916
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2917 (defun comint-dynamic-list-filename-completions ()
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2918 "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
2919 (interactive)
49549
99be3a1e2589 Cygwin support patch.
Juanma Barranquero <lekktu@gmail.com>
parents: 48987
diff changeset
2920 (let* ((completion-ignore-case (memq system-type '(ms-dos windows-nt cygwin)))
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
2921 ;; 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
2922 ;; 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
2923 ;; 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
2924 ;;(file-name-handler-alist nil)
6185
82a92cf44059 (comint-after-partial-filename-command,
Richard M. Stallman <rms@gnu.org>
parents: 6154
diff changeset
2925 (filename (or (comint-match-partial-filename) ""))
53399
9a9d11c249b9 (comint-arguments): Set COUNT after ARGS is complete.
Richard M. Stallman <rms@gnu.org>
parents: 53391
diff changeset
2926 (filedir (file-name-directory filename))
9a9d11c249b9 (comint-arguments): Set COUNT after ARGS is complete.
Richard M. Stallman <rms@gnu.org>
parents: 53391
diff changeset
2927 (filenondir (file-name-nondirectory filename))
9a9d11c249b9 (comint-arguments): Set COUNT after ARGS is complete.
Richard M. Stallman <rms@gnu.org>
parents: 53391
diff changeset
2928 (directory (if filedir (comint-directory filedir) default-directory))
9a9d11c249b9 (comint-arguments): Set COUNT after ARGS is complete.
Richard M. Stallman <rms@gnu.org>
parents: 53391
diff changeset
2929 (completions (file-name-all-completions filenondir directory)))
11187
ac3611b5f490 Added support for special (quoted) characters in file names:
Simon Marshall <simon@gnu.org>
parents: 11156
diff changeset
2930 (if (not completions)
ac3611b5f490 Added support for special (quoted) characters in file names:
Simon Marshall <simon@gnu.org>
parents: 11156
diff changeset
2931 (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
2932 (comint-dynamic-list-completions
ac3611b5f490 Added support for special (quoted) characters in file names:
Simon Marshall <simon@gnu.org>
parents: 11156
diff changeset
2933 (mapcar 'comint-quote-filename completions)))))
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2934
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2935
46171
c1c7a7405444 (comint-displayed-dynamic-completions): New variable.
Miles Bader <miles@gnu.org>
parents: 45916
diff changeset
2936 ;; This is bound locally in a *Completions* buffer to the list of
c1c7a7405444 (comint-displayed-dynamic-completions): New variable.
Miles Bader <miles@gnu.org>
parents: 45916
diff changeset
2937 ;; completions displayed, and is used to detect the case where the same
c1c7a7405444 (comint-displayed-dynamic-completions): New variable.
Miles Bader <miles@gnu.org>
parents: 45916
diff changeset
2938 ;; command is repeatedly used without the set of completions changing.
c1c7a7405444 (comint-displayed-dynamic-completions): New variable.
Miles Bader <miles@gnu.org>
parents: 45916
diff changeset
2939 (defvar comint-displayed-dynamic-completions nil)
c1c7a7405444 (comint-displayed-dynamic-completions): New variable.
Miles Bader <miles@gnu.org>
parents: 45916
diff changeset
2940
53399
9a9d11c249b9 (comint-arguments): Set COUNT after ARGS is complete.
Richard M. Stallman <rms@gnu.org>
parents: 53391
diff changeset
2941 (defvar comint-dynamic-list-completions-config nil)
9a9d11c249b9 (comint-arguments): Set COUNT after ARGS is complete.
Richard M. Stallman <rms@gnu.org>
parents: 53391
diff changeset
2942
4872
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2943 (defun comint-dynamic-list-completions (completions)
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2944 "List in help buffer sorted COMPLETIONS.
628cbf7e7005 (comint-after-partial-file-name-command):
Richard M. Stallman <rms@gnu.org>
parents: 4675
diff changeset
2945 Typing SPC flushes the help buffer."
42669
356ecd21a13c (comint-dynamic-list-completions): Repeating the command
Richard M. Stallman <rms@gnu.org>
parents: 42450
diff changeset
2946 (let ((window (get-buffer-window "*Completions*")))
46250
2c383709a149 (comint-dynamic-list-completions): Sort COMPLETIONS before first use.
Miles Bader <miles@gnu.org>
parents: 46171
diff changeset
2947 (setq completions (sort completions 'string-lessp))
42669
356ecd21a13c (comint-dynamic-list-completions): Repeating the command
Richard M. Stallman <rms@gnu.org>
parents: 42450
diff changeset
2948 (if (and (eq last-command this-command)
356ecd21a13c (comint-dynamic-list-completions): Repeating the command
Richard M. Stallman <rms@gnu.org>
parents: 42450
diff changeset
2949 window (window-live-p window) (window-buffer window)
46171
c1c7a7405444 (comint-displayed-dynamic-completions): New variable.
Miles Bader <miles@gnu.org>
parents: 45916
diff changeset
2950 (buffer-name (window-buffer window))
c1c7a7405444 (comint-displayed-dynamic-completions): New variable.
Miles Bader <miles@gnu.org>
parents: 45916
diff changeset
2951 ;; The above tests are not sufficient to detect the case where we
c1c7a7405444 (comint-displayed-dynamic-completions): New variable.
Miles Bader <miles@gnu.org>
parents: 45916
diff changeset
2952 ;; should scroll, because the top-level interactive command may
c1c7a7405444 (comint-displayed-dynamic-completions): New variable.
Miles Bader <miles@gnu.org>
parents: 45916
diff changeset
2953 ;; not have displayed a completions window the last time it was
c1c7a7405444 (comint-displayed-dynamic-completions): New variable.
Miles Bader <miles@gnu.org>
parents: 45916
diff changeset
2954 ;; invoked, and there may be such a window left over from a
c1c7a7405444 (comint-displayed-dynamic-completions): New variable.
Miles Bader <miles@gnu.org>
parents: 45916
diff changeset
2955 ;; previous completion command with a different set of
c1c7a7405444 (comint-displayed-dynamic-completions): New variable.
Miles Bader <miles@gnu.org>
parents: 45916
diff changeset
2956 ;; completions. To detect that case, we also test that the set
c1c7a7405444 (comint-displayed-dynamic-completions): New variable.
Miles Bader <miles@gnu.org>
parents: 45916
diff changeset
2957 ;; of displayed completions is in fact the same as the previously
c1c7a7405444 (comint-displayed-dynamic-completions): New variable.
Miles Bader <miles@gnu.org>
parents: 45916
diff changeset
2958 ;; displayed set.
c1c7a7405444 (comint-displayed-dynamic-completions): New variable.
Miles Bader <miles@gnu.org>
parents: 45916
diff changeset
2959 (equal completions
c1c7a7405444 (comint-displayed-dynamic-completions): New variable.
Miles Bader <miles@gnu.org>
parents: 45916
diff changeset
2960 (buffer-local-value 'comint-displayed-dynamic-completions
c1c7a7405444 (comint-displayed-dynamic-completions): New variable.
Miles Bader <miles@gnu.org>
parents: 45916
diff changeset
2961 (window-buffer window))))
42669
356ecd21a13c (comint-dynamic-list-completions): Repeating the command
Richard M. Stallman <rms@gnu.org>
parents: 42450
diff changeset
2962 ;; If this command was repeated, and
356ecd21a13c (comint-dynamic-list-completions): Repeating the command
Richard M. Stallman <rms@gnu.org>
parents: 42450
diff changeset
2963 ;; there's a fresh completion window with a live buffer,
356ecd21a13c (comint-dynamic-list-completions): Repeating the command
Richard M. Stallman <rms@gnu.org>
parents: 42450
diff changeset
2964 ;; and this command is repeated, scroll that window.
356ecd21a13c (comint-dynamic-list-completions): Repeating the command
Richard M. Stallman <rms@gnu.org>
parents: 42450
diff changeset
2965 (with-current-buffer (window-buffer window)
356ecd21a13c (comint-dynamic-list-completions): Repeating the command
Richard M. Stallman <rms@gnu.org>
parents: 42450
diff changeset
2966 (if (pos-visible-in-window-p (point-max) window)
356ecd21a13c (comint-dynamic-list-completions): Repeating the command
Richard M. Stallman <rms@gnu.org>
parents: 42450
diff changeset
2967 (set-window-start window (point-min))
356ecd21a13c (comint-dynamic-list-completions): Repeating the command
Richard M. Stallman <rms@gnu.org>
parents: 42450
diff changeset
2968 (save-selected-window
356ecd21a13c (comint-dynamic-list-completions): Repeating the command
Richard M. Stallman <rms@gnu.org>
parents: 42450
diff changeset
2969 (select-window window)
356ecd21a13c (comint-dynamic-list-completions): Repeating the command
Richard M. Stallman <rms@gnu.org>
parents: 42450
diff changeset
2970 (scroll-up))))
356ecd21a13c (comint-dynamic-list-completions): Repeating the command
Richard M. Stallman <rms@gnu.org>
parents: 42450
diff changeset
2971
53399
9a9d11c249b9 (comint-arguments): Set COUNT after ARGS is complete.
Richard M. Stallman <rms@gnu.org>
parents: 53391
diff changeset
2972 ;; Display a completion list for the first time.
9a9d11c249b9 (comint-arguments): Set COUNT after ARGS is complete.
Richard M. Stallman <rms@gnu.org>
parents: 53391
diff changeset
2973 (setq comint-dynamic-list-completions-config
9a9d11c249b9 (comint-arguments): Set COUNT after ARGS is complete.
Richard M. Stallman <rms@gnu.org>
parents: 53391
diff changeset
2974 (current-window-configuration))
9a9d11c249b9 (comint-arguments): Set COUNT after ARGS is complete.
Richard M. Stallman <rms@gnu.org>
parents: 53391
diff changeset
2975 (with-output-to-temp-buffer "*Completions*"
9a9d11c249b9 (comint-arguments): Set COUNT after ARGS is complete.
Richard M. Stallman <rms@gnu.org>
parents: 53391
diff changeset
2976 (display-completion-list completions))
9a9d11c249b9 (comint-arguments): Set COUNT after ARGS is complete.
Richard M. Stallman <rms@gnu.org>
parents: 53391
diff changeset
2977 (message "Type space to flush; repeat completion command to scroll"))
9a9d11c249b9 (comint-arguments): Set COUNT after ARGS is complete.
Richard M. Stallman <rms@gnu.org>
parents: 53391
diff changeset
2978
9a9d11c249b9 (comint-arguments): Set COUNT after ARGS is complete.
Richard M. Stallman <rms@gnu.org>
parents: 53391
diff changeset
2979 ;; Read the next key, to process SPC.
9a9d11c249b9 (comint-arguments): Set COUNT after ARGS is complete.
Richard M. Stallman <rms@gnu.org>
parents: 53391
diff changeset
2980 (let (key first)
55881
79a700a71463 (comint-replace-by-expanded-history-before-point):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55295
diff changeset
2981 (if (with-current-buffer (get-buffer "*Completions*")
79a700a71463 (comint-replace-by-expanded-history-before-point):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55295
diff changeset
2982 (set (make-local-variable 'comint-displayed-dynamic-completions)
53399
9a9d11c249b9 (comint-arguments): Set COUNT after ARGS is complete.
Richard M. Stallman <rms@gnu.org>
parents: 53391
diff changeset
2983 completions)
9a9d11c249b9 (comint-arguments): Set COUNT after ARGS is complete.
Richard M. Stallman <rms@gnu.org>
parents: 53391
diff changeset
2984 (setq key (read-key-sequence nil)
9a9d11c249b9 (comint-arguments): Set COUNT after ARGS is complete.
Richard M. Stallman <rms@gnu.org>
parents: 53391
diff changeset
2985 first (aref key 0))
9a9d11c249b9 (comint-arguments): Set COUNT after ARGS is complete.
Richard M. Stallman <rms@gnu.org>
parents: 53391
diff changeset
2986 (and (consp first) (consp (event-start first))
9a9d11c249b9 (comint-arguments): Set COUNT after ARGS is complete.
Richard M. Stallman <rms@gnu.org>
parents: 53391
diff changeset
2987 (eq (window-buffer (posn-window (event-start first)))
9a9d11c249b9 (comint-arguments): Set COUNT after ARGS is complete.
Richard M. Stallman <rms@gnu.org>
parents: 53391
diff changeset
2988 (get-buffer "*Completions*"))
9a9d11c249b9 (comint-arguments): Set COUNT after ARGS is complete.
Richard M. Stallman <rms@gnu.org>
parents: 53391
diff changeset
2989 (eq (key-binding key) 'mouse-choose-completion)))
9a9d11c249b9 (comint-arguments): Set COUNT after ARGS is complete.
Richard M. Stallman <rms@gnu.org>
parents: 53391
diff changeset
2990 ;; If the user does mouse-choose-completion with the mouse,
9a9d11c249b9 (comint-arguments): Set COUNT after ARGS is complete.
Richard M. Stallman <rms@gnu.org>
parents: 53391
diff changeset
2991 ;; execute the command, then delete the completion window.
9a9d11c249b9 (comint-arguments): Set COUNT after ARGS is complete.
Richard M. Stallman <rms@gnu.org>
parents: 53391
diff changeset
2992 (progn
9a9d11c249b9 (comint-arguments): Set COUNT after ARGS is complete.
Richard M. Stallman <rms@gnu.org>
parents: 53391
diff changeset
2993 (mouse-choose-completion first)
9a9d11c249b9 (comint-arguments): Set COUNT after ARGS is complete.
Richard M. Stallman <rms@gnu.org>
parents: 53391
diff changeset
2994 (set-window-configuration comint-dynamic-list-completions-config))
69687
4b35cb9e0b98 (comint-dynamic-list-completions): Allow user to select *Completions* buffer.
Nick Roberts <nickrob@snap.net.nz>
parents: 68651
diff changeset
2995 (if (eq first ?\s)
4b35cb9e0b98 (comint-dynamic-list-completions): Allow user to select *Completions* buffer.
Nick Roberts <nickrob@snap.net.nz>
parents: 68651
diff changeset
2996 (set-window-configuration comint-dynamic-list-completions-config)
4b35cb9e0b98 (comint-dynamic-list-completions): Allow user to select *Completions* buffer.
Nick Roberts <nickrob@snap.net.nz>
parents: 68651
diff changeset
2997 (setq unread-command-events (listify-key-sequence key)))))))
39713
25d48943cd58 (comint-insert-previous-argument): New function.
Miles Bader <miles@gnu.org>
parents: 39240
diff changeset
2998
114
899728e6052a Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
2999
22265
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
3000 (defun comint-get-next-from-history ()
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
3001 "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
3002 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
3003 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
3004 (interactive)
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
3005 (if comint-save-input-ring-index
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
3006 (progn
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
3007 (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
3008 (comint-next-input 1))
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
3009 (message "No previous history command")))
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
3010
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
3011 (defun comint-accumulate ()
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
3012 "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
3013 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
3014 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
3015 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
3016 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
3017 when you send it."
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
3018 (interactive)
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
3019 (insert "\n")
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
3020 (set-marker comint-accum-marker (point))
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
3021 (if comint-input-ring-index
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
3022 (setq comint-save-input-ring-index
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
3023 (- comint-input-ring-index 1))))
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
3024
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
3025 (defun comint-goto-process-mark ()
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
3026 "Move point to the process mark.
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
3027 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
3028 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
3029 (interactive)
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
3030 (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
3031 (error "Current buffer has no process"))))
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
3032 (goto-char (process-mark proc))
35236
ebc45a028f0f (comint-goto-process-mark): Don't print a message
Gerd Moellmann <gerd@gnu.org>
parents: 34977
diff changeset
3033 (when (interactive-p)
ebc45a028f0f (comint-goto-process-mark): Don't print a message
Gerd Moellmann <gerd@gnu.org>
parents: 34977
diff changeset
3034 (message "Point is now at the process mark"))))
22265
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
3035
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
3036 (defun comint-bol-or-process-mark ()
24765
6c69a507d9bd (comint-bol-or-process-mark): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents: 24719
diff changeset
3037 "Move point to beginning of line (after prompt) or to the process mark.
22265
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
3038 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
3039 \(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
3040 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
3041
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
3042 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
3043 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
3044 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
3045 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
3046 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
3047 (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
3048 (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
3049 (comint-bol nil)
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
3050 (comint-goto-process-mark)))
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
3051
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
3052 (defun comint-set-process-mark ()
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
3053 "Set the process mark at point."
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
3054 (interactive)
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
3055 (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
3056 (error "Current buffer has no process"))))
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
3057 (set-marker (process-mark proc) (point))
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
3058 (message "Process mark set")))
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
3059
46bb1b22d269 (comint-get-next-from-history): New command.
Richard M. Stallman <rms@gnu.org>
parents: 21951
diff changeset
3060
42887
466c8a363992 Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 42831
diff changeset
3061 ;; Author: Peter Breton <pbreton@cs.umb.edu>
26553
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3062
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3063 ;; This little add-on for comint is intended to make it easy to get
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3064 ;; output from currently active comint buffers into another buffer,
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3065 ;; or buffers, and then go back to using the comint shell.
32326
b8132c394173 Cleanup whitespace.
Miles Bader <miles@gnu.org>
parents: 32196
diff changeset
3066 ;;
26553
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3067 ;; My particular use is SQL interpreters; I want to be able to execute a
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3068 ;; query using the process associated with a comint-buffer, and save that
54879
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
3069 ;; somewhere else. Because the process might have state (for example, it
26553
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3070 ;; could be in an uncommitted transaction), just running starting a new
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3071 ;; process and having it execute the query and then finish, would not
54879
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
3072 ;; work. I'm sure there are other uses as well, although in many cases
26553
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3073 ;; starting a new process is the simpler, and thus preferable, approach.
32326
b8132c394173 Cleanup whitespace.
Miles Bader <miles@gnu.org>
parents: 32196
diff changeset
3074 ;;
26553
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3075 ;; The basic implementation is as follows: comint-redirect changes the
54879
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
3076 ;; preoutput filter functions (`comint-preoutput-filter-functions') to use
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
3077 ;; its own filter. The filter puts the output into the designated buffer,
26553
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3078 ;; or buffers, until it sees a regexp that tells it to stop (by default,
54879
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
3079 ;; this is the prompt for the interpreter, `comint-prompt-regexp'). When it
26553
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3080 ;; sees the stop regexp, it restores the old filter functions, and runs
54879
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
3081 ;; `comint-redirect-hook'.
26553
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3082 ;;
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3083 ;; Each comint buffer may only use one redirection at a time, but any number
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3084 ;; of different comint buffers may be simultaneously redirected.
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3085 ;;
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3086 ;; NOTE: It is EXTREMELY important that `comint-prompt-regexp' be set to the
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3087 ;; correct prompt for your interpreter, or that you supply a regexp that says
54879
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
3088 ;; when the redirection is finished. Otherwise, redirection will continue
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
3089 ;; indefinitely. The code now does a sanity check to ensure that it can find
26553
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3090 ;; a prompt in the comint buffer; however, it is still important to ensure that
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3091 ;; this prompt is set correctly.
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3092 ;;
54879
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
3093 ;; XXX: This doesn't work so well unless `comint-prompt-regexp' is set;
30640
6f943008c543 (comint-use-prompt-regexp-instead-of-fields): New variable.
Miles Bader <miles@gnu.org>
parents: 30325
diff changeset
3094 ;; perhaps it should prompt for a terminating string (with an
6f943008c543 (comint-use-prompt-regexp-instead-of-fields): New variable.
Miles Bader <miles@gnu.org>
parents: 30325
diff changeset
3095 ;; appropriate magic default by examining what we think is the prompt)?
6f943008c543 (comint-use-prompt-regexp-instead-of-fields): New variable.
Miles Bader <miles@gnu.org>
parents: 30325
diff changeset
3096 ;;
54879
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
3097 ;; Fixme: look for appropriate fields, rather than regexp, if
61873
1cd2d4d601fa (comint-prompt-regexp, comint-get-old-input)
Luc Teirlinck <teirllm@auburn.edu>
parents: 61592
diff changeset
3098 ;; `comint-use-prompt-regexp' is true.
26553
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3099
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3100 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3101 ;; Variables
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3102 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3103
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3104 (defcustom comint-redirect-verbose nil
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3105 "*If non-nil, print messages each time the redirection filter is invoked.
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3106 Also print a message when redirection is completed."
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3107 :group 'comint
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3108 :type 'boolean)
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3109
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3110 ;; Directly analagous to comint-preoutput-filter-functions
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3111 (defvar comint-redirect-filter-functions nil
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3112 "List of functions to call before inserting redirected process output.
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3113 Each function gets one argument, a string containing the text received
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3114 from the subprocess. It should return the string to insert, perhaps
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3115 the same string that was received, or perhaps a modified or transformed
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3116 string.
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3117
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3118 The functions on the list are called sequentially, and each one is given
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3119 the string returned by the previous one. The string returned by the
43579
ebb2754ac469 (comint-preoutput-filter-functions): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 43530
diff changeset
3120 last function is the text that is actually inserted in the redirection buffer.
ebb2754ac469 (comint-preoutput-filter-functions): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 43530
diff changeset
3121
ebb2754ac469 (comint-preoutput-filter-functions): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 43530
diff changeset
3122 You can use `add-hook' to add functions to this list
ebb2754ac469 (comint-preoutput-filter-functions): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 43530
diff changeset
3123 either globally or locally.")
26553
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3124
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3125 ;; Internal variables
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3126
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3127 (defvar comint-redirect-output-buffer nil
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3128 "The buffer or list of buffers to put output into.")
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3129
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3130 (defvar comint-redirect-finished-regexp nil
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3131 "Regular expression that determines when to stop redirection in Comint.
32326
b8132c394173 Cleanup whitespace.
Miles Bader <miles@gnu.org>
parents: 32196
diff changeset
3132 When the redirection filter function is given output that matches this regexp,
26553
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3133 the output is inserted as usual, and redirection is completed.")
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3134
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3135 (defvar comint-redirect-insert-matching-regexp nil
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3136 "If non-nil, the text that ends a redirection is included in it.
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3137 More precisely, the text that matches `comint-redirect-finished-regexp'
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3138 and therefore terminates an output redirection is inserted in the
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3139 redirection target buffer, along with the preceding output.")
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3140
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3141 (defvar comint-redirect-echo-input nil
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3142 "Non-nil means echo input in the process buffer even during redirection.")
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3143
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3144 (defvar comint-redirect-completed nil
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3145 "Non-nil if redirection has completed in the current buffer.")
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3146
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3147 (defvar comint-redirect-original-mode-line-process nil
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3148 "Original mode line for redirected process.")
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3149
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3150 (defvar comint-redirect-perform-sanity-check t
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3151 "If non-nil, check that redirection is likely to complete successfully.
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3152 More precisely, before starting a redirection, verify that the
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3153 regular expression `comint-redirect-finished-regexp' that controls
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3154 when to terminate it actually matches some text already in the process
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3155 buffer. The idea is that this regular expression should match a prompt
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3156 string, and that there ought to be at least one copy of your prompt string
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3157 in the process buffer already.")
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3158
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3159 (defvar comint-redirect-original-filter-function nil
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3160 "The process filter that was in place when redirection is started.
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3161 When redirection is completed, the process filter is restored to
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3162 this value.")
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3163
54879
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
3164 (defvar comint-redirect-subvert-readonly nil
65784
06a7b3628c63 (comint-redirect-subvert-readonly): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 65724
diff changeset
3165 "Non-nil means `comint-redirect' can insert into read-only buffers.
06a7b3628c63 (comint-redirect-subvert-readonly): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 65724
diff changeset
3166 This works by binding `inhibit-read-only' around the insertion.
54879
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
3167 This is useful, for instance, for insertion into Help mode buffers.
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
3168 You probably want to set it locally to the output buffer.")
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
3169
26553
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3170 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3171 ;; Functions
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3172 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3173
32326
b8132c394173 Cleanup whitespace.
Miles Bader <miles@gnu.org>
parents: 32196
diff changeset
3174 (defun comint-redirect-setup (output-buffer
26553
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3175 comint-buffer
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3176 finished-regexp
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3177 &optional echo-input)
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3178 "Set up for output redirection.
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3179 This function sets local variables that are used by `comint-redirect-filter'
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3180 to perform redirection.
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3181
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3182 Output from COMINT-BUFFER is redirected to OUTPUT-BUFFER, until something
32326
b8132c394173 Cleanup whitespace.
Miles Bader <miles@gnu.org>
parents: 32196
diff changeset
3183 in the output matches FINISHED-REGEXP.
26553
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3184
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3185 If optional argument ECHO-INPUT is non-nil, output is echoed to the
54879
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
3186 original Comint buffer.
26553
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3187
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3188 This function is called by `comint-redirect-send-command-to-process',
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3189 and does not normally need to be invoked by the end user or programmer."
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3190 (with-current-buffer comint-buffer
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3191
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3192 (make-local-variable 'comint-redirect-original-mode-line-process)
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3193 (setq comint-redirect-original-mode-line-process mode-line-process)
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3194
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3195 (make-local-variable 'comint-redirect-output-buffer)
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3196 (setq comint-redirect-output-buffer output-buffer)
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3197
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3198 (make-local-variable 'comint-redirect-finished-regexp)
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3199 (setq comint-redirect-finished-regexp finished-regexp)
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3200
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3201 (make-local-variable 'comint-redirect-echo-input)
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3202 (setq comint-redirect-echo-input echo-input)
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3203
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3204 (make-local-variable 'comint-redirect-completed)
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3205 (setq comint-redirect-completed nil)
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3206
32326
b8132c394173 Cleanup whitespace.
Miles Bader <miles@gnu.org>
parents: 32196
diff changeset
3207 (setq mode-line-process
b8132c394173 Cleanup whitespace.
Miles Bader <miles@gnu.org>
parents: 32196
diff changeset
3208 (if mode-line-process
26553
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3209 (list (concat (elt mode-line-process 0) " Redirection"))
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3210 (list ":%s Redirection")))))
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3211
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3212 (defun comint-redirect-cleanup ()
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3213 "End a Comint redirection. See `comint-redirect-send-command'."
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3214 (interactive)
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3215 ;; Restore the process filter
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3216 (set-process-filter (get-buffer-process (current-buffer))
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3217 comint-redirect-original-filter-function)
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3218 ;; Restore the mode line
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3219 (setq mode-line-process comint-redirect-original-mode-line-process)
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3220 ;; Set the completed flag
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3221 (setq comint-redirect-completed t))
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3222
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3223 ;; Because the cleanup happens as a callback, it's not easy to guarantee
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3224 ;; that it really occurs.
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3225 (defalias 'comint-redirect-remove-redirection 'comint-redirect-cleanup)
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3226
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3227 (defun comint-redirect-filter (process input-string)
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3228 "Filter function which redirects output from PROCESS to a buffer or buffers.
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3229 The variable `comint-redirect-output-buffer' says which buffer(s) to
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3230 place output in.
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3231
54879
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
3232 INPUT-STRING is the input from the Comint process.
26553
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3233
32326
b8132c394173 Cleanup whitespace.
Miles Bader <miles@gnu.org>
parents: 32196
diff changeset
3234 This function runs as a process filter, and does not need to be invoked by the
26553
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3235 end user."
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3236 (and process
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3237 (with-current-buffer (process-buffer process)
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3238 (comint-redirect-preoutput-filter input-string)
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3239 ;; If we have to echo output, give it to the original filter function
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3240 (and comint-redirect-echo-input
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3241 comint-redirect-original-filter-function
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3242 (funcall comint-redirect-original-filter-function
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3243 process input-string)))))
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3244
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3245
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3246 (defun comint-redirect-preoutput-filter (input-string)
54879
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
3247 "Comint filter function which redirects Comint output to a buffer or buffers.
26553
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3248 The variable `comint-redirect-output-buffer' says which buffer(s) to
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3249 place output in.
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3250
54879
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
3251 INPUT-STRING is the input from the Comint process.
26553
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3252
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3253 This function does not need to be invoked by the end user."
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3254 (let ((output-buffer-list
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3255 (if (listp comint-redirect-output-buffer)
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3256 comint-redirect-output-buffer
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3257 (list comint-redirect-output-buffer)))
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3258 (filtered-input-string input-string))
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3259
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3260 ;; If there are any filter functions, give them a chance to modify the string
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3261 (let ((functions comint-redirect-filter-functions))
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3262 (while (and functions filtered-input-string)
43579
ebb2754ac469 (comint-preoutput-filter-functions): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 43530
diff changeset
3263 (if (eq (car functions) t)
ebb2754ac469 (comint-preoutput-filter-functions): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 43530
diff changeset
3264 ;; If a local value says "use the default value too",
ebb2754ac469 (comint-preoutput-filter-functions): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 43530
diff changeset
3265 ;; do that.
ebb2754ac469 (comint-preoutput-filter-functions): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 43530
diff changeset
3266 (let ((functions (default-value 'comint-redirect-filter-functions)))
ebb2754ac469 (comint-preoutput-filter-functions): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 43530
diff changeset
3267 (while (and functions filtered-input-string)
ebb2754ac469 (comint-preoutput-filter-functions): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 43530
diff changeset
3268 (setq filtered-input-string
ebb2754ac469 (comint-preoutput-filter-functions): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 43530
diff changeset
3269 (funcall (car functions) filtered-input-string))
ebb2754ac469 (comint-preoutput-filter-functions): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 43530
diff changeset
3270 (setq functions (cdr functions))))
ebb2754ac469 (comint-preoutput-filter-functions): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 43530
diff changeset
3271 (setq filtered-input-string
ebb2754ac469 (comint-preoutput-filter-functions): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 43530
diff changeset
3272 (funcall (car functions) filtered-input-string)))
26553
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3273 (setq functions (cdr functions))))
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3274
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3275 ;; Clobber `comint-redirect-finished-regexp'
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3276 (or comint-redirect-insert-matching-regexp
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3277 (and (string-match comint-redirect-finished-regexp filtered-input-string)
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3278 (setq filtered-input-string
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3279 (replace-match "" nil nil filtered-input-string))))
32326
b8132c394173 Cleanup whitespace.
Miles Bader <miles@gnu.org>
parents: 32196
diff changeset
3280
26553
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3281 ;; Send output to all registered buffers
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3282 (save-excursion
54879
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
3283 (dolist (buf output-buffer-list)
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
3284 ;; Set this buffer to the output buffer
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
3285 (set-buffer (get-buffer-create buf))
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
3286 ;; Go to the end of the buffer
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
3287 (goto-char (point-max))
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
3288 ;; Insert the output
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
3289 (let ((inhibit-read-only comint-redirect-subvert-readonly))
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
3290 (insert filtered-input-string))))
26553
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3291
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3292 ;; Message
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3293 (and comint-redirect-verbose
32326
b8132c394173 Cleanup whitespace.
Miles Bader <miles@gnu.org>
parents: 32196
diff changeset
3294 (message "Redirected output to buffer(s) %s"
26553
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3295 (mapconcat 'identity output-buffer-list " ")))
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3296
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3297 ;; If we see the prompt, tidy up
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3298 ;; We'll look for the prompt in the original string, so nobody can
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3299 ;; clobber it
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3300 (and (string-match comint-redirect-finished-regexp input-string)
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3301 (progn
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3302 (and comint-redirect-verbose
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3303 (message "Redirection completed"))
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3304 (comint-redirect-cleanup)
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3305 (run-hooks 'comint-redirect-hook)))
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3306 ;; Echo input?
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3307 (if comint-redirect-echo-input
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3308 filtered-input-string
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3309 "")))
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3310
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3311 ;;;###autoload
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3312 (defun comint-redirect-send-command (command output-buffer echo &optional no-display)
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3313 "Send COMMAND to process in current buffer, with output to OUTPUT-BUFFER.
54879
4763dd572f96 Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53399
diff changeset
3314 With prefix arg ECHO, echo output in process buffer.
26553
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3315
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3316 If NO-DISPLAY is non-nil, do not show the output buffer."
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3317 (interactive "sCommand: \nBOutput Buffer: \nP")
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3318 (let ((process (get-buffer-process (current-buffer))))
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3319 (if process
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3320 (comint-redirect-send-command-to-process
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3321 command output-buffer (current-buffer) echo no-display)
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3322 (error "No process for current buffer"))))
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3323
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3324 ;;;###autoload
32326
b8132c394173 Cleanup whitespace.
Miles Bader <miles@gnu.org>
parents: 32196
diff changeset
3325 (defun comint-redirect-send-command-to-process
26553
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3326 (command output-buffer process echo &optional no-display)
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3327 "Send COMMAND to PROCESS, with output to OUTPUT-BUFFER.
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3328 With prefix arg, echo output in process buffer.
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3329
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3330 If NO-DISPLAY is non-nil, do not show the output buffer."
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3331 (interactive "sCommand: \nBOutput Buffer: \nbProcess Buffer: \nP")
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3332 (let* (;; The process buffer
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3333 (process-buffer (if (processp process)
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3334 (process-buffer process)
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3335 process))
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3336 (proc (get-buffer-process process-buffer)))
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3337 ;; Change to the process buffer
42831
ba5189cc6432 (comint-redirect-send-command-to-process): Restore previous current buffer.
Richard M. Stallman <rms@gnu.org>
parents: 42803
diff changeset
3338 (with-current-buffer process-buffer
ba5189cc6432 (comint-redirect-send-command-to-process): Restore previous current buffer.
Richard M. Stallman <rms@gnu.org>
parents: 42803
diff changeset
3339
ba5189cc6432 (comint-redirect-send-command-to-process): Restore previous current buffer.
Richard M. Stallman <rms@gnu.org>
parents: 42803
diff changeset
3340 ;; Make sure there's a prompt in the current process buffer
ba5189cc6432 (comint-redirect-send-command-to-process): Restore previous current buffer.
Richard M. Stallman <rms@gnu.org>
parents: 42803
diff changeset
3341 (and comint-redirect-perform-sanity-check
ba5189cc6432 (comint-redirect-send-command-to-process): Restore previous current buffer.
Richard M. Stallman <rms@gnu.org>
parents: 42803
diff changeset
3342 (save-excursion
ba5189cc6432 (comint-redirect-send-command-to-process): Restore previous current buffer.
Richard M. Stallman <rms@gnu.org>
parents: 42803
diff changeset
3343 (goto-char (point-max))
ba5189cc6432 (comint-redirect-send-command-to-process): Restore previous current buffer.
Richard M. Stallman <rms@gnu.org>
parents: 42803
diff changeset
3344 (or (re-search-backward comint-prompt-regexp nil t)
ba5189cc6432 (comint-redirect-send-command-to-process): Restore previous current buffer.
Richard M. Stallman <rms@gnu.org>
parents: 42803
diff changeset
3345 (error "No prompt found or `comint-prompt-regexp' not set properly"))))
26553
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3346
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3347 ;;;;;;;;;;;;;;;;;;;;;
42831
ba5189cc6432 (comint-redirect-send-command-to-process): Restore previous current buffer.
Richard M. Stallman <rms@gnu.org>
parents: 42803
diff changeset
3348 ;; Set up for redirection
26553
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3349 ;;;;;;;;;;;;;;;;;;;;;
42831
ba5189cc6432 (comint-redirect-send-command-to-process): Restore previous current buffer.
Richard M. Stallman <rms@gnu.org>
parents: 42803
diff changeset
3350 (comint-redirect-setup
ba5189cc6432 (comint-redirect-send-command-to-process): Restore previous current buffer.
Richard M. Stallman <rms@gnu.org>
parents: 42803
diff changeset
3351 ;; Output Buffer
ba5189cc6432 (comint-redirect-send-command-to-process): Restore previous current buffer.
Richard M. Stallman <rms@gnu.org>
parents: 42803
diff changeset
3352 output-buffer
ba5189cc6432 (comint-redirect-send-command-to-process): Restore previous current buffer.
Richard M. Stallman <rms@gnu.org>
parents: 42803
diff changeset
3353 ;; Comint Buffer
ba5189cc6432 (comint-redirect-send-command-to-process): Restore previous current buffer.
Richard M. Stallman <rms@gnu.org>
parents: 42803
diff changeset
3354 (current-buffer)
ba5189cc6432 (comint-redirect-send-command-to-process): Restore previous current buffer.
Richard M. Stallman <rms@gnu.org>
parents: 42803
diff changeset
3355 ;; Finished Regexp
ba5189cc6432 (comint-redirect-send-command-to-process): Restore previous current buffer.
Richard M. Stallman <rms@gnu.org>
parents: 42803
diff changeset
3356 comint-prompt-regexp
ba5189cc6432 (comint-redirect-send-command-to-process): Restore previous current buffer.
Richard M. Stallman <rms@gnu.org>
parents: 42803
diff changeset
3357 ;; Echo input
ba5189cc6432 (comint-redirect-send-command-to-process): Restore previous current buffer.
Richard M. Stallman <rms@gnu.org>
parents: 42803
diff changeset
3358 echo)
26553
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3359
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3360 ;;;;;;;;;;;;;;;;;;;;;
42831
ba5189cc6432 (comint-redirect-send-command-to-process): Restore previous current buffer.
Richard M. Stallman <rms@gnu.org>
parents: 42803
diff changeset
3361 ;; Set the filter
26553
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3362 ;;;;;;;;;;;;;;;;;;;;;
42831
ba5189cc6432 (comint-redirect-send-command-to-process): Restore previous current buffer.
Richard M. Stallman <rms@gnu.org>
parents: 42803
diff changeset
3363 ;; Save the old filter
ba5189cc6432 (comint-redirect-send-command-to-process): Restore previous current buffer.
Richard M. Stallman <rms@gnu.org>
parents: 42803
diff changeset
3364 (setq comint-redirect-original-filter-function
ba5189cc6432 (comint-redirect-send-command-to-process): Restore previous current buffer.
Richard M. Stallman <rms@gnu.org>
parents: 42803
diff changeset
3365 (process-filter proc))
ba5189cc6432 (comint-redirect-send-command-to-process): Restore previous current buffer.
Richard M. Stallman <rms@gnu.org>
parents: 42803
diff changeset
3366 (set-process-filter proc 'comint-redirect-filter)
32326
b8132c394173 Cleanup whitespace.
Miles Bader <miles@gnu.org>
parents: 32196
diff changeset
3367
26553
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3368 ;;;;;;;;;;;;;;;;;;;;;
42831
ba5189cc6432 (comint-redirect-send-command-to-process): Restore previous current buffer.
Richard M. Stallman <rms@gnu.org>
parents: 42803
diff changeset
3369 ;; Send the command
26553
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3370 ;;;;;;;;;;;;;;;;;;;;;
42831
ba5189cc6432 (comint-redirect-send-command-to-process): Restore previous current buffer.
Richard M. Stallman <rms@gnu.org>
parents: 42803
diff changeset
3371 (process-send-string
ba5189cc6432 (comint-redirect-send-command-to-process): Restore previous current buffer.
Richard M. Stallman <rms@gnu.org>
parents: 42803
diff changeset
3372 (current-buffer)
ba5189cc6432 (comint-redirect-send-command-to-process): Restore previous current buffer.
Richard M. Stallman <rms@gnu.org>
parents: 42803
diff changeset
3373 (concat command "\n"))
26553
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3374
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3375 ;;;;;;;;;;;;;;;;;;;;;
42831
ba5189cc6432 (comint-redirect-send-command-to-process): Restore previous current buffer.
Richard M. Stallman <rms@gnu.org>
parents: 42803
diff changeset
3376 ;; Show the output
26553
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3377 ;;;;;;;;;;;;;;;;;;;;;
42831
ba5189cc6432 (comint-redirect-send-command-to-process): Restore previous current buffer.
Richard M. Stallman <rms@gnu.org>
parents: 42803
diff changeset
3378 (or no-display
ba5189cc6432 (comint-redirect-send-command-to-process): Restore previous current buffer.
Richard M. Stallman <rms@gnu.org>
parents: 42803
diff changeset
3379 (display-buffer
ba5189cc6432 (comint-redirect-send-command-to-process): Restore previous current buffer.
Richard M. Stallman <rms@gnu.org>
parents: 42803
diff changeset
3380 (get-buffer-create
ba5189cc6432 (comint-redirect-send-command-to-process): Restore previous current buffer.
Richard M. Stallman <rms@gnu.org>
parents: 42803
diff changeset
3381 (if (listp output-buffer)
ba5189cc6432 (comint-redirect-send-command-to-process): Restore previous current buffer.
Richard M. Stallman <rms@gnu.org>
parents: 42803
diff changeset
3382 (car output-buffer)
ba5189cc6432 (comint-redirect-send-command-to-process): Restore previous current buffer.
Richard M. Stallman <rms@gnu.org>
parents: 42803
diff changeset
3383 output-buffer)))))))
26553
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3384
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3385 ;;;###autoload
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3386 (defun comint-redirect-results-list (command regexp regexp-group)
32326
b8132c394173 Cleanup whitespace.
Miles Bader <miles@gnu.org>
parents: 32196
diff changeset
3387 "Send COMMAND to current process.
26553
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3388 Return a list of expressions in the output which match REGEXP.
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3389 REGEXP-GROUP is the regular expression group in REGEXP to use."
32326
b8132c394173 Cleanup whitespace.
Miles Bader <miles@gnu.org>
parents: 32196
diff changeset
3390 (comint-redirect-results-list-from-process
26553
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3391 (get-buffer-process (current-buffer))
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3392 command regexp regexp-group))
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3393
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3394 ;;;###autoload
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3395 (defun comint-redirect-results-list-from-process (process command regexp regexp-group)
32326
b8132c394173 Cleanup whitespace.
Miles Bader <miles@gnu.org>
parents: 32196
diff changeset
3396 "Send COMMAND to PROCESS.
26553
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3397 Return a list of expressions in the output which match REGEXP.
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3398 REGEXP-GROUP is the regular expression group in REGEXP to use."
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3399 (let ((output-buffer " *Comint Redirect Work Buffer*")
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3400 results)
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3401 (save-excursion
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3402 (set-buffer (get-buffer-create output-buffer))
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3403 (erase-buffer)
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3404 (comint-redirect-send-command-to-process command
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3405 output-buffer process nil t)
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3406 ;; Wait for the process to complete
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3407 (set-buffer (process-buffer process))
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3408 (while (null comint-redirect-completed)
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3409 (accept-process-output nil 1))
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3410 ;; Collect the output
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3411 (set-buffer output-buffer)
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3412 (goto-char (point-min))
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3413 ;; Skip past the command, if it was echoed
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3414 (and (looking-at command)
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3415 (forward-line))
32326
b8132c394173 Cleanup whitespace.
Miles Bader <miles@gnu.org>
parents: 32196
diff changeset
3416 (while (re-search-forward regexp nil t)
26553
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3417 (setq results
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3418 (cons (buffer-substring-no-properties
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3419 (match-beginning regexp-group)
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3420 (match-end regexp-group))
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3421 results)))
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3422 results)))
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3423
29078
2e20146198ce Add to debug-ignored-errors.
Dave Love <fx@gnu.org>
parents: 28880
diff changeset
3424 (mapc (lambda (x)
2e20146198ce Add to debug-ignored-errors.
Dave Love <fx@gnu.org>
parents: 28880
diff changeset
3425 (add-to-list 'debug-ignored-errors x))
2e20146198ce Add to debug-ignored-errors.
Dave Love <fx@gnu.org>
parents: 28880
diff changeset
3426 '("^Not at command line$"
2e20146198ce Add to debug-ignored-errors.
Dave Love <fx@gnu.org>
parents: 28880
diff changeset
3427 "^Empty input ring$"
2e20146198ce Add to debug-ignored-errors.
Dave Love <fx@gnu.org>
parents: 28880
diff changeset
3428 "^No history$"
2e20146198ce Add to debug-ignored-errors.
Dave Love <fx@gnu.org>
parents: 28880
diff changeset
3429 "^Not found$" ; Too common?
2e20146198ce Add to debug-ignored-errors.
Dave Love <fx@gnu.org>
parents: 28880
diff changeset
3430 "^Current buffer has no process$"))
39713
25d48943cd58 (comint-insert-previous-argument): New function.
Miles Bader <miles@gnu.org>
parents: 39240
diff changeset
3431
26553
b3b1f3b51229 Add redirection.from active comint buffers into
Gerd Moellmann <gerd@gnu.org>
parents: 26174
diff changeset
3432
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
3433 ;; Converting process modes to use comint mode
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
3434 ;; ===========================================================================
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
3435 ;; 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
3436 ;; 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
3437 ;; 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
3438 ;;
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
3439 ;; Renaming variables
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
3440 ;; 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
3441 ;; ones:
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
3442 ;; Local variables:
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
3443 ;; last-input-start comint-last-input-start
32326
b8132c394173 Cleanup whitespace.
Miles Bader <miles@gnu.org>
parents: 32196
diff changeset
3444 ;; last-input-end comint-last-input-end
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
3445 ;; shell-prompt-pattern comint-prompt-regexp
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
3446 ;; shell-set-directory-error-hook <no equivalent>
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
3447 ;; Miscellaneous:
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
3448 ;; shell-set-directory <unnecessary>
32326
b8132c394173 Cleanup whitespace.
Miles Bader <miles@gnu.org>
parents: 32196
diff changeset
3449 ;; shell-mode-map comint-mode-map
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
3450 ;; Commands:
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
3451 ;; shell-send-input comint-send-input
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
3452 ;; shell-send-eof comint-delchar-or-maybe-eof
32326
b8132c394173 Cleanup whitespace.
Miles Bader <miles@gnu.org>
parents: 32196
diff changeset
3453 ;; kill-shell-input comint-kill-input
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
3454 ;; interrupt-shell-subjob comint-interrupt-subjob
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
3455 ;; stop-shell-subjob comint-stop-subjob
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
3456 ;; quit-shell-subjob comint-quit-subjob
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
3457 ;; kill-shell-subjob comint-kill-subjob
32613
6aece997f0f9 (comint-delete-output): Renamed from `comint-kill-output'.
Miles Bader <miles@gnu.org>
parents: 32598
diff changeset
3458 ;; kill-output-from-shell comint-delete-output
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
3459 ;; show-output-from-shell comint-show-output
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
3460 ;; 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
3461 ;;
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
3462 ;; SHELL-SET-DIRECTORY is gone, its functionality taken over by
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
3463 ;; 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
3464 ;; Comint mode does not provide functionality equivalent to
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
3465 ;; shell-set-directory-error-hook; it is gone.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
3466 ;;
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
3467 ;; 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
3468 ;; the buffer after input is sent, perhaps because the inferior
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
3469 ;; 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
3470 ;; 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
3471 ;; 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
3472 ;; for this; the input history ring often does the job better.
32326
b8132c394173 Cleanup whitespace.
Miles Bader <miles@gnu.org>
parents: 32196
diff changeset
3473 ;;
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
3474 ;; 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
3475 ;; *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
3476 ;; 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
3477 ;; necessary comint-specific local variables. Then create the
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
3478 ;; 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
3479 ;; 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
3480 ;; (comint-{prompt-regexp, input-filter, input-filter-functions,
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
3481 ;; 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
3482 ;; 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
3483 ;; 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
3484 ;; is typical:
32326
b8132c394173 Cleanup whitespace.
Miles Bader <miles@gnu.org>
parents: 32196
diff changeset
3485 ;;
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
3486 ;; (defvar shell-mode-map '())
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
3487 ;; (cond ((not shell-mode-map)
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
3488 ;; (setq shell-mode-map (copy-keymap comint-mode-map))
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
3489 ;; (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
3490 ;; (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
3491 ;; (define-key shell-mode-map "\t" 'comint-dynamic-complete)
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
3492 ;; (define-key shell-mode-map "\M-?"
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
3493 ;; 'comint-dynamic-list-filename-completions)))
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
3494 ;;
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
3495 ;; (defun shell-mode ()
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
3496 ;; (interactive)
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
3497 ;; (comint-mode)
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
3498 ;; (setq comint-prompt-regexp shell-prompt-pattern)
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
3499 ;; (setq major-mode 'shell-mode)
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
3500 ;; (setq mode-name "Shell")
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
3501 ;; (use-local-map shell-mode-map)
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
3502 ;; (make-local-variable 'shell-directory-stack)
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
3503 ;; (setq shell-directory-stack nil)
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
3504 ;; (add-hook 'comint-input-filter-functions 'shell-directory-tracker)
62740
073c3cc1d1d5 Use run-mode-hooks in example.
Lute Kamstra <lute@gnu.org>
parents: 61922
diff changeset
3505 ;; (run-mode-hooks 'shell-mode-hook))
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
3506 ;;
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
3507 ;;
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
3508 ;; Completion for comint-mode users
32326
b8132c394173 Cleanup whitespace.
Miles Bader <miles@gnu.org>
parents: 32196
diff changeset
3509 ;;
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13971
diff changeset
3510 ;; 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
3511 ;; 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
3512 ;; 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
3513 ;; 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
3514 ;; completion job.
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
3515
39713
25d48943cd58 (comint-insert-previous-argument): New function.
Miles Bader <miles@gnu.org>
parents: 39240
diff changeset
3516
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 182
diff changeset
3517 (provide 'comint)
662
8a533acedb77 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 638
diff changeset
3518
57419
658b7dadee60 (comint-mouse-insert-input): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56220
diff changeset
3519 ;; arch-tag: 1793314c-09db-40be-9549-9aeae3e75164
38409
153f1b1f2efd Emacs lisp coding convention fixes.
Pavel Janík <Pavel@Janik.cz>
parents: 38073
diff changeset
3520 ;;; comint.el ends here