annotate lisp/term.el @ 24419:30e478cd167e

(shell-command-default-error-buffer): Renamed from shell-command-on-region-default-error-buffer. (shell-command-on-region): Mention in echo area when there is some error output. Mention success or failure, too. Accumulate multiple error outputs going forward, with formfeed in between. Display the error buffer when we have put something in it. (shell-command): Add the ERROR-BUFFER argument feature.
author Karl Heuer <kwzh@gnu.org>
date Mon, 01 Mar 1999 03:19:32 +0000
parents 9a52ffb7bfb2
children 10d20f341dee
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
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
5 ;;; Author: Per Bothner <bothner@cygnus.com>
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
6 ;;; Based on comint mode written by: Olin Shivers <shivers@cs.cmu.edu>
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
7 ;;; Keyword: processes
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
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
26 ;;; 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
27 ;;; 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
28
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
29 ;;; 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
30
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
31 ;;; 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
32 ;;; --------------------------------------
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
33 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
34 ;;; 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
35 ;;; 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
36 ;;; 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
37 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
38 ;;; 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
39 ;;; 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
40 ;;; 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
41 ;;; 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
42 ;;; 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
43 ;;; 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
44 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
45 ;;; ;; 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
46 ;;; ;; 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
47 ;;; ;; 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
48 ;;; (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
49 ;;; (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
50 ;;; (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
51 ;;; (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
52 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
53 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
54 ;;; IMPORTANT: additions & changes
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
55 ;;; ------------------------------
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
56 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
57 ;;; 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
58 ;;; 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
59 ;;; 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
60 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
61 ;;; 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
62 ;;; 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
63 ;;; 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
64 ;;; 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
65 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
66 ;;; 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
67 ;;; 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
68 ;;; 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
69 ;;; 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
70 ;;; '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
71 ;;; 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
72 ;;; 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
73 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
74 ;;; 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
75 ;;; 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
76 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
77 ;;; # Local access
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
78 ;;; 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
79 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
80 ;;; # 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
81 ;;; deny root *
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
82 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
83 ;;;
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 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
86 ;;; 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
87 ;;; 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
88 ;;; 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
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 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
92 ;;; 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
93 ;;; 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
94 ;;; usual.
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 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
98 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
99 ;;; 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
100 ;;; 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
101 ;;; 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
102 ;;; 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
103 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
104 ;;; 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
105 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
106 ;;; Important caveat:
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
107 ;;; -----------------
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
108 ;;; 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
109 ;;; 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
110 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
111 ;;; ----------------------------------------
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'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
114 ;;; 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
115 ;;; 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
116 ;;; 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
117 ;;; check!)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
118 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
119 ;;; 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
120 ;;; 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
121 ;;; 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
122 ;;; 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
123 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
124 ;;; ----------------------------------------
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
125 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
126 ;;; TODO:
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
127 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
128 ;;; - 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
129 ;;; - 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
130 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
131 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
132 ;;; Changes:
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
133 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
134 ;;; 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
135 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
136 ;;; - 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
137 ;;; 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
138 ;;; - 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
139 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
140 ;;; 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
141 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
142 ;;; - 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
143 ;;; - 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
144 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
145 ;;; V2.3 November
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 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
148 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
149 ;;; 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
150 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
151 ;;; - 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
152 ;;; color_ls )
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 ;;; - 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
155 ;;; comint.el)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
156 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
157 ;;; 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
158 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
159 ;;; - 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
160 ;;; - 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
161 ;;; - 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
162 ;;;
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 ;;; 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
165 ;;; 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
166 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
167 ;;; (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
168 ;;; (function
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
169 ;;; (lambda ()
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
170 ;;; (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
171 ;;; (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
172 ;;; (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
173 ;;; (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
174 ;;; (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
175 ;;; (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
176 ;;; (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
177 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
178 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
179 ;;; ----------------------------------------
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
180 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
181 ;;; 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
182 ;;; 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
183 ;;; 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
184 ;;; 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
185 ;;; 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
186 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
187 ;;; ----------------------------------------
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
188 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
189 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
190 ;;; # 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
191 ;;; # 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
192 ;;; # 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
193 ;;; # 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
194 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
195 ;;; # 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
196 ;;; # 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
197 ;;; # colorization off.
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
198 ;;; COLOR tty
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
199 ;;; OPTIONS -F
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
200 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
201 ;;; # 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
202 ;;; # colorizable
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
203 ;;; TERM eterm
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
204 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
205 ;;; # 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
206 ;;; EIGHTBIT 1
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
207 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
208 ;;; # 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
209 ;;; # 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
210 ;;; # Attribute codes:
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
211 ;;; # 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
212 ;;; # Text color codes:
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
213 ;;; # 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
214 ;;; # Background color codes:
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
215 ;;; # 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
216 ;;; 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
217 ;;; 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
218 ;;; 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
219 ;;; 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
220 ;;; 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
221 ;;; 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
222 ;;; 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
223 ;;; 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
224 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
225 ;;; # 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
226 ;;; EXEC 00;32
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
227 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
228 ;;; # 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
229 ;;; # 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
230 ;;; # 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
231 ;;; .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
232 ;;; .tgz 01;33
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
233 ;;; .arj 01;33
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
234 ;;; .taz 01;33
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
235 ;;; .lzh 01;33
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
236 ;;; .zip 01;33
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
237 ;;; .z 01;33
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
238 ;;; .Z 01;33
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
239 ;;; .gz 01;33
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
240 ;;; .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
241 ;;; .gif 01;35
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
242 ;;; .bmp 01;35
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
243 ;;; .xbm 01;35
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
244 ;;; .xpm 01;35
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
245 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
246 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
247 ;;; ----------------------------------------
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
248 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
249 ;;; 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
250 ;;; 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
251 ;;; 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
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 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
255 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
256 ;;; set os = `uname`
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
257 ;;; set host = `hostname`
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
258 ;;; set date = `date`
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 ;;; # 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
261 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
262 ;;; set user = `whoami`
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
263 ;;;
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 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
266 ;;; 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
267 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
268 ;;; echo --------------------------------------------------------------
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
269 ;;; echo Hello $user
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
270 ;;; 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
271 ;;; 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
272 ;;; echo --------------------------------------------------------------
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
273 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
274 ;;; setenv EDITOR emacsclient
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
275 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
276 ;;; # 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
277 ;;; # 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
278 ;;; # $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
279 ;;; # 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
280 ;;; # 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
281 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
282 ;;; # 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
283 ;;; # time one !
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
284 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
285 ;;; 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
286 ;;; 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
287 ;;; 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
288 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
289 ;;; # 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
290 ;;; # 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
291 ;;; # 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
292 ;;; # 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
293 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
294 ;;; 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
295 ;;; 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
296 ;;; end
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
297 ;;; 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
298 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
299 ;;; # 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
300 ;;; # 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
301 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
302 ;;; 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
303 ;;; 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
304 ;;; 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
305 ;;; end
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 ;;; # 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
308 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
309 ;;; echo "AnSiTh" $host
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
310 ;;; echo "AnSiTu" $user
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
311 ;;; echo "AnSiTc" $cwd
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
312 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
313 ;;; # some housekeeping
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
314 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
315 ;;; unset cwd_hack
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
316 ;;; unset host_hack
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
317 ;;; unset user_hack
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
318 ;;; unset temp
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 ;;; 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
321 ;;; endif
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
322 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
323 ;;; # ...
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 ;;; # 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
326 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
327 ;;; unset os
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
328 ;;; unset date
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 ;;;
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 ;;; Original Commentary:
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
333 ;;; --------------------
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
334
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13961
diff changeset
335 ;; The changelog is at the end of this file.
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
336
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13961
diff changeset
337 ;; 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
338 ;; merge them into the master source.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13961
diff changeset
339 ;; - Per Bothner (bothner@cygnus.com)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
340
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13961
diff changeset
341 ;; 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
342 ;; (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
343 ;; 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
344 ;; 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
345 ;; 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
346 ;; saves code, implementation time, etc., etc.).
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
347
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13961
diff changeset
348 ;; 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
349 ;; background, dbx, gdb, kermit, prolog, telnet) to use term-mode
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13961
diff changeset
350 ;; 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
351
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 ;; Brief Command Documentation:
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13961
diff changeset
354 ;;============================================================================
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13961
diff changeset
355 ;; 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
356 ;; mode)
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13961
diff changeset
357 ;;
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13961
diff changeset
358 ;; m-p term-previous-input Cycle backwards in input history
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13961
diff changeset
359 ;; m-n term-next-input Cycle forwards
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13961
diff changeset
360 ;; 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
361 ;; m-s comint-next-matching-input Next input that matches
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13961
diff changeset
362 ;; return term-send-input
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13961
diff changeset
363 ;; 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
364 ;; 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
365 ;; c-c c-u term-kill-input ^u
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13961
diff changeset
366 ;; c-c c-w backward-kill-word ^w
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13961
diff changeset
367 ;; c-c c-c term-interrupt-subjob ^c
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13961
diff changeset
368 ;; c-c c-z term-stop-subjob ^z
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13961
diff changeset
369 ;; c-c c-\ term-quit-subjob ^\
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13961
diff changeset
370 ;; 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
371 ;; 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
372 ;; 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
373 ;;
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13961
diff changeset
374 ;; Not bound by default in term-mode
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13961
diff changeset
375 ;; 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
376 ;; (These are bound in shell-mode)
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13961
diff changeset
377 ;; term-dynamic-complete Complete filename at point.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13961
diff changeset
378 ;; term-dynamic-list-completions List completions in help buffer.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13961
diff changeset
379 ;; 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
380 ;; replace with expanded/completed name.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13961
diff changeset
381 ;; term-kill-subjob No mercy.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13961
diff changeset
382 ;; term-show-maximum-output Show as much output as possible.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13961
diff changeset
383 ;; 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
384 ;; group. Useful if you accidentally
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13961
diff changeset
385 ;; suspend your process (with C-c C-z).
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
386
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
387 ;; 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
388 ;; term-load-hook is run after loading in this package.
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
389
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13961
diff changeset
390 ;; Code:
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
391
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13961
diff changeset
392 ;; 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
393 ;; 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
394 (defconst term-protocol-version "0.95")
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
395
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
396 (require 'ring)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
397 (require 'ehelp)
17407
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
398
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
399 (defgroup term nil
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
400 "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
401 :group 'processes
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
402 :group 'unix)
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
403
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
404
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
405 ;;; Buffer Local Variables:
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
406 ;;;============================================================================
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
407 ;;; Term mode buffer local variables:
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
408 ;;; term-prompt-regexp - string term-bol uses to match prompt.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
409 ;;; term-delimiter-argument-list - list For delimiters and arguments
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
410 ;;; term-last-input-start - marker Handy if inferior always echoes
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
411 ;;; 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
412 ;; For the input history mechanism:
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
413 (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
414 ;;; term-input-ring-size - integer
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
415 ;;; term-input-ring - ring
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
416 ;;; term-input-ring-index - number ...
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
417 ;;; term-input-autoexpand - symbol ...
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
418 ;;; term-input-ignoredups - boolean ...
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
419 ;;; term-last-input-match - string ...
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
420 ;;; term-dynamic-complete-functions - hook For the completion mechanism
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
421 ;;; 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
422 ;;; term-get-old-input - function Hooks for specific
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
423 ;;; term-input-filter-functions - hook process-in-a-buffer
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
424 ;;; term-input-filter - function modes.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
425 ;;; term-input-send - function
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
426 ;;; term-scroll-to-bottom-on-output - symbol ...
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
427 ;;; 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
428 (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
429 (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
430 (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
431 (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
432 ;; 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
433 (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
434 ;; or nil if unknown.
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
435 (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
436 (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
437 ;; or nil if unknown.
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
438 (defvar term-insert-mode nil)
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
439 (defvar term-vertical-motion)
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
440 (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
441 ;; state 0: Normal state
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
442 ;; 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
443 ;; 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
444 ;; (and line warp) before displaying it.
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
445 ;; 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
446 ;; state 2: seen ESC
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
447 ;; state 3: seen ESC [ (or ESC [ ?)
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
448 ;; 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
449 (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
450 ;; we want suppressed.
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
451 (defvar term-terminal-parameter)
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
452 (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
453 (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
454 (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
455 (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
456 (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
457 ;; 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
458 (defvar term-saved-cursor nil)
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
459 (defvar term-command-hook)
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
460 (defvar term-log-buffer nil)
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
461 (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
462 ;; 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
463 ;; 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
464 ;; 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
465 ;; (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
466 (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
467 ;; 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
468 ;; 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
469 (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
470 (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
471 (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
472 (defvar term-pager-old-filter) ;; Saved process-filter while paging.
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
473
17407
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
474 (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
475 "*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
476 :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
477 :group 'term)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
478
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
479 (defvar term-prompt-regexp "^"
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
480 "Regexp to recognise prompts in the inferior process.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
481 Defaults to \"^\", the null string at BOL.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
482
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
483 Good choices:
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
484 Canonical Lisp: \"^[^> \\n]*>+:? *\" (Lucid, franz, kcl, T, cscheme, oaklisp)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
485 Lucid Common Lisp: \"^\\\\(>\\\\|\\\\(->\\\\)+\\\\) *\"
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
486 franz: \"^\\\\(->\\\\|<[0-9]*>:\\\\) *\"
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
487 kcl: \"^>+ *\"
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
488 shell: \"^[^#$%>\\n]*[#$%>] *\"
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
489 T: \"^>+ *\"
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
490
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
491 This is a good thing to set in mode hooks.")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
492
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
493 (defvar term-delimiter-argument-list ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
494 "List of characters to recognise as separate arguments in input.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
495 Strings comprising a character in this list will separate the arguments
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
496 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
497 whitespace). See `term-arguments'.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
498 Defaults to the empty list.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
499
23311
fd4a0e88aed5 (term-delimiter-argument-list): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents: 20153
diff changeset
500 For shells, a good value is (?\\| ?& ?< ?> ?\\( ?\\) ?\\;).
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
501
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
502 This is a good thing to set in mode hooks.")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
503
17407
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
504 (defcustom term-input-autoexpand nil
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
505 "*If non-nil, expand input command history references on completion.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
506 This mirrors the optional behavior of tcsh (its autoexpand and histlit).
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
507
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
508 If the value is `input', then the expansion is seen on input.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
509 If the value is `history', then the expansion is only when inserting
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
510 into the buffer's input ring. See also `term-magic-space' and
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
511 `term-dynamic-complete'.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
512
17407
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
513 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
514 :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
515 :group 'term)
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
516
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
517 (defcustom term-input-ignoredups nil
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
518 "*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
519 This mirrors the optional behavior of bash.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
520
17407
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
521 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
522 :type 'boolean
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
523 :group 'term)
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
524
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
525 (defcustom term-input-ring-file-name nil
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
526 "*If non-nil, name of the file to read/write input history.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
527 See also `term-read-input-ring' and `term-write-input-ring'.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
528
17407
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
529 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
530 :type 'boolean
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
531 :group 'term)
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
532
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
533 (defcustom term-scroll-to-bottom-on-output nil
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
534 "*Controls whether interpreter output causes window to scroll.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
535 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
536 If `this', scroll only the selected window.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
537 If `others', scroll only those that are not the selected window.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
538
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
539 The default is nil.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
540
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
541 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
542 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
543 :type 'boolean
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
544 :group 'term)
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
545
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
546 (defcustom term-scroll-show-maximum-output nil
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
547 "*Controls how interpreter output causes window to scroll.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
548 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
549
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
550 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
551 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
552 :type 'boolean
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
553 :group 'term)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
554
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
555 ;; Where gud-display-frame should put the debugging arrow. This is
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
556 ;; set by the marker-filter, which scans the debugger's output for
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
557 ;; indications of the current pc.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
558 (defvar term-pending-frame nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
559
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
560 ;;; Here are the per-interpreter hooks.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
561 (defvar term-get-old-input (function term-get-old-input-default)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
562 "Function that submits old text in term mode.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
563 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
564 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
565 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
566 leading text matching term-prompt-regexp")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
567
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
568 (defvar term-dynamic-complete-functions
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
569 '(term-replace-by-expanded-history term-dynamic-complete-filename)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
570 "List of functions called to perform completion.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
571 Functions should return non-nil if completion was performed.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
572 See also `term-dynamic-complete'.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
573
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
574 This is a good thing to set in mode hooks.")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
575
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
576 (defvar term-input-filter
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
577 (function (lambda (str) (not (string-match "\\`\\s *\\'" str))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
578 "Predicate for filtering additions to input history.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
579 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
580 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
581
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
582 (defvar term-input-filter-functions '()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
583 "Functions to call before input is sent to the process.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
584 These functions get one argument, a string containing the text to send.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
585
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
586 This variable is buffer-local.")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
587
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
588 (defvar term-input-sender (function term-simple-send)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
589 "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
590 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
591 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
592 the user command term-send-input. term-simple-send just sends
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
593 the string plus a newline.")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
594
17407
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
595 (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
596 "*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
597 See `term-send-input'."
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
598 :type 'boolean
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
599 :group 'term)
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
600
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
601 (defcustom term-mode-hook '()
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
602 "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
603 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
604 :type 'hook
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
605 :group 'term)
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
606
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
607 (defcustom term-exec-hook '()
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
608 "Called each time a process is exec'd by term-exec.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
609 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
610 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
611 \(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
612 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
613 :type 'hook
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
614 :group 'term)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
615
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
616 (defvar term-mode-map nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
617 (defvar term-raw-map nil
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
618 "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
619 (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
620 "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
621 Do not change it directly; use term-set-escape-char instead.")
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
622 (defvar term-raw-escape-map nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
623
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
624 (defvar term-pager-break-map nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
625
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
626 (defvar term-ptyp t
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
627 "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
628 This is to work around a bug in Emacs process signaling.")
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
629
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
630 (defvar term-last-input-match ""
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
631 "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
632 Buffer local variable.")
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
633
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
634 (defvar term-input-ring nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
635 (defvar term-last-input-start)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
636 (defvar term-last-input-end)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
637 (defvar term-input-ring-index nil
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
638 "Index of last matched history element.")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
639 (defvar term-matching-input-from-input-string ""
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
640 "Input previously used to match input history.")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
641 ; 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
642 ; assuming this is Emacs 19.20 or newer.
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
643 (defvar term-pager-filter t)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
644
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
645 (put 'term-replace-by-expanded-history 'menu-enable 'term-input-autoexpand)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
646 (put 'term-input-ring 'permanent-local t)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
647 (put 'term-input-ring-index 'permanent-local t)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
648 (put 'term-input-autoexpand 'permanent-local t)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
649 (put 'term-input-filter-functions 'permanent-local t)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
650 (put 'term-scroll-to-bottom-on-output 'permanent-local t)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
651 (put 'term-scroll-show-maximum-output 'permanent-local t)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
652 (put 'term-ptyp 'permanent-local t)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
653
19976
81065d2158f9 (term-if-emacs19): Recognize version 20.
Karl Heuer <kwzh@gnu.org>
parents: 19219
diff changeset
654 ;; Do FORMS if running under Emacs 19 or later.
10515
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
655 (defmacro term-if-emacs19 (&rest forms)
19976
81065d2158f9 (term-if-emacs19): Recognize version 20.
Karl Heuer <kwzh@gnu.org>
parents: 19219
diff changeset
656 (if (string-match "^\\(19\\|[2-9][0-9]\\)" emacs-version)
81065d2158f9 (term-if-emacs19): Recognize version 20.
Karl Heuer <kwzh@gnu.org>
parents: 19219
diff changeset
657 (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
658 ;; True if running under XEmacs (previously Lucid Emacs).
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
659 (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
660 ;; 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
661 (defmacro term-if-xemacs (&rest forms)
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
662 (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
663 ;; 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
664 (defmacro term-ifnot-xemacs (&rest forms)
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
665 (if (not (term-is-xemacs)) (cons 'progn forms)))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
666
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
667 (defmacro term-in-char-mode () '(eq (current-local-map) term-raw-map))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
668 (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
669 ;; True if currently doing PAGER handling.
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
670 (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
671 (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
672 (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
673
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
674 (defvar term-signals-menu)
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
675 (defvar term-terminal-menu)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
676
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
677 ;;; 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
678 (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
679 (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
680 (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
681 (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
682 (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
683 (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
684 (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
685 (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
686 (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
687 (defvar term-ansi-current-color 0)
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-face-alredy-done 0)
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-bg-color 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-underline 0)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
691 (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
692 (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
693 (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
694 (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
695 (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
696 (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
697 (defvar term-ansi-fg-faces-vector nil)
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-bg-faces-vector nil)
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-inv-fg-faces-vector nil)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
700 (defvar term-ansi-inv-bg-faces-vector nil)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
701 (defvar term-ansi-reverse-faces-vector nil)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
702
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
703 ;;; 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
704 (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
705 (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
706 (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
707 (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
708 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
709
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
710 ;;; faces -mm
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
711
19082
e159c69a45f0 (term-ignore-error): Fix foolish errors.
Richard M. Stallman <rms@gnu.org>
parents: 17814
diff changeset
712 (defmacro term-ignore-error (&rest body)
17814
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
713 `(condition-case nil
19082
e159c69a45f0 (term-ignore-error): Fix foolish errors.
Richard M. Stallman <rms@gnu.org>
parents: 17814
diff changeset
714 (progn ,@body)
17814
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
715 (error nil)))
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
716
19219
67d2c89a660c (term-default-fg-color):
Richard M. Stallman <rms@gnu.org>
parents: 19082
diff changeset
717 (defvar term-default-fg-color nil)
67d2c89a660c (term-default-fg-color):
Richard M. Stallman <rms@gnu.org>
parents: 19082
diff changeset
718 (defvar term-default-bg-color nil)
17814
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
719
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
720 (when (fboundp 'make-face)
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
721 ;;; --- Simple faces ---
17814
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
722 (make-face 'term-default-fg)
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
723 (make-face 'term-default-bg)
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
724 (make-face 'term-default-fg-inv)
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
725 (make-face 'term-default-bg-inv)
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
726 (make-face 'term-bold)
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
727 (make-face 'term-underline)
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
728 (make-face 'term-invisible)
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
729 (make-face 'term-invisible-inv)
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
730
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
731 (copy-face 'default 'term-default-fg)
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
732 (copy-face 'default 'term-default-bg)
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
733 (term-ignore-error
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
734 (set-face-foreground 'term-default-fg term-default-fg-color))
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
735 (term-ignore-error
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
736 (set-face-background 'term-default-bg term-default-bg-color))
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
737
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
738 (copy-face 'default 'term-default-fg-inv)
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
739 (copy-face 'default 'term-default-bg-inv)
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
740 (term-ignore-error
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
741 (set-face-foreground 'term-default-fg-inv term-default-bg-color))
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
742 (term-ignore-error
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
743 (set-face-background 'term-default-bg-inv term-default-fg-color))
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
744
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
745 (copy-face 'default 'term-invisible)
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
746 (term-ignore-error
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
747 (set-face-background 'term-invisible term-default-bg-color))
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
748
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
749 (copy-face 'default 'term-invisible-inv)
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
750 (term-ignore-error
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
751 (set-face-background 'term-invisible-inv term-default-fg-color))
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
752
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
753 (copy-face 'default 'term-bold)
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
754 (copy-face 'default 'term-underline)
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
755
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
756 ;; Set the colors of the new faces.
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
757 (term-ignore-error
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
758 (make-face-bold 'term-bold))
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
759
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
760 (term-ignore-error
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
761 (set-face-underline-p 'term-underline t))
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
762
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
763 ;;; --- Fg faces ---
17814
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
764 (make-face 'term-black)
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
765 (make-face 'term-red)
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
766 (make-face 'term-green)
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
767 (make-face 'term-yellow)
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
768 (make-face 'term-blue)
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
769 (make-face 'term-magenta)
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
770 (make-face 'term-cyan)
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
771 (make-face 'term-white)
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
772
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
773 (copy-face 'default 'term-black)
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
774 (term-ignore-error
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
775 (set-face-foreground 'term-black "black"))
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
776 (copy-face 'default 'term-red)
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
777 (term-ignore-error
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
778 (set-face-foreground 'term-red "red"))
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
779 (copy-face 'default 'term-green)
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
780 (term-ignore-error
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
781 (set-face-foreground 'term-green "green"))
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
782 (copy-face 'default 'term-yellow)
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
783 (term-ignore-error
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
784 (set-face-foreground 'term-yellow "yellow"))
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
785 (copy-face 'default 'term-blue)
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
786 (term-ignore-error
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
787 (set-face-foreground 'term-blue "blue"))
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
788 (copy-face 'default 'term-magenta)
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
789 (term-ignore-error
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
790 (set-face-foreground 'term-magenta "magenta"))
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
791 (copy-face 'default 'term-cyan)
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
792 (term-ignore-error
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
793 (set-face-foreground 'term-cyan "cyan"))
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
794 (copy-face 'default 'term-white)
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
795 (term-ignore-error
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
796 (set-face-foreground 'term-white "white"))
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
797
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
798 ;;; --- Bg faces ---
17814
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
799 (make-face 'term-blackbg)
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
800 (make-face 'term-redbg)
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
801 (make-face 'term-greenbg)
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
802 (make-face 'term-yellowbg)
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
803 (make-face 'term-bluebg)
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
804 (make-face 'term-magentabg)
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
805 (make-face 'term-cyanbg)
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
806 (make-face 'term-whitebg)
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
807
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
808 (copy-face 'default 'term-blackbg)
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
809 (term-ignore-error
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
810 (set-face-background 'term-blackbg "black"))
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
811 (copy-face 'default 'term-redbg)
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
812 (term-ignore-error
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
813 (set-face-background 'term-redbg "red"))
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
814 (copy-face 'default 'term-greenbg)
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
815 (term-ignore-error
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
816 (set-face-background 'term-greenbg "green"))
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
817 (copy-face 'default 'term-yellowbg)
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
818 (term-ignore-error
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
819 (set-face-background 'term-yellowbg "yellow"))
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
820 (copy-face 'default 'term-bluebg)
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
821 (term-ignore-error
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
822 (set-face-background 'term-bluebg "blue"))
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
823 (copy-face 'default 'term-magentabg)
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
824 (term-ignore-error
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
825 (set-face-background 'term-magentabg "magenta"))
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
826 (copy-face 'default 'term-cyanbg)
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
827 (term-ignore-error
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
828 (set-face-background 'term-cyanbg "cyan"))
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
829 (copy-face 'default 'term-whitebg)
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
830 (term-ignore-error
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
831 (set-face-background 'term-whitebg "white")))
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
832
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
833 (defvar ansi-term-fg-faces-vector
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
834 [term-default-fg term-black term-red term-green term-yellow term-blue
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
835 term-magenta term-cyan term-white])
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
836
17814
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
837 (defvar ansi-term-bg-faces-vector
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
838 [term-default-bg term-blackbg term-redbg term-greenbg term-yellowbg
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
839 term-bluebg term-magentabg term-cyanbg term-whitebg])
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
840
17814
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
841 (defvar ansi-term-inv-bg-faces-vector
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
842 [term-default-fg-inv term-black term-red term-green term-yellow term-blue
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
843 term-magenta term-cyan term-white])
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
844
17814
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
845 (defvar ansi-term-inv-fg-faces-vector
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
846 [term-default-bg-inv term-blackbg term-redbg term-greenbg term-yellowbg
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
847 term-bluebg term-magentabg term-cyanbg term-whitebg])
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
848
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
849 ;;; 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
850 (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
851 "*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
852 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
853 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
854 is buffer-local.")
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
855 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
856
10515
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
857 (term-if-xemacs
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
858 (defvar term-terminal-menu
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
859 '("Terminal"
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
860 [ "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
861 [ "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
862 [ "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
863 [ "Disable paging" term-pager-toggle term-pager-count])))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
864
17659
a62b21f702b0 (term-mode): Add a mode-class property.
Richard M. Stallman <rms@gnu.org>
parents: 17407
diff changeset
865 (put 'term-mode 'mode-class 'special)
a62b21f702b0 (term-mode): Add a mode-class property.
Richard M. Stallman <rms@gnu.org>
parents: 17407
diff changeset
866
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
867 (defun term-mode ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
868 "Major mode for interacting with an inferior interpreter.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
869 Interpreter name is same as buffer name, sans the asterisks.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
870 In line sub-mode, return at end of buffer sends line as input,
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
871 while return not at end copies rest of line to end and sends it.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
872 In char sub-mode, each character (except `term-escape-char`) is
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
873 set immediately.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
874
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
875 This mode is typically customised to create inferior-lisp-mode,
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
876 shell-mode, etc.. This can be done by setting the hooks
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
877 term-input-filter-functions, term-input-filter, term-input-sender and
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
878 term-get-old-input to appropriate functions, and the variable
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
879 term-prompt-regexp to the appropriate regular expression.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
880
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
881 An input history is maintained of size `term-input-ring-size', and
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
882 can be accessed with the commands \\[term-next-input],
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
883 \\[term-previous-input], and \\[term-dynamic-list-input-ring].
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
884 Input ring history expansion can be achieved with the commands
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
885 \\[term-replace-by-expanded-history] or \\[term-magic-space].
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
886 Input ring expansion is controlled by the variable `term-input-autoexpand',
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
887 and addition is controlled by the variable `term-input-ignoredups'.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
888
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
889 Input to, and output from, the subprocess can cause the window to scroll to
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
890 the end of the buffer. See variables `term-scroll-to-bottom-on-input',
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
891 and `term-scroll-to-bottom-on-output'.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
892
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
893 If you accidentally suspend your process, use \\[term-continue-subjob]
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
894 to continue it.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
895
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
896 \\{term-mode-map}
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
897
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
898 Entry to this mode runs the hooks on term-mode-hook"
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
899 (interactive)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
900 ;; Do not remove this. All major modes must do this.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
901 (kill-all-local-variables)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
902 (setq major-mode 'term-mode)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
903 (setq mode-name "Term")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
904 (use-local-map term-mode-map)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
905 (make-local-variable 'term-home-marker)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
906 (setq term-home-marker (copy-marker 0))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
907 (make-local-variable 'term-saved-home-marker)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
908 (make-local-variable 'term-height)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
909 (make-local-variable 'term-width)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
910 (setq term-width (1- (window-width)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
911 (setq term-height (1- (window-height)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
912 (make-local-variable 'term-terminal-parameter)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
913 (make-local-variable 'term-saved-cursor)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
914 (make-local-variable 'term-last-input-start)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
915 (setq term-last-input-start (make-marker))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
916 (make-local-variable 'term-last-input-end)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
917 (setq term-last-input-end (make-marker))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
918 (make-local-variable 'term-last-input-match)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
919 (setq term-last-input-match "")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
920 (make-local-variable 'term-prompt-regexp) ; Don't set; default
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
921 (make-local-variable 'term-input-ring-size) ; ...to global val.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
922 (make-local-variable 'term-input-ring)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
923 (make-local-variable 'term-input-ring-file-name)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
924 (or (and (boundp 'term-input-ring) term-input-ring)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
925 (setq term-input-ring (make-ring term-input-ring-size)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
926 (make-local-variable 'term-input-ring-index)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
927 (or (and (boundp 'term-input-ring-index) term-input-ring-index)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
928 (setq term-input-ring-index nil))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
929
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
930 (make-local-variable 'term-command-hook)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
931 (setq term-command-hook (symbol-function 'term-command-hook))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
932
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
933 ;;; I'm not sure these saves are necessary but, since I
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
934 ;;; haven't tested the whole thing on a net connected machine with
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
935 ;;; a properly configured ange-ftp, I've decided to be conservative
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
936 ;;; and put them in. -mm
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
937
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
938 (make-local-variable '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
939 (setq 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
940
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
941 (make-local-variable '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
942 (setq term-ansi-at-dir default-directory)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
943
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
944 (make-local-variable 'term-ansi-at-message)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
945 (setq 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
946
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
947 ;;; For user tracking purposes -mm
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
948 (make-local-variable '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
949 (make-local-variable '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
950 (make-local-variable '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
951
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
952 ;;; You may want to have different scroll-back sizes -mm
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
953 (make-local-variable '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
954
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
955 ;;; Of course these have to be buffer-local -mm
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
956 (make-local-variable '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
957 (make-local-variable '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
958 (make-local-variable 'term-ansi-face-alredy-done)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
959 (make-local-variable '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
960 (make-local-variable '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
961 (make-local-variable 'term-ansi-current-highlight)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
962 (make-local-variable '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
963 (make-local-variable 'term-ansi-current-invisible)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
964
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
965 (make-local-variable 'term-terminal-state)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
966 (make-local-variable 'term-kill-echo-list)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
967 (make-local-variable 'term-start-line-column)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
968 (make-local-variable 'term-current-column)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
969 (make-local-variable 'term-current-row)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
970 (make-local-variable 'term-log-buffer)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
971 (make-local-variable 'term-scroll-start)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
972 (make-local-variable 'term-scroll-end)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
973 (setq term-scroll-end term-height)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
974 (make-local-variable 'term-scroll-with-delete)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
975 (make-local-variable 'term-pager-count)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
976 (make-local-variable 'term-pager-old-local-map)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
977 (make-local-variable 'term-old-mode-map)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
978 (make-local-variable 'term-insert-mode)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
979 (make-local-variable 'term-dynamic-complete-functions)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
980 (make-local-variable 'term-completion-fignore)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
981 (make-local-variable 'term-get-old-input)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
982 (make-local-variable 'term-matching-input-from-input-string)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
983 (make-local-variable 'term-input-autoexpand)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
984 (make-local-variable 'term-input-ignoredups)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
985 (make-local-variable 'term-delimiter-argument-list)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
986 (make-local-variable 'term-input-filter-functions)
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
987 (make-local-variable 'term-input-filter)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
988 (make-local-variable 'term-input-sender)
10933
3057c4fd86d3 * term.el (term-eol-on-send): New variable. Use it.
Per Bothner <bothner@cygnus.com>
parents: 10679
diff changeset
989 (make-local-variable 'term-eol-on-send)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
990 (make-local-variable 'term-scroll-to-bottom-on-output)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
991 (make-local-variable 'term-scroll-show-maximum-output)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
992 (make-local-variable 'term-ptyp)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
993 (make-local-variable 'term-exec-hook)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
994 (make-local-variable 'term-vertical-motion)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
995 (make-local-variable 'term-pending-delete-marker)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
996 (setq term-pending-delete-marker (make-marker))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
997 (make-local-variable 'term-current-face)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
998 (make-local-variable 'term-pending-frame)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
999 (setq term-pending-frame nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1000 (run-hooks 'term-mode-hook)
10515
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
1001 (term-if-xemacs
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
1002 (set-buffer-menubar
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
1003 (append current-menubar (list term-terminal-menu))))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1004 (or term-input-ring
10671
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1005 (setq term-input-ring (make-ring term-input-ring-size)))
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1006 (term-update-mode-line))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1007
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1008 (if term-mode-map
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1009 nil
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1010 (setq term-mode-map (make-sparse-keymap))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1011 (define-key term-mode-map "\ep" 'term-previous-input)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1012 (define-key term-mode-map "\en" 'term-next-input)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1013 (define-key term-mode-map "\er" 'term-previous-matching-input)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1014 (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
1015 (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
1016 (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
1017 'term-previous-matching-input-from-input)
10515
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
1018 (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
1019 (define-key term-mode-map "\e\C-l" 'term-show-output)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1020 (define-key term-mode-map "\C-m" 'term-send-input)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1021 (define-key term-mode-map "\C-d" 'term-delchar-or-maybe-eof)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1022 (define-key term-mode-map "\C-c\C-a" 'term-bol)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1023 (define-key term-mode-map "\C-c\C-u" 'term-kill-input)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1024 (define-key term-mode-map "\C-c\C-w" 'backward-kill-word)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1025 (define-key term-mode-map "\C-c\C-c" 'term-interrupt-subjob)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1026 (define-key term-mode-map "\C-c\C-z" 'term-stop-subjob)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1027 (define-key term-mode-map "\C-c\C-\\" 'term-quit-subjob)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1028 (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
1029 (define-key term-mode-map "\C-c\C-o" 'term-kill-output)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1030 (define-key term-mode-map "\C-c\C-r" 'term-show-output)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1031 (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
1032 (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
1033 (define-key term-mode-map "\C-c\C-n" 'term-next-prompt)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1034 (define-key term-mode-map "\C-c\C-p" 'term-previous-prompt)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1035 (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
1036 (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
1037 (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
1038 (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
1039
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1040
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1041 ; ;; completion:
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
1042 ; (define-key term-mode-map [menu-bar completion]
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1043 ; (cons "Complete" (make-sparse-keymap "Complete")))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1044 ; (define-key term-mode-map [menu-bar completion complete-expand]
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1045 ; '("Expand File Name" . term-replace-by-expanded-filename))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1046 ; (define-key term-mode-map [menu-bar completion complete-listing]
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1047 ; '("File Completion Listing" . term-dynamic-list-filename-completions))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1048 ; (define-key term-mode-map [menu-bar completion complete-file]
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1049 ; '("Complete File Name" . term-dynamic-complete-filename))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1050 ; (define-key term-mode-map [menu-bar completion complete]
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1051 ; '("Complete Before Point" . term-dynamic-complete))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1052 ; ;; Put them in the menu bar:
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1053 ; (setq menu-bar-final-items (append '(terminal completion inout signals)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1054 ; menu-bar-final-items))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1055 )
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1056
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1057 ;; Menu bars:
10515
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
1058 (term-ifnot-xemacs
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
1059 (term-if-emacs19
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1060
10671
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1061 ;; terminal:
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1062 (let (newmap)
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1063 (setq newmap (make-sparse-keymap "Terminal"))
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1064 (define-key newmap [terminal-pager-enable]
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1065 '("Enable paging" . term-fake-pager-enable))
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1066 (define-key newmap [terminal-pager-disable]
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1067 '("Disable paging" . term-fake-pager-disable))
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1068 (define-key newmap [terminal-char-mode]
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1069 '("Character mode" . term-char-mode))
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1070 (define-key newmap [terminal-line-mode]
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1071 '("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
1072 (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
1073
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1074 ;; completion: (line mode only)
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1075 (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
1076 (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
1077 (cons "Complete" term-completion-menu))
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1078 (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
1079 '("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
1080 (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
1081 '("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
1082 (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
1083 '("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
1084 (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
1085 '("Complete Before Point" . term-dynamic-complete))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1086
10671
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1087 ;; Input history: (line mode only)
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1088 (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
1089 (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
1090 (cons "In/Out" term-inout-menu))
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1091 (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
1092 '("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
1093 (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
1094 '("Forward Output Group" . term-next-prompt))
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1095 (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
1096 '("Backward Output Group" . term-previous-prompt))
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1097 (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
1098 '("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
1099 (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
1100 '("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
1101 (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
1102 '("Kill Current Input" . term-kill-input))
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1103 (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
1104 '("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
1105 (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
1106 '("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
1107 (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
1108 '("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
1109 (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
1110 '("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
1111 (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
1112 '("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
1113 (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
1114 '("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
1115 (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
1116 '("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
1117 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
1118 (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
1119 '("Next Input" . term-next-input))
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1120 (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
1121 '("Previous Input" . term-previous-input))
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1122 (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
1123 '("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
1124 (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
1125 '("Expand History Before Point" . term-replace-by-expanded-history))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1126
10671
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1127 ;; Signals
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1128 (setq newmap (make-sparse-keymap "Signals"))
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1129 (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
1130 (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
1131 (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
1132 (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
1133 (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
1134 (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
1135 (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
1136 (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
1137 )))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1138
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1139 (defun term-reset-size (height width)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1140 (setq term-height height)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1141 (setq term-width width)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1142 (setq term-start-line-column nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1143 (setq term-current-row nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1144 (setq term-current-column nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1145 (term-scroll-region 0 height))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1146
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1147 ;; 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
1148 ;; matches part of the buffer before point.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1149 ;; If so, delete that matched part of the buffer - this suppresses echo.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1150 ;; Also, remove that string from the term-kill-echo-list.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1151 ;; 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
1152 ;; in case something gets out of sync. (Except for type-ahead, there
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1153 ;; should only be one element in the list.)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1154
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1155 (defun term-check-kill-echo-list ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1156 (let ((cur term-kill-echo-list) (found nil) (save-point (point)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1157 (unwind-protect
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1158 (progn
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1159 (end-of-line)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1160 (while cur
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1161 (let* ((str (car cur)) (len (length str)) (start (- (point) len)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1162 (if (and (>= start (point-min))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1163 (string= str (buffer-substring start (point))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1164 (progn (delete-backward-char len)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1165 (setq term-kill-echo-list (cdr cur))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1166 (setq term-current-column nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1167 (setq term-current-row nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1168 (setq term-start-line-column nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1169 (setq cur nil found t))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1170 (setq cur (cdr cur))))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1171 (if (not found)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1172 (goto-char save-point)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1173 found))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1174
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1175 (defun term-check-size (process)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1176 (if (or (/= term-height (1- (window-height)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1177 (/= term-width (1- (window-width))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1178 (progn
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1179 (term-reset-size (1- (window-height)) (1- (window-width)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1180 (set-process-window-size process term-height term-width))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1181
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1182 (defun term-send-raw-string (chars)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1183 (let ((proc (get-buffer-process (current-buffer))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1184 (if (not proc)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1185 (error "Current buffer has no process")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1186 ;; Note that (term-current-row) must be called *after*
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1187 ;; (point) has been updated to (process-mark proc).
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1188 (goto-char (process-mark proc))
10671
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1189 (if (term-pager-enabled)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1190 (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
1191 (process-send-string proc chars))))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1192
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1193 (defun term-send-raw ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1194 "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
1195 without any interpretation."
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1196 (interactive)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1197 ;; Convert `return' to C-m, etc.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1198 (if (and (symbolp last-input-char)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1199 (get last-input-char 'ascii-character))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1200 (setq last-input-char (get last-input-char 'ascii-character)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1201 (term-send-raw-string (make-string 1 last-input-char)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1202
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1203 (defun term-send-raw-meta ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1204 (interactive)
10671
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1205 (if (symbolp last-input-char)
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1206 ;; Convert `return' to C-m, etc.
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1207 (let ((tmp (get last-input-char 'event-symbol-elements)))
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1208 (if tmp
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1209 (setq last-input-char (car tmp)))
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1210 (if (symbolp last-input-char)
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1211 (progn
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1212 (setq tmp (get last-input-char 'ascii-character))
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1213 (if tmp (setq last-input-char tmp))))))
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1214 (term-send-raw-string (if (and (numberp last-input-char)
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1215 (> last-input-char 127)
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1216 (< last-input-char 256))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1217 (make-string 1 last-input-char)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1218 (format "\e%c" last-input-char))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1219
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1220 (defun term-mouse-paste (click arg)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1221 "Insert the last stretch of killed text at the position clicked on."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1222 (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
1223 (term-if-xemacs
8d2f156b72ff (term-mouse-paste): Make work for xemacs. Minor GNU emacs fixes.
Per Bothner <bothner@cygnus.com>
parents: 11032
diff changeset
1224 (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
1225 (x-get-cutbuffer)
8d2f156b72ff (term-mouse-paste): Make work for xemacs. Minor GNU emacs fixes.
Per Bothner <bothner@cygnus.com>
parents: 11032
diff changeset
1226 (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
1227 (term-ifnot-xemacs
8d2f156b72ff (term-mouse-paste): Make work for xemacs. Minor GNU emacs fixes.
Per Bothner <bothner@cygnus.com>
parents: 11032
diff changeset
1228 ;; 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
1229 (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
1230 (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
1231 (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
1232 ((listp arg) 0)
8d2f156b72ff (term-mouse-paste): Make work for xemacs. Minor GNU emacs fixes.
Per Bothner <bothner@cygnus.com>
parents: 11032
diff changeset
1233 ((eq arg '-) -1)
8d2f156b72ff (term-mouse-paste): Make work for xemacs. Minor GNU emacs fixes.
Per Bothner <bothner@cygnus.com>
parents: 11032
diff changeset
1234 (t (1- arg)))))))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1235
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1236 ;; 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
1237 ;; 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
1238 ;; 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
1239 (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
1240 (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
1241 (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
1242 (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
1243 (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
1244 (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
1245 (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
1246 (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
1247 (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
1248 (defun term-send-backspace () (interactive) (term-send-raw-string "\C-H"))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1249
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1250 (defun term-set-escape-char (c)
12229
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
1251 "Change term-escape-char and keymaps that depend on it."
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1252 (if term-escape-char
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1253 (define-key term-raw-map term-escape-char 'term-send-raw))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1254 (setq c (make-string 1 c))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1255 (define-key term-raw-map c term-raw-escape-map)
13961
ff6ac63de609 (term-process-pager): Fix message spelling.
Karl Heuer <kwzh@gnu.org>
parents: 13337
diff changeset
1256 ;; Define standard bindings in term-raw-escape-map
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1257 (define-key term-raw-escape-map "\C-x"
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1258 (lookup-key (current-global-map) "\C-x"))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1259 (define-key term-raw-escape-map "\C-v"
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1260 (lookup-key (current-global-map) "\C-v"))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1261 (define-key term-raw-escape-map "\C-u"
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1262 (lookup-key (current-global-map) "\C-u"))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1263 (define-key term-raw-escape-map c 'term-send-raw)
10515
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
1264 (define-key term-raw-escape-map "\C-q" 'term-pager-toggle)
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
1265 ;; The keybinding for term-char-mode is needed by the menubar code.
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
1266 (define-key term-raw-escape-map "\C-k" 'term-char-mode)
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
1267 (define-key term-raw-escape-map "\C-j" 'term-line-mode))
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
1268
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1269 (defun term-char-mode ()
10515
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
1270 "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
1271 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
1272 intervention from Emacs, except for the escape character (usually C-c)."
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1273 (interactive)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1274 (if (not term-raw-map)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1275 (let* ((map (make-keymap))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1276 (esc-map (make-keymap))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1277 (i 0))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1278 (while (< i 128)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1279 (define-key map (make-string 1 i) 'term-send-raw)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1280 (define-key esc-map (make-string 1 i) 'term-send-raw-meta)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1281 (setq i (1+ i)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1282 (define-key map "\e" esc-map)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1283 (setq term-raw-map map)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1284 (setq term-raw-escape-map
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1285 (copy-keymap (lookup-key (current-global-map) "\C-x")))
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
1286
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
1287 ;;; Added nearly all the 'grey keys' -mm
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
1288
10515
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
1289 (term-if-emacs19
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
1290 (term-if-xemacs
11032
4b411b6a4e70 (term-char-mode): Fix arrow key and [button2] support for xemacs.
Per Bothner <bothner@cygnus.com>
parents: 10933
diff changeset
1291 (define-key term-raw-map [button2] 'term-mouse-paste))
10515
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
1292 (term-ifnot-xemacs
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
1293 (define-key term-raw-map [mouse-2] 'term-mouse-paste)
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
1294 (define-key term-raw-map [menu-bar terminal] term-terminal-menu)
11032
4b411b6a4e70 (term-char-mode): Fix arrow key and [button2] support for xemacs.
Per Bothner <bothner@cygnus.com>
parents: 10933
diff changeset
1295 (define-key term-raw-map [menu-bar signals] term-signals-menu))
10515
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
1296 (define-key term-raw-map [up] 'term-send-up)
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
1297 (define-key term-raw-map [down] 'term-send-down)
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
1298 (define-key term-raw-map [right] 'term-send-right)
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
1299 (define-key term-raw-map [left] 'term-send-left)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
1300 (define-key term-raw-map [delete] 'term-send-del)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
1301 (define-key term-raw-map [backspace] 'term-send-backspace)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
1302 (define-key term-raw-map [home] 'term-send-home)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
1303 (define-key term-raw-map [end] 'term-send-end)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
1304 (define-key term-raw-map [prior] 'term-send-prior)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
1305 (define-key term-raw-map [next] 'term-send-next))
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
1306
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
1307
11032
4b411b6a4e70 (term-char-mode): Fix arrow key and [button2] support for xemacs.
Per Bothner <bothner@cygnus.com>
parents: 10933
diff changeset
1308 (term-set-escape-char ?\C-c)))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1309 ;; 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
1310 (if (term-in-line-mode)
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
1311 (progn
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
1312 (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
1313 (use-local-map term-raw-map)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1314
10515
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
1315 ;; 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
1316 (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
1317 (save-input-sender term-input-sender))
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
1318 (if (> (point) pmark)
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
1319 (unwind-protect
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
1320 (progn
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
1321 (setq term-input-sender
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
1322 (symbol-function 'term-send-string))
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
1323 (end-of-line)
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
1324 (term-send-input))
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
1325 (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
1326 (term-update-mode-line))))
9509
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-line-mode ()
10515
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
1329 "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
1330 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
1331 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
1332 (interactive)
10515
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
1333 (if (term-in-char-mode)
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
1334 (progn
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
1335 (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
1336 (term-update-mode-line))))
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1337
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1338 (defun term-update-mode-line ()
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1339 (setq mode-line-process
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1340 (if (term-in-char-mode)
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1341 (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
1342 (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
1343 (force-mode-line-update))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1344
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1345 (defun term-check-proc (buffer)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1346 "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
1347 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
1348 name of one"
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1349 (let ((proc (get-buffer-process buffer)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1350 (and proc (memq (process-status proc) '(run stop)))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1351
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1352 ;;;###autoload
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1353 (defun make-term (name program &optional startfile &rest switches)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1354 "Make a term process NAME in a buffer, running PROGRAM.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1355 The name of the buffer is made by surrounding NAME with `*'s.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1356 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
1357 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
1358 the process. Any more args are arguments to PROGRAM."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1359 (let ((buffer (get-buffer-create (concat "*" name "*"))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1360 ;; 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
1361 ;; term mode. Otherwise, leave buffer and existing process alone.
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1362 (cond ((not (term-check-proc buffer))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1363 (save-excursion
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1364 (set-buffer buffer)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1365 (term-mode)) ; Install local vars, mode, keymap, ...
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1366 (term-exec buffer name program startfile switches)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1367 buffer))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1368
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1369 ;;;###autoload
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1370 (defun term (program)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1371 "Start a terminal-emulator in a new buffer."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1372 (interactive (list (read-from-minibuffer "Run program: "
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1373 (or explicit-shell-file-name
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1374 (getenv "ESHELL")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1375 (getenv "SHELL")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1376 "/bin/sh"))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1377 (set-buffer (make-term "terminal" program))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1378 (term-mode)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1379 (term-char-mode)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1380 (switch-to-buffer "*terminal*"))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1381
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1382 (defun term-exec (buffer name command startfile switches)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1383 "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
1384 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
1385 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
1386 buffer. The hook term-exec-hook is run after each exec."
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1387 (save-excursion
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1388 (set-buffer buffer)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1389 (let ((proc (get-buffer-process buffer))) ; Blast any old process.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1390 (if proc (delete-process proc)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1391 ;; Crank up a new process
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1392 (let ((proc (term-exec-1 name buffer command switches)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1393 (make-local-variable 'term-ptyp)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1394 (setq term-ptyp process-connection-type) ; T if pty, NIL if pipe.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1395 ;; Jump to the end, and set the process mark.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1396 (goto-char (point-max))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1397 (set-marker (process-mark proc) (point))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1398 (set-process-filter proc 'term-emulate-terminal)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1399 ;; Feed it the startfile.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1400 (cond (startfile
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1401 ;;This is guaranteed to wait long enough
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1402 ;;but has bad results if the term does not prompt at all
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1403 ;; (while (= size (buffer-size))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1404 ;; (sleep-for 1))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1405 ;;I hope 1 second is enough!
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1406 (sleep-for 1)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1407 (goto-char (point-max))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1408 (insert-file-contents startfile)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1409 (setq startfile (buffer-substring (point) (point-max)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1410 (delete-region (point) (point-max))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1411 (term-send-string proc startfile)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1412 (run-hooks 'term-exec-hook)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1413 buffer)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1414
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1415 ;;; Name to use for TERM.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1416 ;;; Using "emacs" loses, because bash disables editing if TERM == emacs.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1417 (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
1418 ; Format string, usage:
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
1419 ; (format term-termcap-string emacs-term-name "TERMCAP=" 24 80)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1420 (defvar term-termcap-format
10044
c840b3eb9015 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 9603
diff changeset
1421 "%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
1422 :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
1423 :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
1424 :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
1425 :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
1426 :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
1427 :UP=\\E[%%dA:DO=\\E[%%dB:LE=\\E[%%dD:RI=\\E[%%dC"
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1428 ;;; : -undefine ic
13961
ff6ac63de609 (term-process-pager): Fix message spelling.
Karl Heuer <kwzh@gnu.org>
parents: 13337
diff changeset
1429 "termcap capabilities supported")
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1430
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1431 ;;; This auxiliary function cranks up the process for term-exec in
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1432 ;;; the appropriate environment.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1433
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1434 (defun term-exec-1 (name buffer command switches)
10044
c840b3eb9015 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 9603
diff changeset
1435 ;; 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
1436 ;; (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
1437 ;; The 'if ...; then shift; fi' hack is because Bourne shell
c840b3eb9015 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 9603
diff changeset
1438 ;; 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
1439 ;; 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
1440 (let ((process-environment
c840b3eb9015 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 9603
diff changeset
1441 (nconc
c840b3eb9015 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 9603
diff changeset
1442 (list
c840b3eb9015 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 9603
diff changeset
1443 (format "TERM=%s" term-term-name)
c840b3eb9015 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 9603
diff changeset
1444 (if (and (boundp 'system-uses-terminfo) system-uses-terminfo)
c840b3eb9015 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 9603
diff changeset
1445 (format "TERMINFO=%s" data-directory)
c840b3eb9015 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 9603
diff changeset
1446 (format term-termcap-format "TERMCAP="
c840b3eb9015 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 9603
diff changeset
1447 term-term-name term-height term-width))
10679
aec6cbccf909 (term-protocol-version): Renamed from term-version.
Richard M. Stallman <rms@gnu.org>
parents: 10671
diff changeset
1448 (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
1449 (format "LINES=%d" term-height)
c840b3eb9015 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 9603
diff changeset
1450 (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
1451 process-environment))
20153
7ebe9039c4f9 (term-exec-1): Bind inhibit-eol-conversion to t before
Kenichi Handa <handa@m17n.org>
parents: 20021
diff changeset
1452 (process-connection-type t)
7ebe9039c4f9 (term-exec-1): Bind inhibit-eol-conversion to t before
Kenichi Handa <handa@m17n.org>
parents: 20021
diff changeset
1453 ;; 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
1454 (inhibit-eol-conversion t)
7ebe9039c4f9 (term-exec-1): Bind inhibit-eol-conversion to t before
Kenichi Handa <handa@m17n.org>
parents: 20021
diff changeset
1455 )
10044
c840b3eb9015 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 9603
diff changeset
1456 (apply 'start-process name buffer
c840b3eb9015 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 9603
diff changeset
1457 "/bin/sh" "-c"
c840b3eb9015 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 9603
diff changeset
1458 (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
1459 if [ $1 = .. ]; then shift; fi; exec \"$@\""
c840b3eb9015 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 9603
diff changeset
1460 term-height term-width)
c840b3eb9015 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 9603
diff changeset
1461 ".."
c840b3eb9015 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 9603
diff changeset
1462 command switches)))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1463
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
1464 ;;; This should be in Emacs, but it isn't.
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1465 (defun term-mem (item list &optional elt=)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1466 "Test to see if ITEM is equal to an item in LIST.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1467 Option comparison function ELT= defaults to equal."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1468 (let ((elt= (or elt= (function equal)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1469 (done nil))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1470 (while (and list (not done))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1471 (if (funcall elt= item (car list))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1472 (setq done list)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1473 (setq list (cdr list))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1474 done))
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
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1477 ;;; Input history processing in a buffer
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1478 ;;; ===========================================================================
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1479 ;;; Useful input history functions, courtesy of the Ergo group.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1480
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1481 ;;; Eleven commands:
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1482 ;;; term-dynamic-list-input-ring List history in help buffer.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1483 ;;; term-previous-input Previous input...
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1484 ;;; term-previous-matching-input ...matching a string.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1485 ;;; term-previous-matching-input-from-input ... matching the current input.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1486 ;;; term-next-input Next input...
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1487 ;;; term-next-matching-input ...matching a string.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1488 ;;; term-next-matching-input-from-input ... matching the current input.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1489 ;;; term-backward-matching-input Backwards input...
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1490 ;;; term-forward-matching-input ...matching a string.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1491 ;;; term-replace-by-expanded-history Expand history at point;
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1492 ;;; replace with expanded history.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1493 ;;; term-magic-space Expand history and insert space.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1494 ;;;
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1495 ;;; Three functions:
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1496 ;;; term-read-input-ring Read into term-input-ring...
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1497 ;;; term-write-input-ring Write to term-input-ring-file-name.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1498 ;;; term-replace-by-expanded-history-before-point Workhorse function.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1499
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1500 (defun term-read-input-ring (&optional silent)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1501 "Sets the buffer's `term-input-ring' from a history file.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1502 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
1503 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
1504 If `term-input-ring-file-name' is nil this function does nothing.
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 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
1507 failure to read the history file.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1508
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1509 This function is useful for major mode commands and mode hooks.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1510
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1511 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
1512 with the most recent command last.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1513 See also `term-input-ignoredups' and `term-write-input-ring'."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1514 (cond ((or (null term-input-ring-file-name)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1515 (equal term-input-ring-file-name ""))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1516 nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1517 ((not (file-readable-p term-input-ring-file-name))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1518 (or silent
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1519 (message "Cannot read history file %s"
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1520 term-input-ring-file-name)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1521 (t
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1522 (let ((history-buf (get-buffer-create " *temp*"))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1523 (file term-input-ring-file-name)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1524 (count 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1525 (ring (make-ring term-input-ring-size)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1526 (unwind-protect
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1527 (save-excursion
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1528 (set-buffer history-buf)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1529 (widen)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1530 (erase-buffer)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1531 (insert-file-contents file)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1532 ;; Save restriction in case file is already visited...
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1533 ;; Watch for those date stamps in history files!
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1534 (goto-char (point-max))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1535 (while (and (< count term-input-ring-size)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1536 (re-search-backward "^[ \t]*\\([^#\n].*\\)[ \t]*$"
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1537 nil t))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1538 (let ((history (buffer-substring (match-beginning 1)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1539 (match-end 1))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1540 (if (or (null term-input-ignoredups)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1541 (ring-empty-p ring)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1542 (not (string-equal (ring-ref ring 0) history)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1543 (ring-insert-at-beginning ring history)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1544 (setq count (1+ count))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1545 (kill-buffer history-buf))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1546 (setq term-input-ring ring
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1547 term-input-ring-index nil)))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1548
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1549 (defun term-write-input-ring ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1550 "Writes the buffer's `term-input-ring' to a history file.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1551 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
1552 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
1553 If `term-input-ring-file-name' is nil this function does nothing.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1554
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1555 Useful within process sentinels.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1556
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1557 See also `term-read-input-ring'."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1558 (cond ((or (null term-input-ring-file-name)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1559 (equal term-input-ring-file-name "")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1560 (null term-input-ring) (ring-empty-p term-input-ring))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1561 nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1562 ((not (file-writable-p term-input-ring-file-name))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1563 (message "Cannot write history file %s" term-input-ring-file-name))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1564 (t
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1565 (let* ((history-buf (get-buffer-create " *Temp Input History*"))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1566 (ring term-input-ring)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1567 (file term-input-ring-file-name)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1568 (index (ring-length ring)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1569 ;; Write it all out into a buffer first. Much faster, but messier,
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1570 ;; than writing it one line at a time.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1571 (save-excursion
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1572 (set-buffer history-buf)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1573 (erase-buffer)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1574 (while (> index 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1575 (setq index (1- index))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1576 (insert (ring-ref ring index) ?\n))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1577 (write-region (buffer-string) nil file nil 'no-message)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1578 (kill-buffer nil))))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1579
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1580
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1581 (defun term-dynamic-list-input-ring ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1582 "List in help buffer the buffer's input history."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1583 (interactive)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1584 (if (or (not (ring-p term-input-ring))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1585 (ring-empty-p term-input-ring))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1586 (message "No history")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1587 (let ((history nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1588 (history-buffer " *Input History*")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1589 (index (1- (ring-length term-input-ring)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1590 (conf (current-window-configuration)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1591 ;; We have to build up a list ourselves from the ring vector.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1592 (while (>= index 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1593 (setq history (cons (ring-ref term-input-ring index) history)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1594 index (1- index)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1595 ;; Change "completion" to "history reference"
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1596 ;; to make the display accurate.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1597 (with-output-to-temp-buffer history-buffer
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1598 (display-completion-list history)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1599 (set-buffer history-buffer)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1600 (forward-line 3)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1601 (while (search-backward "completion" nil 'move)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1602 (replace-match "history reference")))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1603 (sit-for 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1604 (message "Hit space to flush")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1605 (let ((ch (read-event)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1606 (if (eq ch ?\ )
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1607 (set-window-configuration conf)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1608 (setq unread-command-events (list ch)))))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1609
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1610
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1611 (defun term-regexp-arg (prompt)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1612 ;; 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
1613 (let* (;; Don't clobber this.
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1614 (last-command last-command)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1615 (regexp (read-from-minibuffer prompt nil nil nil
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1616 'minibuffer-history-search-history)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1617 (list (if (string-equal regexp "")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1618 (setcar minibuffer-history-search-history
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1619 (nth 1 minibuffer-history-search-history))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1620 regexp)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1621 (prefix-numeric-value current-prefix-arg))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1622
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1623 (defun term-search-arg (arg)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1624 ;; 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
1625 (cond ((not (term-after-pmark-p))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1626 (error "Not at command line"))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1627 ((or (null term-input-ring)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1628 (ring-empty-p term-input-ring))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1629 (error "Empty input ring"))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1630 ((zerop arg)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1631 ;; arg of zero resets search from beginning, and uses arg of 1
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1632 (setq term-input-ring-index nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1633 1)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1634 (t
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1635 arg)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1636
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1637 (defun term-search-start (arg)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1638 ;; Index to start a directional search, starting at term-input-ring-index
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1639 (if term-input-ring-index
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1640 ;; If a search is running, offset by 1 in direction of arg
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1641 (mod (+ term-input-ring-index (if (> arg 0) 1 -1))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1642 (ring-length term-input-ring))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1643 ;; For a new search, start from beginning or end, as appropriate
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1644 (if (>= arg 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1645 0 ; First elt for forward search
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1646 (1- (ring-length term-input-ring))))) ; Last elt for backward search
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-previous-input-string (arg)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1649 "Return the string ARG places along the input ring.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1650 Moves relative to `term-input-ring-index'."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1651 (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
1652 (mod (+ arg term-input-ring-index)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1653 (ring-length term-input-ring))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1654 arg)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1655
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1656 (defun term-previous-input (arg)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1657 "Cycle backwards through input history."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1658 (interactive "*p")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1659 (term-previous-matching-input "." arg))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1660
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1661 (defun term-next-input (arg)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1662 "Cycle forwards through input history."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1663 (interactive "*p")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1664 (term-previous-input (- arg)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1665
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1666 (defun term-previous-matching-input-string (regexp arg)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1667 "Return the string matching REGEXP ARG places along the input ring.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1668 Moves relative to `term-input-ring-index'."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1669 (let* ((pos (term-previous-matching-input-string-position regexp arg)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1670 (if pos (ring-ref term-input-ring pos))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1671
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
1672 (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
1673 (regexp arg &optional start)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1674 "Return the index matching REGEXP ARG places along the input ring.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1675 Moves relative to START, or `term-input-ring-index'."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1676 (if (or (not (ring-p term-input-ring))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1677 (ring-empty-p term-input-ring))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1678 (error "No history"))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1679 (let* ((len (ring-length term-input-ring))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1680 (motion (if (> arg 0) 1 -1))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1681 (n (mod (- (or start (term-search-start arg)) motion) len))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1682 (tried-each-ring-item nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1683 (prev nil))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1684 ;; Do the whole search as many times as the argument says.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1685 (while (and (/= arg 0) (not tried-each-ring-item))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1686 ;; Step once.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1687 (setq prev n
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1688 n (mod (+ n motion) len))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1689 ;; If we haven't reached a match, step some more.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1690 (while (and (< n len) (not tried-each-ring-item)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1691 (not (string-match regexp (ring-ref term-input-ring n))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1692 (setq n (mod (+ n motion) len)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1693 ;; If we have gone all the way around in this search.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1694 tried-each-ring-item (= n prev)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1695 (setq arg (if (> arg 0) (1- arg) (1+ arg))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1696 ;; 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
1697 (if (string-match regexp (ring-ref term-input-ring n))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1698 n)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1699
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1700 (defun term-previous-matching-input (regexp arg)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1701 "Search backwards through input history for match for REGEXP.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1702 \(Previous history elements are earlier commands.)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1703 With prefix argument N, search for Nth previous match.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1704 If N is negative, find the next or Nth next match."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1705 (interactive (term-regexp-arg "Previous input matching (regexp): "))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1706 (setq arg (term-search-arg arg))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1707 (let ((pos (term-previous-matching-input-string-position regexp arg)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1708 ;; Has a match been found?
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1709 (if (null pos)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1710 (error "Not found")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1711 (setq term-input-ring-index pos)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1712 (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
1713 (delete-region
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1714 ;; Can't use kill-region as it sets this-command
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1715 (process-mark (get-buffer-process (current-buffer))) (point))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1716 (insert (ring-ref term-input-ring pos)))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1717
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1718 (defun term-next-matching-input (regexp arg)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1719 "Search forwards through input history for match for REGEXP.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1720 \(Later history elements are more recent commands.)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1721 With prefix argument N, search for Nth following match.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1722 If N is negative, find the previous or Nth previous match."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1723 (interactive (term-regexp-arg "Next input matching (regexp): "))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1724 (term-previous-matching-input regexp (- arg)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1725
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1726 (defun term-previous-matching-input-from-input (arg)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1727 "Search backwards through input history for match for current input.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1728 \(Previous history elements are earlier commands.)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1729 With prefix argument N, search for Nth previous match.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1730 If N is negative, search forwards for the -Nth following match."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1731 (interactive "p")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1732 (if (not (memq last-command '(term-previous-matching-input-from-input
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1733 term-next-matching-input-from-input)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1734 ;; Starting a new search
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1735 (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
1736 (buffer-substring
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
1737 (process-mark (get-buffer-process (current-buffer)))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1738 (point))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1739 term-input-ring-index nil))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1740 (term-previous-matching-input
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1741 (concat "^" (regexp-quote term-matching-input-from-input-string))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1742 arg))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1743
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1744 (defun term-next-matching-input-from-input (arg)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1745 "Search forwards through input history for match for current input.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1746 \(Following history elements are more recent commands.)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1747 With prefix argument N, search for Nth following match.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1748 If N is negative, search backwards for the -Nth previous match."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1749 (interactive "p")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1750 (term-previous-matching-input-from-input (- arg)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1751
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1752
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1753 (defun term-replace-by-expanded-history (&optional silent)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1754 "Expand input command history references before point.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1755 Expansion is dependent on the value of `term-input-autoexpand'.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1756
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1757 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
1758 match the command interpreter's idea, assuming it has one.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1759
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
1760 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
1761 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
1762 it cannot expand absolute input line number references.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1763
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1764 If the optional argument SILENT is non-nil, never complain
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1765 even if history reference seems erroneous.
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 See `term-magic-space' and `term-replace-by-expanded-history-before-point'.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1768
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1769 Returns t if successful."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1770 (interactive)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1771 (if (and term-input-autoexpand
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1772 (string-match "[!^]" (funcall term-get-old-input))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1773 (save-excursion (beginning-of-line)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1774 (looking-at term-prompt-regexp)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1775 ;; Looks like there might be history references in the command.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1776 (let ((previous-modified-tick (buffer-modified-tick)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1777 (message "Expanding history references...")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1778 (term-replace-by-expanded-history-before-point silent)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1779 (/= previous-modified-tick (buffer-modified-tick)))))
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
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1782 (defun term-replace-by-expanded-history-before-point (silent)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1783 "Expand directory stack reference before point.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1784 See `term-replace-by-expanded-history'. Returns t if successful."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1785 (save-excursion
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1786 (let ((toend (- (save-excursion (end-of-line nil) (point)) (point)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1787 (start (progn (term-bol nil) (point))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1788 (while (progn
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1789 (skip-chars-forward "^!^"
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1790 (save-excursion
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1791 (end-of-line nil) (- (point) toend)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1792 (< (point)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1793 (save-excursion
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1794 (end-of-line nil) (- (point) toend))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1795 ;; This seems a bit complex. We look for references such as !!, !-num,
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1796 ;; !foo, !?foo, !{bar}, !?{bar}, ^oh, ^my^, ^god^it, ^never^ends^.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1797 ;; If that wasn't enough, the plings can be suffixed with argument
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1798 ;; range specifiers.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1799 ;; Argument ranges are complex too, so we hive off the input line,
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1800 ;; referenced with plings, with the range string to `term-args'.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1801 (setq term-input-ring-index nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1802 (cond ((or (= (preceding-char) ?\\)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1803 (term-within-quotes start (point)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1804 ;; The history is quoted, or we're in quotes.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1805 (goto-char (1+ (point))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1806 ((looking-at "![0-9]+\\($\\|[^-]\\)")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1807 ;; We cannot know the interpreter's idea of input line numbers.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1808 (goto-char (match-end 0))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1809 (message "Absolute reference cannot be expanded"))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1810 ((looking-at "!-\\([0-9]+\\)\\(:?[0-9^$*-]+\\)?")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1811 ;; Just a number of args from `number' lines backward.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1812 (let ((number (1- (string-to-number
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1813 (buffer-substring (match-beginning 1)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1814 (match-end 1))))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1815 (if (<= number (ring-length term-input-ring))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1816 (progn
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1817 (replace-match
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1818 (term-args (term-previous-input-string number)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1819 (match-beginning 2) (match-end 2))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1820 t t)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1821 (setq term-input-ring-index number)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1822 (message "History item: %d" (1+ number)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1823 (goto-char (match-end 0))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1824 (message "Relative reference exceeds input history size"))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1825 ((or (looking-at "!!?:?\\([0-9^$*-]+\\)") (looking-at "!!"))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1826 ;; Just a number of args from the previous input line.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1827 (replace-match
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1828 (term-args (term-previous-input-string 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1829 (match-beginning 1) (match-end 1))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1830 t t)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1831 (message "History item: previous"))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1832 ((looking-at
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1833 "!\\??\\({\\(.+\\)}\\|\\(\\sw+\\)\\)\\(:?[0-9^$*-]+\\)?")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1834 ;; Most recent input starting with or containing (possibly
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1835 ;; protected) string, maybe just a number of args. Phew.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1836 (let* ((mb1 (match-beginning 1)) (me1 (match-end 1))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1837 (mb2 (match-beginning 2)) (me2 (match-end 2))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1838 (exp (buffer-substring (or mb2 mb1) (or me2 me1)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1839 (pref (if (save-match-data (looking-at "!\\?")) "" "^"))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1840 (pos (save-match-data
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1841 (term-previous-matching-input-string-position
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1842 (concat pref (regexp-quote exp)) 1))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1843 (if (null pos)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1844 (progn
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1845 (goto-char (match-end 0))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1846 (or silent
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1847 (progn (message "Not found")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1848 (ding))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1849 (setq term-input-ring-index pos)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1850 (replace-match
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1851 (term-args (ring-ref term-input-ring pos)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1852 (match-beginning 4) (match-end 4))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1853 t t)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1854 (message "History item: %d" (1+ pos)))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1855 ((looking-at "\\^\\([^^]+\\)\\^?\\([^^]*\\)\\^?")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1856 ;; Quick substitution on the previous input line.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1857 (let ((old (buffer-substring (match-beginning 1) (match-end 1)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1858 (new (buffer-substring (match-beginning 2) (match-end 2)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1859 (pos nil))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1860 (replace-match (term-previous-input-string 0) t t)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1861 (setq pos (point))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1862 (goto-char (match-beginning 0))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1863 (if (not (search-forward old pos t))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1864 (or silent
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1865 (error "Not found"))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1866 (replace-match new t t)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1867 (message "History item: substituted"))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1868 (t
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1869 (goto-char (match-end 0))))))))
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
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1872 (defun term-magic-space (arg)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1873 "Expand input history references before point and insert ARG spaces.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1874 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
1875 (interactive "p")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1876 (term-replace-by-expanded-history)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1877 (self-insert-command arg))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1878
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1879 (defun term-within-quotes (beg end)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1880 "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
1881 Quotes are single and double."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1882 (let ((countsq (term-how-many-region "\\(^\\|[^\\\\]\\)\'" beg end))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1883 (countdq (term-how-many-region "\\(^\\|[^\\\\]\\)\"" beg end)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1884 (or (= (mod countsq 2) 1) (= (mod countdq 2) 1))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1885
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1886 (defun term-how-many-region (regexp beg end)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1887 "Return number of matches for REGEXP from BEG to END."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1888 (let ((count 0))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1889 (save-excursion
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1890 (save-match-data
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1891 (goto-char beg)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1892 (while (re-search-forward regexp end t)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1893 (setq count (1+ count)))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1894 count))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1895
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1896 (defun term-args (string begin end)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1897 ;; 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
1898 ;; 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
1899 ;; 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
1900 (save-match-data
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1901 (if (null begin)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1902 (term-arguments string 0 nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1903 (let* ((range (buffer-substring
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1904 (if (eq (char-after begin) ?:) (1+ begin) begin) end))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1905 (nth (cond ((string-match "^[*^]" range) 1)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1906 ((string-match "^-" range) 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1907 ((string-equal range "$") nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1908 (t (string-to-number range))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1909 (mth (cond ((string-match "[-*$]$" range) nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1910 ((string-match "-" range)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1911 (string-to-number (substring range (match-end 0))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1912 (t nth))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1913 (term-arguments string nth mth)))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1914
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1915 ;; Return a list of arguments from ARG. Break it up at the
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1916 ;; delimiters in term-delimiter-argument-list. Returned list is backwards.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1917 (defun term-delim-arg (arg)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1918 (if (null term-delimiter-argument-list)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1919 (list arg)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1920 (let ((args nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1921 (pos 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1922 (len (length arg)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1923 (while (< pos len)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1924 (let ((char (aref arg pos))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1925 (start pos))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1926 (if (memq char term-delimiter-argument-list)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1927 (while (and (< pos len) (eq (aref arg pos) char))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1928 (setq pos (1+ pos)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1929 (while (and (< pos len)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1930 (not (memq (aref arg pos)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1931 term-delimiter-argument-list)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1932 (setq pos (1+ pos))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1933 (setq args (cons (substring arg start pos) args))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1934 args)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1935
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1936 (defun term-arguments (string nth mth)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1937 "Return from STRING the NTH to MTH arguments.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1938 NTH and/or MTH can be nil, which means the last argument.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1939 Returned arguments are separated by single spaces.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1940 We assume whitespace separates arguments, except within quotes.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1941 Also, a run of one or more of a single character
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1942 in `term-delimiter-argument-list' is a separate argument.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1943 Argument 0 is the command name."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1944 (let ((argpart "[^ \n\t\"'`]+\\|\\(\"[^\"]*\"\\|'[^']*'\\|`[^`]*`\\)")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1945 (args ()) (pos 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1946 (count 0)
15246
ba353653c03a (term-send-raw-string): send-string -> process-send-string.
Karl Heuer <kwzh@gnu.org>
parents: 15212
diff changeset
1947 beg str quotes)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1948 ;; 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
1949 (while (and (or (null mth) (<= count mth))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1950 (string-match argpart string pos))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1951 (if (and beg (= pos (match-beginning 0)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1952 ;; It's contiguous, part of the same arg.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1953 (setq pos (match-end 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1954 quotes (or quotes (match-beginning 1)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1955 ;; It's a new separate arg.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1956 (if beg
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1957 ;; Put the previous arg, if there was one, onto ARGS.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1958 (setq str (substring string beg pos)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1959 args (if quotes (cons str args)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1960 (nconc (term-delim-arg str) args))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1961 count (1+ count)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1962 (setq quotes (match-beginning 1))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1963 (setq beg (match-beginning 0))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1964 (setq pos (match-end 0))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1965 (if beg
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1966 (setq str (substring string beg pos)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1967 args (if quotes (cons str args)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1968 (nconc (term-delim-arg str) args))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1969 count (1+ count)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1970 (let ((n (or nth (1- count)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1971 (m (if mth (1- (- count mth)) 0)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1972 (mapconcat
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1973 (function (lambda (a) a)) (nthcdr n (nreverse (nthcdr m args))) " "))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1974
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1975 ;;;
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1976 ;;; Input processing stuff [line mode]
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1977 ;;;
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1978
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
1979 (defun term-send-input ()
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1980 "Send input to process.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1981 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
1982 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
1983 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
1984 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
1985 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
1986 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
1987 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
1988 term-input-filter returns non-nil when called on the input.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1989
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1990 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
1991 `term-input-autoexpand'. The list of function names contained in the value
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1992 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
1993 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
1994 `term-input-filter' returns non-nil when called on the input.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1995
10933
3057c4fd86d3 * term.el (term-eol-on-send): New variable. Use it.
Per Bothner <bothner@cygnus.com>
parents: 10679
diff changeset
1996 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
1997 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
1998
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1999 The values of `term-get-old-input', `term-input-filter-functions', and
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2000 `term-input-filter' are chosen according to the command interpreter running
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2001 in the buffer. E.g.,
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2002
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2003 If the interpreter is the csh,
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2004 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
2005 initial string matching regexp term-prompt-regexp.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2006 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
2007 \"popd\" commands. When it sees one, it cd's the buffer.
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2008 term-input-filter is the default: returns T if the input isn't all white
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2009 space.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2010
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2011 If the term is Lucid Common Lisp,
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2012 term-get-old-input snarfs the sexp ending at point.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2013 term-input-filter-functions does nothing.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2014 term-input-filter returns NIL if the input matches input-filter-regexp,
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2015 which matches (1) all whitespace (2) :a, :c, etc.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2016
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2017 Similarly for Soar, Scheme, etc."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2018 (interactive)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2019 ;; Note that the input string does not include its terminal newline.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2020 (let ((proc (get-buffer-process (current-buffer))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2021 (if (not proc) (error "Current buffer has no process")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2022 (let* ((pmark (process-mark proc))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2023 (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
2024 (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
2025 (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
2026 (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
2027 (buffer-substring pmark (point)))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2028 (funcall term-get-old-input)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2029 (input (if (not (eq term-input-autoexpand 'input))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2030 ;; Just whatever's already there
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2031 intxt
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2032 ;; Expand and leave it visible in buffer
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2033 (term-replace-by-expanded-history t)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2034 (buffer-substring pmark (point))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2035 (history (if (not (eq term-input-autoexpand 'history))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2036 input
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2037 ;; This is messy 'cos ultimately the original
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2038 ;; functions used do insertion, rather than return
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2039 ;; strings. We have to expand, then insert back.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2040 (term-replace-by-expanded-history t)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2041 (let ((copy (buffer-substring pmark (point))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2042 (delete-region pmark (point))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2043 (insert input)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2044 copy))))
10671
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
2045 (if (term-pager-enabled)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2046 (save-excursion
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2047 (goto-char (process-mark proc))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2048 (setq term-pager-count (term-current-row))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2049 (if (and (funcall term-input-filter history)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2050 (or (null term-input-ignoredups)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2051 (not (ring-p term-input-ring))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2052 (ring-empty-p term-input-ring)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2053 (not (string-equal (ring-ref term-input-ring 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2054 history))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2055 (ring-insert term-input-ring history))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2056 (let ((functions term-input-filter-functions))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2057 (while functions
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2058 (funcall (car functions) (concat input "\n"))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2059 (setq functions (cdr functions))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2060 (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
2061
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2062 ;; Update the markers before we send the input
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2063 ;; in case we get output amidst sending the input.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2064 (set-marker term-last-input-start pmark)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2065 (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
2066 (if input-is-new
3057c4fd86d3 * term.el (term-eol-on-send): New variable. Use it.
Per Bothner <bothner@cygnus.com>
parents: 10679
diff changeset
2067 (progn
3057c4fd86d3 * term.el (term-eol-on-send): New variable. Use it.
Per Bothner <bothner@cygnus.com>
parents: 10679
diff changeset
2068 ;; 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
2069 (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
2070 (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
2071 (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
2072 (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
2073 (goto-char pmark)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2074 (funcall term-input-sender proc input)))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2075
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2076 (defun term-get-old-input-default ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2077 "Default for term-get-old-input.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2078 Take the current line, and discard any initial text matching
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2079 term-prompt-regexp."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2080 (save-excursion
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2081 (beginning-of-line)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2082 (term-skip-prompt)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2083 (let ((beg (point)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2084 (end-of-line)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2085 (buffer-substring beg (point)))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2086
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2087 (defun term-copy-old-input ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2088 "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
2089 Calls `term-get-old-input' to get old input."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2090 (interactive)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2091 (let ((input (funcall term-get-old-input))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2092 (process (get-buffer-process (current-buffer))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2093 (if (not process)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2094 (error "Current buffer has no process")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2095 (goto-char (process-mark process))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2096 (insert input))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2097
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2098 (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
2099 "Skip past the text matching regexp term-prompt-regexp.
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2100 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
2101 (let ((eol (save-excursion (end-of-line) (point))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2102 (if (and (looking-at term-prompt-regexp)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2103 (<= (match-end 0) eol))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2104 (goto-char (match-end 0)))))
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
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2107 (defun term-after-pmark-p ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2108 "Is point after the process output marker?"
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2109 ;; 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
2110 ;; 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
2111 ;; 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
2112 ;; services input during execution of lisp commands.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2113 (let ((proc-pos (marker-position
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2114 (process-mark (get-buffer-process (current-buffer))))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2115 (<= proc-pos (point))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2116
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2117 (defun term-simple-send (proc string)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2118 "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
2119 This just sends STRING plus a newline. To override this,
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2120 set the hook TERM-INPUT-SENDER."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2121 (term-send-string proc string)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2122 (term-send-string proc "\n"))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2123
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2124 (defun term-bol (arg)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2125 "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
2126 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
2127 -- go straight to column 0.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2128
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2129 The prompt skip is done by skipping text matching the regular expression
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2130 term-prompt-regexp, a buffer local variable."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2131 (interactive "P")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2132 (beginning-of-line)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2133 (if (null arg) (term-skip-prompt)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2134
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2135 ;;; 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
2136 ;;; saved -- typically passwords to ftp, telnet, or somesuch.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2137 ;;; Just enter m-x term-send-invisible and type in your line.
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-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
2140 "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
2141 Prompt with argument PROMPT, a string. Optional argument STARS causes
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2142 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
2143 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
2144 `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
2145 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
2146
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2147 Note that the keystrokes comprising the text can still be recovered
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2148 \(temporarily) with \\[view-lossage]. This may be a security bug for some
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2149 applications."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2150 (let ((ans "")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2151 (c 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2152 (echo-keystrokes 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2153 (cursor-in-echo-area t)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2154 (done nil))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2155 (while (not done)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2156 (if stars
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2157 (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
2158 (message "%s" prompt))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2159 (setq c (read-char))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2160 (cond ((= c ?\C-g)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2161 ;; 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
2162 ;; inhibit-quit is set. In later versions of Emacs read-char
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2163 ;; may clear quit-flag itself and return C-g. That would make
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2164 ;; it impossible to quit this loop in a simple way, so
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2165 ;; re-enable it here (for backward-compatibility the check for
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2166 ;; quit-flag below would still be necessary, so this seems
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2167 ;; like the simplest way to do things).
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2168 (setq quit-flag t
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2169 done t))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2170 ((or (= c ?\r) (= c ?\n) (= c ?\e))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2171 (setq done t))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2172 ((= c ?\C-u)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2173 (setq ans ""))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2174 ((and (/= c ?\b) (/= c ?\177))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2175 (setq ans (concat ans (char-to-string c))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2176 ((> (length ans) 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2177 (setq ans (substring ans 0 -1)))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2178 (if quit-flag
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2179 ;; Emulate a true quit, except that we have to return a value.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2180 (prog1
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2181 (setq quit-flag nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2182 (message "Quit")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2183 (beep t))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2184 (message "")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2185 ans)))
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-send-invisible (str &optional proc)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2188 "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
2189 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
2190 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
2191 Security bug: your string can still be temporarily recovered with
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2192 \\[view-lossage]."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2193 (interactive "P") ; Defeat snooping via C-x esc
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2194 (if (not (stringp str))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2195 (setq str (term-read-noecho "Non-echoed text: " t)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2196 (if (not proc)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2197 (setq proc (get-buffer-process (current-buffer))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2198 (if (not proc) (error "Current buffer has no process")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2199 (setq term-kill-echo-list (nconc term-kill-echo-list
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2200 (cons str nil)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2201 (term-send-string proc str)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2202 (term-send-string proc "\n")))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2203
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2204
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2205 ;;; Low-level process communication
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2206
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2207 (defvar term-input-chunk-size 512
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2208 "*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
2209 If your process is choking on big inputs, try lowering the value.")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2210
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2211 (defun term-send-string (proc str)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2212 "Send PROCESS the contents of STRING as input.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2213 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
2214 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
2215 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
2216 from hanging when you send them long inputs on some OS's."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2217 (let* ((len (length str))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2218 (i (min len term-input-chunk-size)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2219 (process-send-string proc (substring str 0 i))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2220 (while (< i len)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2221 (let ((next-i (+ i term-input-chunk-size)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2222 (accept-process-output)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2223 (process-send-string proc (substring str i (min len next-i)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2224 (setq i next-i)))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2225
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2226 (defun term-send-region (proc start end)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2227 "Sends to PROC the region delimited by START and END.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2228 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
2229 your process from hanging on long inputs. See term-send-string."
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2230 (term-send-string proc (buffer-substring start end)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2231
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2232
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2233 ;;; Random input hackage
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2234
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2235 (defun term-kill-output ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2236 "Kill all output from interpreter since last input."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2237 (interactive)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2238 (let ((pmark (process-mark (get-buffer-process (current-buffer)))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2239 (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
2240 (goto-char pmark)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2241 (insert "*** output flushed ***\n")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2242 (set-marker pmark (point))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2243
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2244 (defun term-show-output ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2245 "Display start of this batch of interpreter output at top of window.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2246 Sets mark to the value of point when this command is run."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2247 (interactive)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2248 (goto-char term-last-input-end)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2249 (backward-char)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2250 (beginning-of-line)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2251 (set-window-start (selected-window) (point))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2252 (end-of-line))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2253
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2254 (defun term-interrupt-subjob ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2255 "Interrupt the current subjob."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2256 (interactive)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2257 (interrupt-process nil term-ptyp))
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 (defun term-kill-subjob ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2260 "Send kill signal to the current subjob."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2261 (interactive)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2262 (kill-process nil term-ptyp))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2263
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2264 (defun term-quit-subjob ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2265 "Send quit signal to the current subjob."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2266 (interactive)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2267 (quit-process nil term-ptyp))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2268
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2269 (defun term-stop-subjob ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2270 "Stop the current subjob.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2271 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
2272 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
2273 this, use \\[term-continue-subjob] to resume the process. (This
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2274 is not a problem with most shells, since they ignore this signal.)"
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2275 (interactive)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2276 (stop-process nil term-ptyp))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2277
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2278 (defun term-continue-subjob ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2279 "Send CONT signal to process buffer's process group.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2280 Useful if you accidentally suspend the top-level process."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2281 (interactive)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2282 (continue-process nil term-ptyp))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2283
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2284 (defun term-kill-input ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2285 "Kill all text from last stuff output by interpreter to point."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2286 (interactive)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2287 (let* ((pmark (process-mark (get-buffer-process (current-buffer))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2288 (p-pos (marker-position pmark)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2289 (if (> (point) p-pos)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2290 (kill-region pmark (point)))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2291
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2292 (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
2293 "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
2294 buffer."
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2295 (interactive "p")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2296 (if (eobp)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2297 (process-send-eof)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2298 (delete-char arg)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2299
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2300 (defun term-send-eof ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2301 "Send an EOF to the current buffer's process."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2302 (interactive)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2303 (process-send-eof))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2304
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2305 (defun term-backward-matching-input (regexp arg)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2306 "Search backward through buffer for match for REGEXP.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2307 Matches are searched for on lines that match `term-prompt-regexp'.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2308 With prefix argument N, search for Nth previous match.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2309 If N is negative, find the next or Nth next match."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2310 (interactive (term-regexp-arg "Backward input matching (regexp): "))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2311 (let* ((re (concat term-prompt-regexp ".*" regexp))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2312 (pos (save-excursion (end-of-line (if (> arg 0) 0 1))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2313 (if (re-search-backward re nil t arg)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2314 (point)))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2315 (if (null pos)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2316 (progn (message "Not found")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2317 (ding))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2318 (goto-char pos)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2319 (term-bol nil))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2320
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2321 (defun term-forward-matching-input (regexp arg)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2322 "Search forward through buffer for match for REGEXP.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2323 Matches are searched for on lines that match `term-prompt-regexp'.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2324 With prefix argument N, search for Nth following match.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2325 If N is negative, find the previous or Nth previous match."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2326 (interactive (term-regexp-arg "Forward input matching (regexp): "))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2327 (term-backward-matching-input regexp (- arg)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2328
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2329
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2330 (defun term-next-prompt (n)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2331 "Move to end of Nth next prompt in the buffer.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2332 See `term-prompt-regexp'."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2333 (interactive "p")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2334 (let ((paragraph-start term-prompt-regexp))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2335 (end-of-line (if (> n 0) 1 0))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2336 (forward-paragraph n)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2337 (term-skip-prompt)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2338
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2339 (defun term-previous-prompt (n)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2340 "Move to end of Nth previous prompt in the buffer.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2341 See `term-prompt-regexp'."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2342 (interactive "p")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2343 (term-next-prompt (- n)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2344
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2345 ;;; Support for source-file processing commands.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2346 ;;;============================================================================
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2347 ;;; Many command-interpreters (e.g., Lisp, Scheme, Soar) have
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2348 ;;; 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
2349 ;;; 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
2350 ;;; 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
2351 ;;; for defining these commands.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2352 ;;;
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2353 ;;; 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
2354 ;;; and Soar, in that they don't know anything about file extensions.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2355 ;;; So the compile/load interface gets the wrong default occasionally.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2356 ;;; The load-file/compile-file default mechanism could be smarter -- it
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2357 ;;; 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
2358 ;;; 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
2359 ;;; 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
2360 ;;; 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
2361 ;;; because the extension for executable files varies so much (.o, .bin,
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2362 ;;; .lbin, .mo, .vo, .ao, ...).
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2363
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2364
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2365 ;;; TERM-SOURCE-DEFAULT -- determines defaults for source-file processing
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2366 ;;; commands.
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 ;;; 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
2369 ;;; 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
2370 ;;; interpreter.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2371 ;;;
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2372 ;;; TERM-GET-SOURCE -- used by the source-file processing commands to prompt
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2373 ;;; for the file to process.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2374
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2375 ;;; (TERM-SOURCE-DEFAULT previous-dir/file source-modes)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2376 ;;;============================================================================
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2377 ;;; 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
2378 ;;; 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
2379 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2380 ;;; - 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
2381 ;;; 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
2382 ;;; - SOURCE-MODES is a list used to determine what buffers contain source
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2383 ;;; 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
2384 ;;; 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
2385 ;;;
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2386 ;;; 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
2387 ;;; 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
2388 ;;; 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
2389 ;;; 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
2390 ;;;
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2391 ;;; If the command is given in a file buffer whose major mode is in
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2392 ;;; SOURCE-MODES, then the the filename is the default file, and the
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2393 ;;; 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
2394 ;;;
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2395 ;;; 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
2396 ;;; 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
2397 ;;; 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
2398 ;;; 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
2399 ;;; 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
2400 ;;;
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2401 ;;; SOURCE-REGEXP is typically going to be something like (tea-mode)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2402 ;;; for T programs, (lisp-mode) for Lisp programs, (soar-mode lisp-mode)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2403 ;;; 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
2404 ;;;
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2405 ;;; The function returns a pair: (default-directory . default-file).
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2406
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2407 (defun term-source-default (previous-dir/file source-modes)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2408 (cond ((and buffer-file-name (memq major-mode source-modes))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2409 (cons (file-name-directory buffer-file-name)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2410 (file-name-nondirectory buffer-file-name)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2411 (previous-dir/file)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2412 (t
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2413 (cons default-directory nil))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2414
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2415
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2416 ;;; (TERM-CHECK-SOURCE fname)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2417 ;;;============================================================================
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2418 ;;; 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
2419 ;;; 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
2420 ;;; 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
2421 ;;; 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
2422 ;;; the load or compile.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2423
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2424 (defun term-check-source (fname)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2425 (let ((buff (get-file-buffer fname)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2426 (if (and buff
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2427 (buffer-modified-p buff)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2428 (y-or-n-p (format "Save buffer %s first? "
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2429 (buffer-name buff))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2430 ;; save BUFF.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2431 (let ((old-buffer (current-buffer)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2432 (set-buffer buff)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2433 (save-buffer)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2434 (set-buffer old-buffer)))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2435
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 ;;; (TERM-GET-SOURCE prompt prev-dir/file source-modes mustmatch-p)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2438 ;;;============================================================================
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2439 ;;; TERM-GET-SOURCE is used to prompt for filenames in command-interpreter
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2440 ;;; commands that process source files (like loading or compiling a file).
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2441 ;;; It prompts for the filename, provides a default, if there is one,
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2442 ;;; 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
2443 ;;;
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2444 ;;; 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
2445 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2446 ;;; 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
2447 ;;; 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
2448 ;;; 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
2449 ;;; 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
2450 ;;; 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
2451 ;;;
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2452 ;;; A typical use:
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2453 ;;; (interactive (term-get-source "Compile file: " prev-lisp-dir/file
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2454 ;;; '(lisp-mode) t))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2455
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2456 ;;; 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
2457 ;;; 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
2458 (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
2459 "Returns string around POINT that starts the current line or nil."
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2460 (save-excursion
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2461 (let* ((point (point))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2462 (bol (progn (beginning-of-line) (point)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2463 (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
2464 (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
2465 (and (search-backward "\"" bol t)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2466 (1+ (point)))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2467 (end (progn (goto-char point)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2468 (and (search-forward "\"" eol t)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2469 (1- (point))))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2470 (and start end
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2471 (buffer-substring start end)))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2472
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2473 (defun term-get-source (prompt prev-dir/file source-modes mustmatch-p)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2474 (let* ((def (term-source-default prev-dir/file source-modes))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2475 (stringfile (term-extract-string))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2476 (sfile-p (and stringfile
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2477 (condition-case ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2478 (file-exists-p stringfile)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2479 (error nil))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2480 (not (file-directory-p stringfile))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2481 (defdir (if sfile-p (file-name-directory stringfile)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2482 (car def)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2483 (deffile (if sfile-p (file-name-nondirectory stringfile)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2484 (cdr def)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2485 (ans (read-file-name (if deffile (format "%s(default %s) "
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2486 prompt deffile)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2487 prompt)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2488 defdir
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2489 (concat defdir deffile)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2490 mustmatch-p)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2491 (list (expand-file-name (substitute-in-file-name ans)))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2492
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2493 ;;; I am somewhat divided on this string-default feature. It seems
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2494 ;;; to violate the principle-of-least-astonishment, in that it makes
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2495 ;;; 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
2496 ;;; 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
2497 ;;; 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
2498 ;;; on this.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2499 ;;; -Olin
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2500
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2501
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2502 ;;; Simple process query facility.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2503 ;;; ===========================================================================
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2504 ;;; 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
2505 ;;; 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
2506 ;;; arglist for a Common Lisp function might send a "(arglist 'foo)" query
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2507 ;;; 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
2508 ;;;
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2509 ;;; This simple facility just sends strings to the inferior process and pops
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2510 ;;; 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
2511 ;;; 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
2512 ;;; 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
2513 ;;; 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
2514
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2515 ;;; 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
2516 ;;; 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
2517 (defun term-proc-query (proc str)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2518 (let* ((proc-buf (process-buffer proc))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2519 (proc-mark (process-mark proc)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2520 (display-buffer proc-buf)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2521 (set-buffer proc-buf) ; but it's not the selected *window*
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2522 (let ((proc-win (get-buffer-window proc-buf))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2523 (proc-pt (marker-position proc-mark)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2524 (term-send-string proc str) ; send the query
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2525 (accept-process-output proc) ; wait for some output
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2526 ;; 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
2527 ;; 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
2528 ;; I don't know why. Wizards invited to improve it.
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2529 (if (not (pos-visible-in-window-p proc-pt proc-win))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2530 (let ((opoint (window-point proc-win)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2531 (set-window-point proc-win proc-mark) (sit-for 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2532 (if (not (pos-visible-in-window-p opoint proc-win))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2533 (push-mark opoint)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2534 (set-window-point proc-win opoint)))))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2535
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2536 ;;; Returns the current column in the current screen line.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2537 ;;; Note: (current-column) yields column in buffer line.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2538
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2539 (defun term-horizontal-column ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2540 (- (term-current-column) (term-start-line-column)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2541
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2542 ;; Calls either vertical-motion or buffer-vertical-motion
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2543 (defmacro term-vertical-motion (count)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2544 (list 'funcall 'term-vertical-motion count))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2545
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2546 ;; An emulation of vertical-motion that is independent of having a window.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2547 ;; Instead, it uses the term-width variable as the logical window width.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2548
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2549 (defun buffer-vertical-motion (count)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2550 (cond ((= count 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2551 (move-to-column (* term-width (/ (current-column) term-width)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2552 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2553 ((> count 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2554 (let ((H)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2555 (todo (+ count (/ (current-column) term-width))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2556 (end-of-line)
13961
ff6ac63de609 (term-process-pager): Fix message spelling.
Karl Heuer <kwzh@gnu.org>
parents: 13337
diff changeset
2557 ;; The loop iterates over buffer lines;
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2558 ;; 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
2559 ;; the ceiling of dividing the buffer line width by term-width.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2560 (while (and (<= (setq H (max (/ (+ (current-column) term-width -1)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2561 term-width)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2562 1))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2563 todo)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2564 (not (eobp)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2565 (setq todo (- todo H))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2566 (forward-char) ;; Move past the ?\n
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2567 (end-of-line)) ;; and on to the end of the next line.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2568 (if (and (>= todo H) (> todo 0))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2569 (+ (- count todo) H -1) ;; Hit end of buffer.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2570 (move-to-column (* todo term-width))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2571 count)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2572 (t ;; (< count 0) ;; Similar algorithm, but for upward motion.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2573 (let ((H)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2574 (todo (- count)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2575 (while (and (<= (setq H (max (/ (+ (current-column) term-width -1)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2576 term-width)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2577 1))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2578 todo)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2579 (progn (beginning-of-line)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2580 (not (bobp))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2581 (setq todo (- todo H))
13961
ff6ac63de609 (term-process-pager): Fix message spelling.
Karl Heuer <kwzh@gnu.org>
parents: 13337
diff changeset
2582 (backward-char)) ;; Move to end of previous line.
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2583 (if (and (>= todo H) (> todo 0))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2584 (+ count todo (- 1 H)) ;; Hit beginning of buffer.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2585 (move-to-column (* (- H todo 1) term-width))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2586 count)))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2587
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2588 ;;; The term-start-line-column variable is used as a cache.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2589 (defun term-start-line-column ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2590 (cond (term-start-line-column)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2591 ((let ((save-pos (point)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2592 (term-vertical-motion 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2593 (setq term-start-line-column (current-column))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2594 (goto-char save-pos)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2595 term-start-line-column))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2596
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2597 ;;; Same as (current-column), but uses term-current-column as a cache.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2598 (defun term-current-column ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2599 (cond (term-current-column)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2600 ((setq term-current-column (current-column)))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2601
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2602 ;;; Move DELTA column right (or left if delta < 0).
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2603
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2604 (defun term-move-columns (delta)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2605 (setq term-current-column (+ (term-current-column) delta))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2606 (move-to-column term-current-column t))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2607
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2608 ;; Insert COUNT copies of CHAR in the default face.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2609 (defun term-insert-char (char count)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2610 (let ((old-point (point)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2611 (insert-char char count)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2612 (put-text-property old-point (point) 'face 'default)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2613
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2614 (defun term-current-row ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2615 (cond (term-current-row)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2616 ((setq term-current-row
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2617 (save-restriction
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2618 (save-excursion
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2619 (narrow-to-region term-home-marker (point-max))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2620 (- (term-vertical-motion -9999))))))))
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 (defun term-adjust-current-row-cache (delta)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2623 (if term-current-row
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2624 (setq term-current-row (+ term-current-row delta))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2625
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2626 (defun term-terminal-pos ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2627 (save-excursion ; save-restriction
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2628 (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
2629 x y)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2630 (term-vertical-motion 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2631 (setq x (- save-col (current-column)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2632 (setq y (term-vertical-motion term-height))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2633 (cons x y))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2634
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2635 ;;;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
2636 ;;;difference ;-) -mm
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2637
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2638 (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
2639 ;; 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
2640 (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
2641 ;; 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
2642 (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
2643 (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
2644 (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
2645 (argument
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2646 (save-match-data
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2647 (substring message
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2648 (+ start 8)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2649 (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
2650 (+ start 8)))))
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2651 ignore)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2652 ;; 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
2653 (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
2654
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2655 ;; 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
2656 (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
2657 (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
2658 ((= command-code ?h)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2659 (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
2660 ((= command-code ?u)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2661 (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
2662 ;; 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
2663 (t
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2664 (setq ignore t)))
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2665
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2666 ;; 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
2667 (if ignore
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2668 nil
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2669 (setq default-directory
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2670 (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
2671 (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
2672 (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
2673 (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
2674 (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
2675 (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
2676 (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
2677 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
2678
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2679 ;; 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
2680 ;; 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
2681 (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
2682 (progn
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2683 (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
2684 (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
2685 (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
2686 (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
2687 (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
2688 (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
2689 (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
2690 (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
2691 (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
2692 message)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2693
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2694
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2695 ;;; Terminal emulation
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2696 ;;; This is the standard process filter for term buffers.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2697 ;;; It emulates (most of the features of) a VT100/ANSI-style terminal.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2698
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2699 (defun term-emulate-terminal (proc str)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2700 (let* ((previous-buffer (current-buffer))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2701 (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
2702 (selected (selected-window))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2703 (str-length (length str)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2704 (unwind-protect
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2705 (progn
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2706 (set-buffer (process-buffer proc))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2707
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2708 ;;; 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
2709
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2710 (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
2711 (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
2712
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2713 (if (marker-buffer term-pending-delete-marker)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2714 (progn
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2715 ;; Delete text following term-pending-delete-marker.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2716 (delete-region term-pending-delete-marker (process-mark proc))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2717 (set-marker term-pending-delete-marker nil)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2718
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2719 (if (eq (window-buffer) (current-buffer))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2720 (progn
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2721 (setq term-vertical-motion (symbol-function 'vertical-motion))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2722 (term-check-size proc))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2723 (setq term-vertical-motion
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2724 (symbol-function 'buffer-vertical-motion)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2725
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2726 (setq save-marker (copy-marker (process-mark proc)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2727
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2728 (if (/= (point) (process-mark proc))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2729 (progn (setq save-point (point-marker))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2730 (goto-char (process-mark proc))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2731
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2732 (save-restriction
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2733 ;; If the buffer is in line mode, and there is a partial
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2734 ;; input line, save the line (by narrowing to leave it
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2735 ;; outside the restriction ) until we're done with output.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2736 (if (and (> (point-max) (process-mark proc))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2737 (term-in-line-mode))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2738 (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
2739
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2740 (if term-log-buffer
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2741 (princ str term-log-buffer))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2742 (cond ((eq term-terminal-state 4) ;; Have saved pending output.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2743 (setq str (concat term-terminal-parameter str))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2744 (setq term-terminal-parameter nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2745 (setq str-length (length str))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2746 (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
2747
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2748 (while (< i str-length)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2749 (setq char (aref str i))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2750 (cond ((< term-terminal-state 2)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2751 ;; Look for prefix of regular chars
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2752 (setq funny
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2753 (string-match "[\r\n\000\007\033\t\b\032\016\017]"
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2754 str i))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2755 (if (not funny) (setq funny str-length))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2756 (cond ((> funny i)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2757 (cond ((eq term-terminal-state 1)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2758 (term-move-columns 1)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2759 (setq term-terminal-state 0)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2760 (setq count (- funny i))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2761 (setq temp (- (+ (term-horizontal-column) count)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2762 term-width))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2763 (cond ((<= temp 0)) ;; All count chars fit in line.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2764 ((> count temp) ;; Some chars fit.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2765 ;; This iteration, handle only what fits.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2766 (setq count (- count temp))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2767 (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
2768 ((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
2769 term-scroll-with-delete))
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
2770 (> (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
2771 (term-adjust-current-row-cache 1)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2772 (setq count (min count term-width))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2773 (setq funny (+ count i))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2774 (setq term-start-line-column
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2775 term-current-column))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2776 (t ;; Doing PAGER processing.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2777 (setq count 0 funny i)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2778 (setq term-current-column nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2779 (setq term-start-line-column nil)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2780 (setq old-point (point))
12229
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
2781 ;; In the common case that we're at the end of
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
2782 ;; the buffer, we can save a little work.
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
2783 (cond ((/= (point) (point-max))
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
2784 (if term-insert-mode
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
2785 ;; Inserting spaces, then deleting them,
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
2786 ;; then inserting the actual text is
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
2787 ;; inefficient, but it is simple, and
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
2788 ;; the actual overhead is miniscule.
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
2789 (term-insert-spaces count))
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
2790 (term-move-columns count)
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
2791 (delete-region old-point (point)))
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
2792 (t (setq term-current-column (+ (term-current-column) count))))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2793 (insert (substring str i funny))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2794 (put-text-property old-point (point)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2795 'face term-current-face)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2796 ;; If the last char was written in last column,
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2797 ;; back up one column, but remember we did so.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2798 ;; Thus we emulate xterm/vt100-style line-wrapping.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2799 (cond ((eq temp 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2800 (term-move-columns -1)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2801 (setq term-terminal-state 1)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2802 (setq i (1- funny)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2803 ((and (setq term-terminal-state 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2804 (eq char ?\^I)) ; TAB
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2805 ;; FIXME: Does not handle line wrap!
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2806 (setq count (term-current-column))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2807 (setq count (+ count 8 (- (mod count 8))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2808 (if (< (move-to-column count nil) count)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2809 (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
2810 (setq term-current-column count))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2811 ((eq char ?\r)
12229
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
2812 ;; 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
2813 (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
2814 (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
2815 (= (point) (point-max))
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
2816 (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
2817 term-kill-echo-list
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
2818 term-scroll-with-delete)))
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
2819 (insert ?\n)
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
2820 (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
2821 (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
2822 (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
2823 (setq i temp))
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
2824 (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
2825 (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
2826 (setq term-current-column term-start-line-column))))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2827 ((eq char ?\n)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2828 (if (not (and term-kill-echo-list
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2829 (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
2830 (term-down 1 t)))
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
2831 ((eq char ?\b)
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
2832 (term-move-columns -1))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2833 ((eq char ?\033) ; Escape
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2834 (setq term-terminal-state 2))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2835 ((eq char 0)) ; NUL: Do nothing
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2836 ((eq char ?\016)) ; Shift Out - ignored
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2837 ((eq char ?\017)) ; Shift In - ignored
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2838 ((eq char ?\^G)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2839 (beep t)) ; Bell
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2840 ((eq char ?\032)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2841 (let ((end (string-match "\n" str i)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2842 (if end
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2843 (progn (funcall term-command-hook
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2844 (substring str (1+ i) (1- end)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2845 (setq i end))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2846 (setq term-terminal-parameter
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2847 (substring str i))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2848 (setq term-terminal-state 4)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2849 (setq i str-length))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2850 (t ; insert char FIXME: Should never happen
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2851 (term-move-columns 1)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2852 (backward-delete-char 1)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2853 (insert char))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2854 ((eq term-terminal-state 2) ; Seen Esc
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2855 (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
2856
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2857 ;;; 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
2858 ;;; 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
2859 ;;; 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
2860
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2861 (make-local-variable 'term-terminal-parameter)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2862 (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
2863 (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
2864 (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
2865 (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
2866 (make-local-variable 'term-terminal-more-parameters)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2867 (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
2868 (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
2869 (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
2870 (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
2871 (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
2872 (setq term-terminal-more-parameters 0)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2873 (setq term-terminal-state 3))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2874 ((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
2875 (term-handle-deferred-scroll)
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
2876 (term-down 1 t)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2877 (setq term-terminal-state 0))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2878 ((eq char ?M) ;; scroll reversed
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2879 (term-insert-lines 1)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2880 (setq term-terminal-state 0))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2881 ((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
2882 (term-handle-deferred-scroll)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2883 (setq term-saved-cursor
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2884 (cons (term-current-row)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2885 (term-horizontal-column)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2886 (setq term-terminal-state 0))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2887 ((eq char ?8) ;; Restore cursor
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2888 (if term-saved-cursor
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2889 (term-goto (car term-saved-cursor)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2890 (cdr term-saved-cursor)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2891 (setq term-terminal-state 0))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2892 ((setq term-terminal-state 0))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2893 ((eq term-terminal-state 3) ; Seen Esc [
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2894 (cond ((and (>= char ?0) (<= char ?9))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2895 (setq term-terminal-parameter
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2896 (+ (* 10 term-terminal-parameter) (- char ?0))))
23311
fd4a0e88aed5 (term-delimiter-argument-list): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents: 20153
diff changeset
2897 ((eq char ?\;)
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2898 ;;; 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
2899 (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
2900 (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
2901 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
2902 (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
2903 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
2904 (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
2905 term-terminal-previous-parameter)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2906 (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
2907 term-terminal-parameter)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2908 (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
2909 ((eq char ??)) ; Ignore ?
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2910 (t
10671
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
2911 (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
2912 (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
2913 (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
2914 (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
2915 (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
2916 (setq term-terminal-previous-parameter -1)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2917 (setq term-terminal-state 0)))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2918 (if (term-handling-pager)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2919 ;; Finish stuff to get ready to handle PAGER.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2920 (progn
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2921 (if (> (% (current-column) term-width) 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2922 (setq term-terminal-parameter
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2923 (substring str i))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2924 ;; We're at column 0. Goto end of buffer; to compensate,
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2925 ;; prepend a ?\r for later. This looks more consistent.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2926 (if (zerop i)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2927 (setq term-terminal-parameter
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2928 (concat "\r" (substring str i)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2929 (setq term-terminal-parameter (substring str (1- i)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2930 (aset term-terminal-parameter 0 ?\r))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2931 (goto-char (point-max)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2932 (setq term-terminal-state 4)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2933 (make-local-variable 'term-pager-old-filter)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2934 (setq term-pager-old-filter (process-filter proc))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2935 (set-process-filter proc term-pager-filter)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2936 (setq i str-length)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2937 (setq i (1+ i))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2938
12229
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
2939 (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
2940 (term-handle-deferred-scroll))
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
2941
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2942 (set-marker (process-mark proc) (point))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2943 (if save-point
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2944 (progn (goto-char save-point)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2945 (set-marker save-point nil)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2946
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2947 ;; Check for a pending filename-and-line number to display.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2948 ;; We do this before scrolling, because we might create a new window.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2949 (if (and term-pending-frame
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2950 (eq (window-buffer selected) (current-buffer)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2951 (progn (term-display-line (car term-pending-frame)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2952 (cdr term-pending-frame))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2953 (setq term-pending-frame nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2954 ;; We have created a new window, so check the window size.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2955 (term-check-size proc)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2956
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2957 ;; Scroll each window displaying the buffer but (by default)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2958 ;; only if the point matches the process-mark we started with.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2959 (setq win selected)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2960 (while (progn
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2961 (setq win (next-window win nil t))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2962 (if (eq (window-buffer win) (process-buffer proc))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2963 (let ((scroll term-scroll-to-bottom-on-output))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2964 (select-window win)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2965 (if (or (= (point) save-marker)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2966 (eq scroll t) (eq scroll 'all)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2967 ;; Maybe user wants point to jump to the end.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2968 (and (eq selected win)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2969 (or (eq scroll 'this) (not save-point)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2970 (and (eq scroll 'others)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2971 (not (eq selected win))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2972 (progn
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2973 (goto-char term-home-marker)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2974 (recenter 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2975 (goto-char (process-mark proc))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2976 (if (not (pos-visible-in-window-p (point) win))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2977 (recenter -1))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2978 ;; Optionally scroll so that the text
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2979 ;; ends at the bottom of the window.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2980 (if (and term-scroll-show-maximum-output
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2981 (>= (point) (process-mark proc)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2982 (save-excursion
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2983 (goto-char (point-max))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2984 (recenter -1)))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2985 (not (eq win selected))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2986
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2987 ;;; 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
2988 (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
2989 (save-excursion
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2990 (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
2991 (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
2992 (beginning-of-line)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2993 (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
2994 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2995
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2996 (set-marker save-marker nil))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2997 ;; unwind-protect cleanup-forms follow:
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2998 (set-buffer previous-buffer)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2999 (select-window selected))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3000
12229
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
3001 (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
3002 (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
3003 (if (>= count 0)
12229
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
3004 (save-excursion
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
3005 (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
3006 (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
3007 (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
3008 (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
3009
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3010 ;;; 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
3011 ;;; 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
3012
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3013 (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
3014 (cond
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3015
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3016 ;;; Bold
17814
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
3017 ((eq parameter 1)
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
3018 (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
3019
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3020 ;;; Underline
17814
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
3021 ((eq parameter 4)
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
3022 (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
3023
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3024 ;;; 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
3025 ;;; 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
3026 ((eq parameter 5)
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
3027 (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
3028
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3029 ;;; Reverse
17814
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
3030 ((eq parameter 7)
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
3031 (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
3032
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3033 ;;; Invisible
17814
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
3034 ((eq parameter 8)
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
3035 (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
3036
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
3037 ((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
3038 (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
3039
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
3040 ((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
3041 (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
3042
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3043 ;;; 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
3044 (t
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
3045 (setq term-current-face
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
3046 (list 'term-default-fg 'term-default-bg))
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
3047 (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
3048 (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
3049 (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
3050 (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
3051 (setq term-ansi-current-invisible 0)
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
3052 (setq term-ansi-face-alredy-done 1)
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
3053 (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
3054
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3055 ; (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
3056 ; 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
3057 ; 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
3058 ; 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
3059 ; term-ansi-current-invisible
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3060 ; term-ansi-face-alredy-done
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3061 ; 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
3062 ; 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
3063
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3064
17814
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
3065 (if (= term-ansi-face-alredy-done 0)
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
3066 (if (= term-ansi-current-reverse 1)
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
3067 (progn
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
3068 (if (= 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
3069 (if (= 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
3070 (setq term-current-face
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
3071 '(term-default-bg-inv term-default-fg))
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
3072 (setq term-current-face
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
3073 (list (elt ansi-term-inv-fg-faces-vector term-ansi-current-color)
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
3074 (elt ansi-term-inv-bg-faces-vector term-ansi-current-color))))
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
3075 ;; No need to bother with anything else if it's invisible
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
3076 (progn
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
3077 (setq term-current-face
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
3078 (list (elt ansi-term-inv-fg-faces-vector term-ansi-current-color)
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
3079 (elt ansi-term-inv-bg-faces-vector term-ansi-current-bg-color)))
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
3080 (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
3081 (setq term-current-face
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
3082 (append '(term-bold) term-current-face)))
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
3083 (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
3084 (setq term-current-face
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
3085 (append '(term-underline) term-current-face))))))
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
3086 (if (= 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
3087 (if (= term-ansi-current-bg-color 0)
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
3088 (setq term-current-face
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
3089 '(term-default-fg-inv term-default-bg))
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
3090 (setq term-current-face
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
3091 (list (elt ansi-term-fg-faces-vector term-ansi-current-bg-color)
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
3092 (elt ansi-term-bg-faces-vector term-ansi-current-bg-color))))
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
3093 ;; No need to bother with anything else if it's invisible
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
3094 (setq term-current-face
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
3095 (list (elt ansi-term-fg-faces-vector term-ansi-current-color)
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
3096 (elt ansi-term-bg-faces-vector term-ansi-current-bg-color)))
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
3097 (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
3098 (setq term-current-face
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
3099 (append '(term-bold) term-current-face)))
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
3100 (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
3101 (setq term-current-face
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
3102 (append '(term-underline) 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
3103
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3104 ; (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
3105
17814
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
3106 (setq term-ansi-face-alredy-done 0))
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3107
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3108
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3109 ;;; 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
3110 ;;; i.e. we have previously seen Escape followed by ?[.
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3111
10671
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
3112 (defun term-handle-ansi-escape (proc char)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3113 (cond
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3114 ((eq char ?H) ; cursor motion
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3115 (if (<= term-terminal-parameter 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3116 (setq term-terminal-parameter 1))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3117 (if (<= term-terminal-previous-parameter 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3118 (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
3119 (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
3120 (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
3121 (if (> term-terminal-parameter term-width)
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
3122 (setq term-terminal-parameter term-width))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3123 (term-goto
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3124 (1- term-terminal-previous-parameter)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3125 (1- term-terminal-parameter)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3126 ;; \E[A - cursor up
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3127 ((eq char ?A)
12229
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
3128 (term-handle-deferred-scroll)
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
3129 (term-down (- (max 1 term-terminal-parameter)) t))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3130 ;; \E[B - cursor down
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3131 ((eq char ?B)
12229
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
3132 (term-down (max 1 term-terminal-parameter) t))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3133 ;; \E[C - cursor right
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3134 ((eq char ?C)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3135 (term-move-columns (max 1 term-terminal-parameter)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3136 ;; \E[D - cursor left
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3137 ((eq char ?D)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3138 (term-move-columns (- (max 1 term-terminal-parameter))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3139 ;; \E[J - clear to end of screen
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3140 ((eq char ?J)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3141 (term-erase-in-display term-terminal-parameter))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3142 ;; \E[K - clear to end of line
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3143 ((eq char ?K)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3144 (term-erase-in-line term-terminal-parameter))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3145 ;; \E[L - insert lines
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3146 ((eq char ?L)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3147 (term-insert-lines (max 1 term-terminal-parameter)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3148 ;; \E[M - delete lines
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3149 ((eq char ?M)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3150 (term-delete-lines (max 1 term-terminal-parameter)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3151 ;; \E[P - delete chars
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3152 ((eq char ?P)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3153 (term-delete-chars (max 1 term-terminal-parameter)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3154 ;; \E[@ - insert spaces
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3155 ((eq char ?@)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3156 (term-insert-spaces (max 1 term-terminal-parameter)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3157 ;; \E[?h - DEC Private Mode Set
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3158 ((eq char ?h)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3159 (cond ((eq term-terminal-parameter 4)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3160 (setq term-insert-mode t))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3161 ((eq term-terminal-parameter 47)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3162 (term-switch-to-alternate-sub-buffer t))))
10044
c840b3eb9015 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 9603
diff changeset
3163 ;; \E[?l - DEC Private Mode Reset
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3164 ((eq char ?l)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3165 (cond ((eq term-terminal-parameter 4)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3166 (setq term-insert-mode nil))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3167 ((eq term-terminal-parameter 47)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3168 (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
3169
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3170 ;;; Modified to allow ansi coloring -mm
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3171 ;; \E[m - Set/reset standard mode
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3172 ((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
3173 (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
3174 (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
3175 (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
3176 (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
3177 (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
3178 (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
3179 (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
3180 (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
3181 (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
3182
10671
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
3183 ;; \E[6n - Report cursor position
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
3184 ((eq char ?n)
12229
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
3185 (term-handle-deferred-scroll)
10671
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
3186 (process-send-string proc
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
3187 (format "\e[%s;%sR"
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
3188 (1+ (term-current-row))
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
3189 (1+ (term-horizontal-column)))))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3190 ;; \E[r - Set scrolling region
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3191 ((eq char ?r)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3192 (term-scroll-region
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3193 (1- term-terminal-previous-parameter)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3194 term-terminal-parameter))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3195 (t)))
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-scroll-region (top bottom)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3198 "Set scrolling region.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3199 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
3200 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
3201 The top-most line is line 0."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3202 (setq term-scroll-start
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3203 (if (or (< top 0) (>= top term-height))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3204 0
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3205 top))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3206 (setq term-scroll-end
10671
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
3207 (if (or (<= bottom term-scroll-start) (> bottom term-height))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3208 term-height
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3209 bottom))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3210 (setq term-scroll-with-delete
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3211 (or (term-using-alternate-sub-buffer)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3212 (not (and (= term-scroll-start 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3213 (= term-scroll-end term-height))))))
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 (defun term-switch-to-alternate-sub-buffer (set)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3216 ;; 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
3217 ;; 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
3218 ;; 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
3219 (term-handle-deferred-scroll)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3220 (if (eq set (not (term-using-alternate-sub-buffer)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3221 (let ((row (term-current-row))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3222 (col (term-horizontal-column)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3223 (cond (set
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3224 (goto-char (point-max))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3225 (if (not (eq (preceding-char) ?\n))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3226 (term-insert-char ?\n 1))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3227 (setq term-scroll-with-delete t)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3228 (setq term-saved-home-marker (copy-marker term-home-marker))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3229 (set-marker term-home-marker (point)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3230 (t
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3231 (setq term-scroll-with-delete
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3232 (not (and (= term-scroll-start 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3233 (= term-scroll-end term-height))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3234 (set-marker term-home-marker term-saved-home-marker)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3235 (set-marker term-saved-home-marker nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3236 (setq term-saved-home-marker nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3237 (goto-char term-home-marker)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3238 (setq term-current-column nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3239 (setq term-current-row 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3240 (term-goto row col))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3241
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3242 ;; Default value for the symbol term-command-hook.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3243
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3244 (defun term-command-hook (string)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3245 (cond ((= (aref string 0) ?\032)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3246 ;; gdb (when invoked with -fullname) prints:
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3247 ;; \032\032FULLFILENAME:LINENUMBER:CHARPOS:BEG_OR_MIDDLE:PC\n
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3248 (let* ((first-colon (string-match ":" string 1))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3249 (second-colon
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3250 (string-match ":" string (1+ first-colon)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3251 (filename (substring string 1 first-colon))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3252 (fileline (string-to-int
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3253 (substring string (1+ first-colon) second-colon))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3254 (setq term-pending-frame (cons filename fileline))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3255 ((= (aref string 0) ?/)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3256 (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
3257 ;; 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
3258 ;; probably too big a security hole.
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
3259 ;; ((= (aref string 0) ?!)
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
3260 ;; (eval (car (read-from-string string 1))))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3261 (t)));; Otherwise ignore it
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3262
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3263 ;; 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
3264 ;; and that its line LINE is visible.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3265 ;; Put the overlay-arrow on the line LINE in that buffer.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3266 ;; This is mainly used by gdb.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3267
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3268 (defun term-display-line (true-file line)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3269 (term-display-buffer-line (find-file-noselect true-file) line))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3270
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3271 (defun term-display-buffer-line (buffer line)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3272 (let* ((window (display-buffer buffer t))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3273 (pos))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3274 (save-excursion
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3275 (set-buffer buffer)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3276 (save-restriction
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3277 (widen)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3278 (goto-line line)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3279 (setq pos (point))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3280 (setq overlay-arrow-string "=>")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3281 (or overlay-arrow-position
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3282 (setq overlay-arrow-position (make-marker)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3283 (set-marker overlay-arrow-position (point) (current-buffer)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3284 (cond ((or (< pos (point-min)) (> pos (point-max)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3285 (widen)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3286 (goto-char pos))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3287 (set-window-point window overlay-arrow-position)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3288
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3289 ;;; The buffer-local marker term-home-marker defines the "home position"
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3290 ;;; (in terms of cursor motion). However, we move the term-home-marker
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3291 ;;; "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
3292
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3293 (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
3294 (term-handle-deferred-scroll)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3295 (goto-char term-home-marker)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3296 (setq term-current-row 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3297 (setq term-current-column (current-column))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3298 (setq term-start-line-column term-current-column))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3299
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3300 (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
3301 (term-handle-deferred-scroll)
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
3302 (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
3303 ;; 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
3304 (term-vertical-motion 0)
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
3305 (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
3306 (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
3307 (t
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
3308 (term-goto-home)))
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
3309 (term-down row)
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
3310 (term-move-columns col))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3311
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3312 ; The page is full, so enter "pager" mode, and wait for input.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3313
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3314 (defun term-process-pager ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3315 (if (not term-pager-break-map)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3316 (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
3317 (i 0) tmp)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3318 ; (while (< i 128)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3319 ; (define-key map (make-string 1 i) 'term-send-raw)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3320 ; (setq i (1+ i)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3321 (define-key map "\e"
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3322 (lookup-key (current-global-map) "\e"))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3323 (define-key map "\C-x"
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3324 (lookup-key (current-global-map) "\C-x"))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3325 (define-key map "\C-u"
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3326 (lookup-key (current-global-map) "\C-u"))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3327 (define-key map " " 'term-pager-page)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3328 (define-key map "\r" 'term-pager-line)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3329 (define-key map "?" 'term-pager-help)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3330 (define-key map "h" 'term-pager-help)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3331 (define-key map "b" 'term-pager-back-page)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3332 (define-key map "\177" 'term-pager-back-line)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3333 (define-key map "q" 'term-pager-discard)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3334 (define-key map "D" 'term-pager-disable)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3335 (define-key map "<" 'term-pager-bob)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3336 (define-key map ">" 'term-pager-eob)
10515
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
3337
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
3338 ;; Add menu bar.
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
3339 (term-if-emacs19
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
3340 (term-ifnot-xemacs
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
3341 (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
3342 (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
3343 (setq tmp (make-sparse-keymap "More pages?"))
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
3344 (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
3345 (define-key tmp [disable]
13961
ff6ac63de609 (term-process-pager): Fix message spelling.
Karl Heuer <kwzh@gnu.org>
parents: 13337
diff changeset
3346 '("Disable paging" . term-fake-pager-disable))
10515
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
3347 (define-key tmp [discard]
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
3348 '("Discard remaining output" . term-pager-discard))
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
3349 (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
3350 (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
3351 (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
3352 (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
3353 (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
3354 (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
3355 (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
3356 ))
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
3357
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3358 (setq term-pager-break-map map)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3359 ; (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
3360 ; (stop-process process))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3361 (setq term-pager-old-local-map (current-local-map))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3362 (use-local-map term-pager-break-map)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3363 (make-local-variable 'term-old-mode-line-format)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3364 (setq term-old-mode-line-format mode-line-format)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3365 (setq mode-line-format
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3366 (list "-- **MORE** "
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3367 mode-line-buffer-identification
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3368 " [Type ? for help] "
10515
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
3369 "%-"))
11570
f210b0ee984a (term-update-mode-line, term-process-pager): Use force-mode-line-update.
Karl Heuer <kwzh@gnu.org>
parents: 11033
diff changeset
3370 (force-mode-line-update))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3371
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3372 (defun term-pager-line (lines)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3373 (interactive "p")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3374 (let* ((moved (vertical-motion (1+ lines)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3375 (deficit (- lines moved)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3376 (if (> moved lines)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3377 (backward-char))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3378 (cond ((<= deficit 0) ;; OK, had enough in the buffer for request.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3379 (recenter (1- term-height)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3380 ((term-pager-continue deficit)))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3381
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3382 (defun term-pager-page (arg)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3383 "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
3384 (interactive "p")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3385 (term-pager-line (* arg term-height)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3386
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3387 ; Pager mode command to go to beginning of buffer
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3388 (defun term-pager-bob ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3389 (interactive)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3390 (goto-char (point-min))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3391 (if (= (vertical-motion term-height) term-height)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3392 (backward-char))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3393 (recenter (1- term-height)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3394
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3395 ; pager mode command to go to end of buffer
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3396 (defun term-pager-eob ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3397 (interactive)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3398 (goto-char term-home-marker)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3399 (recenter 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3400 (goto-char (process-mark (get-buffer-process (current-buffer)))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3401
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3402 (defun term-pager-back-line (lines)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3403 (interactive "p")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3404 (vertical-motion (- 1 lines))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3405 (if (not (bobp))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3406 (backward-char)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3407 (beep)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3408 ;; Move cursor to end of window.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3409 (vertical-motion term-height)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3410 (backward-char))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3411 (recenter (1- term-height)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3412
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3413 (defun term-pager-back-page (arg)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3414 (interactive "p")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3415 (term-pager-back-line (* arg term-height)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3416
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3417 (defun term-pager-discard ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3418 (interactive)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3419 (setq term-terminal-parameter "")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3420 (interrupt-process nil t)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3421 (term-pager-continue term-height))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3422
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3423 ; Disable pager processing.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3424 ; Only callable while in pager mode. (Contrast term-disable-pager.)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3425 (defun term-pager-disable ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3426 (interactive)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3427 (if (term-handling-pager)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3428 (term-pager-continue nil)
10671
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
3429 (setq term-pager-count nil))
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
3430 (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
3431
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3432 ; Enable pager processing.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3433 (defun term-pager-enable ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3434 (interactive)
10671
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
3435 (or (term-pager-enabled)
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
3436 (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
3437 (term-update-mode-line))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3438
10515
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
3439 (defun term-pager-toggle ()
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
3440 (interactive)
10671
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
3441 (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
3442
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
3443 (term-ifnot-xemacs
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
3444 (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
3445 (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
3446 (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
3447 (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
3448 (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
3449 (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
3450
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3451 (defun term-pager-help ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3452 "Provide help on commands available in a terminal-emulator **MORE** break"
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3453 (interactive)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3454 (message "Terminal-emulator pager break help...")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3455 (sit-for 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3456 (with-electric-help
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3457 (function (lambda ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3458 (princ (substitute-command-keys
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3459 "\\<term-pager-break-map>\
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3460 Terminal-emulator MORE break.\n\
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3461 Type one of the following keys:\n\n\
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3462 \\[term-pager-page]\t\tMove forward one page.\n\
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3463 \\[term-pager-line]\t\tMove forward one line.\n\
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3464 \\[universal-argument] N \\[term-pager-page]\tMove N pages forward.\n\
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3465 \\[universal-argument] N \\[term-pager-line]\tMove N lines forward.\n\
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3466 \\[universal-argument] N \\[term-pager-back-line]\tMove N lines back.\n\
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3467 \\[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
3468 \\[term-pager-bob]\t\tMove to the beginning of the buffer.\n\
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3469 \\[term-pager-eob]\t\tMove to the end of the buffer.\n\
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3470 \\[term-pager-discard]\t\tKill pending output and kill process.\n\
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3471 \\[term-pager-disable]\t\tDisable PAGER handling.\n\n\
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3472 \\{term-pager-break-map}\n\
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3473 Any other key is passed through to the program
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3474 running under the terminal emulator and disables pager processing until
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3475 all pending output has been dealt with."))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3476 nil))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3477
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3478 (defun term-pager-continue (new-count)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3479 (let ((process (get-buffer-process (current-buffer))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3480 (use-local-map term-pager-old-local-map)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3481 (setq term-pager-old-local-map nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3482 (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
3483 (force-mode-line-update)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3484 (setq term-pager-count new-count)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3485 (set-process-filter process term-pager-old-filter)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3486 (funcall term-pager-old-filter process "")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3487 (continue-process process)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3488
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3489 ;; Make sure there are DOWN blank lines below the current one.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3490 ;; 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
3491
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3492 (defun term-handle-scroll (down)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3493 (let ((scroll-needed
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3494 (- (+ (term-current-row) down 1) term-scroll-end)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3495 (if (> scroll-needed 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3496 (let ((save-point (copy-marker (point))) (save-top))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3497 (goto-char term-home-marker)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3498 (cond (term-scroll-with-delete
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3499 ;; delete scroll-needed lines at term-scroll-start
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3500 (term-vertical-motion term-scroll-start)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3501 (setq save-top (point))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3502 (term-vertical-motion scroll-needed)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3503 (delete-region save-top (point))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3504 (goto-char save-point)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3505 (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
3506 (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
3507 (setq term-current-column nil)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3508 (term-insert-char ?\n scroll-needed))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3509 ((and (numberp term-pager-count)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3510 (< (setq term-pager-count (- term-pager-count down))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3511 0))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3512 (setq down 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3513 (term-process-pager))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3514 (t
12229
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
3515 (term-adjust-current-row-cache (- scroll-needed))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3516 (term-vertical-motion scroll-needed)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3517 (set-marker term-home-marker (point))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3518 (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
3519 (set-marker save-point nil))))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3520 down)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3521
12229
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
3522 (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
3523 "Move down DOWN screen lines vertically."
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3524 (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
3525 (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
3526 (setq down (term-handle-scroll down)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3527 (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
3528 (if (/= (point) (point-max))
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
3529 (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
3530 ;; 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
3531 (cond ((> down 0)
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
3532 (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
3533 (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
3534 (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
3535 (t
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
3536 (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
3537 (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
3538 (if start-column
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
3539 (term-move-columns start-column))))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3540
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3541 ;; Assuming point is at the beginning of a screen line,
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3542 ;; 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
3543 ;; FIXME: Probably should be called more than it is.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3544 (defun term-unwrap-line ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3545 (if (not (bolp)) (insert-before-markers ?\n)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3546
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3547 (defun term-erase-in-line (kind)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3548 (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
3549 (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
3550 (term-vertical-motion 0)
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
3551 (delete-region (point) saved-point)
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
3552 (term-insert-char ?\n cols)))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3553 (if (not (eq kind 1)) ;; erase right of point
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3554 (let ((saved-point (point))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3555 (wrapped (and (zerop (term-horizontal-column))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3556 (not (zerop (term-current-column))))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3557 (term-vertical-motion 1)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3558 (delete-region saved-point (point))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3559 ;; wrapped is true if we're at the beginning of screen line,
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3560 ;; but not a buffer line. If we delete the current screen line
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3561 ;; 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
3562 ;; 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
3563 ;; 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
3564 ;; current one. To avoid that, we make sure that current line
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3565 ;; contain a space, to force the previous line to continue to wrap.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3566 ;; 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
3567 ;; extra space when wrapped is false.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3568 (if wrapped
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3569 (insert ? ))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3570 (insert ?\n)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3571 (put-text-property saved-point (point) 'face 'default)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3572 (goto-char saved-point))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3573
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3574 (defun term-erase-in-display (kind)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3575 "Erases (that is blanks out) part of the window.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3576 If KIND is 0, erase from (point) to (point-max);
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3577 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
3578 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
3579 (term-handle-deferred-scroll)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3580 (cond ((eq term-terminal-parameter 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3581 (delete-region (point) (point-max))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3582 (term-unwrap-line))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3583 ((let ((row (term-current-row))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3584 (col (term-horizontal-column))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3585 (start-region term-home-marker)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3586 (end-region (if (eq kind 1) (point) (point-max))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3587 (delete-region start-region end-region)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3588 (term-unwrap-line)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3589 (if (eq kind 1)
10671
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
3590 (term-insert-char ?\n row))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3591 (setq term-current-column nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3592 (setq term-current-row nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3593 (term-goto row col)))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3594
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3595 (defun term-delete-chars (count)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3596 (let ((save-point (point)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3597 (term-vertical-motion 1)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3598 (term-unwrap-line)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3599 (goto-char save-point)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3600 (move-to-column (+ (term-current-column) count) t)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3601 (delete-region save-point (point))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3602
12229
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
3603 ;;; 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
3604 ;;; 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
3605 ;;; 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
3606
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3607 (defun term-insert-spaces (count)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3608 (let ((save-point (point)) (save-eol))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3609 (term-vertical-motion 1)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3610 (if (bolp)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3611 (backward-char))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3612 (setq save-eol (point))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3613 (move-to-column (+ (term-start-line-column) (- term-width count)) t)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3614 (if (> save-eol (point))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3615 (delete-region (point) save-eol))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3616 (goto-char save-point)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3617 (term-insert-char ? count)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3618 (goto-char save-point)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3619
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3620 (defun term-delete-lines (lines)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3621 (let ((start (point))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3622 (save-current-column term-current-column)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3623 (save-start-line-column term-start-line-column)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3624 (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
3625 (term-down lines)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3626 (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
3627 (term-down (- term-scroll-end save-current-row lines))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3628 (term-insert-char ?\n lines)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3629 (setq term-current-column save-current-column)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3630 (setq term-start-line-column save-start-line-column)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3631 (setq term-current-row save-current-row)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3632 (goto-char start)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3633
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3634 (defun term-insert-lines (lines)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3635 (let ((start (point))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3636 (start-deleted)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3637 (save-current-column term-current-column)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3638 (save-start-line-column term-start-line-column)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3639 (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
3640 (term-down (- term-scroll-end save-current-row lines))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3641 (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
3642 (term-down lines)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3643 (delete-region start-deleted (point))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3644 (goto-char start)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3645 (setq term-current-column save-current-column)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3646 (setq term-start-line-column save-start-line-column)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3647 (setq term-current-row save-current-row)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3648 (term-insert-char ?\n lines)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3649 (goto-char start)))
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 (defun term-set-output-log (name)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3652 "Record raw inferior process output in a buffer."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3653 (interactive (list (if term-log-buffer
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3654 nil
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3655 (read-buffer "Record output in buffer: "
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3656 (format "%s output-log"
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3657 (buffer-name (current-buffer)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3658 nil))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3659 (if (or (null name) (equal name ""))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3660 (progn (setq term-log-buffer nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3661 (message "Output logging off."))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3662 (if (get-buffer name)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3663 nil
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3664 (save-excursion
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3665 (set-buffer (get-buffer-create name))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3666 (fundamental-mode)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3667 (buffer-disable-undo (current-buffer))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3668 (erase-buffer)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3669 (setq term-log-buffer (get-buffer name))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3670 (message "Recording terminal emulator output into buffer \"%s\""
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3671 (buffer-name term-log-buffer))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3672
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3673 (defun term-stop-photo ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3674 "Discontinue raw inferior process logging."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3675 (interactive)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3676 (term-set-output-log nil))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3677
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3678 (defun term-show-maximum-output ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3679 "Put the end of the buffer at the bottom of the window."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3680 (interactive)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3681 (goto-char (point-max))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3682 (recenter -1))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3683
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3684 ;;; Do the user's customisation...
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3685
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3686 (defvar term-load-hook nil
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3687 "This hook is run when term is loaded in.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3688 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
3689
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3690 (run-hooks 'term-load-hook)
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 ;;; Filename/command/history completion in a buffer
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3694 ;;; ===========================================================================
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3695 ;;; Useful completion functions, courtesy of the Ergo group.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3696
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3697 ;;; Six commands:
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3698 ;;; term-dynamic-complete Complete or expand command, filename,
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3699 ;;; history at point.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3700 ;;; term-dynamic-complete-filename Complete filename at point.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3701 ;;; term-dynamic-list-filename-completions List completions in help buffer.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3702 ;;; term-replace-by-expanded-filename Expand and complete filename at point;
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3703 ;;; replace with expanded/completed name.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3704 ;;; term-dynamic-simple-complete Complete stub given candidates.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3705
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3706 ;;; 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
3707 ;;; available for people who want them. Shell-mode installs them:
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3708 ;;; (define-key shell-mode-map "\t" 'term-dynamic-complete)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3709 ;;; (define-key shell-mode-map "\M-?"
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3710 ;;; 'term-dynamic-list-filename-completions)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3711 ;;;
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3712 ;;; 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
3713 ;;; want them present in specific modes.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3714
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3715 (defvar term-completion-autolist nil
13961
ff6ac63de609 (term-process-pager): Fix message spelling.
Karl Heuer <kwzh@gnu.org>
parents: 13337
diff changeset
3716 "*If non-nil, automatically list possibilities on partial completion.
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3717 This mirrors the optional behavior of tcsh.")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3718
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3719 (defvar term-completion-addsuffix t
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3720 "*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
3721 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
3722 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
3723 completion. This mirrors the optional behavior of tcsh.")
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3724
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3725 (defvar term-completion-recexact nil
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3726 "*If non-nil, use shortest completion if characters cannot be added.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3727 This mirrors the optional behavior of tcsh.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3728
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3729 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
3730
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3731 (defvar term-completion-fignore nil
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3732 "*List of suffixes to be disregarded during file completion.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3733 This mirrors the optional behavior of bash and tcsh.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3734
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3735 Note that this applies to `term-dynamic-complete-filename' only.")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3736
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3737 (defvar term-file-name-prefix ""
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3738 "Prefix prepended to absolute file names taken from process input.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3739 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
3740 directory tracking functions.")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3741
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3742
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3743 (defun term-directory (directory)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3744 ;; Return expanded DIRECTORY, with `term-file-name-prefix' if absolute.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3745 (expand-file-name (if (file-name-absolute-p directory)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3746 (concat term-file-name-prefix directory)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3747 directory)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3748
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3749
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3750 (defun term-word (word-chars)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3751 "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
3752 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
3753 inside of a \"[...]\" (see `skip-chars-forward')."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3754 (save-excursion
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3755 (let ((limit (point))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3756 (word (concat "[" word-chars "]"))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3757 (non-word (concat "[^" word-chars "]")))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3758 (if (re-search-backward non-word nil 'move)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3759 (forward-char 1))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3760 ;; Anchor the search forwards.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3761 (if (or (eolp) (looking-at non-word))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3762 nil
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3763 (re-search-forward (concat word "+") limit)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3764 (buffer-substring (match-beginning 0) (match-end 0))))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3765
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3766
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3767 (defun term-match-partial-filename ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3768 "Return the filename at point, or nil if non is found.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3769 Environment variables are substituted. See `term-word'."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3770 (let ((filename (term-word "~/A-Za-z0-9+@:_.$#,={}-")))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3771 (and filename (substitute-in-file-name filename))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3772
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3773
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3774 (defun term-dynamic-complete ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3775 "Dynamically perform completion at point.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3776 Calls the functions in `term-dynamic-complete-functions' to perform
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3777 completion until a function returns non-nil, at which point completion is
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3778 assumed to have occurred."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3779 (interactive)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3780 (let ((functions term-dynamic-complete-functions))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3781 (while (and functions (null (funcall (car functions))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3782 (setq functions (cdr functions)))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3783
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3784
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3785 (defun term-dynamic-complete-filename ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3786 "Dynamically complete the filename at point.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3787 Completes if after a filename. See `term-match-partial-filename' and
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3788 `term-dynamic-complete-as-filename'.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3789 This function is similar to `term-replace-by-expanded-filename', except that
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3790 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
3791 adds completion characters to the end of the filename. A completions listing
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3792 may be shown in a help buffer if completion is ambiguous.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3793
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3794 Completion is dependent on the value of `term-completion-addsuffix',
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3795 `term-completion-recexact' and `term-completion-fignore', and the timing of
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3796 completions listing is dependent on the value of `term-completion-autolist'.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3797
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3798 Returns t if successful."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3799 (interactive)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3800 (if (term-match-partial-filename)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3801 (prog2 (or (eq (selected-window) (minibuffer-window))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3802 (message "Completing file name..."))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3803 (term-dynamic-complete-as-filename))))
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 (defun term-dynamic-complete-as-filename ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3806 "Dynamically complete at point as a filename.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3807 See `term-dynamic-complete-filename'. Returns t if successful."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3808 (let* ((completion-ignore-case nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3809 (completion-ignored-extensions term-completion-fignore)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3810 (success t)
17147
2824e1f84717 (term-completion-addsuffix): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents: 16848
diff changeset
3811 (dirsuffix (cond ((not term-completion-addsuffix) "")
2824e1f84717 (term-completion-addsuffix): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents: 16848
diff changeset
3812 ((not (consp term-completion-addsuffix)) "/")
2824e1f84717 (term-completion-addsuffix): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents: 16848
diff changeset
3813 (t (car term-completion-addsuffix))))
2824e1f84717 (term-completion-addsuffix): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents: 16848
diff changeset
3814 (filesuffix (cond ((not term-completion-addsuffix) "")
2824e1f84717 (term-completion-addsuffix): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents: 16848
diff changeset
3815 ((not (consp term-completion-addsuffix)) " ")
2824e1f84717 (term-completion-addsuffix): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents: 16848
diff changeset
3816 (t (cdr term-completion-addsuffix))))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3817 (filename (or (term-match-partial-filename) ""))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3818 (pathdir (file-name-directory filename))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3819 (pathnondir (file-name-nondirectory filename))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3820 (directory (if pathdir (term-directory pathdir) default-directory))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3821 (completion (file-name-completion pathnondir directory))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3822 (mini-flag (eq (selected-window) (minibuffer-window))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3823 (cond ((null completion)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3824 (message "No completions of %s" filename)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3825 (setq success nil))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3826 ((eq completion t) ; Means already completed "file".
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3827 (if term-completion-addsuffix (insert " "))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3828 (or mini-flag (message "Sole completion")))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3829 ((string-equal completion "") ; Means completion on "directory/".
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3830 (term-dynamic-list-filename-completions))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3831 (t ; Completion string returned.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3832 (let ((file (concat (file-name-as-directory directory) completion)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3833 (insert (substring (directory-file-name completion)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3834 (length pathnondir)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3835 (cond ((symbolp (file-name-completion completion directory))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3836 ;; We inserted a unique completion.
17147
2824e1f84717 (term-completion-addsuffix): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents: 16848
diff changeset
3837 (insert (if (file-directory-p file) dirsuffix filesuffix))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3838 (or mini-flag (message "Completed")))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3839 ((and term-completion-recexact term-completion-addsuffix
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3840 (string-equal pathnondir completion)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3841 (file-exists-p file))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3842 ;; 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
3843 (insert (if (file-directory-p file) dirsuffix filesuffix))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3844 (or mini-flag (message "Completed shortest")))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3845 ((or term-completion-autolist
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3846 (string-equal pathnondir completion))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3847 ;; It's not unique, list possible completions.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3848 (term-dynamic-list-filename-completions))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3849 (t
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3850 (or mini-flag (message "Partially completed")))))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3851 success))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3852
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 (defun term-replace-by-expanded-filename ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3855 "Dynamically expand and complete the filename at point.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3856 Replace the filename with an expanded, canonicalised and completed replacement.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3857 \"Expanded\" means environment variables (e.g., $HOME) and `~'s are replaced
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3858 with the corresponding directories. \"Canonicalised\" means `..' and `.' are
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3859 removed, and the filename is made absolute instead of relative. For expansion
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3860 see `expand-file-name' and `substitute-in-file-name'. For completion see
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3861 `term-dynamic-complete-filename'."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3862 (interactive)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3863 (replace-match (expand-file-name (term-match-partial-filename)) t t)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3864 (term-dynamic-complete-filename))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3865
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3866
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3867 (defun term-dynamic-simple-complete (stub candidates)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3868 "Dynamically complete STUB from CANDIDATES list.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3869 This function inserts completion characters at point by completing STUB from
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3870 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
3871 if completion is ambiguous.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3872
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3873 Returns nil if no completion was inserted.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3874 Returns `sole' if completed with the only completion match.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3875 Returns `shortest' if completed with the shortest of the completion matches.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3876 Returns `partial' if completed as far as possible with the completion matches.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3877 Returns `listed' if a completion listing was shown.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3878
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3879 See also `term-dynamic-complete-filename'."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3880 (let* ((completion-ignore-case nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3881 (candidates (mapcar (function (lambda (x) (list x))) candidates))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3882 (completions (all-completions stub candidates)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3883 (cond ((null completions)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3884 (message "No completions of %s" stub)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3885 nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3886 ((= 1 (length completions)) ; Gotcha!
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3887 (let ((completion (car completions)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3888 (if (string-equal completion stub)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3889 (message "Sole completion")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3890 (insert (substring completion (length stub)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3891 (message "Completed"))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3892 (if term-completion-addsuffix (insert " "))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3893 'sole))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3894 (t ; There's no unique completion.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3895 (let ((completion (try-completion stub candidates)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3896 ;; Insert the longest substring.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3897 (insert (substring completion (length stub)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3898 (cond ((and term-completion-recexact term-completion-addsuffix
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3899 (string-equal stub completion)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3900 (member completion completions))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3901 ;; It's not unique, but user wants shortest match.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3902 (insert " ")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3903 (message "Completed shortest")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3904 'shortest)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3905 ((or term-completion-autolist
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3906 (string-equal stub completion))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3907 ;; It's not unique, list possible completions.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3908 (term-dynamic-list-completions completions)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3909 'listed)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3910 (t
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3911 (message "Partially completed")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3912 'partial)))))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3913
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3914
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3915 (defun term-dynamic-list-filename-completions ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3916 "List in help buffer possible completions of the filename at point."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3917 (interactive)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3918 (let* ((completion-ignore-case nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3919 (filename (or (term-match-partial-filename) ""))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3920 (pathdir (file-name-directory filename))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3921 (pathnondir (file-name-nondirectory filename))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3922 (directory (if pathdir (term-directory pathdir) default-directory))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3923 (completions (file-name-all-completions pathnondir directory)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3924 (if completions
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3925 (term-dynamic-list-completions completions)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3926 (message "No completions of %s" filename))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3927
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3928
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3929 (defun term-dynamic-list-completions (completions)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3930 "List in help buffer sorted COMPLETIONS.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3931 Typing SPC flushes the help buffer."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3932 (let ((conf (current-window-configuration)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3933 (with-output-to-temp-buffer "*Completions*"
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3934 (display-completion-list (sort completions 'string-lessp)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3935 (message "Hit space to flush")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3936 (let (key first)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3937 (if (save-excursion
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3938 (set-buffer (get-buffer "*Completions*"))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3939 (setq key (read-key-sequence nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3940 first (aref key 0))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3941 (and (consp first)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3942 (eq (window-buffer (posn-window (event-start first)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3943 (get-buffer "*Completions*"))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3944 (eq (key-binding key) 'mouse-choose-completion)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3945 ;; If the user does mouse-choose-completion with the mouse,
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3946 ;; execute the command, then delete the completion window.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3947 (progn
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3948 (mouse-choose-completion first)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3949 (set-window-configuration conf))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3950 (if (eq first ?\ )
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3951 (set-window-configuration conf)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3952 (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
3953
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3954 ;;; 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
3955 (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
3956 "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
3957 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
3958 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
3959 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
3960 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
3961 (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
3962 ;; 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
3963 ;; 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
3964 (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
3965 (save-excursion
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3966 (set-buffer buffer)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3967 (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
3968 (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
3969 buffer))
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3970
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3971 (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
3972 (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
3973 (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
3974
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3975 ;;;###autoload
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3976 (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
3977 "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
3978 (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
3979 (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
3980 (getenv "ESHELL")
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3981 (getenv "SHELL")
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3982 "/bin/sh"))))
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3983
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3984 ;; 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
3985 (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
3986 (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
3987 new-buffer-name
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3988 (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
3989 (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
3990 (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
3991 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
3992 "ansi-term")))
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3993
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3994 (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
3995
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3996 ;; 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
3997 ;; 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
3998 ;; 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
3999
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
4000 (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
4001 (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
4002
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
4003 (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
4004 (term-mode)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
4005 (term-char-mode)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
4006
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
4007 ;; 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
4008 ;; 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
4009 ;; .emacs ...
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
4010
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
4011 (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
4012
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
4013 (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
4014
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4015
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4016 ;;; Converting process modes to use term mode
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4017 ;;; ===========================================================================
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4018 ;;; Renaming variables
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
4019 ;;; 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
4020 ;;; ones:
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4021 ;;; Local variables:
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4022 ;;; last-input-start term-last-input-start
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4023 ;;; last-input-end term-last-input-end
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4024 ;;; shell-prompt-pattern term-prompt-regexp
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4025 ;;; shell-set-directory-error-hook <no equivalent>
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4026 ;;; Miscellaneous:
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4027 ;;; shell-set-directory <unnecessary>
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4028 ;;; shell-mode-map term-mode-map
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4029 ;;; Commands:
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4030 ;;; shell-send-input term-send-input
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4031 ;;; shell-send-eof term-delchar-or-maybe-eof
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4032 ;;; kill-shell-input term-kill-input
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4033 ;;; interrupt-shell-subjob term-interrupt-subjob
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4034 ;;; stop-shell-subjob term-stop-subjob
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4035 ;;; quit-shell-subjob term-quit-subjob
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4036 ;;; kill-shell-subjob term-kill-subjob
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4037 ;;; kill-output-from-shell term-kill-output
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4038 ;;; show-output-from-shell term-show-output
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4039 ;;; copy-last-shell-input Use term-previous-input/term-next-input
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4040 ;;;
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4041 ;;; SHELL-SET-DIRECTORY is gone, its functionality taken over by
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4042 ;;; SHELL-DIRECTORY-TRACKER, the shell mode's term-input-filter-functions.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4043 ;;; Term mode does not provide functionality equivalent to
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4044 ;;; shell-set-directory-error-hook; it is gone.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4045 ;;;
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4046 ;;; term-last-input-start is provided for modes which want to munge
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4047 ;;; the buffer after input is sent, perhaps because the inferior
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4048 ;;; insists on echoing the input. The LAST-INPUT-START variable in
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4049 ;;; the old shell package was used to implement a history mechanism,
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4050 ;;; but you should think twice before using term-last-input-start
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4051 ;;; 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
4052 ;;;
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4053 ;;; 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
4054 ;;; *not* create the term-mode local variables in your foo-mode function.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4055 ;;; 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
4056 ;;; necessary term-specific local variables. Then create the
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4057 ;;; 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
4058 ;;; 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
4059 ;;; (term-{prompt-regexp, input-filter, input-filter-functions,
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4060 ;;; 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
4061 ;;; 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
4062 ;;; 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
4063 ;;; is typical:
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
4064 ;;;
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4065 ;;; (defvar shell-mode-map '())
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4066 ;;; (cond ((not shell-mode-map)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4067 ;;; (setq shell-mode-map (copy-keymap term-mode-map))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4068 ;;; (define-key shell-mode-map "\C-c\C-f" 'shell-forward-command)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4069 ;;; (define-key shell-mode-map "\C-c\C-b" 'shell-backward-command)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4070 ;;; (define-key shell-mode-map "\t" 'term-dynamic-complete)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4071 ;;; (define-key shell-mode-map "\M-?"
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4072 ;;; 'term-dynamic-list-filename-completions)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4073 ;;;
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4074 ;;; (defun shell-mode ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4075 ;;; (interactive)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4076 ;;; (term-mode)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4077 ;;; (setq term-prompt-regexp shell-prompt-pattern)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4078 ;;; (setq major-mode 'shell-mode)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4079 ;;; (setq mode-name "Shell")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4080 ;;; (use-local-map shell-mode-map)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4081 ;;; (make-local-variable 'shell-directory-stack)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4082 ;;; (setq shell-directory-stack nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4083 ;;; (add-hook 'term-input-filter-functions 'shell-directory-tracker)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4084 ;;; (run-hooks 'shell-mode-hook))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4085 ;;;
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4086 ;;;
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4087 ;;; 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
4088 ;;;
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4089 ;;; For modes that use term-mode, term-dynamic-complete-functions is the
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4090 ;;; hook to add completion functions to. Functions on this list should return
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4091 ;;; non-nil if completion occurs (i.e., further completion should not occur).
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4092 ;;; 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
4093 ;;; completion job.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4094
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4095 (provide 'term)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4096
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4097 ;;; term.el ends here