annotate lisp/term.el @ 51747:b4fb79bf98ba

Fixed some autoload problems: Try to ensure that the entry for ".c" extension comes before the one for ".C" on auto-mode-alist', to behave better on case insensitive OS:es. Fixed incorrect entries that were added to interpreter-mode-alist'. Moved the autoload directives for AWK to the top level since they aren't recognized anywhere else. Do not use the new AWK mode doc in the autoload form for the old AWK mode.
author Martin Stjernholm <mast@lysator.liu.se>
date Sat, 05 Jul 2003 19:53:33 +0000
parents e88404e8f2cf
children d3fa53727e82 d7ddb3e565de
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
13337
84acc3adcd63 Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 12229
diff changeset
1 ;;; term.el --- general command interpreter in a window stuff
84acc3adcd63 Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 12229
diff changeset
2
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3 ;;; Copyright (C) 1988, 1990, 1992, 1994, 1995 Free Software Foundation, Inc.
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
4
38414
67b464da13ec Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents: 36763
diff changeset
5 ;; Author: Per Bothner <bothner@cygnus.com>
67b464da13ec Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents: 36763
diff changeset
6 ;; Based on comint mode written by: Olin Shivers <shivers@cs.cmu.edu>
67b464da13ec Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents: 36763
diff changeset
7 ;; Keywords: processes
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
8
24044
9a52ffb7bfb2 (term_send_home): Change the string to
Richard M. Stallman <rms@gnu.org>
parents: 23311
diff changeset
9 ;; This file is part of GNU Emacs.
9a52ffb7bfb2 (term_send_home): Change the string to
Richard M. Stallman <rms@gnu.org>
parents: 23311
diff changeset
10
9a52ffb7bfb2 (term_send_home): Change the string to
Richard M. Stallman <rms@gnu.org>
parents: 23311
diff changeset
11 ;; GNU Emacs is free software; you can redistribute it and/or modify
9a52ffb7bfb2 (term_send_home): Change the string to
Richard M. Stallman <rms@gnu.org>
parents: 23311
diff changeset
12 ;; it under the terms of the GNU General Public License as published by
9a52ffb7bfb2 (term_send_home): Change the string to
Richard M. Stallman <rms@gnu.org>
parents: 23311
diff changeset
13 ;; the Free Software Foundation; either version 2, or (at your option)
9a52ffb7bfb2 (term_send_home): Change the string to
Richard M. Stallman <rms@gnu.org>
parents: 23311
diff changeset
14 ;; any later version.
9a52ffb7bfb2 (term_send_home): Change the string to
Richard M. Stallman <rms@gnu.org>
parents: 23311
diff changeset
15
9a52ffb7bfb2 (term_send_home): Change the string to
Richard M. Stallman <rms@gnu.org>
parents: 23311
diff changeset
16 ;; GNU Emacs is distributed in the hope that it will be useful,
9a52ffb7bfb2 (term_send_home): Change the string to
Richard M. Stallman <rms@gnu.org>
parents: 23311
diff changeset
17 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
9a52ffb7bfb2 (term_send_home): Change the string to
Richard M. Stallman <rms@gnu.org>
parents: 23311
diff changeset
18 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
9a52ffb7bfb2 (term_send_home): Change the string to
Richard M. Stallman <rms@gnu.org>
parents: 23311
diff changeset
19 ;; GNU General Public License for more details.
9a52ffb7bfb2 (term_send_home): Change the string to
Richard M. Stallman <rms@gnu.org>
parents: 23311
diff changeset
20
9a52ffb7bfb2 (term_send_home): Change the string to
Richard M. Stallman <rms@gnu.org>
parents: 23311
diff changeset
21 ;; You should have received a copy of the GNU General Public License
9a52ffb7bfb2 (term_send_home): Change the string to
Richard M. Stallman <rms@gnu.org>
parents: 23311
diff changeset
22 ;; along with GNU Emacs; see the file COPYING. If not, write to the
9a52ffb7bfb2 (term_send_home): Change the string to
Richard M. Stallman <rms@gnu.org>
parents: 23311
diff changeset
23 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
9a52ffb7bfb2 (term_send_home): Change the string to
Richard M. Stallman <rms@gnu.org>
parents: 23311
diff changeset
24 ;; Boston, MA 02111-1307, USA.
9a52ffb7bfb2 (term_send_home): Change the string to
Richard M. Stallman <rms@gnu.org>
parents: 23311
diff changeset
25
36763
00b03757e45b These changes are based on a patch sent from Yong Lu <lyongu@yahoo.com>.
Kenichi Handa <handa@m17n.org>
parents: 34863
diff changeset
26 ;;; Marck 13 2001
00b03757e45b These changes are based on a patch sent from Yong Lu <lyongu@yahoo.com>.
Kenichi Handa <handa@m17n.org>
parents: 34863
diff changeset
27 ;;; Fixes for CJK support by Yong Lu <lyongu@yahoo.com>.
00b03757e45b These changes are based on a patch sent from Yong Lu <lyongu@yahoo.com>.
Kenichi Handa <handa@m17n.org>
parents: 34863
diff changeset
28
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
29 ;;; Dir/Hostname tracking and ANSI colorization by
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
30 ;;; Marco Melgazzi <marco@techie.com>.
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
31
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
32 ;;; To see what I've modified and where it came from search for '-mm'
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
33
38414
67b464da13ec Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents: 36763
diff changeset
34 ;;; Commentary:
67b464da13ec Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents: 36763
diff changeset
35
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
36 ;;; Speed considerations and a few caveats
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
37 ;;; --------------------------------------
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
38 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
39 ;;; While the message passing and the colorization surely introduce some
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
40 ;;; overhead this has became so small that IMHO is surely outweighted by
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
41 ;;; the benefits you get but, as usual, YMMV
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
42 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
43 ;;; Important caveat, when deciding the cursor/'grey keys' keycodes I had to
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
44 ;;; make a choice: on my Linux box this choice allows me to run all the
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
45 ;;; ncurses applications without problems but make these keys
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
46 ;;; uncomprehensible to all the cursesX programs. Your mileage may vary so
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
47 ;;; you may consider changing the default 'emulation'. Just search for this
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
48 ;;; piece of code and modify it as you like:
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
49 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
50 ;;; ;; Which would be better: "\e[A" or "\eOA"? readline accepts either.
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
51 ;;; ;; For my configuration it's definitely better \eOA but YMMV. -mm
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
52 ;;; ;; For example: vi works with \eOA while elm wants \e[A ...
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
53 ;;; (defun term-send-up () (interactive) (term-send-raw-string "\eOA"))
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
54 ;;; (defun term-send-down () (interactive) (term-send-raw-string "\eOB"))
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
55 ;;; (defun term-send-right () (interactive) (term-send-raw-string "\eOC"))
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
56 ;;; (defun term-send-left () (interactive) (term-send-raw-string "\eOD"))
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
57 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
58 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
59 ;;; IMPORTANT: additions & changes
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
60 ;;; ------------------------------
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
61 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
62 ;;; With this enhanced ansi-term.el you will get a reliable mechanism of
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
63 ;;; directory/username/host tracking: the only drawback is that you will
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
64 ;;; have to modify your shell start-up script. It's worth it, believe me :).
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
65 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
66 ;;; When you rlogin/su/telnet and the account you access has a modified
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
67 ;;; startup script, you will be able to access the remote files as usual
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
68 ;;; with C-x C-f, if it's needed you will have to enter a password,
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
69 ;;; otherwise the file should get loaded straight away.
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
70 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
71 ;;; This is useful even if you work only on one host: it often happens that,
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
72 ;;; for maintenance reasons, you have to edit files 'as root': before
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
73 ;;; patching term.el, I su-ed in a term.el buffer and used vi :), now I
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
74 ;;; simply do a C-x C-f and, via ange-ftp, the file is automatically loaded
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
75 ;;; 'as-root'. ( If you don't want to enter the root password every time you
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
76 ;;; can put it in your .netrc: note that this is -not- advisable if you're
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
77 ;;; connected to the internet or if somebody else works on your workstation!)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
78 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
79 ;;; If you use wu-ftpd you can use some of its features to avoid root ftp
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
80 ;;; access to the rest of the world: just put in /etc/ftphosts something like
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
81 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
82 ;;; # Local access
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
83 ;;; allow root 127.0.0.1
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
84 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
85 ;;; # By default nobody can't do anything
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
86 ;;; deny root *
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
87 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
88 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
89 ;;; ----------------------------------------
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
90 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
91 ;;; If, instead of 'term', you call 'ansi-term', you get multiple term
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
92 ;;; buffers, after every new call ansi-term opens a new *ansi-term*<xx> window,
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
93 ;;; where <xx> is, as usual, a number...
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
94 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
95 ;;; ----------------------------------------
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
96 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
97 ;;; With the term-buffer-maximum-size you can finally decide how many
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
98 ;;; scrollback lines to keep: its default is 2048 but you can change it as
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
99 ;;; usual.
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
100 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
101 ;;; ----------------------------------------
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
102 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
103 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
104 ;;; ANSI colorization should work well, I've decided to limit the interpreter
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
105 ;;; to five outstanding commands (like ESC [ 01;04;32;41;07m.
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
106 ;;; You shouldn't need more, if you do, tell me and I'll increase it. It's
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
107 ;;; so easy you could do it yourself...
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
108 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
109 ;;; Blink, is not supported. Currently it's mapped as bold.
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
110 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
111 ;;; Important caveat:
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
112 ;;; -----------------
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
113 ;;; if you want custom colors in term.el redefine term-default-fg-color
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
114 ;;; and term-default-bg-color BEFORE loading it.
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
115 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
116 ;;; ----------------------------------------
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
117 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
118 ;;; If you'd like to check out my complete configuration, you can download
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
119 ;;; it from http://www.polito.it/~s64912/things.html, it's ~500k in size and
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
120 ;;; contains my .cshrc, .emacs and my whole site-lisp subdirectory. (notice
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
121 ;;; that this term.el may be newer/older than the one in there, please
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
122 ;;; check!)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
123 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
124 ;;; This complete configuration contains, among other things, a complete
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
125 ;;; rectangular marking solution (based on rect-mark.el and
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
126 ;;; pc-bindings.el) and should be a good example of how extensively Emacs
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
127 ;;; can be configured on a ppp-connected ws.
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
128 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
129 ;;; ----------------------------------------
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
130 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
131 ;;; TODO:
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
132 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
133 ;;; - Add hooks to allow raw-mode keys to be configurable
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
134 ;;; - Which keys are better ? \eOA or \e[A ?
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
135 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
136 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
137 ;;; Changes:
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
138 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
139 ;;; V4.0 January 1997
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
140 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
141 ;;; - Huge reworking of the faces code: now we only have roughly 20-30
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
142 ;;; faces for everything so we're even faster than the old md-term.el !
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
143 ;;; - Finished removing all the J-Shell code.
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
144 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
145 ;;; V3.0 January 1997
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
146 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
147 ;;; - Now all the supportable ANSI commands work well.
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
148 ;;; - Reworked a little the code: much less jsh-inspired stuff
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
149 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
150 ;;; V2.3 November
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
151 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
152 ;;; - Now all the faces are accessed through an array: much cleaner code.
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
153 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
154 ;;; V2.2 November 4 1996
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
155 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
156 ;;; - Implemented ANSI output colorization ( a bit rough but enough for
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
157 ;;; color_ls )
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
158 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
159 ;;; - Implemented a maximum limit for the scroll buffer (stolen from
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
160 ;;; comint.el)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
161 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
162 ;;; v2.1 October 28 1996, first public release
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
163 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
164 ;;; - Some new keybindings for term-char mode ( notably home/end/...)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
165 ;;; - Directory, hostname and username tracking via ange-ftp
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
166 ;;; - Multi-term capability via the ansi-term call
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
167 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
168 ;;; ----------------------------------------------------------------
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
169 ;;; You should/could have something like this in your .emacs to take
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
170 ;;; full advantage of this package
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
171 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
172 ;;; (add-hook 'term-mode-hook
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
173 ;;; (function
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
174 ;;; (lambda ()
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
175 ;;; (setq term-prompt-regexp "^[^#$%>\n]*[#$%>] *")
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
176 ;;; (make-local-variable 'mouse-yank-at-point)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
177 ;;; (make-local-variable 'transient-mark-mode)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
178 ;;; (setq mouse-yank-at-point t)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
179 ;;; (setq transient-mark-mode nil)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
180 ;;; (auto-fill-mode -1)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
181 ;;; (setq tab-width 8 ))))
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
182 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
183 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
184 ;;; ----------------------------------------
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
185 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
186 ;;; If you want to use color ls the best setup is to have a different file
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
187 ;;; when you use eterm ( see above, mine is named .emacs_dircolors ). This
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
188 ;;; is necessary because some terminals, rxvt for example, need non-ansi
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
189 ;;; hacks to work ( for example on my rxvt white is wired to fg, and to
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
190 ;;; obtain normal white I have to do bold-white :)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
191 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
192 ;;; ----------------------------------------
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
193 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
194 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
195 ;;; # Configuration file for the color ls utility
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
196 ;;; # This file goes in the /etc directory, and must be world readable.
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
197 ;;; # You can copy this file to .dir_colors in your $HOME directory to
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
198 ;;; # override the system defaults.
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
199 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
200 ;;; # COLOR needs one of these arguments: 'tty' colorizes output to ttys, but
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
201 ;;; # not pipes. 'all' adds color characters to all output. 'none' shuts
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
202 ;;; # colorization off.
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
203 ;;; COLOR tty
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
204 ;;; OPTIONS -F
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
205 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
206 ;;; # Below, there should be one TERM entry for each termtype that is
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
207 ;;; # colorizable
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
208 ;;; TERM eterm
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
209 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
210 ;;; # EIGHTBIT, followed by '1' for on, '0' for off. (8-bit output)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
211 ;;; EIGHTBIT 1
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
212 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
213 ;;; # Below are the color init strings for the basic file types. A color init
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
214 ;;; # string consists of one or more of the following numeric codes:
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
215 ;;; # Attribute codes:
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
216 ;;; # 00=none 01=bold 04=underscore 05=blink 07=reverse 08=concealed
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
217 ;;; # Text color codes:
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
218 ;;; # 30=black 31=red 32=green 33=yellow 34=blue 35=magenta 36=cyan 37=white
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
219 ;;; # Background color codes:
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
220 ;;; # 40=black 41=red 42=green 43=yellow 44=blue 45=magenta 46=cyan 47=white
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
221 ;;; NORMAL 00 # global default, although everything should be something.
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
222 ;;; FILE 00 # normal file
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
223 ;;; DIR 00;37 # directory
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
224 ;;; LINK 00;36 # symbolic link
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
225 ;;; FIFO 00;37 # pipe
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
226 ;;; SOCK 40;35 # socket
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
227 ;;; BLK 33;01 # block device driver
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
228 ;;; CHR 33;01 # character device driver
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
229 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
230 ;;; # This is for files with execute permission:
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
231 ;;; EXEC 00;32
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
232 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
233 ;;; # List any file extensions like '.gz' or '.tar' that you would like ls
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
234 ;;; # to colorize below. Put the extension, a space, and the color init
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
235 ;;; # string. (and any comments you want to add after a '#')
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
236 ;;; .tar 01;33 # archives or compressed
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
237 ;;; .tgz 01;33
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
238 ;;; .arj 01;33
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
239 ;;; .taz 01;33
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
240 ;;; .lzh 01;33
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
241 ;;; .zip 01;33
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
242 ;;; .z 01;33
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
243 ;;; .Z 01;33
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
244 ;;; .gz 01;33
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
245 ;;; .jpg 01;35 # image formats
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
246 ;;; .gif 01;35
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
247 ;;; .bmp 01;35
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
248 ;;; .xbm 01;35
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
249 ;;; .xpm 01;35
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
250 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
251 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
252 ;;; ----------------------------------------
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
253 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
254 ;;; Notice: for directory/host/user tracking you need to have something
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
255 ;;; like this in your shell startup script ( this is for tcsh but should
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
256 ;;; be quite easy to port to other shells )
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
257 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
258 ;;; ----------------------------------------
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
259 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
260 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
261 ;;; set os = `uname`
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
262 ;;; set host = `hostname`
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
263 ;;; set date = `date`
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
264 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
265 ;;; # su does not change this but I'd like it to
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
266 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
267 ;;; set user = `whoami`
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
268 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
269 ;;; # ...
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
270 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
271 ;;; if ( eterm =~ $TERM ) then
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
272 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
273 ;;; echo --------------------------------------------------------------
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
274 ;;; echo Hello $user
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
275 ;;; echo Today is $date
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
276 ;;; echo We are on $host running $os under Emacs term mode
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
277 ;;; echo --------------------------------------------------------------
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
278 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
279 ;;; setenv EDITOR emacsclient
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
280 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
281 ;;; # Notice: $host and $user have been set before to 'hostname' and 'whoami'
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
282 ;;; # this is necessary because, f.e., certain versions of 'su' do not change
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
283 ;;; # $user, YMMV: if you don't want to fiddle with them define a couple
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
284 ;;; # of new variables and use these instead.
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
285 ;;; # NOTICE that there is a space between "AnSiT?" and $whatever NOTICE
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
286 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
287 ;;; # These are because we want the real cwd in the messages, not the login
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
288 ;;; # time one !
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
289 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
290 ;;; set cwd_hack='$cwd'
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
291 ;;; set host_hack='$host'
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
292 ;;; set user_hack='$user'
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
293 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
294 ;;; # Notice that the ^[ character is an ESC, not two chars. You can
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
295 ;;; # get it in various ways, for example by typing
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
296 ;;; # echo -e '\033' > escape.file
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
297 ;;; # or by using your favourite editor
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
298 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
299 ;;; foreach temp (cd pushd)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
300 ;;; alias $temp "$temp \!* ; echo 'AnSiTc' $cwd_hack"
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
301 ;;; end
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
302 ;;; alias popd 'popd ;echo "AnSiTc" $cwd'
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
303 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
304 ;;; # Every command that can modify the user/host/directory should be aliased
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
305 ;;; # as follows for the tracking mechanism to work.
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
306 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
307 ;;; foreach temp ( rlogin telnet rsh sh ksh csh tcsh zsh bash tcl su )
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
308 ;;; alias $temp "$temp \!* ; echo 'AnSiTh' $host_hack ; \
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
309 ;;; echo 'AnSiTu' $user_hack ;echo 'AnSiTc' $cwd_hack"
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
310 ;;; end
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
311 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
312 ;;; # Start up & use color ls
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
313 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
314 ;;; echo "AnSiTh" $host
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
315 ;;; echo "AnSiTu" $user
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
316 ;;; echo "AnSiTc" $cwd
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
317 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
318 ;;; # some housekeeping
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
319 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
320 ;;; unset cwd_hack
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
321 ;;; unset host_hack
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
322 ;;; unset user_hack
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
323 ;;; unset temp
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
324 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
325 ;;; eval `/bin/dircolors /home/marco/.emacs_dircolors`
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
326 ;;; endif
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
327 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
328 ;;; # ...
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
329 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
330 ;;; # Let's not clutter user space
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
331 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
332 ;;; unset os
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
333 ;;; unset date
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
334 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
335 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
336
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
337 ;;; Original Commentary:
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
338 ;;; --------------------
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
339
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13961
diff changeset
340 ;; The changelog is at the end of this file.
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
341
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13961
diff changeset
342 ;; Please send me bug reports, bug fixes, and extensions, so that I can
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13961
diff changeset
343 ;; merge them into the master source.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13961
diff changeset
344 ;; - Per Bothner (bothner@cygnus.com)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
345
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13961
diff changeset
346 ;; This file defines a general command-interpreter-in-a-buffer package
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
347 ;; (term mode). The idea is that you can build specific process-in-a-buffer
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13961
diff changeset
348 ;; modes on top of term mode -- e.g., lisp, shell, scheme, T, soar, ....
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
349 ;; This way, all these specific packages share a common base functionality,
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13961
diff changeset
350 ;; and a common set of bindings, which makes them easier to use (and
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13961
diff changeset
351 ;; saves code, implementation time, etc., etc.).
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
352
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13961
diff changeset
353 ;; For hints on converting existing process modes (e.g., tex-mode,
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13961
diff changeset
354 ;; background, dbx, gdb, kermit, prolog, telnet) to use term-mode
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13961
diff changeset
355 ;; instead of shell-mode, see the notes at the end of this file.
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
356
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
357
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13961
diff changeset
358 ;; Brief Command Documentation:
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13961
diff changeset
359 ;;============================================================================
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13961
diff changeset
360 ;; Term Mode Commands: (common to all derived modes, like cmushell & cmulisp
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13961
diff changeset
361 ;; mode)
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13961
diff changeset
362 ;;
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13961
diff changeset
363 ;; m-p term-previous-input Cycle backwards in input history
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13961
diff changeset
364 ;; m-n term-next-input Cycle forwards
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13961
diff changeset
365 ;; m-r term-previous-matching-input Previous input matching a regexp
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13961
diff changeset
366 ;; m-s comint-next-matching-input Next input that matches
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13961
diff changeset
367 ;; return term-send-input
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13961
diff changeset
368 ;; c-c c-a term-bol Beginning of line; skip prompt.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13961
diff changeset
369 ;; c-d term-delchar-or-maybe-eof Delete char unless at end of buff.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13961
diff changeset
370 ;; c-c c-u term-kill-input ^u
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13961
diff changeset
371 ;; c-c c-w backward-kill-word ^w
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13961
diff changeset
372 ;; c-c c-c term-interrupt-subjob ^c
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13961
diff changeset
373 ;; c-c c-z term-stop-subjob ^z
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13961
diff changeset
374 ;; c-c c-\ term-quit-subjob ^\
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13961
diff changeset
375 ;; c-c c-o term-kill-output Delete last batch of process output
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13961
diff changeset
376 ;; c-c c-r term-show-output Show last batch of process output
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13961
diff changeset
377 ;; c-c c-h term-dynamic-list-input-ring List input history
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13961
diff changeset
378 ;;
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13961
diff changeset
379 ;; Not bound by default in term-mode
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13961
diff changeset
380 ;; term-send-invisible Read a line w/o echo, and send to proc
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13961
diff changeset
381 ;; (These are bound in shell-mode)
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13961
diff changeset
382 ;; term-dynamic-complete Complete filename at point.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13961
diff changeset
383 ;; term-dynamic-list-completions List completions in help buffer.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13961
diff changeset
384 ;; term-replace-by-expanded-filename Expand and complete filename at point;
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13961
diff changeset
385 ;; replace with expanded/completed name.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13961
diff changeset
386 ;; term-kill-subjob No mercy.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13961
diff changeset
387 ;; term-show-maximum-output Show as much output as possible.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13961
diff changeset
388 ;; term-continue-subjob Send CONT signal to buffer's process
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
389 ;; group. Useful if you accidentally
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13961
diff changeset
390 ;; suspend your process (with C-c C-z).
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
391
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
392 ;; term-mode-hook is the term mode hook. Basically for your keybindings.
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13961
diff changeset
393 ;; term-load-hook is run after loading in this package.
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
394
38414
67b464da13ec Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents: 36763
diff changeset
395 ;;; Code:
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
396
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13961
diff changeset
397 ;; This is passed to the inferior in the EMACS environment variable,
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13961
diff changeset
398 ;; so it is important to increase it if there are protocol-relevant changes.
10679
aec6cbccf909 (term-protocol-version): Renamed from term-version.
Richard M. Stallman <rms@gnu.org>
parents: 10671
diff changeset
399 (defconst term-protocol-version "0.95")
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
400
25330
6ac0cc90d397 Avoid ange-ftp related compilation warnings.
Dave Love <fx@gnu.org>
parents: 25299
diff changeset
401 (eval-when-compile
6ac0cc90d397 Avoid ange-ftp related compilation warnings.
Dave Love <fx@gnu.org>
parents: 25299
diff changeset
402 (require 'ange-ftp))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
403 (require 'ring)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
404 (require 'ehelp)
17407
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
405
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
406 (defgroup term nil
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
407 "General command interpreter in a window"
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
408 :group 'processes
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
409 :group 'unix)
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
410
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
411
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
412 ;;; Buffer Local Variables:
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
413 ;;;============================================================================
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
414 ;;; Term mode buffer local variables:
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
415 ;;; term-prompt-regexp - string term-bol uses to match prompt.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
416 ;;; term-delimiter-argument-list - list For delimiters and arguments
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
417 ;;; term-last-input-start - marker Handy if inferior always echoes
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
418 ;;; term-last-input-end - marker For term-kill-output command
10671
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
419 ;; For the input history mechanism:
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
420 (defvar term-input-ring-size 32 "Size of input history ring.")
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
421 ;;; term-input-ring-size - integer
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
422 ;;; term-input-ring - ring
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
423 ;;; term-input-ring-index - number ...
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
424 ;;; term-input-autoexpand - symbol ...
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
425 ;;; term-input-ignoredups - boolean ...
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
426 ;;; term-last-input-match - string ...
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
427 ;;; term-dynamic-complete-functions - hook For the completion mechanism
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
428 ;;; term-completion-fignore - list ...
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
429 ;;; term-get-old-input - function Hooks for specific
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
430 ;;; term-input-filter-functions - hook process-in-a-buffer
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
431 ;;; term-input-filter - function modes.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
432 ;;; term-input-send - function
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
433 ;;; term-scroll-to-bottom-on-output - symbol ...
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
434 ;;; term-scroll-show-maximum-output - boolean...
10671
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
435 (defvar term-height) ;; Number of lines in window.
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
436 (defvar term-width) ;; Number of columns in window.
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
437 (defvar term-home-marker) ;; Marks the "home" position for cursor addressing.
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
438 (defvar term-saved-home-marker nil) ;; When using alternate sub-buffer,
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
439 ;; contains saved term-home-marker from original sub-buffer .
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
440 (defvar term-start-line-column 0) ;; (current-column) at start of screen line,
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
441 ;; or nil if unknown.
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
442 (defvar term-current-column 0) ;; If non-nil, is cache for (current-column).
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
443 (defvar term-current-row 0) ;; Current vertical row (relative to home-marker)
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
444 ;; or nil if unknown.
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
445 (defvar term-insert-mode nil)
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
446 (defvar term-vertical-motion)
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
447 (defvar term-terminal-state 0) ;; State of the terminal emulator:
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
448 ;; state 0: Normal state
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
449 ;; state 1: Last character was a graphic in the last column.
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
450 ;; If next char is graphic, first move one column right
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
451 ;; (and line warp) before displaying it.
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
452 ;; This emulates (more or less) the behavior of xterm.
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
453 ;; state 2: seen ESC
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
454 ;; state 3: seen ESC [ (or ESC [ ?)
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
455 ;; state 4: term-terminal-parameter contains pending output.
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
456 (defvar term-kill-echo-list nil) ;; A queue of strings whose echo
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
457 ;; we want suppressed.
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
458 (defvar term-terminal-parameter)
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
459 (defvar term-terminal-previous-parameter)
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
460 (defvar term-current-face 'term-default)
10671
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
461 (defvar term-scroll-start 0) ;; Top-most line (inclusive) of scrolling region.
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
462 (defvar term-scroll-end) ;; Number of line (zero-based) after scrolling region.
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
463 (defvar term-pager-count nil) ;; If nil, paging is disabled.
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
464 ;; Otherwise, number of lines before we need to page.
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
465 (defvar term-saved-cursor nil)
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
466 (defvar term-command-hook)
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
467 (defvar term-log-buffer nil)
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
468 (defvar term-scroll-with-delete nil) ;; term-scroll-with-delete is t if
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
469 ;; forward scrolling should be implemented by delete to
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
470 ;; top-most line(s); and nil if scrolling should be implemented
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
471 ;; by moving term-home-marker. It is set to t iff there is a
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
472 ;; (non-default) scroll-region OR the alternate buffer is used.
10933
3057c4fd86d3 * term.el (term-eol-on-send): New variable. Use it.
Per Bothner <bothner@cygnus.com>
parents: 10679
diff changeset
473 (defvar term-pending-delete-marker) ;; New user input in line mode needs to
3057c4fd86d3 * term.el (term-eol-on-send): New variable. Use it.
Per Bothner <bothner@cygnus.com>
parents: 10679
diff changeset
474 ;; be deleted, because it gets echoed by the inferior.
3057c4fd86d3 * term.el (term-eol-on-send): New variable. Use it.
Per Bothner <bothner@cygnus.com>
parents: 10679
diff changeset
475 ;; To reduce flicker, we defer the delete until the next output.
10671
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
476 (defvar term-old-mode-map nil) ;; Saves the old keymap when in char mode.
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
477 (defvar term-old-mode-line-format) ;; Saves old mode-line-format while paging.
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
478 (defvar term-pager-old-local-map nil) ;; Saves old keymap while paging.
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
479 (defvar term-pager-old-filter) ;; Saved process-filter while paging.
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
480
17407
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
481 (defcustom explicit-shell-file-name nil
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
482 "*If non-nil, is file name to use for explicitly requested inferior shell."
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
483 :type '(choice (const nil) file)
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
484 :group 'term)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
485
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
486 (defvar term-prompt-regexp "^"
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
487 "Regexp to recognise prompts in the inferior process.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
488 Defaults to \"^\", the null string at BOL.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
489
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
490 Good choices:
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
491 Canonical Lisp: \"^[^> \\n]*>+:? *\" (Lucid, franz, kcl, T, cscheme, oaklisp)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
492 Lucid Common Lisp: \"^\\\\(>\\\\|\\\\(->\\\\)+\\\\) *\"
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
493 franz: \"^\\\\(->\\\\|<[0-9]*>:\\\\) *\"
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
494 kcl: \"^>+ *\"
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
495 shell: \"^[^#$%>\\n]*[#$%>] *\"
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
496 T: \"^>+ *\"
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
497
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
498 This is a good thing to set in mode hooks.")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
499
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
500 (defvar term-delimiter-argument-list ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
501 "List of characters to recognise as separate arguments in input.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
502 Strings comprising a character in this list will separate the arguments
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
503 surrounding them, and also be regarded as arguments in their own right (unlike
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
504 whitespace). See `term-arguments'.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
505 Defaults to the empty list.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
506
23311
fd4a0e88aed5 (term-delimiter-argument-list): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents: 20153
diff changeset
507 For shells, a good value is (?\\| ?& ?< ?> ?\\( ?\\) ?\\;).
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
508
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
509 This is a good thing to set in mode hooks.")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
510
17407
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
511 (defcustom term-input-autoexpand nil
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
512 "*If non-nil, expand input command history references on completion.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
513 This mirrors the optional behavior of tcsh (its autoexpand and histlit).
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
514
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
515 If the value is `input', then the expansion is seen on input.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
516 If the value is `history', then the expansion is only when inserting
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
517 into the buffer's input ring. See also `term-magic-space' and
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
518 `term-dynamic-complete'.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
519
17407
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
520 This variable is buffer-local."
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
521 :type '(choice (const nil) (const t) (const input) (const history))
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
522 :group 'term)
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
523
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
524 (defcustom term-input-ignoredups nil
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
525 "*If non-nil, don't add input matching the last on the input ring.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
526 This mirrors the optional behavior of bash.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
527
17407
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
528 This variable is buffer-local."
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
529 :type 'boolean
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
530 :group 'term)
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
531
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
532 (defcustom term-input-ring-file-name nil
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
533 "*If non-nil, name of the file to read/write input history.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
534 See also `term-read-input-ring' and `term-write-input-ring'.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
535
17407
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
536 This variable is buffer-local, and is a good thing to set in mode hooks."
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
537 :type 'boolean
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
538 :group 'term)
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
539
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
540 (defcustom term-scroll-to-bottom-on-output nil
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
541 "*Controls whether interpreter output causes window to scroll.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
542 If nil, then do not scroll. If t or `all', scroll all windows showing buffer.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
543 If `this', scroll only the selected window.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
544 If `others', scroll only those that are not the selected window.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
545
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
546 The default is nil.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
547
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
548 See variable `term-scroll-show-maximum-output'.
17407
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
549 This variable is buffer-local."
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
550 :type 'boolean
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
551 :group 'term)
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
552
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
553 (defcustom term-scroll-show-maximum-output nil
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
554 "*Controls how interpreter output causes window to scroll.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
555 If non-nil, then show the maximum output when the window is scrolled.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
556
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
557 See variable `term-scroll-to-bottom-on-output'.
17407
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
558 This variable is buffer-local."
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
559 :type 'boolean
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
560 :group 'term)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
561
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
562 ;; Where gud-display-frame should put the debugging arrow. This is
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
563 ;; set by the marker-filter, which scans the debugger's output for
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
564 ;; indications of the current pc.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
565 (defvar term-pending-frame nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
566
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
567 ;;; Here are the per-interpreter hooks.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
568 (defvar term-get-old-input (function term-get-old-input-default)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
569 "Function that submits old text in term mode.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
570 This function is called when return is typed while the point is in old text.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
571 It returns the text to be submitted as process input. The default is
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
572 term-get-old-input-default, which grabs the current line, and strips off
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
573 leading text matching term-prompt-regexp")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
574
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
575 (defvar term-dynamic-complete-functions
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
576 '(term-replace-by-expanded-history term-dynamic-complete-filename)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
577 "List of functions called to perform completion.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
578 Functions should return non-nil if completion was performed.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
579 See also `term-dynamic-complete'.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
580
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
581 This is a good thing to set in mode hooks.")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
582
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
583 (defvar term-input-filter
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
584 (function (lambda (str) (not (string-match "\\`\\s *\\'" str))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
585 "Predicate for filtering additions to input history.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
586 Only inputs answering true to this function are saved on the input
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
587 history list. Default is to save anything that isn't all whitespace")
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
588
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
589 (defvar term-input-filter-functions '()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
590 "Functions to call before input is sent to the process.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
591 These functions get one argument, a string containing the text to send.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
592
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
593 This variable is buffer-local.")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
594
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
595 (defvar term-input-sender (function term-simple-send)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
596 "Function to actually send to PROCESS the STRING submitted by user.
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
597 Usually this is just 'term-simple-send, but if your mode needs to
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
598 massage the input string, this is your hook. This is called from
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
599 the user command term-send-input. term-simple-send just sends
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
600 the string plus a newline.")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
601
17407
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
602 (defcustom term-eol-on-send t
10933
3057c4fd86d3 * term.el (term-eol-on-send): New variable. Use it.
Per Bothner <bothner@cygnus.com>
parents: 10679
diff changeset
603 "*Non-nil means go to the end of the line before sending input.
17407
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
604 See `term-send-input'."
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
605 :type 'boolean
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
606 :group 'term)
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
607
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
608 (defcustom term-mode-hook '()
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
609 "Called upon entry into term-mode
17407
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
610 This is run before the process is cranked up."
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
611 :type 'hook
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
612 :group 'term)
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
613
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
614 (defcustom term-exec-hook '()
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
615 "Called each time a process is exec'd by term-exec.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
616 This is called after the process is cranked up. It is useful for things that
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
617 must be done each time a process is executed in a term-mode buffer (e.g.,
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
618 \(process-kill-without-query)). In contrast, the term-mode-hook is only
17407
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
619 executed once when the buffer is created."
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
620 :type 'hook
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
621 :group 'term)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
622
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
623 (defvar term-mode-map nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
624 (defvar term-raw-map nil
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
625 "Keyboard map for sending characters directly to the inferior process.")
12229
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
626 (defvar term-escape-char nil
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
627 "Escape character for char-sub-mode of term mode.
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
628 Do not change it directly; use term-set-escape-char instead.")
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
629 (defvar term-raw-escape-map nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
630
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
631 (defvar term-pager-break-map nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
632
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
633 (defvar term-ptyp t
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
634 "True if communications via pty; false if by pipe. Buffer local.
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
635 This is to work around a bug in Emacs process signaling.")
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
636
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
637 (defvar term-last-input-match ""
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
638 "Last string searched for by term input history search, for defaulting.
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
639 Buffer local variable.")
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
640
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
641 (defvar term-input-ring nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
642 (defvar term-last-input-start)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
643 (defvar term-last-input-end)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
644 (defvar term-input-ring-index nil
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
645 "Index of last matched history element.")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
646 (defvar term-matching-input-from-input-string ""
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
647 "Input previously used to match input history.")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
648 ; This argument to set-process-filter disables reading from the process,
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
649 ; assuming this is Emacs 19.20 or newer.
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
650 (defvar term-pager-filter t)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
651
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
652 (put 'term-replace-by-expanded-history 'menu-enable 'term-input-autoexpand)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
653 (put 'term-input-ring 'permanent-local t)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
654 (put 'term-input-ring-index 'permanent-local t)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
655 (put 'term-input-autoexpand 'permanent-local t)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
656 (put 'term-input-filter-functions 'permanent-local t)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
657 (put 'term-scroll-to-bottom-on-output 'permanent-local t)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
658 (put 'term-scroll-show-maximum-output 'permanent-local t)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
659 (put 'term-ptyp 'permanent-local t)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
660
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
661 ;; True if running under XEmacs (previously Lucid Emacs).
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
662 (defmacro term-is-xemacs () '(string-match "Lucid" emacs-version))
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
663 ;; Do FORM if running under XEmacs (previously Lucid Emacs).
10515
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
664 (defmacro term-if-xemacs (&rest forms)
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
665 (if (term-is-xemacs) (cons 'progn forms)))
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
666 ;; Do FORM if NOT running under XEmacs (previously Lucid Emacs).
10515
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
667 (defmacro term-ifnot-xemacs (&rest forms)
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
668 (if (not (term-is-xemacs)) (cons 'progn forms)))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
669
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
670 (defmacro term-in-char-mode () '(eq (current-local-map) term-raw-map))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
671 (defmacro term-in-line-mode () '(not (term-in-char-mode)))
10671
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
672 ;; True if currently doing PAGER handling.
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
673 (defmacro term-pager-enabled () 'term-pager-count)
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
674 (defmacro term-handling-pager () 'term-pager-old-local-map)
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
675 (defmacro term-using-alternate-sub-buffer () 'term-saved-home-marker)
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
676
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
677 (defvar term-signals-menu)
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
678 (defvar term-terminal-menu)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
679
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
680 ;;; Let's silence the byte-compiler -mm
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
681 (defvar term-ansi-at-eval-string nil)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
682 (defvar term-ansi-at-host nil)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
683 (defvar term-ansi-at-dir nil)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
684 (defvar term-ansi-at-user nil)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
685 (defvar term-ansi-at-message nil)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
686 (defvar term-ansi-at-save-user nil)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
687 (defvar term-ansi-at-save-pwd nil)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
688 (defvar term-ansi-at-save-anon nil)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
689 (defvar term-ansi-current-bold 0)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
690 (defvar term-ansi-current-color 0)
49591
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
691 (defvar term-ansi-face-already-done 0)
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
692 (defvar term-ansi-current-bg-color 0)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
693 (defvar term-ansi-current-underline 0)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
694 (defvar term-ansi-current-highlight 0)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
695 (defvar term-ansi-current-reverse 0)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
696 (defvar term-ansi-current-invisible 0)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
697 (defvar term-ansi-default-fg 0)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
698 (defvar term-ansi-default-bg 0)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
699 (defvar term-ansi-current-temp 0)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
700
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
701 ;;; Four should be enough, if you want more, just add. -mm
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
702 (defvar term-terminal-more-parameters 0)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
703 (defvar term-terminal-previous-parameter-2 -1)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
704 (defvar term-terminal-previous-parameter-3 -1)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
705 (defvar term-terminal-previous-parameter-4 -1)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
706 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
707
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
708 ;;; faces -mm
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
709
49591
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
710 (defcustom term-default-fg-color nil
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
711 "Default color for foreground in `term'."
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
712 :group 'term
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
713 :type 'string)
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
714
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
715 (defcustom term-default-bg-color nil
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
716 "Default color for background in `term'."
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
717 :group 'term
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
718 :type 'string)
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
719
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
720 (defvar ansi-term-color-vector
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
721 [nil "black" "red" "green" "yellow" "blue"
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
722 "magenta" "cyan" "white"])
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
723
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
724 ;;; Inspiration came from comint.el -mm
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
725 (defvar term-buffer-maximum-size 2048
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
726 "*The maximum size in lines for term buffers.
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
727 Term buffers are truncated from the top to be no greater than this number.
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
728 Notice that a setting of 0 means 'don't truncate anything'. This variable
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
729 is buffer-local.")
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
730 ;;;
49591
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
731
10515
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
732 (term-if-xemacs
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
733 (defvar term-terminal-menu
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
734 '("Terminal"
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
735 [ "Character mode" term-char-mode (term-in-line-mode)]
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
736 [ "Line mode" term-line-mode (term-in-char-mode)]
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
737 [ "Enable paging" term-pager-toggle (not term-pager-count)]
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
738 [ "Disable paging" term-pager-toggle term-pager-count])))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
739
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
740 (if term-mode-map
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
741 nil
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
742 (setq term-mode-map (make-sparse-keymap))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
743 (define-key term-mode-map "\ep" 'term-previous-input)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
744 (define-key term-mode-map "\en" 'term-next-input)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
745 (define-key term-mode-map "\er" 'term-previous-matching-input)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
746 (define-key term-mode-map "\es" 'term-next-matching-input)
10515
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
747 (term-ifnot-xemacs
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
748 (define-key term-mode-map [?\A-\M-r]
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
749 'term-previous-matching-input-from-input)
10515
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
750 (define-key term-mode-map [?\A-\M-s] 'term-next-matching-input-from-input))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
751 (define-key term-mode-map "\e\C-l" 'term-show-output)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
752 (define-key term-mode-map "\C-m" 'term-send-input)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
753 (define-key term-mode-map "\C-d" 'term-delchar-or-maybe-eof)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
754 (define-key term-mode-map "\C-c\C-a" 'term-bol)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
755 (define-key term-mode-map "\C-c\C-u" 'term-kill-input)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
756 (define-key term-mode-map "\C-c\C-w" 'backward-kill-word)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
757 (define-key term-mode-map "\C-c\C-c" 'term-interrupt-subjob)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
758 (define-key term-mode-map "\C-c\C-z" 'term-stop-subjob)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
759 (define-key term-mode-map "\C-c\C-\\" 'term-quit-subjob)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
760 (define-key term-mode-map "\C-c\C-m" 'term-copy-old-input)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
761 (define-key term-mode-map "\C-c\C-o" 'term-kill-output)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
762 (define-key term-mode-map "\C-c\C-r" 'term-show-output)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
763 (define-key term-mode-map "\C-c\C-e" 'term-show-maximum-output)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
764 (define-key term-mode-map "\C-c\C-l" 'term-dynamic-list-input-ring)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
765 (define-key term-mode-map "\C-c\C-n" 'term-next-prompt)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
766 (define-key term-mode-map "\C-c\C-p" 'term-previous-prompt)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
767 (define-key term-mode-map "\C-c\C-d" 'term-send-eof)
10515
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
768 (define-key term-mode-map "\C-c\C-k" 'term-char-mode)
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
769 (define-key term-mode-map "\C-c\C-j" 'term-line-mode)
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
770 (define-key term-mode-map "\C-c\C-q" 'term-pager-toggle)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
771
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
772 ; ;; completion:
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
773 ; (define-key term-mode-map [menu-bar completion]
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
774 ; (cons "Complete" (make-sparse-keymap "Complete")))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
775 ; (define-key term-mode-map [menu-bar completion complete-expand]
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
776 ; '("Expand File Name" . term-replace-by-expanded-filename))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
777 ; (define-key term-mode-map [menu-bar completion complete-listing]
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
778 ; '("File Completion Listing" . term-dynamic-list-filename-completions))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
779 ; (define-key term-mode-map [menu-bar completion complete-file]
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
780 ; '("Complete File Name" . term-dynamic-complete-filename))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
781 ; (define-key term-mode-map [menu-bar completion complete]
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
782 ; '("Complete Before Point" . term-dynamic-complete))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
783 ; ;; Put them in the menu bar:
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
784 ; (setq menu-bar-final-items (append '(terminal completion inout signals)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
785 ; menu-bar-final-items))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
786 )
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
787
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
788 ;; Menu bars:
10515
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
789 (term-ifnot-xemacs
40468
4bfc983b38c3 (term-if-emacs19): Macro deleted.
Richard M. Stallman <rms@gnu.org>
parents: 38414
diff changeset
790 (progn
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
791
10671
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
792 ;; terminal:
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
793 (let (newmap)
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
794 (setq newmap (make-sparse-keymap "Terminal"))
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
795 (define-key newmap [terminal-pager-enable]
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
796 '("Enable paging" . term-fake-pager-enable))
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
797 (define-key newmap [terminal-pager-disable]
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
798 '("Disable paging" . term-fake-pager-disable))
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
799 (define-key newmap [terminal-char-mode]
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
800 '("Character mode" . term-char-mode))
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
801 (define-key newmap [terminal-line-mode]
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
802 '("Line mode" . term-line-mode))
15420
877d4b6fd768 (term-terminal-menu): Don't make a self-recursive keymap.
Richard M. Stallman <rms@gnu.org>
parents: 15246
diff changeset
803 (setq term-terminal-menu (cons "Terminal" newmap))
10671
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
804
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
805 ;; completion: (line mode only)
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
806 (defvar term-completion-menu (make-sparse-keymap "Complete"))
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
807 (define-key term-mode-map [menu-bar completion]
10671
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
808 (cons "Complete" term-completion-menu))
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
809 (define-key term-completion-menu [complete-expand]
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
810 '("Expand File Name" . term-replace-by-expanded-filename))
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
811 (define-key term-completion-menu [complete-listing]
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
812 '("File Completion Listing" . term-dynamic-list-filename-completions))
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
813 (define-key term-completion-menu [menu-bar completion complete-file]
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
814 '("Complete File Name" . term-dynamic-complete-filename))
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
815 (define-key term-completion-menu [menu-bar completion complete]
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
816 '("Complete Before Point" . term-dynamic-complete))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
817
10671
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
818 ;; Input history: (line mode only)
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
819 (defvar term-inout-menu (make-sparse-keymap "In/Out"))
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
820 (define-key term-mode-map [menu-bar inout]
10671
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
821 (cons "In/Out" term-inout-menu))
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
822 (define-key term-inout-menu [kill-output]
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
823 '("Kill Current Output Group" . term-kill-output))
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
824 (define-key term-inout-menu [next-prompt]
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
825 '("Forward Output Group" . term-next-prompt))
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
826 (define-key term-inout-menu [previous-prompt]
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
827 '("Backward Output Group" . term-previous-prompt))
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
828 (define-key term-inout-menu [show-maximum-output]
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
829 '("Show Maximum Output" . term-show-maximum-output))
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
830 (define-key term-inout-menu [show-output]
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
831 '("Show Current Output Group" . term-show-output))
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
832 (define-key term-inout-menu [kill-input]
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
833 '("Kill Current Input" . term-kill-input))
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
834 (define-key term-inout-menu [copy-input]
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
835 '("Copy Old Input" . term-copy-old-input))
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
836 (define-key term-inout-menu [forward-matching-history]
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
837 '("Forward Matching Input..." . term-forward-matching-input))
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
838 (define-key term-inout-menu [backward-matching-history]
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
839 '("Backward Matching Input..." . term-backward-matching-input))
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
840 (define-key term-inout-menu [next-matching-history]
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
841 '("Next Matching Input..." . term-next-matching-input))
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
842 (define-key term-inout-menu [previous-matching-history]
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
843 '("Previous Matching Input..." . term-previous-matching-input))
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
844 (define-key term-inout-menu [next-matching-history-from-input]
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
845 '("Next Matching Current Input" . term-next-matching-input-from-input))
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
846 (define-key term-inout-menu [previous-matching-history-from-input]
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
847 '("Previous Matching Current Input" .
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
848 term-previous-matching-input-from-input))
10671
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
849 (define-key term-inout-menu [next-history]
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
850 '("Next Input" . term-next-input))
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
851 (define-key term-inout-menu [previous-history]
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
852 '("Previous Input" . term-previous-input))
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
853 (define-key term-inout-menu [list-history]
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
854 '("List Input History" . term-dynamic-list-input-ring))
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
855 (define-key term-inout-menu [expand-history]
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
856 '("Expand History Before Point" . term-replace-by-expanded-history))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
857
10671
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
858 ;; Signals
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
859 (setq newmap (make-sparse-keymap "Signals"))
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
860 (define-key newmap [eof] '("EOF" . term-send-eof))
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
861 (define-key newmap [kill] '("KILL" . term-kill-subjob))
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
862 (define-key newmap [quit] '("QUIT" . term-quit-subjob))
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
863 (define-key newmap [cont] '("CONT" . term-continue-subjob))
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
864 (define-key newmap [stop] '("STOP" . term-stop-subjob))
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
865 (define-key newmap [] '("BREAK" . term-interrupt-subjob))
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
866 (define-key term-mode-map [menu-bar signals]
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
867 (setq term-signals-menu (cons "Signals" newmap)))
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
868 )))
49591
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
869
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
870 ;; Set up term-raw-map, etc.
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
871
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
872 (defun term-set-escape-char (c)
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
873 "Change term-escape-char and keymaps that depend on it."
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
874 (if term-escape-char
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
875 (define-key term-raw-map term-escape-char 'term-send-raw))
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
876 (setq c (make-string 1 c))
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
877 (define-key term-raw-map c term-raw-escape-map)
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
878 ;; Define standard bindings in term-raw-escape-map
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
879 (define-key term-raw-escape-map "\C-v"
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
880 (lookup-key (current-global-map) "\C-v"))
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
881 (define-key term-raw-escape-map "\C-u"
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
882 (lookup-key (current-global-map) "\C-u"))
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
883 (define-key term-raw-escape-map c 'term-send-raw)
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
884 (define-key term-raw-escape-map "\C-q" 'term-pager-toggle)
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
885 ;; The keybinding for term-char-mode is needed by the menubar code.
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
886 (define-key term-raw-escape-map "\C-k" 'term-char-mode)
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
887 (define-key term-raw-escape-map "\C-j" 'term-line-mode)
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
888 ;; It's convenient to have execute-extended-command here.
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
889 (define-key term-raw-escape-map [?\M-x] 'execute-extended-command))
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
890
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
891 (let* ((map (make-keymap))
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
892 (esc-map (make-keymap))
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
893 (i 0))
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
894 (while (< i 128)
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
895 (define-key map (make-string 1 i) 'term-send-raw)
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
896 (define-key esc-map (make-string 1 i) 'term-send-raw-meta)
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
897 (setq i (1+ i)))
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
898 (dolist (elm (generic-character-list))
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
899 (define-key map (vector elm) 'term-send-raw))
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
900 (define-key map "\e" esc-map)
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
901 (setq term-raw-map map)
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
902 (setq term-raw-escape-map
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
903 (copy-keymap (lookup-key (current-global-map) "\C-x")))
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
904
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
905 ;;; Added nearly all the 'grey keys' -mm
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
906
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
907 (progn
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
908 (term-if-xemacs
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
909 (define-key term-raw-map [button2] 'term-mouse-paste))
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
910 (term-ifnot-xemacs
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
911 (define-key term-raw-map [mouse-2] 'term-mouse-paste)
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
912 (define-key term-raw-map [menu-bar terminal] term-terminal-menu)
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
913 (define-key term-raw-map [menu-bar signals] term-signals-menu))
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
914 (define-key term-raw-map [up] 'term-send-up)
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
915 (define-key term-raw-map [down] 'term-send-down)
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
916 (define-key term-raw-map [right] 'term-send-right)
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
917 (define-key term-raw-map [left] 'term-send-left)
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
918 (define-key term-raw-map [delete] 'term-send-del)
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
919 (define-key term-raw-map [backspace] 'term-send-backspace)
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
920 (define-key term-raw-map [home] 'term-send-home)
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
921 (define-key term-raw-map [end] 'term-send-end)
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
922 (define-key term-raw-map [prior] 'term-send-prior)
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
923 (define-key term-raw-map [next] 'term-send-next)))
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
924
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
925 (term-set-escape-char ?\C-c)
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
926
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
927 (put 'term-mode 'mode-class 'special)
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
928
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
929 (defun term-mode ()
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
930 "Major mode for interacting with an inferior interpreter.
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
931 The interpreter name is same as buffer name, sans the asterisks.
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
932
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
933 There are two submodes: line mode and char mode. By default, you are
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
934 in char mode. In char sub-mode, each character (except
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
935 `term-escape-char') is set immediately.
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
936
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
937 In line mode, you send a line of input at a time; use
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
938 \\[term-send-input] to send.
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
939
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
940 In line mode, this maintains an input history of size
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
941 `term-input-ring-size', and you can access it with the commands
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
942 \\[term-next-input], \\[term-previous-input], and
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
943 \\[term-dynamic-list-input-ring]. Input ring history expansion can be
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
944 achieved with the commands \\[term-replace-by-expanded-history] or
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
945 \\[term-magic-space]. Input ring expansion is controlled by the
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
946 variable `term-input-autoexpand', and addition is controlled by the
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
947 variable `term-input-ignoredups'.
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
948
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
949 Input to, and output from, the subprocess can cause the window to scroll to
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
950 the end of the buffer. See variables `term-scroll-to-bottom-on-input',
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
951 and `term-scroll-to-bottom-on-output'.
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
952
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
953 If you accidentally suspend your process, use \\[term-continue-subjob]
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
954 to continue it.
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
955
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
956 This mode can be customised to create specific modes for running
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
957 particular subprocesses. This can be done by setting the hooks
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
958 `term-input-filter-functions', `term-input-filter',
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
959 `term-input-sender' and `term-get-old-input' to appropriate functions,
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
960 and the variable `term-prompt-regexp' to the appropriate regular
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
961 expression.
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
962
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
963 Commands in raw mode:
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
964
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
965 \\{term-raw-map}
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
966
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
967 Commands in line mode:
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
968
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
969 \\{term-mode-map}
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
970
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
971 Entry to this mode runs the hooks on `term-mode-hook'."
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
972 (interactive)
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
973 ;; Do not remove this. All major modes must do this.
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
974 (kill-all-local-variables)
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
975 (setq major-mode 'term-mode)
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
976 (setq mode-name "Term")
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
977 (use-local-map term-mode-map)
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
978 (make-local-variable 'term-home-marker)
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
979 (setq term-home-marker (copy-marker 0))
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
980 (make-local-variable 'term-saved-home-marker)
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
981 (make-local-variable 'term-height)
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
982 (make-local-variable 'term-width)
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
983 (setq term-width (1- (window-width)))
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
984 (setq term-height (1- (window-height)))
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
985 (make-local-variable 'term-terminal-parameter)
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
986 (make-local-variable 'term-saved-cursor)
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
987 (make-local-variable 'term-last-input-start)
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
988 (setq term-last-input-start (make-marker))
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
989 (make-local-variable 'term-last-input-end)
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
990 (setq term-last-input-end (make-marker))
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
991 (make-local-variable 'term-last-input-match)
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
992 (setq term-last-input-match "")
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
993 (make-local-variable 'term-prompt-regexp) ; Don't set; default
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
994 (make-local-variable 'term-input-ring-size) ; ...to global val.
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
995 (make-local-variable 'term-input-ring)
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
996 (make-local-variable 'term-input-ring-file-name)
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
997 (or (and (boundp 'term-input-ring) term-input-ring)
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
998 (setq term-input-ring (make-ring term-input-ring-size)))
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
999 (make-local-variable 'term-input-ring-index)
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
1000 (or (and (boundp 'term-input-ring-index) term-input-ring-index)
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
1001 (setq term-input-ring-index nil))
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
1002
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
1003 (make-local-variable 'term-command-hook)
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
1004 (setq term-command-hook (symbol-function 'term-command-hook))
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
1005
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
1006 ;;; I'm not sure these saves are necessary but, since I
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
1007 ;;; haven't tested the whole thing on a net connected machine with
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
1008 ;;; a properly configured ange-ftp, I've decided to be conservative
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
1009 ;;; and put them in. -mm
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
1010
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
1011 (make-local-variable 'term-ansi-at-host)
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
1012 (setq term-ansi-at-host (system-name))
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
1013
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
1014 (make-local-variable 'term-ansi-at-dir)
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
1015 (setq term-ansi-at-dir default-directory)
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
1016
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
1017 (make-local-variable 'term-ansi-at-message)
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
1018 (setq term-ansi-at-message nil)
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
1019
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
1020 ;;; For user tracking purposes -mm
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
1021 (make-local-variable 'ange-ftp-default-user)
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
1022 (make-local-variable 'ange-ftp-default-password)
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
1023 (make-local-variable 'ange-ftp-generate-anonymous-password)
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
1024
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
1025 ;;; You may want to have different scroll-back sizes -mm
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
1026 (make-local-variable 'term-buffer-maximum-size)
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
1027
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
1028 ;;; Of course these have to be buffer-local -mm
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
1029 (make-local-variable 'term-ansi-current-bold)
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
1030 (make-local-variable 'term-ansi-current-color)
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
1031 (make-local-variable 'term-ansi-face-already-done)
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
1032 (make-local-variable 'term-ansi-current-bg-color)
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
1033 (make-local-variable 'term-ansi-current-underline)
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
1034 (make-local-variable 'term-ansi-current-highlight)
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
1035 (make-local-variable 'term-ansi-current-reverse)
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
1036 (make-local-variable 'term-ansi-current-invisible)
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
1037
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
1038 (make-local-variable 'term-terminal-state)
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
1039 (make-local-variable 'term-kill-echo-list)
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
1040 (make-local-variable 'term-start-line-column)
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
1041 (make-local-variable 'term-current-column)
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
1042 (make-local-variable 'term-current-row)
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
1043 (make-local-variable 'term-log-buffer)
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
1044 (make-local-variable 'term-scroll-start)
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
1045 (make-local-variable 'term-scroll-end)
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
1046 (setq term-scroll-end term-height)
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
1047 (make-local-variable 'term-scroll-with-delete)
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
1048 (make-local-variable 'term-pager-count)
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
1049 (make-local-variable 'term-pager-old-local-map)
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
1050 (make-local-variable 'term-old-mode-map)
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
1051 (make-local-variable 'term-insert-mode)
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
1052 (make-local-variable 'term-dynamic-complete-functions)
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
1053 (make-local-variable 'term-completion-fignore)
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
1054 (make-local-variable 'term-get-old-input)
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
1055 (make-local-variable 'term-matching-input-from-input-string)
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
1056 (make-local-variable 'term-input-autoexpand)
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
1057 (make-local-variable 'term-input-ignoredups)
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
1058 (make-local-variable 'term-delimiter-argument-list)
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
1059 (make-local-variable 'term-input-filter-functions)
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
1060 (make-local-variable 'term-input-filter)
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
1061 (make-local-variable 'term-input-sender)
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
1062 (make-local-variable 'term-eol-on-send)
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
1063 (make-local-variable 'term-scroll-to-bottom-on-output)
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
1064 (make-local-variable 'term-scroll-show-maximum-output)
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
1065 (make-local-variable 'term-ptyp)
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
1066 (make-local-variable 'term-exec-hook)
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
1067 (make-local-variable 'term-vertical-motion)
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
1068 (make-local-variable 'term-pending-delete-marker)
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
1069 (setq term-pending-delete-marker (make-marker))
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
1070 (make-local-variable 'term-current-face)
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
1071 (make-local-variable 'term-pending-frame)
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
1072 (setq term-pending-frame nil)
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
1073 (run-hooks 'term-mode-hook)
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
1074 (term-if-xemacs
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
1075 (set-buffer-menubar
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
1076 (append current-menubar (list term-terminal-menu))))
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
1077 (or term-input-ring
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
1078 (setq term-input-ring (make-ring term-input-ring-size)))
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
1079 (term-update-mode-line))
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
1080
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1081 (defun term-reset-size (height width)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1082 (setq term-height height)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1083 (setq term-width width)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1084 (setq term-start-line-column nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1085 (setq term-current-row nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1086 (setq term-current-column nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1087 (term-scroll-region 0 height))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1088
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1089 ;; Recursive routine used to check if any string in term-kill-echo-list
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1090 ;; matches part of the buffer before point.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1091 ;; If so, delete that matched part of the buffer - this suppresses echo.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1092 ;; Also, remove that string from the term-kill-echo-list.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1093 ;; We *also* remove any older string on the list, as a sanity measure,
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1094 ;; in case something gets out of sync. (Except for type-ahead, there
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1095 ;; should only be one element in the list.)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1096
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1097 (defun term-check-kill-echo-list ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1098 (let ((cur term-kill-echo-list) (found nil) (save-point (point)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1099 (unwind-protect
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1100 (progn
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1101 (end-of-line)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1102 (while cur
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1103 (let* ((str (car cur)) (len (length str)) (start (- (point) len)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1104 (if (and (>= start (point-min))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1105 (string= str (buffer-substring start (point))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1106 (progn (delete-backward-char len)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1107 (setq term-kill-echo-list (cdr cur))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1108 (setq term-current-column nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1109 (setq term-current-row nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1110 (setq term-start-line-column nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1111 (setq cur nil found t))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1112 (setq cur (cdr cur))))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1113 (if (not found)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1114 (goto-char save-point)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1115 found))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1116
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1117 (defun term-check-size (process)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1118 (if (or (/= term-height (1- (window-height)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1119 (/= term-width (1- (window-width))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1120 (progn
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1121 (term-reset-size (1- (window-height)) (1- (window-width)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1122 (set-process-window-size process term-height term-width))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1123
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1124 (defun term-send-raw-string (chars)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1125 (let ((proc (get-buffer-process (current-buffer))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1126 (if (not proc)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1127 (error "Current buffer has no process")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1128 ;; Note that (term-current-row) must be called *after*
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1129 ;; (point) has been updated to (process-mark proc).
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1130 (goto-char (process-mark proc))
10671
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1131 (if (term-pager-enabled)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1132 (setq term-pager-count (term-current-row)))
15246
ba353653c03a (term-send-raw-string): send-string -> process-send-string.
Karl Heuer <kwzh@gnu.org>
parents: 15212
diff changeset
1133 (process-send-string proc chars))))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1134
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1135 (defun term-send-raw ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1136 "Send the last character typed through the terminal-emulator
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
1137 without any interpretation."
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1138 (interactive)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1139 ;; Convert `return' to C-m, etc.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1140 (if (and (symbolp last-input-char)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1141 (get last-input-char 'ascii-character))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1142 (setq last-input-char (get last-input-char 'ascii-character)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1143 (term-send-raw-string (make-string 1 last-input-char)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1144
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1145 (defun term-send-raw-meta ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1146 (interactive)
30169
0bc4ff279d60 (term-send-raw-meta): Strip modifiers from the keyboard
Gerd Moellmann <gerd@gnu.org>
parents: 25330
diff changeset
1147 (let ((char last-input-char))
0bc4ff279d60 (term-send-raw-meta): Strip modifiers from the keyboard
Gerd Moellmann <gerd@gnu.org>
parents: 25330
diff changeset
1148 (when (symbolp last-input-char)
10671
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1149 ;; Convert `return' to C-m, etc.
30169
0bc4ff279d60 (term-send-raw-meta): Strip modifiers from the keyboard
Gerd Moellmann <gerd@gnu.org>
parents: 25330
diff changeset
1150 (let ((tmp (get char 'event-symbol-elements)))
0bc4ff279d60 (term-send-raw-meta): Strip modifiers from the keyboard
Gerd Moellmann <gerd@gnu.org>
parents: 25330
diff changeset
1151 (when tmp
0bc4ff279d60 (term-send-raw-meta): Strip modifiers from the keyboard
Gerd Moellmann <gerd@gnu.org>
parents: 25330
diff changeset
1152 (setq char (car tmp)))
0bc4ff279d60 (term-send-raw-meta): Strip modifiers from the keyboard
Gerd Moellmann <gerd@gnu.org>
parents: 25330
diff changeset
1153 (when (symbolp char)
0bc4ff279d60 (term-send-raw-meta): Strip modifiers from the keyboard
Gerd Moellmann <gerd@gnu.org>
parents: 25330
diff changeset
1154 (setq tmp (get char 'ascii-character))
0bc4ff279d60 (term-send-raw-meta): Strip modifiers from the keyboard
Gerd Moellmann <gerd@gnu.org>
parents: 25330
diff changeset
1155 (when tmp
0bc4ff279d60 (term-send-raw-meta): Strip modifiers from the keyboard
Gerd Moellmann <gerd@gnu.org>
parents: 25330
diff changeset
1156 (setq char tmp)))))
0bc4ff279d60 (term-send-raw-meta): Strip modifiers from the keyboard
Gerd Moellmann <gerd@gnu.org>
parents: 25330
diff changeset
1157 (setq char (event-basic-type char))
0bc4ff279d60 (term-send-raw-meta): Strip modifiers from the keyboard
Gerd Moellmann <gerd@gnu.org>
parents: 25330
diff changeset
1158 (term-send-raw-string (if (and (numberp char)
0bc4ff279d60 (term-send-raw-meta): Strip modifiers from the keyboard
Gerd Moellmann <gerd@gnu.org>
parents: 25330
diff changeset
1159 (> char 127)
0bc4ff279d60 (term-send-raw-meta): Strip modifiers from the keyboard
Gerd Moellmann <gerd@gnu.org>
parents: 25330
diff changeset
1160 (< char 256))
0bc4ff279d60 (term-send-raw-meta): Strip modifiers from the keyboard
Gerd Moellmann <gerd@gnu.org>
parents: 25330
diff changeset
1161 (make-string 1 char)
0bc4ff279d60 (term-send-raw-meta): Strip modifiers from the keyboard
Gerd Moellmann <gerd@gnu.org>
parents: 25330
diff changeset
1162 (format "\e%c" char)))))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1163
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1164 (defun term-mouse-paste (click arg)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1165 "Insert the last stretch of killed text at the position clicked on."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1166 (interactive "e\nP")
11033
8d2f156b72ff (term-mouse-paste): Make work for xemacs. Minor GNU emacs fixes.
Per Bothner <bothner@cygnus.com>
parents: 11032
diff changeset
1167 (term-if-xemacs
8d2f156b72ff (term-mouse-paste): Make work for xemacs. Minor GNU emacs fixes.
Per Bothner <bothner@cygnus.com>
parents: 11032
diff changeset
1168 (term-send-raw-string (or (condition-case () (x-get-selection) (error ()))
8d2f156b72ff (term-mouse-paste): Make work for xemacs. Minor GNU emacs fixes.
Per Bothner <bothner@cygnus.com>
parents: 11032
diff changeset
1169 (x-get-cutbuffer)
8d2f156b72ff (term-mouse-paste): Make work for xemacs. Minor GNU emacs fixes.
Per Bothner <bothner@cygnus.com>
parents: 11032
diff changeset
1170 (error "No selection or cut buffer available"))))
8d2f156b72ff (term-mouse-paste): Make work for xemacs. Minor GNU emacs fixes.
Per Bothner <bothner@cygnus.com>
parents: 11032
diff changeset
1171 (term-ifnot-xemacs
8d2f156b72ff (term-mouse-paste): Make work for xemacs. Minor GNU emacs fixes.
Per Bothner <bothner@cygnus.com>
parents: 11032
diff changeset
1172 ;; Give temporary modes such as isearch a chance to turn off.
8d2f156b72ff (term-mouse-paste): Make work for xemacs. Minor GNU emacs fixes.
Per Bothner <bothner@cygnus.com>
parents: 11032
diff changeset
1173 (run-hooks 'mouse-leave-buffer-hook)
8d2f156b72ff (term-mouse-paste): Make work for xemacs. Minor GNU emacs fixes.
Per Bothner <bothner@cygnus.com>
parents: 11032
diff changeset
1174 (setq this-command 'yank)
8d2f156b72ff (term-mouse-paste): Make work for xemacs. Minor GNU emacs fixes.
Per Bothner <bothner@cygnus.com>
parents: 11032
diff changeset
1175 (term-send-raw-string (current-kill (cond
8d2f156b72ff (term-mouse-paste): Make work for xemacs. Minor GNU emacs fixes.
Per Bothner <bothner@cygnus.com>
parents: 11032
diff changeset
1176 ((listp arg) 0)
8d2f156b72ff (term-mouse-paste): Make work for xemacs. Minor GNU emacs fixes.
Per Bothner <bothner@cygnus.com>
parents: 11032
diff changeset
1177 ((eq arg '-) -1)
8d2f156b72ff (term-mouse-paste): Make work for xemacs. Minor GNU emacs fixes.
Per Bothner <bothner@cygnus.com>
parents: 11032
diff changeset
1178 (t (1- arg)))))))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1179
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1180 ;; Which would be better: "\e[A" or "\eOA"? readline accepts either.
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
1181 ;; For my configuration it's definitely better \eOA but YMMV. -mm
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
1182 ;; For example: vi works with \eOA while elm wants \e[A ...
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
1183 (defun term-send-up () (interactive) (term-send-raw-string "\eOA"))
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
1184 (defun term-send-down () (interactive) (term-send-raw-string "\eOB"))
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
1185 (defun term-send-right () (interactive) (term-send-raw-string "\eOC"))
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
1186 (defun term-send-left () (interactive) (term-send-raw-string "\eOD"))
24044
9a52ffb7bfb2 (term_send_home): Change the string to
Richard M. Stallman <rms@gnu.org>
parents: 23311
diff changeset
1187 (defun term-send-home () (interactive) (term-send-raw-string "\e[1~"))
9a52ffb7bfb2 (term_send_home): Change the string to
Richard M. Stallman <rms@gnu.org>
parents: 23311
diff changeset
1188 (defun term-send-end () (interactive) (term-send-raw-string "\e[4~"))
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
1189 (defun term-send-prior () (interactive) (term-send-raw-string "\e[5~"))
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
1190 (defun term-send-next () (interactive) (term-send-raw-string "\e[6~"))
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
1191 (defun term-send-del () (interactive) (term-send-raw-string "\C-?"))
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
1192 (defun term-send-backspace () (interactive) (term-send-raw-string "\C-H"))
49591
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
1193
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1194 (defun term-char-mode ()
10515
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
1195 "Switch to char (\"raw\") sub-mode of term mode.
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
1196 Each character you type is sent directly to the inferior without
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
1197 intervention from Emacs, except for the escape character (usually C-c)."
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1198 (interactive)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1199 ;; FIXME: Emit message? Cfr ilisp-raw-message
10515
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
1200 (if (term-in-line-mode)
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
1201 (progn
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
1202 (setq term-old-mode-map (current-local-map))
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
1203 (use-local-map term-raw-map)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1204
10515
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
1205 ;; Send existing partial line to inferior (without newline).
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
1206 (let ((pmark (process-mark (get-buffer-process (current-buffer))))
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
1207 (save-input-sender term-input-sender))
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
1208 (if (> (point) pmark)
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
1209 (unwind-protect
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
1210 (progn
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
1211 (setq term-input-sender
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
1212 (symbol-function 'term-send-string))
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
1213 (end-of-line)
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
1214 (term-send-input))
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
1215 (setq term-input-sender save-input-sender))))
10671
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1216 (term-update-mode-line))))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1217
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1218 (defun term-line-mode ()
10515
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
1219 "Switch to line (\"cooked\") sub-mode of term mode.
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
1220 This means that Emacs editing commands work as normally, until
10515
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
1221 you type \\[term-send-input] which sends the current line to the inferior."
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1222 (interactive)
10515
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
1223 (if (term-in-char-mode)
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
1224 (progn
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
1225 (use-local-map term-old-mode-map)
10671
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1226 (term-update-mode-line))))
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1227
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1228 (defun term-update-mode-line ()
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1229 (setq mode-line-process
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1230 (if (term-in-char-mode)
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1231 (if (term-pager-enabled) '(": char page %s") '(": char %s"))
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1232 (if (term-pager-enabled) '(": line page %s") '(": line %s"))))
11570
f210b0ee984a (term-update-mode-line, term-process-pager): Use force-mode-line-update.
Karl Heuer <kwzh@gnu.org>
parents: 11033
diff changeset
1233 (force-mode-line-update))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1234
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1235 (defun term-check-proc (buffer)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1236 "True if there is a process associated w/buffer BUFFER, and
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
1237 it is alive (status RUN or STOP). BUFFER can be either a buffer or the
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1238 name of one"
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1239 (let ((proc (get-buffer-process buffer)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1240 (and proc (memq (process-status proc) '(run stop)))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1241
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1242 ;;;###autoload
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1243 (defun make-term (name program &optional startfile &rest switches)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1244 "Make a term process NAME in a buffer, running PROGRAM.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1245 The name of the buffer is made by surrounding NAME with `*'s.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1246 If there is already a running process in that buffer, it is not restarted.
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
1247 Optional third arg STARTFILE is the name of a file to send the contents of to
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1248 the process. Any more args are arguments to PROGRAM."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1249 (let ((buffer (get-buffer-create (concat "*" name "*"))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1250 ;; If no process, or nuked process, crank up a new one and put buffer in
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
1251 ;; term mode. Otherwise, leave buffer and existing process alone.
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1252 (cond ((not (term-check-proc buffer))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1253 (save-excursion
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1254 (set-buffer buffer)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1255 (term-mode)) ; Install local vars, mode, keymap, ...
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1256 (term-exec buffer name program startfile switches)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1257 buffer))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1258
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1259 ;;;###autoload
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1260 (defun term (program)
49591
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
1261 "Start a terminal-emulator in a new buffer.
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
1262 The buffer is in Term mode; see `term-mode' for the
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
1263 commands to use in that buffer.
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
1264
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
1265 \\<term-raw-map>Type \\[switch-to-buffer] to switch to another buffer."
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1266 (interactive (list (read-from-minibuffer "Run program: "
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1267 (or explicit-shell-file-name
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1268 (getenv "ESHELL")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1269 (getenv "SHELL")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1270 "/bin/sh"))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1271 (set-buffer (make-term "terminal" program))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1272 (term-mode)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1273 (term-char-mode)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1274 (switch-to-buffer "*terminal*"))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1275
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1276 (defun term-exec (buffer name command startfile switches)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1277 "Start up a process in buffer for term modes.
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
1278 Blasts any old process running in the buffer. Doesn't set the buffer mode.
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1279 You can use this to cheaply run a series of processes in the same term
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
1280 buffer. The hook term-exec-hook is run after each exec."
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1281 (save-excursion
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1282 (set-buffer buffer)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1283 (let ((proc (get-buffer-process buffer))) ; Blast any old process.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1284 (if proc (delete-process proc)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1285 ;; Crank up a new process
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1286 (let ((proc (term-exec-1 name buffer command switches)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1287 (make-local-variable 'term-ptyp)
42205
7308bbc423d5 Doc fixes.
Pavel Janík <Pavel@Janik.cz>
parents: 40697
diff changeset
1288 (setq term-ptyp process-connection-type) ; t if pty, nil if pipe.
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1289 ;; Jump to the end, and set the process mark.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1290 (goto-char (point-max))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1291 (set-marker (process-mark proc) (point))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1292 (set-process-filter proc 'term-emulate-terminal)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1293 ;; Feed it the startfile.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1294 (cond (startfile
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1295 ;;This is guaranteed to wait long enough
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1296 ;;but has bad results if the term does not prompt at all
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1297 ;; (while (= size (buffer-size))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1298 ;; (sleep-for 1))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1299 ;;I hope 1 second is enough!
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1300 (sleep-for 1)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1301 (goto-char (point-max))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1302 (insert-file-contents startfile)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1303 (setq startfile (buffer-substring (point) (point-max)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1304 (delete-region (point) (point-max))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1305 (term-send-string proc startfile)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1306 (run-hooks 'term-exec-hook)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1307 buffer)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1308
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1309 ;;; Name to use for TERM.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1310 ;;; Using "emacs" loses, because bash disables editing if TERM == emacs.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1311 (defvar term-term-name "eterm")
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
1312 ; Format string, usage:
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
1313 ; (format term-termcap-string emacs-term-name "TERMCAP=" 24 80)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1314 (defvar term-termcap-format
10044
c840b3eb9015 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 9603
diff changeset
1315 "%s%s:li#%d:co#%d:cl=\\E[H\\E[J:cd=\\E[J:bs:am:xn:cm=\\E[%%i%%d;%%dH\
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1316 :nd=\\E[C:up=\\E[A:ce=\\E[K:ho=\\E[H:pt\
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1317 :al=\\E[L:dl=\\E[M:DL=\\E[%%dM:AL=\\E[%%dL:cs=\\E[%%i%%d;%%dr:sf=\\n\
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1318 :te=\\E[2J\\E[?47l\\E8:ti=\\E7\\E[?47h\
10044
c840b3eb9015 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 9603
diff changeset
1319 :dc=\\E[P:DC=\\E[%%dP:IC=\\E[%%d@:im=\\E[4h:ei=\\E[4l:mi:\
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1320 :so=\\E[7m:se=\\E[m:us=\\E[4m:ue=\\E[m:md=\\E[1m:mr=\\E[7m:me=\\E[m\
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1321 :UP=\\E[%%dA:DO=\\E[%%dB:LE=\\E[%%dD:RI=\\E[%%dC"
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1322 ;;; : -undefine ic
13961
ff6ac63de609 (term-process-pager): Fix message spelling.
Karl Heuer <kwzh@gnu.org>
parents: 13337
diff changeset
1323 "termcap capabilities supported")
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1324
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1325 ;;; This auxiliary function cranks up the process for term-exec in
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1326 ;;; the appropriate environment.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1327
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1328 (defun term-exec-1 (name buffer command switches)
10044
c840b3eb9015 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 9603
diff changeset
1329 ;; We need to do an extra (fork-less) exec to run stty.
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
1330 ;; (This would not be needed if we had suitable Emacs primitives.)
10044
c840b3eb9015 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 9603
diff changeset
1331 ;; The 'if ...; then shift; fi' hack is because Bourne shell
c840b3eb9015 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 9603
diff changeset
1332 ;; loses one arg when called with -c, and newer shells (bash, ksh) don't.
c840b3eb9015 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 9603
diff changeset
1333 ;; Thus we add an extra dummy argument "..", and then remove it.
c840b3eb9015 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 9603
diff changeset
1334 (let ((process-environment
c840b3eb9015 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 9603
diff changeset
1335 (nconc
c840b3eb9015 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 9603
diff changeset
1336 (list
c840b3eb9015 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 9603
diff changeset
1337 (format "TERM=%s" term-term-name)
c840b3eb9015 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 9603
diff changeset
1338 (if (and (boundp 'system-uses-terminfo) system-uses-terminfo)
c840b3eb9015 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 9603
diff changeset
1339 (format "TERMINFO=%s" data-directory)
c840b3eb9015 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 9603
diff changeset
1340 (format term-termcap-format "TERMCAP="
c840b3eb9015 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 9603
diff changeset
1341 term-term-name term-height term-width))
40697
2f6568a7aee9 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40468
diff changeset
1342 ;; Breaks `./configure' of w3 and url which try to run $EMACS.
10679
aec6cbccf909 (term-protocol-version): Renamed from term-version.
Richard M. Stallman <rms@gnu.org>
parents: 10671
diff changeset
1343 (format "EMACS=%s (term:%s)" emacs-version term-protocol-version)
10044
c840b3eb9015 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 9603
diff changeset
1344 (format "LINES=%d" term-height)
c840b3eb9015 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 9603
diff changeset
1345 (format "COLUMNS=%d" term-width))
15491
ea6697d31d1c (term-exec-1): Run process on pty if possible.
Richard M. Stallman <rms@gnu.org>
parents: 15420
diff changeset
1346 process-environment))
20153
7ebe9039c4f9 (term-exec-1): Bind inhibit-eol-conversion to t before
Kenichi Handa <handa@m17n.org>
parents: 20021
diff changeset
1347 (process-connection-type t)
7ebe9039c4f9 (term-exec-1): Bind inhibit-eol-conversion to t before
Kenichi Handa <handa@m17n.org>
parents: 20021
diff changeset
1348 ;; We should suppress conversion of end-of-line format.
7ebe9039c4f9 (term-exec-1): Bind inhibit-eol-conversion to t before
Kenichi Handa <handa@m17n.org>
parents: 20021
diff changeset
1349 (inhibit-eol-conversion t)
7ebe9039c4f9 (term-exec-1): Bind inhibit-eol-conversion to t before
Kenichi Handa <handa@m17n.org>
parents: 20021
diff changeset
1350 )
10044
c840b3eb9015 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 9603
diff changeset
1351 (apply 'start-process name buffer
c840b3eb9015 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 9603
diff changeset
1352 "/bin/sh" "-c"
c840b3eb9015 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 9603
diff changeset
1353 (format "stty -nl echo rows %d columns %d sane 2>/dev/null;\
c840b3eb9015 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 9603
diff changeset
1354 if [ $1 = .. ]; then shift; fi; exec \"$@\""
c840b3eb9015 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 9603
diff changeset
1355 term-height term-width)
c840b3eb9015 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 9603
diff changeset
1356 ".."
c840b3eb9015 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 9603
diff changeset
1357 command switches)))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1358
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
1359 ;;; This should be in Emacs, but it isn't.
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1360 (defun term-mem (item list &optional elt=)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1361 "Test to see if ITEM is equal to an item in LIST.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1362 Option comparison function ELT= defaults to equal."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1363 (let ((elt= (or elt= (function equal)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1364 (done nil))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1365 (while (and list (not done))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1366 (if (funcall elt= item (car list))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1367 (setq done list)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1368 (setq list (cdr list))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1369 done))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1370
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1371
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1372 ;;; Input history processing in a buffer
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1373 ;;; ===========================================================================
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1374 ;;; Useful input history functions, courtesy of the Ergo group.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1375
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1376 ;;; Eleven commands:
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1377 ;;; term-dynamic-list-input-ring List history in help buffer.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1378 ;;; term-previous-input Previous input...
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1379 ;;; term-previous-matching-input ...matching a string.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1380 ;;; term-previous-matching-input-from-input ... matching the current input.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1381 ;;; term-next-input Next input...
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1382 ;;; term-next-matching-input ...matching a string.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1383 ;;; term-next-matching-input-from-input ... matching the current input.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1384 ;;; term-backward-matching-input Backwards input...
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1385 ;;; term-forward-matching-input ...matching a string.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1386 ;;; term-replace-by-expanded-history Expand history at point;
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1387 ;;; replace with expanded history.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1388 ;;; term-magic-space Expand history and insert space.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1389 ;;;
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1390 ;;; Three functions:
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1391 ;;; term-read-input-ring Read into term-input-ring...
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1392 ;;; term-write-input-ring Write to term-input-ring-file-name.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1393 ;;; term-replace-by-expanded-history-before-point Workhorse function.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1394
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1395 (defun term-read-input-ring (&optional silent)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1396 "Sets the buffer's `term-input-ring' from a history file.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1397 The name of the file is given by the variable `term-input-ring-file-name'.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1398 The history ring is of size `term-input-ring-size', regardless of file size.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1399 If `term-input-ring-file-name' is nil this function does nothing.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1400
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1401 If the optional argument SILENT is non-nil, we say nothing about a
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1402 failure to read the history file.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1403
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1404 This function is useful for major mode commands and mode hooks.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1405
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1406 The structure of the history file should be one input command per line,
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1407 with the most recent command last.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1408 See also `term-input-ignoredups' and `term-write-input-ring'."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1409 (cond ((or (null term-input-ring-file-name)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1410 (equal term-input-ring-file-name ""))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1411 nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1412 ((not (file-readable-p term-input-ring-file-name))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1413 (or silent
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1414 (message "Cannot read history file %s"
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1415 term-input-ring-file-name)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1416 (t
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1417 (let ((history-buf (get-buffer-create " *temp*"))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1418 (file term-input-ring-file-name)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1419 (count 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1420 (ring (make-ring term-input-ring-size)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1421 (unwind-protect
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1422 (save-excursion
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1423 (set-buffer history-buf)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1424 (widen)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1425 (erase-buffer)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1426 (insert-file-contents file)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1427 ;; Save restriction in case file is already visited...
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1428 ;; Watch for those date stamps in history files!
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1429 (goto-char (point-max))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1430 (while (and (< count term-input-ring-size)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1431 (re-search-backward "^[ \t]*\\([^#\n].*\\)[ \t]*$"
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1432 nil t))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1433 (let ((history (buffer-substring (match-beginning 1)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1434 (match-end 1))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1435 (if (or (null term-input-ignoredups)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1436 (ring-empty-p ring)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1437 (not (string-equal (ring-ref ring 0) history)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1438 (ring-insert-at-beginning ring history)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1439 (setq count (1+ count))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1440 (kill-buffer history-buf))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1441 (setq term-input-ring ring
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1442 term-input-ring-index nil)))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1443
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1444 (defun term-write-input-ring ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1445 "Writes the buffer's `term-input-ring' to a history file.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1446 The name of the file is given by the variable `term-input-ring-file-name'.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1447 The original contents of the file are lost if `term-input-ring' is not empty.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1448 If `term-input-ring-file-name' is nil this function does nothing.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1449
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1450 Useful within process sentinels.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1451
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1452 See also `term-read-input-ring'."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1453 (cond ((or (null term-input-ring-file-name)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1454 (equal term-input-ring-file-name "")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1455 (null term-input-ring) (ring-empty-p term-input-ring))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1456 nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1457 ((not (file-writable-p term-input-ring-file-name))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1458 (message "Cannot write history file %s" term-input-ring-file-name))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1459 (t
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1460 (let* ((history-buf (get-buffer-create " *Temp Input History*"))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1461 (ring term-input-ring)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1462 (file term-input-ring-file-name)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1463 (index (ring-length ring)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1464 ;; Write it all out into a buffer first. Much faster, but messier,
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1465 ;; than writing it one line at a time.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1466 (save-excursion
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1467 (set-buffer history-buf)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1468 (erase-buffer)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1469 (while (> index 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1470 (setq index (1- index))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1471 (insert (ring-ref ring index) ?\n))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1472 (write-region (buffer-string) nil file nil 'no-message)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1473 (kill-buffer nil))))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1474
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1475
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1476 (defun term-dynamic-list-input-ring ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1477 "List in help buffer the buffer's input history."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1478 (interactive)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1479 (if (or (not (ring-p term-input-ring))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1480 (ring-empty-p term-input-ring))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1481 (message "No history")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1482 (let ((history nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1483 (history-buffer " *Input History*")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1484 (index (1- (ring-length term-input-ring)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1485 (conf (current-window-configuration)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1486 ;; We have to build up a list ourselves from the ring vector.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1487 (while (>= index 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1488 (setq history (cons (ring-ref term-input-ring index) history)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1489 index (1- index)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1490 ;; Change "completion" to "history reference"
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1491 ;; to make the display accurate.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1492 (with-output-to-temp-buffer history-buffer
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1493 (display-completion-list history)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1494 (set-buffer history-buffer)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1495 (forward-line 3)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1496 (while (search-backward "completion" nil 'move)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1497 (replace-match "history reference")))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1498 (sit-for 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1499 (message "Hit space to flush")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1500 (let ((ch (read-event)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1501 (if (eq ch ?\ )
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1502 (set-window-configuration conf)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1503 (setq unread-command-events (list ch)))))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1504
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1505
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1506 (defun term-regexp-arg (prompt)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1507 ;; Return list of regexp and prefix arg using PROMPT.
20021
42354e3ea997 (term-regexp-arg): No need to bind
Karl Heuer <kwzh@gnu.org>
parents: 19976
diff changeset
1508 (let* (;; Don't clobber this.
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1509 (last-command last-command)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1510 (regexp (read-from-minibuffer prompt nil nil nil
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1511 'minibuffer-history-search-history)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1512 (list (if (string-equal regexp "")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1513 (setcar minibuffer-history-search-history
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1514 (nth 1 minibuffer-history-search-history))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1515 regexp)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1516 (prefix-numeric-value current-prefix-arg))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1517
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1518 (defun term-search-arg (arg)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1519 ;; First make sure there is a ring and that we are after the process mark
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1520 (cond ((not (term-after-pmark-p))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1521 (error "Not at command line"))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1522 ((or (null term-input-ring)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1523 (ring-empty-p term-input-ring))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1524 (error "Empty input ring"))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1525 ((zerop arg)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1526 ;; arg of zero resets search from beginning, and uses arg of 1
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1527 (setq term-input-ring-index nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1528 1)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1529 (t
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1530 arg)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1531
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1532 (defun term-search-start (arg)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1533 ;; Index to start a directional search, starting at term-input-ring-index
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1534 (if term-input-ring-index
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1535 ;; If a search is running, offset by 1 in direction of arg
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1536 (mod (+ term-input-ring-index (if (> arg 0) 1 -1))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1537 (ring-length term-input-ring))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1538 ;; For a new search, start from beginning or end, as appropriate
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1539 (if (>= arg 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1540 0 ; First elt for forward search
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1541 (1- (ring-length term-input-ring))))) ; Last elt for backward search
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1542
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1543 (defun term-previous-input-string (arg)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1544 "Return the string ARG places along the input ring.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1545 Moves relative to `term-input-ring-index'."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1546 (ring-ref term-input-ring (if term-input-ring-index
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
1547 (mod (+ arg term-input-ring-index)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1548 (ring-length term-input-ring))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1549 arg)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1550
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1551 (defun term-previous-input (arg)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1552 "Cycle backwards through input history."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1553 (interactive "*p")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1554 (term-previous-matching-input "." arg))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1555
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1556 (defun term-next-input (arg)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1557 "Cycle forwards through input history."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1558 (interactive "*p")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1559 (term-previous-input (- arg)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1560
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1561 (defun term-previous-matching-input-string (regexp arg)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1562 "Return the string matching REGEXP ARG places along the input ring.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1563 Moves relative to `term-input-ring-index'."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1564 (let* ((pos (term-previous-matching-input-string-position regexp arg)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1565 (if pos (ring-ref term-input-ring pos))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1566
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
1567 (defun term-previous-matching-input-string-position
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
1568 (regexp arg &optional start)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1569 "Return the index matching REGEXP ARG places along the input ring.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1570 Moves relative to START, or `term-input-ring-index'."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1571 (if (or (not (ring-p term-input-ring))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1572 (ring-empty-p term-input-ring))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1573 (error "No history"))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1574 (let* ((len (ring-length term-input-ring))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1575 (motion (if (> arg 0) 1 -1))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1576 (n (mod (- (or start (term-search-start arg)) motion) len))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1577 (tried-each-ring-item nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1578 (prev nil))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1579 ;; Do the whole search as many times as the argument says.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1580 (while (and (/= arg 0) (not tried-each-ring-item))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1581 ;; Step once.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1582 (setq prev n
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1583 n (mod (+ n motion) len))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1584 ;; If we haven't reached a match, step some more.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1585 (while (and (< n len) (not tried-each-ring-item)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1586 (not (string-match regexp (ring-ref term-input-ring n))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1587 (setq n (mod (+ n motion) len)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1588 ;; If we have gone all the way around in this search.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1589 tried-each-ring-item (= n prev)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1590 (setq arg (if (> arg 0) (1- arg) (1+ arg))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1591 ;; Now that we know which ring element to use, if we found it, return that.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1592 (if (string-match regexp (ring-ref term-input-ring n))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1593 n)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1594
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1595 (defun term-previous-matching-input (regexp arg)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1596 "Search backwards through input history for match for REGEXP.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1597 \(Previous history elements are earlier commands.)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1598 With prefix argument N, search for Nth previous match.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1599 If N is negative, find the next or Nth next match."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1600 (interactive (term-regexp-arg "Previous input matching (regexp): "))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1601 (setq arg (term-search-arg arg))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1602 (let ((pos (term-previous-matching-input-string-position regexp arg)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1603 ;; Has a match been found?
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1604 (if (null pos)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1605 (error "Not found")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1606 (setq term-input-ring-index pos)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1607 (message "History item: %d" (1+ pos))
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
1608 (delete-region
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1609 ;; Can't use kill-region as it sets this-command
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1610 (process-mark (get-buffer-process (current-buffer))) (point))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1611 (insert (ring-ref term-input-ring pos)))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1612
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1613 (defun term-next-matching-input (regexp arg)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1614 "Search forwards through input history for match for REGEXP.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1615 \(Later history elements are more recent commands.)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1616 With prefix argument N, search for Nth following match.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1617 If N is negative, find the previous or Nth previous match."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1618 (interactive (term-regexp-arg "Next input matching (regexp): "))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1619 (term-previous-matching-input regexp (- arg)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1620
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1621 (defun term-previous-matching-input-from-input (arg)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1622 "Search backwards through input history for match for current input.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1623 \(Previous history elements are earlier commands.)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1624 With prefix argument N, search for Nth previous match.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1625 If N is negative, search forwards for the -Nth following match."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1626 (interactive "p")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1627 (if (not (memq last-command '(term-previous-matching-input-from-input
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1628 term-next-matching-input-from-input)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1629 ;; Starting a new search
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1630 (setq term-matching-input-from-input-string
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
1631 (buffer-substring
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
1632 (process-mark (get-buffer-process (current-buffer)))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1633 (point))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1634 term-input-ring-index nil))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1635 (term-previous-matching-input
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1636 (concat "^" (regexp-quote term-matching-input-from-input-string))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1637 arg))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1638
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1639 (defun term-next-matching-input-from-input (arg)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1640 "Search forwards through input history for match for current input.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1641 \(Following history elements are more recent commands.)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1642 With prefix argument N, search for Nth following match.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1643 If N is negative, search backwards for the -Nth previous match."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1644 (interactive "p")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1645 (term-previous-matching-input-from-input (- arg)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1646
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1647
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1648 (defun term-replace-by-expanded-history (&optional silent)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1649 "Expand input command history references before point.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1650 Expansion is dependent on the value of `term-input-autoexpand'.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1651
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1652 This function depends on the buffer's idea of the input history, which may not
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1653 match the command interpreter's idea, assuming it has one.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1654
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
1655 Assumes history syntax is like typical Un*x shells'. However, since Emacs
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1656 cannot know the interpreter's idea of input line numbers, assuming it has one,
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1657 it cannot expand absolute input line number references.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1658
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1659 If the optional argument SILENT is non-nil, never complain
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1660 even if history reference seems erroneous.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1661
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1662 See `term-magic-space' and `term-replace-by-expanded-history-before-point'.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1663
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1664 Returns t if successful."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1665 (interactive)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1666 (if (and term-input-autoexpand
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1667 (string-match "[!^]" (funcall term-get-old-input))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1668 (save-excursion (beginning-of-line)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1669 (looking-at term-prompt-regexp)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1670 ;; Looks like there might be history references in the command.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1671 (let ((previous-modified-tick (buffer-modified-tick)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1672 (message "Expanding history references...")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1673 (term-replace-by-expanded-history-before-point silent)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1674 (/= previous-modified-tick (buffer-modified-tick)))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1675
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1676
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1677 (defun term-replace-by-expanded-history-before-point (silent)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1678 "Expand directory stack reference before point.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1679 See `term-replace-by-expanded-history'. Returns t if successful."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1680 (save-excursion
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1681 (let ((toend (- (save-excursion (end-of-line nil) (point)) (point)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1682 (start (progn (term-bol nil) (point))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1683 (while (progn
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1684 (skip-chars-forward "^!^"
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1685 (save-excursion
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1686 (end-of-line nil) (- (point) toend)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1687 (< (point)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1688 (save-excursion
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1689 (end-of-line nil) (- (point) toend))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1690 ;; This seems a bit complex. We look for references such as !!, !-num,
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1691 ;; !foo, !?foo, !{bar}, !?{bar}, ^oh, ^my^, ^god^it, ^never^ends^.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1692 ;; If that wasn't enough, the plings can be suffixed with argument
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1693 ;; range specifiers.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1694 ;; Argument ranges are complex too, so we hive off the input line,
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1695 ;; referenced with plings, with the range string to `term-args'.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1696 (setq term-input-ring-index nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1697 (cond ((or (= (preceding-char) ?\\)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1698 (term-within-quotes start (point)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1699 ;; The history is quoted, or we're in quotes.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1700 (goto-char (1+ (point))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1701 ((looking-at "![0-9]+\\($\\|[^-]\\)")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1702 ;; We cannot know the interpreter's idea of input line numbers.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1703 (goto-char (match-end 0))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1704 (message "Absolute reference cannot be expanded"))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1705 ((looking-at "!-\\([0-9]+\\)\\(:?[0-9^$*-]+\\)?")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1706 ;; Just a number of args from `number' lines backward.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1707 (let ((number (1- (string-to-number
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1708 (buffer-substring (match-beginning 1)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1709 (match-end 1))))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1710 (if (<= number (ring-length term-input-ring))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1711 (progn
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1712 (replace-match
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1713 (term-args (term-previous-input-string number)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1714 (match-beginning 2) (match-end 2))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1715 t t)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1716 (setq term-input-ring-index number)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1717 (message "History item: %d" (1+ number)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1718 (goto-char (match-end 0))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1719 (message "Relative reference exceeds input history size"))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1720 ((or (looking-at "!!?:?\\([0-9^$*-]+\\)") (looking-at "!!"))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1721 ;; Just a number of args from the previous input line.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1722 (replace-match
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1723 (term-args (term-previous-input-string 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1724 (match-beginning 1) (match-end 1))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1725 t t)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1726 (message "History item: previous"))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1727 ((looking-at
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1728 "!\\??\\({\\(.+\\)}\\|\\(\\sw+\\)\\)\\(:?[0-9^$*-]+\\)?")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1729 ;; Most recent input starting with or containing (possibly
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1730 ;; protected) string, maybe just a number of args. Phew.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1731 (let* ((mb1 (match-beginning 1)) (me1 (match-end 1))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1732 (mb2 (match-beginning 2)) (me2 (match-end 2))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1733 (exp (buffer-substring (or mb2 mb1) (or me2 me1)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1734 (pref (if (save-match-data (looking-at "!\\?")) "" "^"))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1735 (pos (save-match-data
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1736 (term-previous-matching-input-string-position
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1737 (concat pref (regexp-quote exp)) 1))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1738 (if (null pos)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1739 (progn
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1740 (goto-char (match-end 0))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1741 (or silent
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1742 (progn (message "Not found")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1743 (ding))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1744 (setq term-input-ring-index pos)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1745 (replace-match
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1746 (term-args (ring-ref term-input-ring pos)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1747 (match-beginning 4) (match-end 4))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1748 t t)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1749 (message "History item: %d" (1+ pos)))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1750 ((looking-at "\\^\\([^^]+\\)\\^?\\([^^]*\\)\\^?")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1751 ;; Quick substitution on the previous input line.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1752 (let ((old (buffer-substring (match-beginning 1) (match-end 1)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1753 (new (buffer-substring (match-beginning 2) (match-end 2)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1754 (pos nil))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1755 (replace-match (term-previous-input-string 0) t t)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1756 (setq pos (point))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1757 (goto-char (match-beginning 0))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1758 (if (not (search-forward old pos t))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1759 (or silent
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1760 (error "Not found"))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1761 (replace-match new t t)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1762 (message "History item: substituted"))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1763 (t
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1764 (goto-char (match-end 0))))))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1765
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1766
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1767 (defun term-magic-space (arg)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1768 "Expand input history references before point and insert ARG spaces.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1769 A useful command to bind to SPC. See `term-replace-by-expanded-history'."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1770 (interactive "p")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1771 (term-replace-by-expanded-history)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1772 (self-insert-command arg))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1773
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1774 (defun term-within-quotes (beg end)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1775 "Return t if the number of quotes between BEG and END is odd.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1776 Quotes are single and double."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1777 (let ((countsq (term-how-many-region "\\(^\\|[^\\\\]\\)\'" beg end))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1778 (countdq (term-how-many-region "\\(^\\|[^\\\\]\\)\"" beg end)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1779 (or (= (mod countsq 2) 1) (= (mod countdq 2) 1))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1780
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1781 (defun term-how-many-region (regexp beg end)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1782 "Return number of matches for REGEXP from BEG to END."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1783 (let ((count 0))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1784 (save-excursion
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1785 (save-match-data
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1786 (goto-char beg)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1787 (while (re-search-forward regexp end t)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1788 (setq count (1+ count)))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1789 count))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1790
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1791 (defun term-args (string begin end)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1792 ;; From STRING, return the args depending on the range specified in the text
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1793 ;; from BEGIN to END. If BEGIN is nil, assume all args. Ignore leading `:'.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1794 ;; Range can be x-y, x-, -y, where x/y can be [0-9], *, ^, $.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1795 (save-match-data
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1796 (if (null begin)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1797 (term-arguments string 0 nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1798 (let* ((range (buffer-substring
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1799 (if (eq (char-after begin) ?:) (1+ begin) begin) end))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1800 (nth (cond ((string-match "^[*^]" range) 1)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1801 ((string-match "^-" range) 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1802 ((string-equal range "$") nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1803 (t (string-to-number range))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1804 (mth (cond ((string-match "[-*$]$" range) nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1805 ((string-match "-" range)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1806 (string-to-number (substring range (match-end 0))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1807 (t nth))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1808 (term-arguments string nth mth)))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1809
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1810 ;; Return a list of arguments from ARG. Break it up at the
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1811 ;; delimiters in term-delimiter-argument-list. Returned list is backwards.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1812 (defun term-delim-arg (arg)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1813 (if (null term-delimiter-argument-list)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1814 (list arg)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1815 (let ((args nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1816 (pos 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1817 (len (length arg)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1818 (while (< pos len)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1819 (let ((char (aref arg pos))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1820 (start pos))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1821 (if (memq char term-delimiter-argument-list)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1822 (while (and (< pos len) (eq (aref arg pos) char))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1823 (setq pos (1+ pos)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1824 (while (and (< pos len)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1825 (not (memq (aref arg pos)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1826 term-delimiter-argument-list)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1827 (setq pos (1+ pos))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1828 (setq args (cons (substring arg start pos) args))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1829 args)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1830
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1831 (defun term-arguments (string nth mth)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1832 "Return from STRING the NTH to MTH arguments.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1833 NTH and/or MTH can be nil, which means the last argument.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1834 Returned arguments are separated by single spaces.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1835 We assume whitespace separates arguments, except within quotes.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1836 Also, a run of one or more of a single character
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1837 in `term-delimiter-argument-list' is a separate argument.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1838 Argument 0 is the command name."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1839 (let ((argpart "[^ \n\t\"'`]+\\|\\(\"[^\"]*\"\\|'[^']*'\\|`[^`]*`\\)")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1840 (args ()) (pos 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1841 (count 0)
15246
ba353653c03a (term-send-raw-string): send-string -> process-send-string.
Karl Heuer <kwzh@gnu.org>
parents: 15212
diff changeset
1842 beg str quotes)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1843 ;; Build a list of all the args until we have as many as we want.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1844 (while (and (or (null mth) (<= count mth))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1845 (string-match argpart string pos))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1846 (if (and beg (= pos (match-beginning 0)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1847 ;; It's contiguous, part of the same arg.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1848 (setq pos (match-end 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1849 quotes (or quotes (match-beginning 1)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1850 ;; It's a new separate arg.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1851 (if beg
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1852 ;; Put the previous arg, if there was one, onto ARGS.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1853 (setq str (substring string beg pos)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1854 args (if quotes (cons str args)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1855 (nconc (term-delim-arg str) args))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1856 count (1+ count)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1857 (setq quotes (match-beginning 1))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1858 (setq beg (match-beginning 0))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1859 (setq pos (match-end 0))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1860 (if beg
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1861 (setq str (substring string beg pos)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1862 args (if quotes (cons str args)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1863 (nconc (term-delim-arg str) args))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1864 count (1+ count)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1865 (let ((n (or nth (1- count)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1866 (m (if mth (1- (- count mth)) 0)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1867 (mapconcat
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1868 (function (lambda (a) a)) (nthcdr n (nreverse (nthcdr m args))) " "))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1869
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1870 ;;;
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1871 ;;; Input processing stuff [line mode]
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1872 ;;;
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1873
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
1874 (defun term-send-input ()
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1875 "Send input to process.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1876 After the process output mark, sends all text from the process mark to
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1877 point as input to the process. Before the process output mark, calls value
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1878 of variable term-get-old-input to retrieve old input, copies it to the
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1879 process mark, and sends it. A terminal newline is also inserted into the
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1880 buffer and sent to the process. The list of function names contained in the
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1881 value of `term-input-filter-functions' is called on the input before sending
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1882 it. The input is entered into the input history ring, if the value of variable
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1883 term-input-filter returns non-nil when called on the input.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1884
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1885 Any history reference may be expanded depending on the value of the variable
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1886 `term-input-autoexpand'. The list of function names contained in the value
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1887 of `term-input-filter-functions' is called on the input before sending it.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1888 The input is entered into the input history ring, if the value of variable
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1889 `term-input-filter' returns non-nil when called on the input.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1890
10933
3057c4fd86d3 * term.el (term-eol-on-send): New variable. Use it.
Per Bothner <bothner@cygnus.com>
parents: 10679
diff changeset
1891 If variable `term-eol-on-send' is non-nil, then point is moved to the
3057c4fd86d3 * term.el (term-eol-on-send): New variable. Use it.
Per Bothner <bothner@cygnus.com>
parents: 10679
diff changeset
1892 end of line before sending the input.
3057c4fd86d3 * term.el (term-eol-on-send): New variable. Use it.
Per Bothner <bothner@cygnus.com>
parents: 10679
diff changeset
1893
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1894 The values of `term-get-old-input', `term-input-filter-functions', and
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1895 `term-input-filter' are chosen according to the command interpreter running
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1896 in the buffer. E.g.,
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1897
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1898 If the interpreter is the csh,
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1899 term-get-old-input is the default: take the current line, discard any
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1900 initial string matching regexp term-prompt-regexp.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1901 term-input-filter-functions monitors input for \"cd\", \"pushd\", and
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
1902 \"popd\" commands. When it sees one, it cd's the buffer.
42205
7308bbc423d5 Doc fixes.
Pavel Janík <Pavel@Janik.cz>
parents: 40697
diff changeset
1903 term-input-filter is the default: returns t if the input isn't all white
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1904 space.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1905
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
1906 If the term is Lucid Common Lisp,
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1907 term-get-old-input snarfs the sexp ending at point.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1908 term-input-filter-functions does nothing.
42205
7308bbc423d5 Doc fixes.
Pavel Janík <Pavel@Janik.cz>
parents: 40697
diff changeset
1909 term-input-filter returns nil if the input matches input-filter-regexp,
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1910 which matches (1) all whitespace (2) :a, :c, etc.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1911
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1912 Similarly for Soar, Scheme, etc."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1913 (interactive)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1914 ;; Note that the input string does not include its terminal newline.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1915 (let ((proc (get-buffer-process (current-buffer))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1916 (if (not proc) (error "Current buffer has no process")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1917 (let* ((pmark (process-mark proc))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1918 (pmark-val (marker-position pmark))
10933
3057c4fd86d3 * term.el (term-eol-on-send): New variable. Use it.
Per Bothner <bothner@cygnus.com>
parents: 10679
diff changeset
1919 (input-is-new (>= (point) pmark-val))
3057c4fd86d3 * term.el (term-eol-on-send): New variable. Use it.
Per Bothner <bothner@cygnus.com>
parents: 10679
diff changeset
1920 (intxt (if input-is-new
3057c4fd86d3 * term.el (term-eol-on-send): New variable. Use it.
Per Bothner <bothner@cygnus.com>
parents: 10679
diff changeset
1921 (progn (if term-eol-on-send (end-of-line))
3057c4fd86d3 * term.el (term-eol-on-send): New variable. Use it.
Per Bothner <bothner@cygnus.com>
parents: 10679
diff changeset
1922 (buffer-substring pmark (point)))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1923 (funcall term-get-old-input)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1924 (input (if (not (eq term-input-autoexpand 'input))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1925 ;; Just whatever's already there
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1926 intxt
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1927 ;; Expand and leave it visible in buffer
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1928 (term-replace-by-expanded-history t)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1929 (buffer-substring pmark (point))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1930 (history (if (not (eq term-input-autoexpand 'history))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1931 input
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1932 ;; This is messy 'cos ultimately the original
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1933 ;; functions used do insertion, rather than return
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1934 ;; strings. We have to expand, then insert back.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1935 (term-replace-by-expanded-history t)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1936 (let ((copy (buffer-substring pmark (point))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1937 (delete-region pmark (point))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1938 (insert input)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1939 copy))))
10671
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1940 (if (term-pager-enabled)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1941 (save-excursion
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1942 (goto-char (process-mark proc))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1943 (setq term-pager-count (term-current-row))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1944 (if (and (funcall term-input-filter history)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1945 (or (null term-input-ignoredups)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1946 (not (ring-p term-input-ring))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1947 (ring-empty-p term-input-ring)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1948 (not (string-equal (ring-ref term-input-ring 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1949 history))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1950 (ring-insert term-input-ring history))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1951 (let ((functions term-input-filter-functions))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1952 (while functions
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1953 (funcall (car functions) (concat input "\n"))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1954 (setq functions (cdr functions))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1955 (setq term-input-ring-index nil)
10933
3057c4fd86d3 * term.el (term-eol-on-send): New variable. Use it.
Per Bothner <bothner@cygnus.com>
parents: 10679
diff changeset
1956
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1957 ;; Update the markers before we send the input
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1958 ;; in case we get output amidst sending the input.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1959 (set-marker term-last-input-start pmark)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1960 (set-marker term-last-input-end (point))
10933
3057c4fd86d3 * term.el (term-eol-on-send): New variable. Use it.
Per Bothner <bothner@cygnus.com>
parents: 10679
diff changeset
1961 (if input-is-new
3057c4fd86d3 * term.el (term-eol-on-send): New variable. Use it.
Per Bothner <bothner@cygnus.com>
parents: 10679
diff changeset
1962 (progn
3057c4fd86d3 * term.el (term-eol-on-send): New variable. Use it.
Per Bothner <bothner@cygnus.com>
parents: 10679
diff changeset
1963 ;; Set up to delete, because inferior should echo.
3057c4fd86d3 * term.el (term-eol-on-send): New variable. Use it.
Per Bothner <bothner@cygnus.com>
parents: 10679
diff changeset
1964 (if (marker-buffer term-pending-delete-marker)
3057c4fd86d3 * term.el (term-eol-on-send): New variable. Use it.
Per Bothner <bothner@cygnus.com>
parents: 10679
diff changeset
1965 (delete-region term-pending-delete-marker pmark))
3057c4fd86d3 * term.el (term-eol-on-send): New variable. Use it.
Per Bothner <bothner@cygnus.com>
parents: 10679
diff changeset
1966 (set-marker term-pending-delete-marker pmark-val)
3057c4fd86d3 * term.el (term-eol-on-send): New variable. Use it.
Per Bothner <bothner@cygnus.com>
parents: 10679
diff changeset
1967 (set-marker (process-mark proc) (point))))
3057c4fd86d3 * term.el (term-eol-on-send): New variable. Use it.
Per Bothner <bothner@cygnus.com>
parents: 10679
diff changeset
1968 (goto-char pmark)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1969 (funcall term-input-sender proc input)))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1970
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1971 (defun term-get-old-input-default ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1972 "Default for term-get-old-input.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1973 Take the current line, and discard any initial text matching
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1974 term-prompt-regexp."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1975 (save-excursion
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1976 (beginning-of-line)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1977 (term-skip-prompt)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1978 (let ((beg (point)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1979 (end-of-line)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1980 (buffer-substring beg (point)))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1981
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1982 (defun term-copy-old-input ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1983 "Insert after prompt old input at point as new input to be edited.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1984 Calls `term-get-old-input' to get old input."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1985 (interactive)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1986 (let ((input (funcall term-get-old-input))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1987 (process (get-buffer-process (current-buffer))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1988 (if (not process)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1989 (error "Current buffer has no process")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1990 (goto-char (process-mark process))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1991 (insert input))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1992
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1993 (defun term-skip-prompt ()
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
1994 "Skip past the text matching regexp term-prompt-regexp.
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1995 If this takes us past the end of the current line, don't skip at all."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1996 (let ((eol (save-excursion (end-of-line) (point))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1997 (if (and (looking-at term-prompt-regexp)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1998 (<= (match-end 0) eol))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1999 (goto-char (match-end 0)))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2000
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2001
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2002 (defun term-after-pmark-p ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2003 "Is point after the process output marker?"
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2004 ;; Since output could come into the buffer after we looked at the point
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2005 ;; but before we looked at the process marker's value, we explicitly
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2006 ;; serialise. This is just because I don't know whether or not Emacs
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2007 ;; services input during execution of lisp commands.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2008 (let ((proc-pos (marker-position
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2009 (process-mark (get-buffer-process (current-buffer))))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2010 (<= proc-pos (point))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2011
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2012 (defun term-simple-send (proc string)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2013 "Default function for sending to PROC input STRING.
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2014 This just sends STRING plus a newline. To override this,
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2015 set the hook TERM-INPUT-SENDER."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2016 (term-send-string proc string)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2017 (term-send-string proc "\n"))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2018
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2019 (defun term-bol (arg)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2020 "Goes to the beginning of line, then skips past the prompt, if any.
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2021 If a prefix argument is given (\\[universal-argument]), then no prompt skip
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2022 -- go straight to column 0.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2023
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2024 The prompt skip is done by skipping text matching the regular expression
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2025 term-prompt-regexp, a buffer local variable."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2026 (interactive "P")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2027 (beginning-of-line)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2028 (if (null arg) (term-skip-prompt)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2029
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2030 ;;; These two functions are for entering text you don't want echoed or
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2031 ;;; saved -- typically passwords to ftp, telnet, or somesuch.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2032 ;;; Just enter m-x term-send-invisible and type in your line.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2033
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2034 (defun term-read-noecho (prompt &optional stars)
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2035 "Read a single line of text from user without echoing, and return it.
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2036 Prompt with argument PROMPT, a string. Optional argument STARS causes
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2037 input to be echoed with '*' characters on the prompt line. Input ends with
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2038 RET, LFD, or ESC. DEL or C-h rubs out. C-u kills line. C-g aborts (if
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2039 `inhibit-quit' is set because e.g. this function was called from a process
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2040 filter and C-g is pressed, this function returns nil rather than a string).
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2041
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2042 Note that the keystrokes comprising the text can still be recovered
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2043 \(temporarily) with \\[view-lossage]. This may be a security bug for some
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2044 applications."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2045 (let ((ans "")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2046 (c 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2047 (echo-keystrokes 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2048 (cursor-in-echo-area t)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2049 (done nil))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2050 (while (not done)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2051 (if stars
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2052 (message "%s%s" prompt (make-string (length ans) ?*))
14332
358d0db8457e (term-read-noecho): Pass proper format string to message.
Karl Heuer <kwzh@gnu.org>
parents: 14275
diff changeset
2053 (message "%s" prompt))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2054 (setq c (read-char))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2055 (cond ((= c ?\C-g)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2056 ;; This function may get called from a process filter, where
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2057 ;; inhibit-quit is set. In later versions of Emacs read-char
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2058 ;; may clear quit-flag itself and return C-g. That would make
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2059 ;; it impossible to quit this loop in a simple way, so
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2060 ;; re-enable it here (for backward-compatibility the check for
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2061 ;; quit-flag below would still be necessary, so this seems
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2062 ;; like the simplest way to do things).
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2063 (setq quit-flag t
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2064 done t))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2065 ((or (= c ?\r) (= c ?\n) (= c ?\e))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2066 (setq done t))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2067 ((= c ?\C-u)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2068 (setq ans ""))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2069 ((and (/= c ?\b) (/= c ?\177))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2070 (setq ans (concat ans (char-to-string c))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2071 ((> (length ans) 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2072 (setq ans (substring ans 0 -1)))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2073 (if quit-flag
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2074 ;; Emulate a true quit, except that we have to return a value.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2075 (prog1
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2076 (setq quit-flag nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2077 (message "Quit")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2078 (beep t))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2079 (message "")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2080 ans)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2081
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2082 (defun term-send-invisible (str &optional proc)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2083 "Read a string without echoing.
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2084 Then send it to the process running in the current buffer. A new-line
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2085 is additionally sent. String is not saved on term input history list.
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2086 Security bug: your string can still be temporarily recovered with
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2087 \\[view-lossage]."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2088 (interactive "P") ; Defeat snooping via C-x esc
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2089 (if (not (stringp str))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2090 (setq str (term-read-noecho "Non-echoed text: " t)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2091 (if (not proc)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2092 (setq proc (get-buffer-process (current-buffer))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2093 (if (not proc) (error "Current buffer has no process")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2094 (setq term-kill-echo-list (nconc term-kill-echo-list
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2095 (cons str nil)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2096 (term-send-string proc str)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2097 (term-send-string proc "\n")))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2098
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2099
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2100 ;;; Low-level process communication
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2101
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2102 (defvar term-input-chunk-size 512
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2103 "*Long inputs send to term processes are broken up into chunks of this size.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2104 If your process is choking on big inputs, try lowering the value.")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2105
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2106 (defun term-send-string (proc str)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2107 "Send PROCESS the contents of STRING as input.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2108 This is equivalent to process-send-string, except that long input strings
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2109 are broken up into chunks of size term-input-chunk-size. Processes
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2110 are given a chance to output between chunks. This can help prevent processes
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2111 from hanging when you send them long inputs on some OS's."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2112 (let* ((len (length str))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2113 (i (min len term-input-chunk-size)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2114 (process-send-string proc (substring str 0 i))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2115 (while (< i len)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2116 (let ((next-i (+ i term-input-chunk-size)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2117 (accept-process-output)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2118 (process-send-string proc (substring str i (min len next-i)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2119 (setq i next-i)))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2120
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2121 (defun term-send-region (proc start end)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2122 "Sends to PROC the region delimited by START and END.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2123 This is a replacement for process-send-region that tries to keep
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2124 your process from hanging on long inputs. See term-send-string."
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2125 (term-send-string proc (buffer-substring start end)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2126
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2127
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2128 ;;; Random input hackage
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2129
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2130 (defun term-kill-output ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2131 "Kill all output from interpreter since last input."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2132 (interactive)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2133 (let ((pmark (process-mark (get-buffer-process (current-buffer)))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2134 (kill-region term-last-input-end pmark)
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2135 (goto-char pmark)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2136 (insert "*** output flushed ***\n")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2137 (set-marker pmark (point))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2138
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2139 (defun term-show-output ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2140 "Display start of this batch of interpreter output at top of window.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2141 Sets mark to the value of point when this command is run."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2142 (interactive)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2143 (goto-char term-last-input-end)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2144 (backward-char)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2145 (beginning-of-line)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2146 (set-window-start (selected-window) (point))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2147 (end-of-line))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2148
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2149 (defun term-interrupt-subjob ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2150 "Interrupt the current subjob."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2151 (interactive)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2152 (interrupt-process nil term-ptyp))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2153
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2154 (defun term-kill-subjob ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2155 "Send kill signal to the current subjob."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2156 (interactive)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2157 (kill-process nil term-ptyp))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2158
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2159 (defun term-quit-subjob ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2160 "Send quit signal to the current subjob."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2161 (interactive)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2162 (quit-process nil term-ptyp))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2163
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2164 (defun term-stop-subjob ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2165 "Stop the current subjob.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2166 WARNING: if there is no current subjob, you can end up suspending
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2167 the top-level process running in the buffer. If you accidentally do
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2168 this, use \\[term-continue-subjob] to resume the process. (This
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2169 is not a problem with most shells, since they ignore this signal.)"
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2170 (interactive)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2171 (stop-process nil term-ptyp))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2172
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2173 (defun term-continue-subjob ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2174 "Send CONT signal to process buffer's process group.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2175 Useful if you accidentally suspend the top-level process."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2176 (interactive)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2177 (continue-process nil term-ptyp))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2178
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2179 (defun term-kill-input ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2180 "Kill all text from last stuff output by interpreter to point."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2181 (interactive)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2182 (let* ((pmark (process-mark (get-buffer-process (current-buffer))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2183 (p-pos (marker-position pmark)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2184 (if (> (point) p-pos)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2185 (kill-region pmark (point)))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2186
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2187 (defun term-delchar-or-maybe-eof (arg)
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2188 "Delete ARG characters forward, or send an EOF to process if at end of
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2189 buffer."
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2190 (interactive "p")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2191 (if (eobp)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2192 (process-send-eof)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2193 (delete-char arg)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2194
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2195 (defun term-send-eof ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2196 "Send an EOF to the current buffer's process."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2197 (interactive)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2198 (process-send-eof))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2199
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2200 (defun term-backward-matching-input (regexp arg)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2201 "Search backward through buffer for match for REGEXP.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2202 Matches are searched for on lines that match `term-prompt-regexp'.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2203 With prefix argument N, search for Nth previous match.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2204 If N is negative, find the next or Nth next match."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2205 (interactive (term-regexp-arg "Backward input matching (regexp): "))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2206 (let* ((re (concat term-prompt-regexp ".*" regexp))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2207 (pos (save-excursion (end-of-line (if (> arg 0) 0 1))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2208 (if (re-search-backward re nil t arg)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2209 (point)))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2210 (if (null pos)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2211 (progn (message "Not found")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2212 (ding))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2213 (goto-char pos)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2214 (term-bol nil))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2215
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2216 (defun term-forward-matching-input (regexp arg)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2217 "Search forward through buffer for match for REGEXP.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2218 Matches are searched for on lines that match `term-prompt-regexp'.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2219 With prefix argument N, search for Nth following match.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2220 If N is negative, find the previous or Nth previous match."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2221 (interactive (term-regexp-arg "Forward input matching (regexp): "))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2222 (term-backward-matching-input regexp (- arg)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2223
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2224
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2225 (defun term-next-prompt (n)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2226 "Move to end of Nth next prompt in the buffer.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2227 See `term-prompt-regexp'."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2228 (interactive "p")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2229 (let ((paragraph-start term-prompt-regexp))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2230 (end-of-line (if (> n 0) 1 0))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2231 (forward-paragraph n)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2232 (term-skip-prompt)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2233
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2234 (defun term-previous-prompt (n)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2235 "Move to end of Nth previous prompt in the buffer.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2236 See `term-prompt-regexp'."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2237 (interactive "p")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2238 (term-next-prompt (- n)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2239
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2240 ;;; Support for source-file processing commands.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2241 ;;;============================================================================
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2242 ;;; Many command-interpreters (e.g., Lisp, Scheme, Soar) have
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2243 ;;; commands that process files of source text (e.g. loading or compiling
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2244 ;;; files). So the corresponding process-in-a-buffer modes have commands
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2245 ;;; for doing this (e.g., lisp-load-file). The functions below are useful
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2246 ;;; for defining these commands.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2247 ;;;
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2248 ;;; Alas, these guys don't do exactly the right thing for Lisp, Scheme
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2249 ;;; and Soar, in that they don't know anything about file extensions.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2250 ;;; So the compile/load interface gets the wrong default occasionally.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2251 ;;; The load-file/compile-file default mechanism could be smarter -- it
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2252 ;;; doesn't know about the relationship between filename extensions and
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2253 ;;; whether the file is source or executable. If you compile foo.lisp
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2254 ;;; with compile-file, then the next load-file should use foo.bin for
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2255 ;;; the default, not foo.lisp. This is tricky to do right, particularly
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2256 ;;; because the extension for executable files varies so much (.o, .bin,
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2257 ;;; .lbin, .mo, .vo, .ao, ...).
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2258
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2259
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2260 ;;; TERM-SOURCE-DEFAULT -- determines defaults for source-file processing
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2261 ;;; commands.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2262 ;;;
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2263 ;;; TERM-CHECK-SOURCE -- if FNAME is in a modified buffer, asks you if you
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2264 ;;; want to save the buffer before issuing any process requests to the command
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2265 ;;; interpreter.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2266 ;;;
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2267 ;;; TERM-GET-SOURCE -- used by the source-file processing commands to prompt
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2268 ;;; for the file to process.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2269
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2270 ;;; (TERM-SOURCE-DEFAULT previous-dir/file source-modes)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2271 ;;;============================================================================
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2272 ;;; This function computes the defaults for the load-file and compile-file
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2273 ;;; commands for tea, soar, cmulisp, and cmuscheme modes.
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2274 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2275 ;;; - PREVIOUS-DIR/FILE is a pair (directory . filename) from the last
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2276 ;;; source-file processing command, or nil if there hasn't been one yet.
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2277 ;;; - SOURCE-MODES is a list used to determine what buffers contain source
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2278 ;;; files: if the major mode of the buffer is in SOURCE-MODES, it's source.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2279 ;;; Typically, (lisp-mode) or (scheme-mode).
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2280 ;;;
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2281 ;;; If the command is given while the cursor is inside a string, *and*
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2282 ;;; the string is an existing filename, *and* the filename is not a directory,
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2283 ;;; then the string is taken as default. This allows you to just position
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2284 ;;; your cursor over a string that's a filename and have it taken as default.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2285 ;;;
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2286 ;;; If the command is given in a file buffer whose major mode is in
42706
be541feb06cc Fix typo.
Pavel Janík <Pavel@Janik.cz>
parents: 42205
diff changeset
2287 ;;; SOURCE-MODES, then the filename is the default file, and the
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2288 ;;; file's directory is the default directory.
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2289 ;;;
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2290 ;;; If the buffer isn't a source file buffer (e.g., it's the process buffer),
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2291 ;;; then the default directory & file are what was used in the last source-file
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2292 ;;; processing command (i.e., PREVIOUS-DIR/FILE). If this is the first time
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2293 ;;; the command has been run (PREVIOUS-DIR/FILE is nil), the default directory
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2294 ;;; is the cwd, with no default file. (\"no default file\" = nil)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2295 ;;;
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2296 ;;; SOURCE-REGEXP is typically going to be something like (tea-mode)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2297 ;;; for T programs, (lisp-mode) for Lisp programs, (soar-mode lisp-mode)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2298 ;;; for Soar programs, etc.
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2299 ;;;
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2300 ;;; The function returns a pair: (default-directory . default-file).
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2301
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2302 (defun term-source-default (previous-dir/file source-modes)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2303 (cond ((and buffer-file-name (memq major-mode source-modes))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2304 (cons (file-name-directory buffer-file-name)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2305 (file-name-nondirectory buffer-file-name)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2306 (previous-dir/file)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2307 (t
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2308 (cons default-directory nil))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2309
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2310
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2311 ;;; (TERM-CHECK-SOURCE fname)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2312 ;;;============================================================================
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2313 ;;; Prior to loading or compiling (or otherwise processing) a file (in the CMU
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2314 ;;; process-in-a-buffer modes), this function can be called on the filename.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2315 ;;; If the file is loaded into a buffer, and the buffer is modified, the user
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2316 ;;; is queried to see if he wants to save the buffer before proceeding with
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2317 ;;; the load or compile.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2318
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2319 (defun term-check-source (fname)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2320 (let ((buff (get-file-buffer fname)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2321 (if (and buff
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2322 (buffer-modified-p buff)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2323 (y-or-n-p (format "Save buffer %s first? "
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2324 (buffer-name buff))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2325 ;; save BUFF.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2326 (let ((old-buffer (current-buffer)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2327 (set-buffer buff)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2328 (save-buffer)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2329 (set-buffer old-buffer)))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2330
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2331
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2332 ;;; (TERM-GET-SOURCE prompt prev-dir/file source-modes mustmatch-p)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2333 ;;;============================================================================
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2334 ;;; TERM-GET-SOURCE is used to prompt for filenames in command-interpreter
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2335 ;;; commands that process source files (like loading or compiling a file).
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2336 ;;; It prompts for the filename, provides a default, if there is one,
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2337 ;;; and returns the result filename.
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2338 ;;;
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2339 ;;; See TERM-SOURCE-DEFAULT for more on determining defaults.
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2340 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2341 ;;; PROMPT is the prompt string. PREV-DIR/FILE is the (directory . file) pair
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2342 ;;; from the last source processing command. SOURCE-MODES is a list of major
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2343 ;;; modes used to determine what file buffers contain source files. (These
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2344 ;;; two arguments are used for determining defaults). If MUSTMATCH-P is true,
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2345 ;;; then the filename reader will only accept a file that exists.
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2346 ;;;
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2347 ;;; A typical use:
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2348 ;;; (interactive (term-get-source "Compile file: " prev-lisp-dir/file
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2349 ;;; '(lisp-mode) t))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2350
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2351 ;;; This is pretty stupid about strings. It decides we're in a string
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2352 ;;; if there's a quote on both sides of point on the current line.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2353 (defun term-extract-string ()
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2354 "Returns string around POINT that starts the current line or nil."
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2355 (save-excursion
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2356 (let* ((point (point))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2357 (bol (progn (beginning-of-line) (point)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2358 (eol (progn (end-of-line) (point)))
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2359 (start (progn (goto-char point)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2360 (and (search-backward "\"" bol t)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2361 (1+ (point)))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2362 (end (progn (goto-char point)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2363 (and (search-forward "\"" eol t)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2364 (1- (point))))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2365 (and start end
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2366 (buffer-substring start end)))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2367
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2368 (defun term-get-source (prompt prev-dir/file source-modes mustmatch-p)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2369 (let* ((def (term-source-default prev-dir/file source-modes))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2370 (stringfile (term-extract-string))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2371 (sfile-p (and stringfile
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2372 (condition-case ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2373 (file-exists-p stringfile)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2374 (error nil))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2375 (not (file-directory-p stringfile))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2376 (defdir (if sfile-p (file-name-directory stringfile)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2377 (car def)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2378 (deffile (if sfile-p (file-name-nondirectory stringfile)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2379 (cdr def)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2380 (ans (read-file-name (if deffile (format "%s(default %s) "
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2381 prompt deffile)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2382 prompt)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2383 defdir
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2384 (concat defdir deffile)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2385 mustmatch-p)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2386 (list (expand-file-name (substitute-in-file-name ans)))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2387
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2388 ;;; I am somewhat divided on this string-default feature. It seems
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2389 ;;; to violate the principle-of-least-astonishment, in that it makes
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2390 ;;; the default harder to predict, so you actually have to look and see
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2391 ;;; what the default really is before choosing it. This can trip you up.
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2392 ;;; On the other hand, it can be useful, I guess. I would appreciate feedback
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2393 ;;; on this.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2394 ;;; -Olin
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2395
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2396
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2397 ;;; Simple process query facility.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2398 ;;; ===========================================================================
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2399 ;;; This function is for commands that want to send a query to the process
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2400 ;;; and show the response to the user. For example, a command to get the
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2401 ;;; arglist for a Common Lisp function might send a "(arglist 'foo)" query
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2402 ;;; to an inferior Common Lisp process.
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2403 ;;;
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2404 ;;; This simple facility just sends strings to the inferior process and pops
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2405 ;;; up a window for the process buffer so you can see what the process
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2406 ;;; responds with. We don't do anything fancy like try to intercept what the
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2407 ;;; process responds with and put it in a pop-up window or on the message
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2408 ;;; line. We just display the buffer. Low tech. Simple. Works good.
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2409
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2410 ;;; Send to the inferior process PROC the string STR. Pop-up but do not select
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2411 ;;; a window for the inferior process so that its response can be seen.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2412 (defun term-proc-query (proc str)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2413 (let* ((proc-buf (process-buffer proc))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2414 (proc-mark (process-mark proc)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2415 (display-buffer proc-buf)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2416 (set-buffer proc-buf) ; but it's not the selected *window*
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2417 (let ((proc-win (get-buffer-window proc-buf))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2418 (proc-pt (marker-position proc-mark)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2419 (term-send-string proc str) ; send the query
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2420 (accept-process-output proc) ; wait for some output
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2421 ;; Try to position the proc window so you can see the answer.
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2422 ;; This is bogus code. If you delete the (sit-for 0), it breaks.
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2423 ;; I don't know why. Wizards invited to improve it.
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2424 (if (not (pos-visible-in-window-p proc-pt proc-win))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2425 (let ((opoint (window-point proc-win)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2426 (set-window-point proc-win proc-mark) (sit-for 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2427 (if (not (pos-visible-in-window-p opoint proc-win))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2428 (push-mark opoint)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2429 (set-window-point proc-win opoint)))))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2430
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2431 ;;; Returns the current column in the current screen line.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2432 ;;; Note: (current-column) yields column in buffer line.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2433
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2434 (defun term-horizontal-column ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2435 (- (term-current-column) (term-start-line-column)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2436
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2437 ;; Calls either vertical-motion or buffer-vertical-motion
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2438 (defmacro term-vertical-motion (count)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2439 (list 'funcall 'term-vertical-motion count))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2440
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2441 ;; An emulation of vertical-motion that is independent of having a window.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2442 ;; Instead, it uses the term-width variable as the logical window width.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2443
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2444 (defun buffer-vertical-motion (count)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2445 (cond ((= count 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2446 (move-to-column (* term-width (/ (current-column) term-width)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2447 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2448 ((> count 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2449 (let ((H)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2450 (todo (+ count (/ (current-column) term-width))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2451 (end-of-line)
13961
ff6ac63de609 (term-process-pager): Fix message spelling.
Karl Heuer <kwzh@gnu.org>
parents: 13337
diff changeset
2452 ;; The loop iterates over buffer lines;
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2453 ;; H is the number of screen lines in the current line, i.e.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2454 ;; the ceiling of dividing the buffer line width by term-width.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2455 (while (and (<= (setq H (max (/ (+ (current-column) term-width -1)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2456 term-width)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2457 1))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2458 todo)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2459 (not (eobp)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2460 (setq todo (- todo H))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2461 (forward-char) ;; Move past the ?\n
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2462 (end-of-line)) ;; and on to the end of the next line.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2463 (if (and (>= todo H) (> todo 0))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2464 (+ (- count todo) H -1) ;; Hit end of buffer.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2465 (move-to-column (* todo term-width))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2466 count)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2467 (t ;; (< count 0) ;; Similar algorithm, but for upward motion.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2468 (let ((H)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2469 (todo (- count)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2470 (while (and (<= (setq H (max (/ (+ (current-column) term-width -1)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2471 term-width)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2472 1))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2473 todo)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2474 (progn (beginning-of-line)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2475 (not (bobp))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2476 (setq todo (- todo H))
13961
ff6ac63de609 (term-process-pager): Fix message spelling.
Karl Heuer <kwzh@gnu.org>
parents: 13337
diff changeset
2477 (backward-char)) ;; Move to end of previous line.
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2478 (if (and (>= todo H) (> todo 0))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2479 (+ count todo (- 1 H)) ;; Hit beginning of buffer.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2480 (move-to-column (* (- H todo 1) term-width))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2481 count)))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2482
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2483 ;;; The term-start-line-column variable is used as a cache.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2484 (defun term-start-line-column ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2485 (cond (term-start-line-column)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2486 ((let ((save-pos (point)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2487 (term-vertical-motion 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2488 (setq term-start-line-column (current-column))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2489 (goto-char save-pos)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2490 term-start-line-column))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2491
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2492 ;;; Same as (current-column), but uses term-current-column as a cache.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2493 (defun term-current-column ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2494 (cond (term-current-column)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2495 ((setq term-current-column (current-column)))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2496
36763
00b03757e45b These changes are based on a patch sent from Yong Lu <lyongu@yahoo.com>.
Kenichi Handa <handa@m17n.org>
parents: 34863
diff changeset
2497 ;;; Move DELTA column right (or left if delta < 0 limiting at column 0).
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2498
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2499 (defun term-move-columns (delta)
36763
00b03757e45b These changes are based on a patch sent from Yong Lu <lyongu@yahoo.com>.
Kenichi Handa <handa@m17n.org>
parents: 34863
diff changeset
2500 (setq term-current-column (max 0 (+ (term-current-column) delta)))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2501 (move-to-column term-current-column t))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2502
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2503 ;; Insert COUNT copies of CHAR in the default face.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2504 (defun term-insert-char (char count)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2505 (let ((old-point (point)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2506 (insert-char char count)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2507 (put-text-property old-point (point) 'face 'default)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2508
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2509 (defun term-current-row ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2510 (cond (term-current-row)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2511 ((setq term-current-row
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2512 (save-restriction
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2513 (save-excursion
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2514 (narrow-to-region term-home-marker (point-max))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2515 (- (term-vertical-motion -9999))))))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2516
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2517 (defun term-adjust-current-row-cache (delta)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2518 (if term-current-row
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2519 (setq term-current-row (+ term-current-row delta))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2520
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2521 (defun term-terminal-pos ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2522 (save-excursion ; save-restriction
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2523 (let ((save-col (term-current-column))
10671
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
2524 x y)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2525 (term-vertical-motion 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2526 (setq x (- save-col (current-column)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2527 (setq y (term-vertical-motion term-height))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2528 (cons x y))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2529
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2530 ;;;Function that handles term messages: code by rms ( and you can see the
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2531 ;;;difference ;-) -mm
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2532
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2533 (defun term-handle-ansi-terminal-messages (message)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2534 ;; Is there a command here?
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2535 (while (string-match "\eAnSiT.+\n" message)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2536 ;; Extract the command code and the argument.
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2537 (let* ((start (match-beginning 0))
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2538 (end (match-end 0))
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2539 (command-code (aref message (+ start 6)))
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2540 (argument
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2541 (save-match-data
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2542 (substring message
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2543 (+ start 8)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2544 (string-match "\r?\n" message
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2545 (+ start 8)))))
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2546 ignore)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2547 ;; Delete this command from MESSAGE.
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2548 (setq message (replace-match "" t t message))
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2549
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2550 ;; If we recognize the type of command, set the appropriate variable.
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2551 (cond ((= command-code ?c)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2552 (setq term-ansi-at-dir argument))
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2553 ((= command-code ?h)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2554 (setq term-ansi-at-host argument))
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2555 ((= command-code ?u)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2556 (setq term-ansi-at-user argument))
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2557 ;; Otherwise ignore this one.
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2558 (t
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2559 (setq ignore t)))
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2560
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2561 ;; Update default-directory based on the changes this command made.
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2562 (if ignore
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2563 nil
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2564 (setq default-directory
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2565 (file-name-as-directory
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2566 (if (and (string= term-ansi-at-host (system-name))
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2567 (string= term-ansi-at-user (user-real-login-name)))
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2568 (expand-file-name term-ansi-at-dir)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2569 (if (string= term-ansi-at-user (user-real-login-name))
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2570 (concat "/" term-ansi-at-host ":" term-ansi-at-dir)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2571 (concat "/" term-ansi-at-user "@" term-ansi-at-host ":"
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2572 term-ansi-at-dir)))))
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2573
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2574 ;; I'm not sure this is necessary,
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2575 ;; but it's best to be on the safe side.
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2576 (if (string= term-ansi-at-host (system-name))
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2577 (progn
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2578 (setq ange-ftp-default-user term-ansi-at-save-user)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2579 (setq ange-ftp-default-password term-ansi-at-save-pwd)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2580 (setq ange-ftp-generate-anonymous-password term-ansi-at-save-anon))
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2581 (setq term-ansi-at-save-user ange-ftp-default-user)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2582 (setq term-ansi-at-save-pwd ange-ftp-default-password)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2583 (setq term-ansi-at-save-anon ange-ftp-generate-anonymous-password)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2584 (setq ange-ftp-default-user nil)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2585 (setq ange-ftp-default-password nil)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2586 (setq ange-ftp-generate-anonymous-password nil)))))
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2587 message)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2588
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2589
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2590 ;;; Terminal emulation
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2591 ;;; This is the standard process filter for term buffers.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2592 ;;; It emulates (most of the features of) a VT100/ANSI-style terminal.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2593
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2594 (defun term-emulate-terminal (proc str)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2595 (let* ((previous-buffer (current-buffer))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2596 (i 0) char funny count save-point save-marker old-point temp win
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2597 (selected (selected-window))
24936
10d20f341dee (term-emulate-terminal): Avoid infinite loop
Richard M. Stallman <rms@gnu.org>
parents: 24044
diff changeset
2598 last-win
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2599 (str-length (length str)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2600 (unwind-protect
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2601 (progn
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2602 (set-buffer (process-buffer proc))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2603
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2604 ;;; Let's handle the messages. -mm
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2605
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2606 (setq str (term-handle-ansi-terminal-messages str))
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2607 (setq str-length (length str))
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2608
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2609 (if (marker-buffer term-pending-delete-marker)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2610 (progn
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2611 ;; Delete text following term-pending-delete-marker.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2612 (delete-region term-pending-delete-marker (process-mark proc))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2613 (set-marker term-pending-delete-marker nil)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2614
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2615 (if (eq (window-buffer) (current-buffer))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2616 (progn
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2617 (setq term-vertical-motion (symbol-function 'vertical-motion))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2618 (term-check-size proc))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2619 (setq term-vertical-motion
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2620 (symbol-function 'buffer-vertical-motion)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2621
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2622 (setq save-marker (copy-marker (process-mark proc)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2623
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2624 (if (/= (point) (process-mark proc))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2625 (progn (setq save-point (point-marker))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2626 (goto-char (process-mark proc))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2627
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2628 (save-restriction
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2629 ;; If the buffer is in line mode, and there is a partial
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2630 ;; input line, save the line (by narrowing to leave it
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2631 ;; outside the restriction ) until we're done with output.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2632 (if (and (> (point-max) (process-mark proc))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2633 (term-in-line-mode))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2634 (narrow-to-region (point-min) (process-mark proc)))
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2635
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2636 (if term-log-buffer
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2637 (princ str term-log-buffer))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2638 (cond ((eq term-terminal-state 4) ;; Have saved pending output.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2639 (setq str (concat term-terminal-parameter str))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2640 (setq term-terminal-parameter nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2641 (setq str-length (length str))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2642 (setq term-terminal-state 0)))
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2643
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2644 (while (< i str-length)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2645 (setq char (aref str i))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2646 (cond ((< term-terminal-state 2)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2647 ;; Look for prefix of regular chars
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2648 (setq funny
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2649 (string-match "[\r\n\000\007\033\t\b\032\016\017]"
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2650 str i))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2651 (if (not funny) (setq funny str-length))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2652 (cond ((> funny i)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2653 (cond ((eq term-terminal-state 1)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2654 (term-move-columns 1)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2655 (setq term-terminal-state 0)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2656 (setq count (- funny i))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2657 (setq temp (- (+ (term-horizontal-column) count)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2658 term-width))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2659 (cond ((<= temp 0)) ;; All count chars fit in line.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2660 ((> count temp) ;; Some chars fit.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2661 ;; This iteration, handle only what fits.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2662 (setq count (- count temp))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2663 (setq funny (+ count i)))
12229
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
2664 ((or (not (or term-pager-count
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
2665 term-scroll-with-delete))
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
2666 (> (term-handle-scroll 1) 0))
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
2667 (term-adjust-current-row-cache 1)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2668 (setq count (min count term-width))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2669 (setq funny (+ count i))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2670 (setq term-start-line-column
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2671 term-current-column))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2672 (t ;; Doing PAGER processing.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2673 (setq count 0 funny i)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2674 (setq term-current-column nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2675 (setq term-start-line-column nil)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2676 (setq old-point (point))
36763
00b03757e45b These changes are based on a patch sent from Yong Lu <lyongu@yahoo.com>.
Kenichi Handa <handa@m17n.org>
parents: 34863
diff changeset
2677
00b03757e45b These changes are based on a patch sent from Yong Lu <lyongu@yahoo.com>.
Kenichi Handa <handa@m17n.org>
parents: 34863
diff changeset
2678 ;; Insert a string, check how many columns
00b03757e45b These changes are based on a patch sent from Yong Lu <lyongu@yahoo.com>.
Kenichi Handa <handa@m17n.org>
parents: 34863
diff changeset
2679 ;; we moved, then delete that many columns
00b03757e45b These changes are based on a patch sent from Yong Lu <lyongu@yahoo.com>.
Kenichi Handa <handa@m17n.org>
parents: 34863
diff changeset
2680 ;; following point if not eob nor insert-mode.
00b03757e45b These changes are based on a patch sent from Yong Lu <lyongu@yahoo.com>.
Kenichi Handa <handa@m17n.org>
parents: 34863
diff changeset
2681 (let ((old-column (current-column))
00b03757e45b These changes are based on a patch sent from Yong Lu <lyongu@yahoo.com>.
Kenichi Handa <handa@m17n.org>
parents: 34863
diff changeset
2682 columns pos)
00b03757e45b These changes are based on a patch sent from Yong Lu <lyongu@yahoo.com>.
Kenichi Handa <handa@m17n.org>
parents: 34863
diff changeset
2683 (insert (substring str i funny))
00b03757e45b These changes are based on a patch sent from Yong Lu <lyongu@yahoo.com>.
Kenichi Handa <handa@m17n.org>
parents: 34863
diff changeset
2684 (setq term-current-column (current-column)
00b03757e45b These changes are based on a patch sent from Yong Lu <lyongu@yahoo.com>.
Kenichi Handa <handa@m17n.org>
parents: 34863
diff changeset
2685 columns (- term-current-column old-column))
00b03757e45b These changes are based on a patch sent from Yong Lu <lyongu@yahoo.com>.
Kenichi Handa <handa@m17n.org>
parents: 34863
diff changeset
2686 (when (not (or (eobp) term-insert-mode))
00b03757e45b These changes are based on a patch sent from Yong Lu <lyongu@yahoo.com>.
Kenichi Handa <handa@m17n.org>
parents: 34863
diff changeset
2687 (setq pos (point))
00b03757e45b These changes are based on a patch sent from Yong Lu <lyongu@yahoo.com>.
Kenichi Handa <handa@m17n.org>
parents: 34863
diff changeset
2688 (term-move-columns columns)
00b03757e45b These changes are based on a patch sent from Yong Lu <lyongu@yahoo.com>.
Kenichi Handa <handa@m17n.org>
parents: 34863
diff changeset
2689 (delete-region pos (point))))
00b03757e45b These changes are based on a patch sent from Yong Lu <lyongu@yahoo.com>.
Kenichi Handa <handa@m17n.org>
parents: 34863
diff changeset
2690 (setq term-current-column nil)
49597
e88404e8f2cf Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49591
diff changeset
2691
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2692 (put-text-property old-point (point)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2693 'face term-current-face)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2694 ;; If the last char was written in last column,
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2695 ;; back up one column, but remember we did so.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2696 ;; Thus we emulate xterm/vt100-style line-wrapping.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2697 (cond ((eq temp 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2698 (term-move-columns -1)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2699 (setq term-terminal-state 1)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2700 (setq i (1- funny)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2701 ((and (setq term-terminal-state 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2702 (eq char ?\^I)) ; TAB
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2703 ;; FIXME: Does not handle line wrap!
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2704 (setq count (term-current-column))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2705 (setq count (+ count 8 (- (mod count 8))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2706 (if (< (move-to-column count nil) count)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2707 (term-insert-char char 1))
12229
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
2708 (setq term-current-column count))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2709 ((eq char ?\r)
12229
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
2710 ;; Optimize CRLF at end of buffer:
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
2711 (cond ((and (< (setq temp (1+ i)) str-length)
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
2712 (eq (aref str temp) ?\n)
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
2713 (= (point) (point-max))
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
2714 (not (or term-pager-count
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
2715 term-kill-echo-list
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
2716 term-scroll-with-delete)))
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
2717 (insert ?\n)
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
2718 (term-adjust-current-row-cache 1)
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
2719 (setq term-start-line-column 0)
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
2720 (setq term-current-column 0)
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
2721 (setq i temp))
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
2722 (t ;; Not followed by LF or can't optimize:
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
2723 (term-vertical-motion 0)
15212
3b8ece0572d5 (term-emulate-terminal): On CR, set term-current-column
Richard M. Stallman <rms@gnu.org>
parents: 14332
diff changeset
2724 (setq term-current-column term-start-line-column))))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2725 ((eq char ?\n)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2726 (if (not (and term-kill-echo-list
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2727 (term-check-kill-echo-list)))
12229
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
2728 (term-down 1 t)))
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
2729 ((eq char ?\b)
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
2730 (term-move-columns -1))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2731 ((eq char ?\033) ; Escape
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2732 (setq term-terminal-state 2))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2733 ((eq char 0)) ; NUL: Do nothing
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2734 ((eq char ?\016)) ; Shift Out - ignored
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2735 ((eq char ?\017)) ; Shift In - ignored
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2736 ((eq char ?\^G)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2737 (beep t)) ; Bell
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2738 ((eq char ?\032)
43084
89b8de61964f (term-emulate-terminal): Extract proper command string
Eli Zaretskii <eliz@gnu.org>
parents: 42706
diff changeset
2739 (let ((end (string-match "\r?$" str i)))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2740 (if end
44637
ae3eecc8a60d (term-emulate-terminal): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents: 43084
diff changeset
2741 (funcall term-command-hook
ae3eecc8a60d (term-emulate-terminal): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents: 43084
diff changeset
2742 (prog1 (substring str (1+ i) end)
ae3eecc8a60d (term-emulate-terminal): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents: 43084
diff changeset
2743 (setq i (match-end 0))))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2744 (setq term-terminal-parameter
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2745 (substring str i))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2746 (setq term-terminal-state 4)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2747 (setq i str-length))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2748 (t ; insert char FIXME: Should never happen
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2749 (term-move-columns 1)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2750 (backward-delete-char 1)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2751 (insert char))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2752 ((eq term-terminal-state 2) ; Seen Esc
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2753 (cond ((eq char ?\133) ;; ?\133 = ?[
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2754
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2755 ;;; Some modifications to cope with multiple settings like ^[[01;32;43m -mm
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2756 ;;; Note that now the init value of term-terminal-previous-parameter has
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2757 ;;; been changed to -1
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2758
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2759 (make-local-variable 'term-terminal-parameter)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2760 (make-local-variable 'term-terminal-previous-parameter)
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2761 (make-local-variable 'term-terminal-previous-parameter-2)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2762 (make-local-variable 'term-terminal-previous-parameter-3)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2763 (make-local-variable 'term-terminal-previous-parameter-4)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2764 (make-local-variable 'term-terminal-more-parameters)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2765 (setq term-terminal-parameter 0)
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2766 (setq term-terminal-previous-parameter -1)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2767 (setq term-terminal-previous-parameter-2 -1)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2768 (setq term-terminal-previous-parameter-3 -1)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2769 (setq term-terminal-previous-parameter-4 -1)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2770 (setq term-terminal-more-parameters 0)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2771 (setq term-terminal-state 3))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2772 ((eq char ?D) ;; scroll forward
12229
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
2773 (term-handle-deferred-scroll)
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
2774 (term-down 1 t)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2775 (setq term-terminal-state 0))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2776 ((eq char ?M) ;; scroll reversed
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2777 (term-insert-lines 1)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2778 (setq term-terminal-state 0))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2779 ((eq char ?7) ;; Save cursor
12229
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
2780 (term-handle-deferred-scroll)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2781 (setq term-saved-cursor
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2782 (cons (term-current-row)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2783 (term-horizontal-column)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2784 (setq term-terminal-state 0))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2785 ((eq char ?8) ;; Restore cursor
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2786 (if term-saved-cursor
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2787 (term-goto (car term-saved-cursor)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2788 (cdr term-saved-cursor)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2789 (setq term-terminal-state 0))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2790 ((setq term-terminal-state 0))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2791 ((eq term-terminal-state 3) ; Seen Esc [
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2792 (cond ((and (>= char ?0) (<= char ?9))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2793 (setq term-terminal-parameter
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2794 (+ (* 10 term-terminal-parameter) (- char ?0))))
23311
fd4a0e88aed5 (term-delimiter-argument-list): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents: 20153
diff changeset
2795 ((eq char ?\;)
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2796 ;;; Some modifications to cope with multiple settings like ^[[01;32;43m -mm
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2797 (setq term-terminal-more-parameters 1)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2798 (setq term-terminal-previous-parameter-4
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2799 term-terminal-previous-parameter-3)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2800 (setq term-terminal-previous-parameter-3
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2801 term-terminal-previous-parameter-2)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2802 (setq term-terminal-previous-parameter-2
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2803 term-terminal-previous-parameter)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2804 (setq term-terminal-previous-parameter
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2805 term-terminal-parameter)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2806 (setq term-terminal-parameter 0))
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2807 ((eq char ??)) ; Ignore ?
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2808 (t
10671
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
2809 (term-handle-ansi-escape proc char)
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2810 (setq term-terminal-more-parameters 0)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2811 (setq term-terminal-previous-parameter-4 -1)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2812 (setq term-terminal-previous-parameter-3 -1)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2813 (setq term-terminal-previous-parameter-2 -1)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2814 (setq term-terminal-previous-parameter -1)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2815 (setq term-terminal-state 0)))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2816 (if (term-handling-pager)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2817 ;; Finish stuff to get ready to handle PAGER.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2818 (progn
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2819 (if (> (% (current-column) term-width) 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2820 (setq term-terminal-parameter
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2821 (substring str i))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2822 ;; We're at column 0. Goto end of buffer; to compensate,
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2823 ;; prepend a ?\r for later. This looks more consistent.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2824 (if (zerop i)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2825 (setq term-terminal-parameter
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2826 (concat "\r" (substring str i)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2827 (setq term-terminal-parameter (substring str (1- i)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2828 (aset term-terminal-parameter 0 ?\r))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2829 (goto-char (point-max)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2830 (setq term-terminal-state 4)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2831 (make-local-variable 'term-pager-old-filter)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2832 (setq term-pager-old-filter (process-filter proc))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2833 (set-process-filter proc term-pager-filter)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2834 (setq i str-length)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2835 (setq i (1+ i))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2836
12229
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
2837 (if (>= (term-current-row) term-height)
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
2838 (term-handle-deferred-scroll))
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
2839
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2840 (set-marker (process-mark proc) (point))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2841 (if save-point
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2842 (progn (goto-char save-point)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2843 (set-marker save-point nil)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2844
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2845 ;; Check for a pending filename-and-line number to display.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2846 ;; We do this before scrolling, because we might create a new window.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2847 (if (and term-pending-frame
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2848 (eq (window-buffer selected) (current-buffer)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2849 (progn (term-display-line (car term-pending-frame)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2850 (cdr term-pending-frame))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2851 (setq term-pending-frame nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2852 ;; We have created a new window, so check the window size.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2853 (term-check-size proc)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2854
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2855 ;; Scroll each window displaying the buffer but (by default)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2856 ;; only if the point matches the process-mark we started with.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2857 (setq win selected)
24936
10d20f341dee (term-emulate-terminal): Avoid infinite loop
Richard M. Stallman <rms@gnu.org>
parents: 24044
diff changeset
2858 ;; Avoid infinite loop in strange case where minibuffer window
10d20f341dee (term-emulate-terminal): Avoid infinite loop
Richard M. Stallman <rms@gnu.org>
parents: 24044
diff changeset
2859 ;; is selected but not active.
10d20f341dee (term-emulate-terminal): Avoid infinite loop
Richard M. Stallman <rms@gnu.org>
parents: 24044
diff changeset
2860 (while (window-minibuffer-p win)
10d20f341dee (term-emulate-terminal): Avoid infinite loop
Richard M. Stallman <rms@gnu.org>
parents: 24044
diff changeset
2861 (setq win (next-window win nil t)))
10d20f341dee (term-emulate-terminal): Avoid infinite loop
Richard M. Stallman <rms@gnu.org>
parents: 24044
diff changeset
2862 (setq last-win win)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2863 (while (progn
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2864 (setq win (next-window win nil t))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2865 (if (eq (window-buffer win) (process-buffer proc))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2866 (let ((scroll term-scroll-to-bottom-on-output))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2867 (select-window win)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2868 (if (or (= (point) save-marker)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2869 (eq scroll t) (eq scroll 'all)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2870 ;; Maybe user wants point to jump to the end.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2871 (and (eq selected win)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2872 (or (eq scroll 'this) (not save-point)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2873 (and (eq scroll 'others)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2874 (not (eq selected win))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2875 (progn
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2876 (goto-char term-home-marker)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2877 (recenter 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2878 (goto-char (process-mark proc))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2879 (if (not (pos-visible-in-window-p (point) win))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2880 (recenter -1))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2881 ;; Optionally scroll so that the text
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2882 ;; ends at the bottom of the window.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2883 (if (and term-scroll-show-maximum-output
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2884 (>= (point) (process-mark proc)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2885 (save-excursion
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2886 (goto-char (point-max))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2887 (recenter -1)))))
24936
10d20f341dee (term-emulate-terminal): Avoid infinite loop
Richard M. Stallman <rms@gnu.org>
parents: 24044
diff changeset
2888 (not (eq win last-win))))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2889
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2890 ;;; Stolen from comint.el and adapted -mm
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2891 (if (> term-buffer-maximum-size 0)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2892 (save-excursion
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2893 (goto-char (process-mark (get-buffer-process (current-buffer))))
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2894 (forward-line (- term-buffer-maximum-size))
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2895 (beginning-of-line)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2896 (delete-region (point-min) (point))))
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2897 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2898
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2899 (set-marker save-marker nil))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2900 ;; unwind-protect cleanup-forms follow:
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2901 (set-buffer previous-buffer)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2902 (select-window selected))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2903
12229
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
2904 (defun term-handle-deferred-scroll ()
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
2905 (let ((count (- (term-current-row) term-height)))
15246
ba353653c03a (term-send-raw-string): send-string -> process-send-string.
Karl Heuer <kwzh@gnu.org>
parents: 15212
diff changeset
2906 (if (>= count 0)
12229
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
2907 (save-excursion
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
2908 (goto-char term-home-marker)
15246
ba353653c03a (term-send-raw-string): send-string -> process-send-string.
Karl Heuer <kwzh@gnu.org>
parents: 15212
diff changeset
2909 (term-vertical-motion (1+ count))
12229
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
2910 (set-marker term-home-marker (point))
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
2911 (setq term-current-row (1- term-height))))))
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
2912
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2913 ;;; New function to deal with ansi colorized output, as you can see you can
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2914 ;;; have any bold/underline/fg/bg/reverse combination. -mm
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2915
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2916 (defun term-handle-colors-array (parameter)
17814
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
2917 (cond
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2918
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2919 ;;; Bold
17814
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
2920 ((eq parameter 1)
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
2921 (setq term-ansi-current-bold 1))
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2922
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2923 ;;; Underline
17814
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
2924 ((eq parameter 4)
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
2925 (setq term-ansi-current-underline 1))
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2926
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2927 ;;; Blink (unsupported by Emacs), will be translated to bold.
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2928 ;;; This may change in the future though.
17814
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
2929 ((eq parameter 5)
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
2930 (setq term-ansi-current-bold 1))
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2931
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2932 ;;; Reverse
17814
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
2933 ((eq parameter 7)
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
2934 (setq term-ansi-current-reverse 1))
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2935
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2936 ;;; Invisible
17814
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
2937 ((eq parameter 8)
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
2938 (setq term-ansi-current-invisible 1))
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
2939
24966
bfa093996074 (ansi-term-fg-faces-vector): Added support for ANSI
Karl Heuer <kwzh@gnu.org>
parents: 24936
diff changeset
2940 ;;; Foreground
17814
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
2941 ((and (>= parameter 30) (<= parameter 37))
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
2942 (setq term-ansi-current-color (- parameter 29)))
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
2943
24966
bfa093996074 (ansi-term-fg-faces-vector): Added support for ANSI
Karl Heuer <kwzh@gnu.org>
parents: 24936
diff changeset
2944 ;;; Reset foreground
bfa093996074 (ansi-term-fg-faces-vector): Added support for ANSI
Karl Heuer <kwzh@gnu.org>
parents: 24936
diff changeset
2945 ((eq parameter 39)
bfa093996074 (ansi-term-fg-faces-vector): Added support for ANSI
Karl Heuer <kwzh@gnu.org>
parents: 24936
diff changeset
2946 (setq term-ansi-current-color 0))
bfa093996074 (ansi-term-fg-faces-vector): Added support for ANSI
Karl Heuer <kwzh@gnu.org>
parents: 24936
diff changeset
2947
bfa093996074 (ansi-term-fg-faces-vector): Added support for ANSI
Karl Heuer <kwzh@gnu.org>
parents: 24936
diff changeset
2948 ;;; Background
17814
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
2949 ((and (>= parameter 40) (<= parameter 47))
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
2950 (setq term-ansi-current-bg-color (- parameter 39)))
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2951
24966
bfa093996074 (ansi-term-fg-faces-vector): Added support for ANSI
Karl Heuer <kwzh@gnu.org>
parents: 24936
diff changeset
2952 ;;; Reset background
bfa093996074 (ansi-term-fg-faces-vector): Added support for ANSI
Karl Heuer <kwzh@gnu.org>
parents: 24936
diff changeset
2953 ((eq parameter 49)
bfa093996074 (ansi-term-fg-faces-vector): Added support for ANSI
Karl Heuer <kwzh@gnu.org>
parents: 24936
diff changeset
2954 (setq term-ansi-current-bg-color 0))
bfa093996074 (ansi-term-fg-faces-vector): Added support for ANSI
Karl Heuer <kwzh@gnu.org>
parents: 24936
diff changeset
2955
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2956 ;;; 0 (Reset) or unknown (reset anyway)
17814
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
2957 (t
49591
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
2958 (setq term-current-face nil)
17814
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
2959 (setq term-ansi-current-underline 0)
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
2960 (setq term-ansi-current-bold 0)
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
2961 (setq term-ansi-current-reverse 0)
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
2962 (setq term-ansi-current-color 0)
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
2963 (setq term-ansi-current-invisible 0)
49591
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
2964 (setq term-ansi-face-already-done 1)
17814
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
2965 (setq term-ansi-current-bg-color 0)))
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2966
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2967 ; (message "Debug: U-%d R-%d B-%d I-%d D-%d F-%d B-%d"
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2968 ; term-ansi-current-underline
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2969 ; term-ansi-current-reverse
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2970 ; term-ansi-current-bold
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2971 ; term-ansi-current-invisible
49591
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
2972 ; term-ansi-face-already-done
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2973 ; term-ansi-current-color
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2974 ; term-ansi-current-bg-color)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2975
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2976
49591
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
2977 (if (= term-ansi-face-already-done 0)
17814
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
2978 (if (= term-ansi-current-reverse 1)
49591
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
2979 (if (= term-ansi-current-invisible 1)
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
2980 (setq term-current-face
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
2981 (if (= term-ansi-current-color 0)
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
2982 (list :background
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
2983 term-default-fg-color
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
2984 :foreground
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
2985 term-default-fg-color)
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
2986 (list :background
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
2987 (elt ansi-term-color-vector term-ansi-current-color)
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
2988 :foreground
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
2989 (elt ansi-term-color-vector term-ansi-current-color)))
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
2990 ;; No need to bother with anything else if it's invisible
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
2991 )
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
2992 (setq term-current-face
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
2993 (list :background
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
2994 (elt ansi-term-color-vector term-ansi-current-color)
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
2995 :foreground
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
2996 (elt ansi-term-color-vector term-ansi-current-bg-color)))
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
2997 (if (= term-ansi-current-bold 1)
17814
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
2998 (setq term-current-face
49591
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
2999 (append '(:weight bold) term-current-face)))
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
3000 (if (= term-ansi-current-underline 1)
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
3001 (setq term-current-face
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
3002 (append '(:underline t) term-current-face))))
17814
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
3003 (if (= term-ansi-current-invisible 1)
49591
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
3004 (setq term-current-face
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
3005 (if (= term-ansi-current-bg-color 0)
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
3006 (list :background
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
3007 term-default-bg-color
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
3008 :foreground
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
3009 term-default-bg-color)
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
3010 (list :foreground
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
3011 (elt ansi-term-color-vector term-ansi-current-bg-color)
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
3012 :background
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
3013 (elt ansi-term-color-vector term-ansi-current-bg-color)))
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
3014 ;; No need to bother with anything else if it's invisible
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
3015 )
17814
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
3016 (setq term-current-face
49591
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
3017 (list :foreground
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
3018 (elt ansi-term-color-vector term-ansi-current-color)
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
3019 :background
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
3020 (elt ansi-term-color-vector term-ansi-current-bg-color)))
17814
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
3021 (if (= term-ansi-current-bold 1)
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
3022 (setq term-current-face
49591
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
3023 (append '(:weight bold) term-current-face)))
17814
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
3024 (if (= term-ansi-current-underline 1)
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
3025 (setq term-current-face
49591
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
3026 (append '(:underline t) term-current-face))))))
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3027
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3028 ; (message "Debug %S" term-current-face)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3029
49591
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
3030 (setq term-ansi-face-already-done 0))
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3031
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3032
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3033 ;;; Handle a character assuming (eq terminal-state 2) -
13961
ff6ac63de609 (term-process-pager): Fix message spelling.
Karl Heuer <kwzh@gnu.org>
parents: 13337
diff changeset
3034 ;;; i.e. we have previously seen Escape followed by ?[.
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3035
10671
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
3036 (defun term-handle-ansi-escape (proc char)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3037 (cond
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3038 ((eq char ?H) ; cursor motion
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3039 (if (<= term-terminal-parameter 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3040 (setq term-terminal-parameter 1))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3041 (if (<= term-terminal-previous-parameter 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3042 (setq term-terminal-previous-parameter 1))
10671
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
3043 (if (> term-terminal-previous-parameter term-height)
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
3044 (setq term-terminal-previous-parameter term-height))
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
3045 (if (> term-terminal-parameter term-width)
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
3046 (setq term-terminal-parameter term-width))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3047 (term-goto
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3048 (1- term-terminal-previous-parameter)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3049 (1- term-terminal-parameter)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3050 ;; \E[A - cursor up
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3051 ((eq char ?A)
12229
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
3052 (term-handle-deferred-scroll)
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
3053 (term-down (- (max 1 term-terminal-parameter)) t))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3054 ;; \E[B - cursor down
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3055 ((eq char ?B)
12229
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
3056 (term-down (max 1 term-terminal-parameter) t))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3057 ;; \E[C - cursor right
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3058 ((eq char ?C)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3059 (term-move-columns (max 1 term-terminal-parameter)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3060 ;; \E[D - cursor left
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3061 ((eq char ?D)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3062 (term-move-columns (- (max 1 term-terminal-parameter))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3063 ;; \E[J - clear to end of screen
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3064 ((eq char ?J)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3065 (term-erase-in-display term-terminal-parameter))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3066 ;; \E[K - clear to end of line
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3067 ((eq char ?K)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3068 (term-erase-in-line term-terminal-parameter))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3069 ;; \E[L - insert lines
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3070 ((eq char ?L)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3071 (term-insert-lines (max 1 term-terminal-parameter)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3072 ;; \E[M - delete lines
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3073 ((eq char ?M)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3074 (term-delete-lines (max 1 term-terminal-parameter)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3075 ;; \E[P - delete chars
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3076 ((eq char ?P)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3077 (term-delete-chars (max 1 term-terminal-parameter)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3078 ;; \E[@ - insert spaces
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3079 ((eq char ?@)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3080 (term-insert-spaces (max 1 term-terminal-parameter)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3081 ;; \E[?h - DEC Private Mode Set
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3082 ((eq char ?h)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3083 (cond ((eq term-terminal-parameter 4)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3084 (setq term-insert-mode t))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3085 ((eq term-terminal-parameter 47)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3086 (term-switch-to-alternate-sub-buffer t))))
10044
c840b3eb9015 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 9603
diff changeset
3087 ;; \E[?l - DEC Private Mode Reset
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3088 ((eq char ?l)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3089 (cond ((eq term-terminal-parameter 4)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3090 (setq term-insert-mode nil))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3091 ((eq term-terminal-parameter 47)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3092 (term-switch-to-alternate-sub-buffer nil))))
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3093
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3094 ;;; Modified to allow ansi coloring -mm
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3095 ;; \E[m - Set/reset standard mode
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3096 ((eq char ?m)
17814
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
3097 (when (= term-terminal-more-parameters 1)
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
3098 (if (>= term-terminal-previous-parameter-4 0)
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
3099 (term-handle-colors-array term-terminal-previous-parameter-4))
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
3100 (if (>= term-terminal-previous-parameter-3 0)
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
3101 (term-handle-colors-array term-terminal-previous-parameter-3))
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
3102 (if (>= term-terminal-previous-parameter-2 0)
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
3103 (term-handle-colors-array term-terminal-previous-parameter-2))
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
3104 (term-handle-colors-array term-terminal-previous-parameter))
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
3105 (term-handle-colors-array term-terminal-parameter))
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3106
10671
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
3107 ;; \E[6n - Report cursor position
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
3108 ((eq char ?n)
12229
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
3109 (term-handle-deferred-scroll)
10671
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
3110 (process-send-string proc
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
3111 (format "\e[%s;%sR"
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
3112 (1+ (term-current-row))
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
3113 (1+ (term-horizontal-column)))))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3114 ;; \E[r - Set scrolling region
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3115 ((eq char ?r)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3116 (term-scroll-region
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3117 (1- term-terminal-previous-parameter)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3118 term-terminal-parameter))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3119 (t)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3120
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3121 (defun term-scroll-region (top bottom)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3122 "Set scrolling region.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3123 TOP is the top-most line (inclusive) of the new scrolling region,
13961
ff6ac63de609 (term-process-pager): Fix message spelling.
Karl Heuer <kwzh@gnu.org>
parents: 13337
diff changeset
3124 while BOTTOM is the line following the new scrolling region (e.g. exclusive).
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3125 The top-most line is line 0."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3126 (setq term-scroll-start
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3127 (if (or (< top 0) (>= top term-height))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3128 0
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3129 top))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3130 (setq term-scroll-end
10671
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
3131 (if (or (<= bottom term-scroll-start) (> bottom term-height))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3132 term-height
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3133 bottom))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3134 (setq term-scroll-with-delete
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3135 (or (term-using-alternate-sub-buffer)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3136 (not (and (= term-scroll-start 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3137 (= term-scroll-end term-height))))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3138
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3139 (defun term-switch-to-alternate-sub-buffer (set)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3140 ;; If asked to switch to (from) the alternate sub-buffer, and already (not)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3141 ;; using it, do nothing. This test is needed for some programs (including
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3142 ;; Emacs) that emit the ti termcap string twice, for unknown reason.
12229
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
3143 (term-handle-deferred-scroll)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3144 (if (eq set (not (term-using-alternate-sub-buffer)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3145 (let ((row (term-current-row))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3146 (col (term-horizontal-column)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3147 (cond (set
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3148 (goto-char (point-max))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3149 (if (not (eq (preceding-char) ?\n))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3150 (term-insert-char ?\n 1))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3151 (setq term-scroll-with-delete t)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3152 (setq term-saved-home-marker (copy-marker term-home-marker))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3153 (set-marker term-home-marker (point)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3154 (t
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3155 (setq term-scroll-with-delete
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3156 (not (and (= term-scroll-start 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3157 (= term-scroll-end term-height))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3158 (set-marker term-home-marker term-saved-home-marker)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3159 (set-marker term-saved-home-marker nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3160 (setq term-saved-home-marker nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3161 (goto-char term-home-marker)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3162 (setq term-current-column nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3163 (setq term-current-row 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3164 (term-goto row col))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3165
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3166 ;; Default value for the symbol term-command-hook.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3167
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3168 (defun term-command-hook (string)
49591
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
3169 (cond ((equal string "")
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
3170 t)
315ff0f95c70 (term-raw-map): Set it up at load time.
Richard M. Stallman <rms@gnu.org>
parents: 44637
diff changeset
3171 ((= (aref string 0) ?\032)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3172 ;; gdb (when invoked with -fullname) prints:
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3173 ;; \032\032FULLFILENAME:LINENUMBER:CHARPOS:BEG_OR_MIDDLE:PC\n
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3174 (let* ((first-colon (string-match ":" string 1))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3175 (second-colon
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3176 (string-match ":" string (1+ first-colon)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3177 (filename (substring string 1 first-colon))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3178 (fileline (string-to-int
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3179 (substring string (1+ first-colon) second-colon))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3180 (setq term-pending-frame (cons filename fileline))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3181 ((= (aref string 0) ?/)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3182 (cd (substring string 1)))
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3183 ;; Allowing the inferior to call functions in Emacs is
10515
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
3184 ;; probably too big a security hole.
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
3185 ;; ((= (aref string 0) ?!)
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
3186 ;; (eval (car (read-from-string string 1))))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3187 (t)));; Otherwise ignore it
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3188
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3189 ;; Make sure the file named TRUE-FILE is in a buffer that appears on the screen
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3190 ;; and that its line LINE is visible.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3191 ;; Put the overlay-arrow on the line LINE in that buffer.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3192 ;; This is mainly used by gdb.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3193
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3194 (defun term-display-line (true-file line)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3195 (term-display-buffer-line (find-file-noselect true-file) line))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3196
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3197 (defun term-display-buffer-line (buffer line)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3198 (let* ((window (display-buffer buffer t))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3199 (pos))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3200 (save-excursion
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3201 (set-buffer buffer)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3202 (save-restriction
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3203 (widen)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3204 (goto-line line)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3205 (setq pos (point))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3206 (setq overlay-arrow-string "=>")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3207 (or overlay-arrow-position
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3208 (setq overlay-arrow-position (make-marker)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3209 (set-marker overlay-arrow-position (point) (current-buffer)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3210 (cond ((or (< pos (point-min)) (> pos (point-max)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3211 (widen)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3212 (goto-char pos))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3213 (set-window-point window overlay-arrow-position)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3214
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3215 ;;; The buffer-local marker term-home-marker defines the "home position"
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3216 ;;; (in terms of cursor motion). However, we move the term-home-marker
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3217 ;;; "down" as needed so that is no more that a window-full above (point-max).
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3218
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3219 (defun term-goto-home ()
12229
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
3220 (term-handle-deferred-scroll)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3221 (goto-char term-home-marker)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3222 (setq term-current-row 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3223 (setq term-current-column (current-column))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3224 (setq term-start-line-column term-current-column))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3225
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3226 (defun term-goto (row col)
12229
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
3227 (term-handle-deferred-scroll)
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
3228 (cond ((and term-current-row (>= row term-current-row))
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
3229 ;; I assume this is a worthwhile optimization.
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
3230 (term-vertical-motion 0)
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
3231 (setq term-current-column term-start-line-column)
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
3232 (setq row (- row term-current-row)))
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
3233 (t
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
3234 (term-goto-home)))
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
3235 (term-down row)
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
3236 (term-move-columns col))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3237
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3238 ; The page is full, so enter "pager" mode, and wait for input.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3239
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3240 (defun term-process-pager ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3241 (if (not term-pager-break-map)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3242 (let* ((map (make-keymap))
12229
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
3243 (i 0) tmp)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3244 ; (while (< i 128)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3245 ; (define-key map (make-string 1 i) 'term-send-raw)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3246 ; (setq i (1+ i)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3247 (define-key map "\e"
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3248 (lookup-key (current-global-map) "\e"))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3249 (define-key map "\C-x"
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3250 (lookup-key (current-global-map) "\C-x"))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3251 (define-key map "\C-u"
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3252 (lookup-key (current-global-map) "\C-u"))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3253 (define-key map " " 'term-pager-page)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3254 (define-key map "\r" 'term-pager-line)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3255 (define-key map "?" 'term-pager-help)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3256 (define-key map "h" 'term-pager-help)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3257 (define-key map "b" 'term-pager-back-page)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3258 (define-key map "\177" 'term-pager-back-line)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3259 (define-key map "q" 'term-pager-discard)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3260 (define-key map "D" 'term-pager-disable)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3261 (define-key map "<" 'term-pager-bob)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3262 (define-key map ">" 'term-pager-eob)
10515
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
3263
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
3264 ;; Add menu bar.
40468
4bfc983b38c3 (term-if-emacs19): Macro deleted.
Richard M. Stallman <rms@gnu.org>
parents: 38414
diff changeset
3265 (progn
10515
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
3266 (term-ifnot-xemacs
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
3267 (define-key map [menu-bar terminal] term-terminal-menu)
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
3268 (define-key map [menu-bar signals] term-signals-menu)
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
3269 (setq tmp (make-sparse-keymap "More pages?"))
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
3270 (define-key tmp [help] '("Help" . term-pager-help))
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
3271 (define-key tmp [disable]
13961
ff6ac63de609 (term-process-pager): Fix message spelling.
Karl Heuer <kwzh@gnu.org>
parents: 13337
diff changeset
3272 '("Disable paging" . term-fake-pager-disable))
10515
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
3273 (define-key tmp [discard]
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
3274 '("Discard remaining output" . term-pager-discard))
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
3275 (define-key tmp [eob] '("Goto to end" . term-pager-eob))
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
3276 (define-key tmp [bob] '("Goto to beginning" . term-pager-bob))
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
3277 (define-key tmp [line] '("1 line forwards" . term-pager-line))
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
3278 (define-key tmp [bline] '("1 line backwards" . term-pager-back-line))
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
3279 (define-key tmp [back] '("1 page backwards" . term-pager-back-page))
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
3280 (define-key tmp [page] '("1 page forwards" . term-pager-page))
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
3281 (define-key map [menu-bar page] (cons "More pages?" tmp))
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
3282 ))
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
3283
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3284 (setq term-pager-break-map map)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3285 ; (let ((process (get-buffer-process (current-buffer))))
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3286 ; (stop-process process))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3287 (setq term-pager-old-local-map (current-local-map))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3288 (use-local-map term-pager-break-map)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3289 (make-local-variable 'term-old-mode-line-format)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3290 (setq term-old-mode-line-format mode-line-format)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3291 (setq mode-line-format
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3292 (list "-- **MORE** "
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3293 mode-line-buffer-identification
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3294 " [Type ? for help] "
10515
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
3295 "%-"))
11570
f210b0ee984a (term-update-mode-line, term-process-pager): Use force-mode-line-update.
Karl Heuer <kwzh@gnu.org>
parents: 11033
diff changeset
3296 (force-mode-line-update))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3297
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3298 (defun term-pager-line (lines)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3299 (interactive "p")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3300 (let* ((moved (vertical-motion (1+ lines)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3301 (deficit (- lines moved)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3302 (if (> moved lines)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3303 (backward-char))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3304 (cond ((<= deficit 0) ;; OK, had enough in the buffer for request.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3305 (recenter (1- term-height)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3306 ((term-pager-continue deficit)))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3307
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3308 (defun term-pager-page (arg)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3309 "Proceed past the **MORE** break, allowing the next page of output to appear"
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3310 (interactive "p")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3311 (term-pager-line (* arg term-height)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3312
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3313 ; Pager mode command to go to beginning of buffer
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3314 (defun term-pager-bob ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3315 (interactive)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3316 (goto-char (point-min))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3317 (if (= (vertical-motion term-height) term-height)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3318 (backward-char))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3319 (recenter (1- term-height)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3320
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3321 ; pager mode command to go to end of buffer
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3322 (defun term-pager-eob ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3323 (interactive)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3324 (goto-char term-home-marker)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3325 (recenter 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3326 (goto-char (process-mark (get-buffer-process (current-buffer)))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3327
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3328 (defun term-pager-back-line (lines)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3329 (interactive "p")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3330 (vertical-motion (- 1 lines))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3331 (if (not (bobp))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3332 (backward-char)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3333 (beep)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3334 ;; Move cursor to end of window.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3335 (vertical-motion term-height)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3336 (backward-char))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3337 (recenter (1- term-height)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3338
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3339 (defun term-pager-back-page (arg)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3340 (interactive "p")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3341 (term-pager-back-line (* arg term-height)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3342
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3343 (defun term-pager-discard ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3344 (interactive)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3345 (setq term-terminal-parameter "")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3346 (interrupt-process nil t)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3347 (term-pager-continue term-height))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3348
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3349 ; Disable pager processing.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3350 ; Only callable while in pager mode. (Contrast term-disable-pager.)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3351 (defun term-pager-disable ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3352 (interactive)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3353 (if (term-handling-pager)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3354 (term-pager-continue nil)
10671
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
3355 (setq term-pager-count nil))
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
3356 (term-update-mode-line))
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3357
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3358 ; Enable pager processing.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3359 (defun term-pager-enable ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3360 (interactive)
10671
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
3361 (or (term-pager-enabled)
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
3362 (setq term-pager-count 0)) ;; Or maybe set to (term-current-row) ??
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
3363 (term-update-mode-line))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3364
10515
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
3365 (defun term-pager-toggle ()
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
3366 (interactive)
10671
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
3367 (if (term-pager-enabled) (term-pager-disable) (term-pager-enable)))
10515
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
3368
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
3369 (term-ifnot-xemacs
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
3370 (defalias 'term-fake-pager-enable 'term-pager-toggle)
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
3371 (defalias 'term-fake-pager-disable 'term-pager-toggle)
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
3372 (put 'term-char-mode 'menu-enable '(term-in-line-mode))
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
3373 (put 'term-line-mode 'menu-enable '(term-in-char-mode))
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
3374 (put 'term-fake-pager-enable 'menu-enable '(not term-pager-count))
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
3375 (put 'term-fake-pager-disable 'menu-enable 'term-pager-count))
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
3376
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3377 (defun term-pager-help ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3378 "Provide help on commands available in a terminal-emulator **MORE** break"
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3379 (interactive)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3380 (message "Terminal-emulator pager break help...")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3381 (sit-for 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3382 (with-electric-help
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3383 (function (lambda ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3384 (princ (substitute-command-keys
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3385 "\\<term-pager-break-map>\
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3386 Terminal-emulator MORE break.\n\
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3387 Type one of the following keys:\n\n\
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3388 \\[term-pager-page]\t\tMove forward one page.\n\
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3389 \\[term-pager-line]\t\tMove forward one line.\n\
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3390 \\[universal-argument] N \\[term-pager-page]\tMove N pages forward.\n\
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3391 \\[universal-argument] N \\[term-pager-line]\tMove N lines forward.\n\
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3392 \\[universal-argument] N \\[term-pager-back-line]\tMove N lines back.\n\
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3393 \\[universal-argument] N \\[term-pager-back-page]\t\tMove N pages back.\n\
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3394 \\[term-pager-bob]\t\tMove to the beginning of the buffer.\n\
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3395 \\[term-pager-eob]\t\tMove to the end of the buffer.\n\
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3396 \\[term-pager-discard]\t\tKill pending output and kill process.\n\
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3397 \\[term-pager-disable]\t\tDisable PAGER handling.\n\n\
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3398 \\{term-pager-break-map}\n\
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3399 Any other key is passed through to the program
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3400 running under the terminal emulator and disables pager processing until
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3401 all pending output has been dealt with."))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3402 nil))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3403
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3404 (defun term-pager-continue (new-count)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3405 (let ((process (get-buffer-process (current-buffer))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3406 (use-local-map term-pager-old-local-map)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3407 (setq term-pager-old-local-map nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3408 (setq mode-line-format term-old-mode-line-format)
11570
f210b0ee984a (term-update-mode-line, term-process-pager): Use force-mode-line-update.
Karl Heuer <kwzh@gnu.org>
parents: 11033
diff changeset
3409 (force-mode-line-update)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3410 (setq term-pager-count new-count)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3411 (set-process-filter process term-pager-old-filter)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3412 (funcall term-pager-old-filter process "")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3413 (continue-process process)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3414
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3415 ;; Make sure there are DOWN blank lines below the current one.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3416 ;; Return 0 if we're unable (because of PAGER handling), else return DOWN.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3417
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3418 (defun term-handle-scroll (down)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3419 (let ((scroll-needed
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3420 (- (+ (term-current-row) down 1) term-scroll-end)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3421 (if (> scroll-needed 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3422 (let ((save-point (copy-marker (point))) (save-top))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3423 (goto-char term-home-marker)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3424 (cond (term-scroll-with-delete
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3425 ;; delete scroll-needed lines at term-scroll-start
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3426 (term-vertical-motion term-scroll-start)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3427 (setq save-top (point))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3428 (term-vertical-motion scroll-needed)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3429 (delete-region save-top (point))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3430 (goto-char save-point)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3431 (term-vertical-motion down)
12229
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
3432 (term-adjust-current-row-cache (- scroll-needed))
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
3433 (setq term-current-column nil)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3434 (term-insert-char ?\n scroll-needed))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3435 ((and (numberp term-pager-count)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3436 (< (setq term-pager-count (- term-pager-count down))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3437 0))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3438 (setq down 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3439 (term-process-pager))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3440 (t
12229
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
3441 (term-adjust-current-row-cache (- scroll-needed))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3442 (term-vertical-motion scroll-needed)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3443 (set-marker term-home-marker (point))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3444 (goto-char save-point)
12229
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
3445 (set-marker save-point nil))))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3446 down)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3447
12229
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
3448 (defun term-down (down &optional check-for-scroll)
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
3449 "Move down DOWN screen lines vertically."
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3450 (let ((start-column (term-horizontal-column)))
12229
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
3451 (if (and check-for-scroll (or term-scroll-with-delete term-pager-count))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3452 (setq down (term-handle-scroll down)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3453 (term-adjust-current-row-cache down)
12229
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
3454 (if (/= (point) (point-max))
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
3455 (setq down (- down (term-vertical-motion down))))
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
3456 ;; Extend buffer with extra blank lines if needed.
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
3457 (cond ((> down 0)
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
3458 (term-insert-char ?\n down)
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
3459 (setq term-current-column 0)
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
3460 (setq term-start-line-column 0))
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
3461 (t
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
3462 (setq term-current-column nil)
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
3463 (setq term-start-line-column (current-column))))
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
3464 (if start-column
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
3465 (term-move-columns start-column))))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3466
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3467 ;; Assuming point is at the beginning of a screen line,
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3468 ;; if the line above point wraps around, add a ?\n to undo the wrapping.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3469 ;; FIXME: Probably should be called more than it is.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3470 (defun term-unwrap-line ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3471 (if (not (bolp)) (insert-before-markers ?\n)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3472
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3473 (defun term-erase-in-line (kind)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3474 (if (> kind 1) ;; erase left of point
10671
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
3475 (let ((cols (term-horizontal-column)) (saved-point (point)))
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
3476 (term-vertical-motion 0)
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
3477 (delete-region (point) saved-point)
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
3478 (term-insert-char ?\n cols)))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3479 (if (not (eq kind 1)) ;; erase right of point
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3480 (let ((saved-point (point))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3481 (wrapped (and (zerop (term-horizontal-column))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3482 (not (zerop (term-current-column))))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3483 (term-vertical-motion 1)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3484 (delete-region saved-point (point))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3485 ;; wrapped is true if we're at the beginning of screen line,
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3486 ;; but not a buffer line. If we delete the current screen line
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3487 ;; that will make the previous line no longer wrap, and (because
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3488 ;; of the way Emacs display works) point will be at the end of
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3489 ;; the previous screen line rather then the beginning of the
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3490 ;; current one. To avoid that, we make sure that current line
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3491 ;; contain a space, to force the previous line to continue to wrap.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3492 ;; We could do this always, but it seems preferable to not add the
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3493 ;; extra space when wrapped is false.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3494 (if wrapped
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3495 (insert ? ))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3496 (insert ?\n)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3497 (put-text-property saved-point (point) 'face 'default)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3498 (goto-char saved-point))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3499
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3500 (defun term-erase-in-display (kind)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3501 "Erases (that is blanks out) part of the window.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3502 If KIND is 0, erase from (point) to (point-max);
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3503 if KIND is 1, erase from home to point; else erase from home to point-max.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3504 Should only be called when point is at the start of a screen line."
12229
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
3505 (term-handle-deferred-scroll)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3506 (cond ((eq term-terminal-parameter 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3507 (delete-region (point) (point-max))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3508 (term-unwrap-line))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3509 ((let ((row (term-current-row))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3510 (col (term-horizontal-column))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3511 (start-region term-home-marker)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3512 (end-region (if (eq kind 1) (point) (point-max))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3513 (delete-region start-region end-region)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3514 (term-unwrap-line)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3515 (if (eq kind 1)
10671
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
3516 (term-insert-char ?\n row))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3517 (setq term-current-column nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3518 (setq term-current-row nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3519 (term-goto row col)))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3520
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3521 (defun term-delete-chars (count)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3522 (let ((save-point (point)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3523 (term-vertical-motion 1)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3524 (term-unwrap-line)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3525 (goto-char save-point)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3526 (move-to-column (+ (term-current-column) count) t)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3527 (delete-region save-point (point))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3528
12229
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
3529 ;;; Insert COUNT spaces after point, but do not change any of
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
3530 ;;; following screen lines. Hence we may have to delete characters
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
3531 ;;; at teh end of this screen line to make room.
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
3532
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3533 (defun term-insert-spaces (count)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3534 (let ((save-point (point)) (save-eol))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3535 (term-vertical-motion 1)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3536 (if (bolp)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3537 (backward-char))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3538 (setq save-eol (point))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3539 (move-to-column (+ (term-start-line-column) (- term-width count)) t)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3540 (if (> save-eol (point))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3541 (delete-region (point) save-eol))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3542 (goto-char save-point)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3543 (term-insert-char ? count)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3544 (goto-char save-point)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3545
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3546 (defun term-delete-lines (lines)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3547 (let ((start (point))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3548 (save-current-column term-current-column)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3549 (save-start-line-column term-start-line-column)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3550 (save-current-row (term-current-row)))
12229
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
3551 (term-down lines)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3552 (delete-region start (point))
12229
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
3553 (term-down (- term-scroll-end save-current-row lines))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3554 (term-insert-char ?\n lines)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3555 (setq term-current-column save-current-column)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3556 (setq term-start-line-column save-start-line-column)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3557 (setq term-current-row save-current-row)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3558 (goto-char start)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3559
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3560 (defun term-insert-lines (lines)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3561 (let ((start (point))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3562 (start-deleted)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3563 (save-current-column term-current-column)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3564 (save-start-line-column term-start-line-column)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3565 (save-current-row (term-current-row)))
12229
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
3566 (term-down (- term-scroll-end save-current-row lines))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3567 (setq start-deleted (point))
12229
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
3568 (term-down lines)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3569 (delete-region start-deleted (point))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3570 (goto-char start)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3571 (setq term-current-column save-current-column)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3572 (setq term-start-line-column save-start-line-column)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3573 (setq term-current-row save-current-row)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3574 (term-insert-char ?\n lines)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3575 (goto-char start)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3576
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3577 (defun term-set-output-log (name)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3578 "Record raw inferior process output in a buffer."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3579 (interactive (list (if term-log-buffer
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3580 nil
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3581 (read-buffer "Record output in buffer: "
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3582 (format "%s output-log"
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3583 (buffer-name (current-buffer)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3584 nil))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3585 (if (or (null name) (equal name ""))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3586 (progn (setq term-log-buffer nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3587 (message "Output logging off."))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3588 (if (get-buffer name)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3589 nil
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3590 (save-excursion
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3591 (set-buffer (get-buffer-create name))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3592 (fundamental-mode)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3593 (buffer-disable-undo (current-buffer))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3594 (erase-buffer)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3595 (setq term-log-buffer (get-buffer name))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3596 (message "Recording terminal emulator output into buffer \"%s\""
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3597 (buffer-name term-log-buffer))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3598
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3599 (defun term-stop-photo ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3600 "Discontinue raw inferior process logging."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3601 (interactive)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3602 (term-set-output-log nil))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3603
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3604 (defun term-show-maximum-output ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3605 "Put the end of the buffer at the bottom of the window."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3606 (interactive)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3607 (goto-char (point-max))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3608 (recenter -1))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3609
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3610 ;;; Do the user's customisation...
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3611
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3612 (defvar term-load-hook nil
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3613 "This hook is run when term is loaded in.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3614 This is a good place to put keybindings.")
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3615
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3616 (run-hooks 'term-load-hook)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3617
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3618
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3619 ;;; Filename/command/history completion in a buffer
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3620 ;;; ===========================================================================
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3621 ;;; Useful completion functions, courtesy of the Ergo group.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3622
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3623 ;;; Six commands:
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3624 ;;; term-dynamic-complete Complete or expand command, filename,
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3625 ;;; history at point.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3626 ;;; term-dynamic-complete-filename Complete filename at point.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3627 ;;; term-dynamic-list-filename-completions List completions in help buffer.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3628 ;;; term-replace-by-expanded-filename Expand and complete filename at point;
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3629 ;;; replace with expanded/completed name.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3630 ;;; term-dynamic-simple-complete Complete stub given candidates.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3631
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3632 ;;; These are not installed in the term-mode keymap. But they are
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3633 ;;; available for people who want them. Shell-mode installs them:
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3634 ;;; (define-key shell-mode-map "\t" 'term-dynamic-complete)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3635 ;;; (define-key shell-mode-map "\M-?"
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3636 ;;; 'term-dynamic-list-filename-completions)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3637 ;;;
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3638 ;;; Commands like this are fine things to put in load hooks if you
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3639 ;;; want them present in specific modes.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3640
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3641 (defvar term-completion-autolist nil
13961
ff6ac63de609 (term-process-pager): Fix message spelling.
Karl Heuer <kwzh@gnu.org>
parents: 13337
diff changeset
3642 "*If non-nil, automatically list possibilities on partial completion.
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3643 This mirrors the optional behavior of tcsh.")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3644
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3645 (defvar term-completion-addsuffix t
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3646 "*If non-nil, add a `/' to completed directories, ` ' to file names.
17147
2824e1f84717 (term-completion-addsuffix): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents: 16848
diff changeset
3647 If a cons pair, it should be of the form (DIRSUFFIX . FILESUFFIX) where
2824e1f84717 (term-completion-addsuffix): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents: 16848
diff changeset
3648 DIRSUFFIX and FILESUFFIX are strings added on unambiguous or exact
2824e1f84717 (term-completion-addsuffix): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents: 16848
diff changeset
3649 completion. This mirrors the optional behavior of tcsh.")
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3650
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3651 (defvar term-completion-recexact nil
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3652 "*If non-nil, use shortest completion if characters cannot be added.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3653 This mirrors the optional behavior of tcsh.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3654
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3655 A non-nil value is useful if `term-completion-autolist' is non-nil too.")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3656
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3657 (defvar term-completion-fignore nil
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3658 "*List of suffixes to be disregarded during file completion.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3659 This mirrors the optional behavior of bash and tcsh.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3660
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3661 Note that this applies to `term-dynamic-complete-filename' only.")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3662
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3663 (defvar term-file-name-prefix ""
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3664 "Prefix prepended to absolute file names taken from process input.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3665 This is used by term's and shell's completion functions, and by shell's
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3666 directory tracking functions.")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3667
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3668
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3669 (defun term-directory (directory)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3670 ;; Return expanded DIRECTORY, with `term-file-name-prefix' if absolute.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3671 (expand-file-name (if (file-name-absolute-p directory)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3672 (concat term-file-name-prefix directory)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3673 directory)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3674
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3675
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3676 (defun term-word (word-chars)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3677 "Return the word of WORD-CHARS at point, or nil if non is found.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3678 Word constituents are considered to be those in WORD-CHARS, which is like the
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3679 inside of a \"[...]\" (see `skip-chars-forward')."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3680 (save-excursion
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3681 (let ((limit (point))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3682 (word (concat "[" word-chars "]"))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3683 (non-word (concat "[^" word-chars "]")))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3684 (if (re-search-backward non-word nil 'move)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3685 (forward-char 1))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3686 ;; Anchor the search forwards.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3687 (if (or (eolp) (looking-at non-word))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3688 nil
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3689 (re-search-forward (concat word "+") limit)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3690 (buffer-substring (match-beginning 0) (match-end 0))))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3691
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3692
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3693 (defun term-match-partial-filename ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3694 "Return the filename at point, or nil if non is found.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3695 Environment variables are substituted. See `term-word'."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3696 (let ((filename (term-word "~/A-Za-z0-9+@:_.$#,={}-")))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3697 (and filename (substitute-in-file-name filename))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3698
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3699
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3700 (defun term-dynamic-complete ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3701 "Dynamically perform completion at point.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3702 Calls the functions in `term-dynamic-complete-functions' to perform
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3703 completion until a function returns non-nil, at which point completion is
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3704 assumed to have occurred."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3705 (interactive)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3706 (let ((functions term-dynamic-complete-functions))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3707 (while (and functions (null (funcall (car functions))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3708 (setq functions (cdr functions)))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3709
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3710
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3711 (defun term-dynamic-complete-filename ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3712 "Dynamically complete the filename at point.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3713 Completes if after a filename. See `term-match-partial-filename' and
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3714 `term-dynamic-complete-as-filename'.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3715 This function is similar to `term-replace-by-expanded-filename', except that
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3716 it won't change parts of the filename already entered in the buffer; it just
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3717 adds completion characters to the end of the filename. A completions listing
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3718 may be shown in a help buffer if completion is ambiguous.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3719
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3720 Completion is dependent on the value of `term-completion-addsuffix',
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3721 `term-completion-recexact' and `term-completion-fignore', and the timing of
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3722 completions listing is dependent on the value of `term-completion-autolist'.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3723
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3724 Returns t if successful."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3725 (interactive)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3726 (if (term-match-partial-filename)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3727 (prog2 (or (eq (selected-window) (minibuffer-window))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3728 (message "Completing file name..."))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3729 (term-dynamic-complete-as-filename))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3730
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3731 (defun term-dynamic-complete-as-filename ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3732 "Dynamically complete at point as a filename.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3733 See `term-dynamic-complete-filename'. Returns t if successful."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3734 (let* ((completion-ignore-case nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3735 (completion-ignored-extensions term-completion-fignore)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3736 (success t)
17147
2824e1f84717 (term-completion-addsuffix): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents: 16848
diff changeset
3737 (dirsuffix (cond ((not term-completion-addsuffix) "")
2824e1f84717 (term-completion-addsuffix): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents: 16848
diff changeset
3738 ((not (consp term-completion-addsuffix)) "/")
2824e1f84717 (term-completion-addsuffix): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents: 16848
diff changeset
3739 (t (car term-completion-addsuffix))))
2824e1f84717 (term-completion-addsuffix): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents: 16848
diff changeset
3740 (filesuffix (cond ((not term-completion-addsuffix) "")
2824e1f84717 (term-completion-addsuffix): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents: 16848
diff changeset
3741 ((not (consp term-completion-addsuffix)) " ")
49597
e88404e8f2cf Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49591
diff changeset
3742 (t (cdr term-completion-addsuffix))))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3743 (filename (or (term-match-partial-filename) ""))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3744 (pathdir (file-name-directory filename))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3745 (pathnondir (file-name-nondirectory filename))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3746 (directory (if pathdir (term-directory pathdir) default-directory))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3747 (completion (file-name-completion pathnondir directory))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3748 (mini-flag (eq (selected-window) (minibuffer-window))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3749 (cond ((null completion)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3750 (message "No completions of %s" filename)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3751 (setq success nil))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3752 ((eq completion t) ; Means already completed "file".
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3753 (if term-completion-addsuffix (insert " "))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3754 (or mini-flag (message "Sole completion")))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3755 ((string-equal completion "") ; Means completion on "directory/".
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3756 (term-dynamic-list-filename-completions))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3757 (t ; Completion string returned.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3758 (let ((file (concat (file-name-as-directory directory) completion)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3759 (insert (substring (directory-file-name completion)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3760 (length pathnondir)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3761 (cond ((symbolp (file-name-completion completion directory))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3762 ;; We inserted a unique completion.
17147
2824e1f84717 (term-completion-addsuffix): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents: 16848
diff changeset
3763 (insert (if (file-directory-p file) dirsuffix filesuffix))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3764 (or mini-flag (message "Completed")))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3765 ((and term-completion-recexact term-completion-addsuffix
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3766 (string-equal pathnondir completion)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3767 (file-exists-p file))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3768 ;; It's not unique, but user wants shortest match.
17147
2824e1f84717 (term-completion-addsuffix): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents: 16848
diff changeset
3769 (insert (if (file-directory-p file) dirsuffix filesuffix))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3770 (or mini-flag (message "Completed shortest")))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3771 ((or term-completion-autolist
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3772 (string-equal pathnondir completion))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3773 ;; It's not unique, list possible completions.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3774 (term-dynamic-list-filename-completions))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3775 (t
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3776 (or mini-flag (message "Partially completed")))))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3777 success))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3778
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3779
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3780 (defun term-replace-by-expanded-filename ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3781 "Dynamically expand and complete the filename at point.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3782 Replace the filename with an expanded, canonicalised and completed replacement.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3783 \"Expanded\" means environment variables (e.g., $HOME) and `~'s are replaced
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3784 with the corresponding directories. \"Canonicalised\" means `..' and `.' are
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3785 removed, and the filename is made absolute instead of relative. For expansion
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3786 see `expand-file-name' and `substitute-in-file-name'. For completion see
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3787 `term-dynamic-complete-filename'."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3788 (interactive)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3789 (replace-match (expand-file-name (term-match-partial-filename)) t t)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3790 (term-dynamic-complete-filename))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3791
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3792
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3793 (defun term-dynamic-simple-complete (stub candidates)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3794 "Dynamically complete STUB from CANDIDATES list.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3795 This function inserts completion characters at point by completing STUB from
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3796 the strings in CANDIDATES. A completions listing may be shown in a help buffer
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3797 if completion is ambiguous.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3798
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3799 Returns nil if no completion was inserted.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3800 Returns `sole' if completed with the only completion match.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3801 Returns `shortest' if completed with the shortest of the completion matches.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3802 Returns `partial' if completed as far as possible with the completion matches.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3803 Returns `listed' if a completion listing was shown.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3804
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3805 See also `term-dynamic-complete-filename'."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3806 (let* ((completion-ignore-case nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3807 (candidates (mapcar (function (lambda (x) (list x))) candidates))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3808 (completions (all-completions stub candidates)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3809 (cond ((null completions)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3810 (message "No completions of %s" stub)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3811 nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3812 ((= 1 (length completions)) ; Gotcha!
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3813 (let ((completion (car completions)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3814 (if (string-equal completion stub)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3815 (message "Sole completion")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3816 (insert (substring completion (length stub)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3817 (message "Completed"))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3818 (if term-completion-addsuffix (insert " "))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3819 'sole))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3820 (t ; There's no unique completion.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3821 (let ((completion (try-completion stub candidates)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3822 ;; Insert the longest substring.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3823 (insert (substring completion (length stub)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3824 (cond ((and term-completion-recexact term-completion-addsuffix
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3825 (string-equal stub completion)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3826 (member completion completions))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3827 ;; It's not unique, but user wants shortest match.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3828 (insert " ")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3829 (message "Completed shortest")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3830 'shortest)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3831 ((or term-completion-autolist
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3832 (string-equal stub completion))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3833 ;; It's not unique, list possible completions.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3834 (term-dynamic-list-completions completions)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3835 'listed)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3836 (t
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3837 (message "Partially completed")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3838 'partial)))))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3839
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3840
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3841 (defun term-dynamic-list-filename-completions ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3842 "List in help buffer possible completions of the filename at point."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3843 (interactive)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3844 (let* ((completion-ignore-case nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3845 (filename (or (term-match-partial-filename) ""))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3846 (pathdir (file-name-directory filename))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3847 (pathnondir (file-name-nondirectory filename))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3848 (directory (if pathdir (term-directory pathdir) default-directory))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3849 (completions (file-name-all-completions pathnondir directory)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3850 (if completions
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3851 (term-dynamic-list-completions completions)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3852 (message "No completions of %s" filename))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3853
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3854
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3855 (defun term-dynamic-list-completions (completions)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3856 "List in help buffer sorted COMPLETIONS.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3857 Typing SPC flushes the help buffer."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3858 (let ((conf (current-window-configuration)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3859 (with-output-to-temp-buffer "*Completions*"
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3860 (display-completion-list (sort completions 'string-lessp)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3861 (message "Hit space to flush")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3862 (let (key first)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3863 (if (save-excursion
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3864 (set-buffer (get-buffer "*Completions*"))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3865 (setq key (read-key-sequence nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3866 first (aref key 0))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3867 (and (consp first)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3868 (eq (window-buffer (posn-window (event-start first)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3869 (get-buffer "*Completions*"))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3870 (eq (key-binding key) 'mouse-choose-completion)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3871 ;; If the user does mouse-choose-completion with the mouse,
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3872 ;; execute the command, then delete the completion window.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3873 (progn
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3874 (mouse-choose-completion first)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3875 (set-window-configuration conf))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3876 (if (eq first ?\ )
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3877 (set-window-configuration conf)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3878 (setq unread-command-events (listify-key-sequence key)))))))
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3879
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3880 ;;; I need a make-term that doesn't surround with *s -mm
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3881 (defun term-ansi-make-term (name program &optional startfile &rest switches)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3882 "Make a term process NAME in a buffer, running PROGRAM.
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3883 The name of the buffer is NAME.
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3884 If there is already a running process in that buffer, it is not restarted.
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3885 Optional third arg STARTFILE is the name of a file to send the contents of to
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3886 the process. Any more args are arguments to PROGRAM."
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3887 (let ((buffer (get-buffer-create name )))
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3888 ;; If no process, or nuked process, crank up a new one and put buffer in
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3889 ;; term mode. Otherwise, leave buffer and existing process alone.
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3890 (cond ((not (term-check-proc buffer))
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3891 (save-excursion
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3892 (set-buffer buffer)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3893 (term-mode)) ; Install local vars, mode, keymap, ...
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3894 (term-exec buffer name program startfile switches)))
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3895 buffer))
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3896
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3897 (defvar term-ansi-buffer-name nil)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3898 (defvar term-ansi-default-program nil)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3899 (defvar term-ansi-buffer-base-name nil)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3900
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3901 ;;;###autoload
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3902 (defun ansi-term (program &optional new-buffer-name)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3903 "Start a terminal-emulator in a new buffer."
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3904 (interactive (list (read-from-minibuffer "Run program: "
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3905 (or explicit-shell-file-name
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3906 (getenv "ESHELL")
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3907 (getenv "SHELL")
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3908 "/bin/sh"))))
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3909
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3910 ;; Pick the name of the new buffer.
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3911 (setq term-ansi-buffer-name
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3912 (if new-buffer-name
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3913 new-buffer-name
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3914 (if term-ansi-buffer-base-name
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3915 (if (eq term-ansi-buffer-base-name t)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3916 (file-name-nondirectory program)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3917 term-ansi-buffer-base-name)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3918 "ansi-term")))
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3919
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3920 (setq term-ansi-buffer-name (concat "*" term-ansi-buffer-name "*"))
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3921
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3922 ;; In order to have more than one term active at a time
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3923 ;; I'd like to have the term names have the *term-ansi-term<?>* form,
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3924 ;; for now they have the *term-ansi-term*<?> form but we'll see...
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3925
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3926 (setq term-ansi-buffer-name (generate-new-buffer-name term-ansi-buffer-name))
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3927 (setq term-ansi-buffer-name (term-ansi-make-term term-ansi-buffer-name program))
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3928
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3929 (set-buffer term-ansi-buffer-name)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3930 (term-mode)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3931 (term-char-mode)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3932
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3933 ;; I wanna have find-file on C-x C-f -mm
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3934 ;; your mileage may definitely vary, maybe it's better to put this in your
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3935 ;; .emacs ...
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3936
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3937 (term-set-escape-char ?\C-x)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3938
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3939 (switch-to-buffer term-ansi-buffer-name))
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3940
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3941
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3942 ;;; Converting process modes to use term mode
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3943 ;;; ===========================================================================
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3944 ;;; Renaming variables
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3945 ;;; Most of the work is renaming variables and functions. These are the common
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3946 ;;; ones:
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3947 ;;; Local variables:
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3948 ;;; last-input-start term-last-input-start
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3949 ;;; last-input-end term-last-input-end
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3950 ;;; shell-prompt-pattern term-prompt-regexp
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3951 ;;; shell-set-directory-error-hook <no equivalent>
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3952 ;;; Miscellaneous:
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3953 ;;; shell-set-directory <unnecessary>
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3954 ;;; shell-mode-map term-mode-map
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3955 ;;; Commands:
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3956 ;;; shell-send-input term-send-input
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3957 ;;; shell-send-eof term-delchar-or-maybe-eof
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3958 ;;; kill-shell-input term-kill-input
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3959 ;;; interrupt-shell-subjob term-interrupt-subjob
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3960 ;;; stop-shell-subjob term-stop-subjob
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3961 ;;; quit-shell-subjob term-quit-subjob
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3962 ;;; kill-shell-subjob term-kill-subjob
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3963 ;;; kill-output-from-shell term-kill-output
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3964 ;;; show-output-from-shell term-show-output
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3965 ;;; copy-last-shell-input Use term-previous-input/term-next-input
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3966 ;;;
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3967 ;;; SHELL-SET-DIRECTORY is gone, its functionality taken over by
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3968 ;;; SHELL-DIRECTORY-TRACKER, the shell mode's term-input-filter-functions.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3969 ;;; Term mode does not provide functionality equivalent to
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3970 ;;; shell-set-directory-error-hook; it is gone.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3971 ;;;
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3972 ;;; term-last-input-start is provided for modes which want to munge
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3973 ;;; the buffer after input is sent, perhaps because the inferior
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3974 ;;; insists on echoing the input. The LAST-INPUT-START variable in
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3975 ;;; the old shell package was used to implement a history mechanism,
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3976 ;;; but you should think twice before using term-last-input-start
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3977 ;;; for this; the input history ring often does the job better.
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3978 ;;;
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3979 ;;; If you are implementing some process-in-a-buffer mode, called foo-mode, do
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3980 ;;; *not* create the term-mode local variables in your foo-mode function.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3981 ;;; This is not modular. Instead, call term-mode, and let *it* create the
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3982 ;;; necessary term-specific local variables. Then create the
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3983 ;;; foo-mode-specific local variables in foo-mode. Set the buffer's keymap to
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3984 ;;; be foo-mode-map, and its mode to be foo-mode. Set the term-mode hooks
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3985 ;;; (term-{prompt-regexp, input-filter, input-filter-functions,
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3986 ;;; get-old-input) that need to be different from the defaults. Call
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3987 ;;; foo-mode-hook, and you're done. Don't run the term-mode hook yourself;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3988 ;;; term-mode will take care of it. The following example, from shell.el,
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3989 ;;; is typical:
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3990 ;;;
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3991 ;;; (defvar shell-mode-map '())
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3992 ;;; (cond ((not shell-mode-map)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3993 ;;; (setq shell-mode-map (copy-keymap term-mode-map))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3994 ;;; (define-key shell-mode-map "\C-c\C-f" 'shell-forward-command)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3995 ;;; (define-key shell-mode-map "\C-c\C-b" 'shell-backward-command)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3996 ;;; (define-key shell-mode-map "\t" 'term-dynamic-complete)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3997 ;;; (define-key shell-mode-map "\M-?"
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3998 ;;; 'term-dynamic-list-filename-completions)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3999 ;;;
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4000 ;;; (defun shell-mode ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4001 ;;; (interactive)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4002 ;;; (term-mode)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4003 ;;; (setq term-prompt-regexp shell-prompt-pattern)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4004 ;;; (setq major-mode 'shell-mode)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4005 ;;; (setq mode-name "Shell")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4006 ;;; (use-local-map shell-mode-map)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4007 ;;; (make-local-variable 'shell-directory-stack)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4008 ;;; (setq shell-directory-stack nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4009 ;;; (add-hook 'term-input-filter-functions 'shell-directory-tracker)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4010 ;;; (run-hooks 'shell-mode-hook))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4011 ;;;
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4012 ;;;
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4013 ;;; Completion for term-mode users
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
4014 ;;;
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4015 ;;; For modes that use term-mode, term-dynamic-complete-functions is the
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4016 ;;; hook to add completion functions to. Functions on this list should return
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4017 ;;; non-nil if completion occurs (i.e., further completion should not occur).
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4018 ;;; You could use term-dynamic-simple-complete to do the bulk of the
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4019 ;;; completion job.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4020
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4021 (provide 'term)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4022
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4023 ;;; term.el ends here