annotate lisp/term.el @ 33697:e7765cb122c3

(Fw32_set_clipboard_data): Save a copy of what is put on the clipboard. (Fw32_get_clipboard_data): Compare data on clipboard with saved copy of what Emacs last put there. If they are the same, do not use the clipboard copy to avoid losing data due to coding conversions.
author Jason Rumney <jasonr@gnu.org>
date Tue, 21 Nov 2000 19:18:13 +0000
parents 0bc4ff279d60
children 3ce84dcc97d3
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>
25330
6ac0cc90d397 Avoid ange-ftp related compilation warnings.
Dave Love <fx@gnu.org>
parents: 25299
diff changeset
7 ;;; Keywords: processes
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
8
24044
9a52ffb7bfb2 (term_send_home): Change the string to
Richard M. Stallman <rms@gnu.org>
parents: 23311
diff changeset
9 ;; This file is part of GNU Emacs.
9a52ffb7bfb2 (term_send_home): Change the string to
Richard M. Stallman <rms@gnu.org>
parents: 23311
diff changeset
10
9a52ffb7bfb2 (term_send_home): Change the string to
Richard M. Stallman <rms@gnu.org>
parents: 23311
diff changeset
11 ;; GNU Emacs is free software; you can redistribute it and/or modify
9a52ffb7bfb2 (term_send_home): Change the string to
Richard M. Stallman <rms@gnu.org>
parents: 23311
diff changeset
12 ;; it under the terms of the GNU General Public License as published by
9a52ffb7bfb2 (term_send_home): Change the string to
Richard M. Stallman <rms@gnu.org>
parents: 23311
diff changeset
13 ;; the Free Software Foundation; either version 2, or (at your option)
9a52ffb7bfb2 (term_send_home): Change the string to
Richard M. Stallman <rms@gnu.org>
parents: 23311
diff changeset
14 ;; any later version.
9a52ffb7bfb2 (term_send_home): Change the string to
Richard M. Stallman <rms@gnu.org>
parents: 23311
diff changeset
15
9a52ffb7bfb2 (term_send_home): Change the string to
Richard M. Stallman <rms@gnu.org>
parents: 23311
diff changeset
16 ;; GNU Emacs is distributed in the hope that it will be useful,
9a52ffb7bfb2 (term_send_home): Change the string to
Richard M. Stallman <rms@gnu.org>
parents: 23311
diff changeset
17 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
9a52ffb7bfb2 (term_send_home): Change the string to
Richard M. Stallman <rms@gnu.org>
parents: 23311
diff changeset
18 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
9a52ffb7bfb2 (term_send_home): Change the string to
Richard M. Stallman <rms@gnu.org>
parents: 23311
diff changeset
19 ;; GNU General Public License for more details.
9a52ffb7bfb2 (term_send_home): Change the string to
Richard M. Stallman <rms@gnu.org>
parents: 23311
diff changeset
20
9a52ffb7bfb2 (term_send_home): Change the string to
Richard M. Stallman <rms@gnu.org>
parents: 23311
diff changeset
21 ;; You should have received a copy of the GNU General Public License
9a52ffb7bfb2 (term_send_home): Change the string to
Richard M. Stallman <rms@gnu.org>
parents: 23311
diff changeset
22 ;; along with GNU Emacs; see the file COPYING. If not, write to the
9a52ffb7bfb2 (term_send_home): Change the string to
Richard M. Stallman <rms@gnu.org>
parents: 23311
diff changeset
23 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
9a52ffb7bfb2 (term_send_home): Change the string to
Richard M. Stallman <rms@gnu.org>
parents: 23311
diff changeset
24 ;; Boston, MA 02111-1307, USA.
9a52ffb7bfb2 (term_send_home): Change the string to
Richard M. Stallman <rms@gnu.org>
parents: 23311
diff changeset
25
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
25330
6ac0cc90d397 Avoid ange-ftp related compilation warnings.
Dave Love <fx@gnu.org>
parents: 25299
diff changeset
396 (eval-when-compile
6ac0cc90d397 Avoid ange-ftp related compilation warnings.
Dave Love <fx@gnu.org>
parents: 25299
diff changeset
397 (require 'ange-ftp))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
398 (require 'ring)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
399 (require 'ehelp)
17407
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
400
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
401 (defgroup term nil
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
402 "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
403 :group 'processes
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
404 :group 'unix)
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
405
9509
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 ;;; Buffer Local Variables:
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
408 ;;;============================================================================
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
409 ;;; Term mode buffer local variables:
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
410 ;;; term-prompt-regexp - string term-bol uses to match prompt.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
411 ;;; term-delimiter-argument-list - list For delimiters and arguments
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
412 ;;; term-last-input-start - marker Handy if inferior always echoes
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
413 ;;; 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
414 ;; For the input history mechanism:
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
415 (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
416 ;;; term-input-ring-size - integer
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
417 ;;; term-input-ring - ring
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
418 ;;; term-input-ring-index - number ...
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
419 ;;; term-input-autoexpand - symbol ...
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
420 ;;; term-input-ignoredups - boolean ...
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
421 ;;; term-last-input-match - string ...
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
422 ;;; term-dynamic-complete-functions - hook For the completion mechanism
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
423 ;;; 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
424 ;;; term-get-old-input - function Hooks for specific
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
425 ;;; term-input-filter-functions - hook process-in-a-buffer
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
426 ;;; term-input-filter - function modes.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
427 ;;; term-input-send - function
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
428 ;;; term-scroll-to-bottom-on-output - symbol ...
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
429 ;;; 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
430 (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
431 (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
432 (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
433 (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
434 ;; 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
435 (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
436 ;; or nil if unknown.
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
437 (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
438 (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
439 ;; or nil if unknown.
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
440 (defvar term-insert-mode nil)
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
441 (defvar term-vertical-motion)
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
442 (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
443 ;; state 0: Normal state
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
444 ;; 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
445 ;; 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
446 ;; (and line warp) before displaying it.
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
447 ;; 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
448 ;; state 2: seen ESC
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
449 ;; state 3: seen ESC [ (or ESC [ ?)
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
450 ;; 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
451 (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
452 ;; we want suppressed.
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
453 (defvar term-terminal-parameter)
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
454 (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
455 (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
456 (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
457 (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
458 (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
459 ;; 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
460 (defvar term-saved-cursor nil)
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
461 (defvar term-command-hook)
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
462 (defvar term-log-buffer nil)
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
463 (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
464 ;; 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
465 ;; 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
466 ;; 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
467 ;; (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
468 (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
469 ;; 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
470 ;; 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
471 (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
472 (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
473 (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
474 (defvar term-pager-old-filter) ;; Saved process-filter while paging.
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
475
17407
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
476 (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
477 "*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
478 :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
479 :group 'term)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
480
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
481 (defvar term-prompt-regexp "^"
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
482 "Regexp to recognise prompts in the inferior process.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
483 Defaults to \"^\", the null string at BOL.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
484
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
485 Good choices:
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
486 Canonical Lisp: \"^[^> \\n]*>+:? *\" (Lucid, franz, kcl, T, cscheme, oaklisp)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
487 Lucid Common Lisp: \"^\\\\(>\\\\|\\\\(->\\\\)+\\\\) *\"
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
488 franz: \"^\\\\(->\\\\|<[0-9]*>:\\\\) *\"
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
489 kcl: \"^>+ *\"
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
490 shell: \"^[^#$%>\\n]*[#$%>] *\"
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
491 T: \"^>+ *\"
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 This is a good thing to set in mode hooks.")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
494
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
495 (defvar term-delimiter-argument-list ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
496 "List of characters to recognise as separate arguments in input.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
497 Strings comprising a character in this list will separate the arguments
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
498 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
499 whitespace). See `term-arguments'.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
500 Defaults to the empty list.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
501
23311
fd4a0e88aed5 (term-delimiter-argument-list): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents: 20153
diff changeset
502 For shells, a good value is (?\\| ?& ?< ?> ?\\( ?\\) ?\\;).
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
503
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
504 This is a good thing to set in mode hooks.")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
505
17407
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
506 (defcustom term-input-autoexpand nil
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
507 "*If non-nil, expand input command history references on completion.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
508 This mirrors the optional behavior of tcsh (its autoexpand and histlit).
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
510 If the value is `input', then the expansion is seen on input.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
511 If the value is `history', then the expansion is only when inserting
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
512 into the buffer's input ring. See also `term-magic-space' and
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
513 `term-dynamic-complete'.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
514
17407
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
515 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
516 :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
517 :group 'term)
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
518
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
519 (defcustom term-input-ignoredups nil
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
520 "*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
521 This mirrors the optional behavior of bash.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
522
17407
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
523 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
524 :type 'boolean
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
525 :group 'term)
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
526
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
527 (defcustom term-input-ring-file-name nil
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
528 "*If non-nil, name of the file to read/write input history.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
529 See also `term-read-input-ring' and `term-write-input-ring'.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
530
17407
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
531 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
532 :type 'boolean
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
533 :group 'term)
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
534
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
535 (defcustom term-scroll-to-bottom-on-output nil
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
536 "*Controls whether interpreter output causes window to scroll.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
537 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
538 If `this', scroll only the selected window.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
539 If `others', scroll only those that are not the selected window.
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 The default is nil.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
542
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
543 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
544 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
545 :type 'boolean
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
546 :group 'term)
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
547
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
548 (defcustom term-scroll-show-maximum-output nil
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
549 "*Controls how interpreter output causes window to scroll.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
550 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
551
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
552 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
553 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
554 :type 'boolean
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
555 :group 'term)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
556
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
557 ;; Where gud-display-frame should put the debugging arrow. This is
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
558 ;; set by the marker-filter, which scans the debugger's output for
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
559 ;; indications of the current pc.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
560 (defvar term-pending-frame nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
561
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
562 ;;; Here are the per-interpreter hooks.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
563 (defvar term-get-old-input (function term-get-old-input-default)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
564 "Function that submits old text in term mode.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
565 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
566 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
567 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
568 leading text matching term-prompt-regexp")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
569
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
570 (defvar term-dynamic-complete-functions
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
571 '(term-replace-by-expanded-history term-dynamic-complete-filename)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
572 "List of functions called to perform completion.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
573 Functions should return non-nil if completion was performed.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
574 See also `term-dynamic-complete'.
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 This is a good thing to set in mode hooks.")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
577
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
578 (defvar term-input-filter
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
579 (function (lambda (str) (not (string-match "\\`\\s *\\'" str))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
580 "Predicate for filtering additions to input history.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
581 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
582 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
583
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
584 (defvar term-input-filter-functions '()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
585 "Functions to call before input is sent to the process.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
586 These functions get one argument, a string containing the text to send.
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 This variable is buffer-local.")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
589
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
590 (defvar term-input-sender (function term-simple-send)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
591 "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
592 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
593 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
594 the user command term-send-input. term-simple-send just sends
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
595 the string plus a newline.")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
596
17407
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
597 (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
598 "*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
599 See `term-send-input'."
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
600 :type 'boolean
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
601 :group 'term)
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
602
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
603 (defcustom term-mode-hook '()
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
604 "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
605 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
606 :type 'hook
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
607 :group 'term)
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
608
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
609 (defcustom term-exec-hook '()
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
610 "Called each time a process is exec'd by term-exec.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
611 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
612 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
613 \(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
614 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
615 :type 'hook
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
616 :group 'term)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
617
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
618 (defvar term-mode-map nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
619 (defvar term-raw-map nil
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
620 "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
621 (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
622 "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
623 Do not change it directly; use term-set-escape-char instead.")
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
624 (defvar term-raw-escape-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-pager-break-map nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
627
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
628 (defvar term-ptyp t
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
629 "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
630 This is to work around a bug in Emacs process signaling.")
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
631
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
632 (defvar term-last-input-match ""
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
633 "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
634 Buffer local variable.")
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
635
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
636 (defvar term-input-ring nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
637 (defvar term-last-input-start)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
638 (defvar term-last-input-end)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
639 (defvar term-input-ring-index nil
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
640 "Index of last matched history element.")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
641 (defvar term-matching-input-from-input-string ""
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
642 "Input previously used to match input history.")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
643 ; 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
644 ; assuming this is Emacs 19.20 or newer.
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
645 (defvar term-pager-filter t)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
646
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
647 (put 'term-replace-by-expanded-history 'menu-enable 'term-input-autoexpand)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
648 (put 'term-input-ring 'permanent-local t)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
649 (put 'term-input-ring-index 'permanent-local t)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
650 (put 'term-input-autoexpand 'permanent-local t)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
651 (put 'term-input-filter-functions 'permanent-local t)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
652 (put 'term-scroll-to-bottom-on-output 'permanent-local t)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
653 (put 'term-scroll-show-maximum-output 'permanent-local t)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
654 (put 'term-ptyp 'permanent-local t)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
655
19976
81065d2158f9 (term-if-emacs19): Recognize version 20.
Karl Heuer <kwzh@gnu.org>
parents: 19219
diff changeset
656 ;; 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
657 (defmacro term-if-emacs19 (&rest forms)
19976
81065d2158f9 (term-if-emacs19): Recognize version 20.
Karl Heuer <kwzh@gnu.org>
parents: 19219
diff changeset
658 (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
659 (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
660 ;; True if running under XEmacs (previously Lucid Emacs).
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
661 (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
662 ;; 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
663 (defmacro term-if-xemacs (&rest forms)
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
664 (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
665 ;; 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
666 (defmacro term-ifnot-xemacs (&rest forms)
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
667 (if (not (term-is-xemacs)) (cons 'progn forms)))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
668
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
669 (defmacro term-in-char-mode () '(eq (current-local-map) term-raw-map))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
670 (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
671 ;; True if currently doing PAGER handling.
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
672 (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
673 (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
674 (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
675
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
676 (defvar term-signals-menu)
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
677 (defvar term-terminal-menu)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
678
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
679 ;;; 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
680 (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
681 (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
682 (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
683 (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
684 (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
685 (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
686 (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
687 (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
688 (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
689 (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
690 (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
691 (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
692 (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
693 (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
694 (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
695 (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
696 (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
697 (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
698 (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
699 (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
700 (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
701 (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
702 (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
703 (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
704
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
705 ;;; 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
706 (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
707 (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
708 (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
709 (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
710 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
711
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
712 ;;; faces -mm
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
713
19082
e159c69a45f0 (term-ignore-error): Fix foolish errors.
Richard M. Stallman <rms@gnu.org>
parents: 17814
diff changeset
714 (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
715 `(condition-case nil
19082
e159c69a45f0 (term-ignore-error): Fix foolish errors.
Richard M. Stallman <rms@gnu.org>
parents: 17814
diff changeset
716 (progn ,@body)
17814
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
717 (error nil)))
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
718
19219
67d2c89a660c (term-default-fg-color):
Richard M. Stallman <rms@gnu.org>
parents: 19082
diff changeset
719 (defvar term-default-fg-color nil)
67d2c89a660c (term-default-fg-color):
Richard M. Stallman <rms@gnu.org>
parents: 19082
diff changeset
720 (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
721
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
722 (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
723 ;;; --- Simple faces ---
25299
8df4e1dd92d7 (toplevel): Make face `term-default' an empty face.
Gerd Moellmann <gerd@gnu.org>
parents: 24966
diff changeset
724 (copy-face 'default 'term-default)
17814
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-fg)
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-default-bg)
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-default-fg-inv)
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-default-bg-inv)
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-bold)
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
730 (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
731 (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
732 (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
733
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
734 (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
735 (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
736 (term-ignore-error
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
737 (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
738 (term-ignore-error
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
739 (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
740
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
741 (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
742 (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
743 (term-ignore-error
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
744 (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
745 (term-ignore-error
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
746 (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
747
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
748 (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
749 (term-ignore-error
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
750 (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
751
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
752 (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
753 (term-ignore-error
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
754 (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
755
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
756 (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
757 (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
758
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
759 ;; 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
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 (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
762
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
763 (term-ignore-error
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
764 (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
765
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
766 ;;; --- Fg faces ---
17814
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-black)
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-red)
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-green)
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-yellow)
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-blue)
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
772 (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
773 (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
774 (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
775
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-black)
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-black "black"))
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-red)
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-red "red"))
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-green)
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-green "green"))
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-yellow)
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-yellow "yellow"))
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-blue)
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-blue "blue"))
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-magenta)
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-magenta "magenta"))
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-cyan)
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-cyan "cyan"))
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
797 (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
798 (term-ignore-error
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
799 (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
800
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
801 ;;; --- Bg faces ---
17814
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-blackbg)
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-redbg)
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-greenbg)
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-yellowbg)
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-bluebg)
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
807 (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
808 (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
809 (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
810
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-blackbg)
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-blackbg "black"))
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-redbg)
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-redbg "red"))
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-greenbg)
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-greenbg "green"))
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-yellowbg)
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-yellowbg "yellow"))
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-bluebg)
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-bluebg "blue"))
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-magentabg)
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-magentabg "magenta"))
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-cyanbg)
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-cyanbg "cyan"))
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
832 (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
833 (term-ignore-error
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
834 (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
835
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
836 (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
837 [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
838 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
839
17814
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
840 (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
841 [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
842 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
843
17814
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
844 (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
845 [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
846 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
847
17814
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
848 (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
849 [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
850 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
851
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
852 ;;; 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
853 (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
854 "*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
855 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
856 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
857 is buffer-local.")
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
858 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
859
10515
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
860 (term-if-xemacs
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
861 (defvar term-terminal-menu
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
862 '("Terminal"
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
863 [ "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
864 [ "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
865 [ "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
866 [ "Disable paging" term-pager-toggle term-pager-count])))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
867
17659
a62b21f702b0 (term-mode): Add a mode-class property.
Richard M. Stallman <rms@gnu.org>
parents: 17407
diff changeset
868 (put 'term-mode 'mode-class 'special)
a62b21f702b0 (term-mode): Add a mode-class property.
Richard M. Stallman <rms@gnu.org>
parents: 17407
diff changeset
869
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
870 (defun term-mode ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
871 "Major mode for interacting with an inferior interpreter.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
872 Interpreter name is same as buffer name, sans the asterisks.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
873 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
874 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
875 In char sub-mode, each character (except `term-escape-char`) is
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
876 set immediately.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
877
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
878 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
879 shell-mode, etc.. This can be done by setting the hooks
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
880 term-input-filter-functions, term-input-filter, term-input-sender and
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
881 term-get-old-input to appropriate functions, and the variable
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
882 term-prompt-regexp to the appropriate regular expression.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
883
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
884 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
885 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
886 \\[term-previous-input], and \\[term-dynamic-list-input-ring].
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
887 Input ring history expansion can be achieved with the commands
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
888 \\[term-replace-by-expanded-history] or \\[term-magic-space].
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
889 Input ring expansion is controlled by the variable `term-input-autoexpand',
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
890 and addition is controlled by the variable `term-input-ignoredups'.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
891
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
892 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
893 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
894 and `term-scroll-to-bottom-on-output'.
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 If you accidentally suspend your process, use \\[term-continue-subjob]
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
897 to continue it.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
898
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
899 \\{term-mode-map}
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
900
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
901 Entry to this mode runs the hooks on term-mode-hook"
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
902 (interactive)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
903 ;; Do not remove this. All major modes must do this.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
904 (kill-all-local-variables)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
905 (setq major-mode 'term-mode)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
906 (setq mode-name "Term")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
907 (use-local-map term-mode-map)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
908 (make-local-variable 'term-home-marker)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
909 (setq term-home-marker (copy-marker 0))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
910 (make-local-variable 'term-saved-home-marker)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
911 (make-local-variable 'term-height)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
912 (make-local-variable 'term-width)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
913 (setq term-width (1- (window-width)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
914 (setq term-height (1- (window-height)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
915 (make-local-variable 'term-terminal-parameter)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
916 (make-local-variable 'term-saved-cursor)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
917 (make-local-variable 'term-last-input-start)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
918 (setq term-last-input-start (make-marker))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
919 (make-local-variable 'term-last-input-end)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
920 (setq term-last-input-end (make-marker))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
921 (make-local-variable 'term-last-input-match)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
922 (setq term-last-input-match "")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
923 (make-local-variable 'term-prompt-regexp) ; Don't set; default
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
924 (make-local-variable 'term-input-ring-size) ; ...to global val.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
925 (make-local-variable 'term-input-ring)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
926 (make-local-variable 'term-input-ring-file-name)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
927 (or (and (boundp 'term-input-ring) term-input-ring)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
928 (setq term-input-ring (make-ring term-input-ring-size)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
929 (make-local-variable 'term-input-ring-index)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
930 (or (and (boundp 'term-input-ring-index) term-input-ring-index)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
931 (setq term-input-ring-index nil))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
932
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
933 (make-local-variable 'term-command-hook)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
934 (setq term-command-hook (symbol-function 'term-command-hook))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
935
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
936 ;;; 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
937 ;;; 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
938 ;;; 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
939 ;;; 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
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-host)
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-host (system-name))
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-dir)
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-dir default-directory)
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 (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
948 (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
949
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
950 ;;; 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
951 (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
952 (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
953 (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
954
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
955 ;;; 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
956 (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
957
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
958 ;;; 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
959 (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
960 (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
961 (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
962 (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
963 (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
964 (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
965 (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
966 (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
967
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
968 (make-local-variable 'term-terminal-state)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
969 (make-local-variable 'term-kill-echo-list)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
970 (make-local-variable 'term-start-line-column)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
971 (make-local-variable 'term-current-column)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
972 (make-local-variable 'term-current-row)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
973 (make-local-variable 'term-log-buffer)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
974 (make-local-variable 'term-scroll-start)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
975 (make-local-variable 'term-scroll-end)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
976 (setq term-scroll-end term-height)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
977 (make-local-variable 'term-scroll-with-delete)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
978 (make-local-variable 'term-pager-count)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
979 (make-local-variable 'term-pager-old-local-map)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
980 (make-local-variable 'term-old-mode-map)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
981 (make-local-variable 'term-insert-mode)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
982 (make-local-variable 'term-dynamic-complete-functions)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
983 (make-local-variable 'term-completion-fignore)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
984 (make-local-variable 'term-get-old-input)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
985 (make-local-variable 'term-matching-input-from-input-string)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
986 (make-local-variable 'term-input-autoexpand)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
987 (make-local-variable 'term-input-ignoredups)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
988 (make-local-variable 'term-delimiter-argument-list)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
989 (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
990 (make-local-variable 'term-input-filter)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
991 (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
992 (make-local-variable 'term-eol-on-send)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
993 (make-local-variable 'term-scroll-to-bottom-on-output)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
994 (make-local-variable 'term-scroll-show-maximum-output)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
995 (make-local-variable 'term-ptyp)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
996 (make-local-variable 'term-exec-hook)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
997 (make-local-variable 'term-vertical-motion)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
998 (make-local-variable 'term-pending-delete-marker)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
999 (setq term-pending-delete-marker (make-marker))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1000 (make-local-variable 'term-current-face)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1001 (make-local-variable 'term-pending-frame)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1002 (setq term-pending-frame nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1003 (run-hooks 'term-mode-hook)
10515
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
1004 (term-if-xemacs
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
1005 (set-buffer-menubar
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
1006 (append current-menubar (list term-terminal-menu))))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1007 (or term-input-ring
10671
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1008 (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
1009 (term-update-mode-line))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1010
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1011 (if term-mode-map
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1012 nil
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1013 (setq term-mode-map (make-sparse-keymap))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1014 (define-key term-mode-map "\ep" 'term-previous-input)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1015 (define-key term-mode-map "\en" 'term-next-input)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1016 (define-key term-mode-map "\er" 'term-previous-matching-input)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1017 (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
1018 (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
1019 (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
1020 'term-previous-matching-input-from-input)
10515
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
1021 (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
1022 (define-key term-mode-map "\e\C-l" 'term-show-output)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1023 (define-key term-mode-map "\C-m" 'term-send-input)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1024 (define-key term-mode-map "\C-d" 'term-delchar-or-maybe-eof)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1025 (define-key term-mode-map "\C-c\C-a" 'term-bol)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1026 (define-key term-mode-map "\C-c\C-u" 'term-kill-input)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1027 (define-key term-mode-map "\C-c\C-w" 'backward-kill-word)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1028 (define-key term-mode-map "\C-c\C-c" 'term-interrupt-subjob)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1029 (define-key term-mode-map "\C-c\C-z" 'term-stop-subjob)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1030 (define-key term-mode-map "\C-c\C-\\" 'term-quit-subjob)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1031 (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
1032 (define-key term-mode-map "\C-c\C-o" 'term-kill-output)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1033 (define-key term-mode-map "\C-c\C-r" 'term-show-output)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1034 (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
1035 (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
1036 (define-key term-mode-map "\C-c\C-n" 'term-next-prompt)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1037 (define-key term-mode-map "\C-c\C-p" 'term-previous-prompt)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1038 (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
1039 (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
1040 (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
1041 (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
1042
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1043
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1044 ; ;; completion:
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
1045 ; (define-key term-mode-map [menu-bar completion]
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1046 ; (cons "Complete" (make-sparse-keymap "Complete")))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1047 ; (define-key term-mode-map [menu-bar completion complete-expand]
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1048 ; '("Expand File Name" . term-replace-by-expanded-filename))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1049 ; (define-key term-mode-map [menu-bar completion complete-listing]
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1050 ; '("File Completion Listing" . term-dynamic-list-filename-completions))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1051 ; (define-key term-mode-map [menu-bar completion complete-file]
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1052 ; '("Complete File Name" . term-dynamic-complete-filename))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1053 ; (define-key term-mode-map [menu-bar completion complete]
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1054 ; '("Complete Before Point" . term-dynamic-complete))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1055 ; ;; Put them in the menu bar:
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1056 ; (setq menu-bar-final-items (append '(terminal completion inout signals)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1057 ; menu-bar-final-items))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1058 )
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1059
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1060 ;; Menu bars:
10515
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
1061 (term-ifnot-xemacs
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
1062 (term-if-emacs19
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1063
10671
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1064 ;; terminal:
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1065 (let (newmap)
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1066 (setq newmap (make-sparse-keymap "Terminal"))
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1067 (define-key newmap [terminal-pager-enable]
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1068 '("Enable paging" . term-fake-pager-enable))
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1069 (define-key newmap [terminal-pager-disable]
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1070 '("Disable paging" . term-fake-pager-disable))
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1071 (define-key newmap [terminal-char-mode]
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1072 '("Character mode" . term-char-mode))
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1073 (define-key newmap [terminal-line-mode]
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1074 '("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
1075 (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
1076
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1077 ;; completion: (line mode only)
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1078 (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
1079 (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
1080 (cons "Complete" term-completion-menu))
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1081 (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
1082 '("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
1083 (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
1084 '("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
1085 (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
1086 '("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
1087 (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
1088 '("Complete Before Point" . term-dynamic-complete))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1089
10671
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1090 ;; Input history: (line mode only)
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1091 (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
1092 (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
1093 (cons "In/Out" term-inout-menu))
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1094 (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
1095 '("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
1096 (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
1097 '("Forward Output Group" . term-next-prompt))
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1098 (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
1099 '("Backward Output Group" . term-previous-prompt))
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1100 (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
1101 '("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
1102 (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
1103 '("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
1104 (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
1105 '("Kill Current Input" . term-kill-input))
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1106 (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
1107 '("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
1108 (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
1109 '("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
1110 (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
1111 '("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
1112 (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
1113 '("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
1114 (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
1115 '("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
1116 (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
1117 '("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
1118 (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
1119 '("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
1120 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
1121 (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
1122 '("Next Input" . term-next-input))
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1123 (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
1124 '("Previous Input" . term-previous-input))
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1125 (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
1126 '("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
1127 (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
1128 '("Expand History Before Point" . term-replace-by-expanded-history))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1129
10671
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1130 ;; Signals
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1131 (setq newmap (make-sparse-keymap "Signals"))
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1132 (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
1133 (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
1134 (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
1135 (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
1136 (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
1137 (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
1138 (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
1139 (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
1140 )))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1141
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1142 (defun term-reset-size (height width)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1143 (setq term-height height)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1144 (setq term-width width)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1145 (setq term-start-line-column nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1146 (setq term-current-row nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1147 (setq term-current-column nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1148 (term-scroll-region 0 height))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1149
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1150 ;; 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
1151 ;; matches part of the buffer before point.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1152 ;; If so, delete that matched part of the buffer - this suppresses echo.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1153 ;; Also, remove that string from the term-kill-echo-list.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1154 ;; 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
1155 ;; in case something gets out of sync. (Except for type-ahead, there
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1156 ;; should only be one element in the list.)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1157
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1158 (defun term-check-kill-echo-list ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1159 (let ((cur term-kill-echo-list) (found nil) (save-point (point)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1160 (unwind-protect
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1161 (progn
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1162 (end-of-line)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1163 (while cur
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1164 (let* ((str (car cur)) (len (length str)) (start (- (point) len)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1165 (if (and (>= start (point-min))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1166 (string= str (buffer-substring start (point))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1167 (progn (delete-backward-char len)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1168 (setq term-kill-echo-list (cdr cur))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1169 (setq term-current-column nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1170 (setq term-current-row nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1171 (setq term-start-line-column nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1172 (setq cur nil found t))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1173 (setq cur (cdr cur))))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1174 (if (not found)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1175 (goto-char save-point)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1176 found))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1177
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1178 (defun term-check-size (process)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1179 (if (or (/= term-height (1- (window-height)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1180 (/= term-width (1- (window-width))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1181 (progn
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1182 (term-reset-size (1- (window-height)) (1- (window-width)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1183 (set-process-window-size process term-height term-width))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1184
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1185 (defun term-send-raw-string (chars)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1186 (let ((proc (get-buffer-process (current-buffer))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1187 (if (not proc)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1188 (error "Current buffer has no process")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1189 ;; Note that (term-current-row) must be called *after*
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1190 ;; (point) has been updated to (process-mark proc).
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1191 (goto-char (process-mark proc))
10671
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1192 (if (term-pager-enabled)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1193 (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
1194 (process-send-string proc chars))))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1195
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1196 (defun term-send-raw ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1197 "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
1198 without any interpretation."
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1199 (interactive)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1200 ;; Convert `return' to C-m, etc.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1201 (if (and (symbolp last-input-char)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1202 (get last-input-char 'ascii-character))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1203 (setq last-input-char (get last-input-char 'ascii-character)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1204 (term-send-raw-string (make-string 1 last-input-char)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1205
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1206 (defun term-send-raw-meta ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1207 (interactive)
30169
0bc4ff279d60 (term-send-raw-meta): Strip modifiers from the keyboard
Gerd Moellmann <gerd@gnu.org>
parents: 25330
diff changeset
1208 (let ((char last-input-char))
0bc4ff279d60 (term-send-raw-meta): Strip modifiers from the keyboard
Gerd Moellmann <gerd@gnu.org>
parents: 25330
diff changeset
1209 (when (symbolp last-input-char)
10671
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1210 ;; Convert `return' to C-m, etc.
30169
0bc4ff279d60 (term-send-raw-meta): Strip modifiers from the keyboard
Gerd Moellmann <gerd@gnu.org>
parents: 25330
diff changeset
1211 (let ((tmp (get char 'event-symbol-elements)))
0bc4ff279d60 (term-send-raw-meta): Strip modifiers from the keyboard
Gerd Moellmann <gerd@gnu.org>
parents: 25330
diff changeset
1212 (when tmp
0bc4ff279d60 (term-send-raw-meta): Strip modifiers from the keyboard
Gerd Moellmann <gerd@gnu.org>
parents: 25330
diff changeset
1213 (setq char (car tmp)))
0bc4ff279d60 (term-send-raw-meta): Strip modifiers from the keyboard
Gerd Moellmann <gerd@gnu.org>
parents: 25330
diff changeset
1214 (when (symbolp char)
0bc4ff279d60 (term-send-raw-meta): Strip modifiers from the keyboard
Gerd Moellmann <gerd@gnu.org>
parents: 25330
diff changeset
1215 (setq tmp (get char 'ascii-character))
0bc4ff279d60 (term-send-raw-meta): Strip modifiers from the keyboard
Gerd Moellmann <gerd@gnu.org>
parents: 25330
diff changeset
1216 (when tmp
0bc4ff279d60 (term-send-raw-meta): Strip modifiers from the keyboard
Gerd Moellmann <gerd@gnu.org>
parents: 25330
diff changeset
1217 (setq char tmp)))))
0bc4ff279d60 (term-send-raw-meta): Strip modifiers from the keyboard
Gerd Moellmann <gerd@gnu.org>
parents: 25330
diff changeset
1218 (setq char (event-basic-type char))
0bc4ff279d60 (term-send-raw-meta): Strip modifiers from the keyboard
Gerd Moellmann <gerd@gnu.org>
parents: 25330
diff changeset
1219 (term-send-raw-string (if (and (numberp char)
0bc4ff279d60 (term-send-raw-meta): Strip modifiers from the keyboard
Gerd Moellmann <gerd@gnu.org>
parents: 25330
diff changeset
1220 (> char 127)
0bc4ff279d60 (term-send-raw-meta): Strip modifiers from the keyboard
Gerd Moellmann <gerd@gnu.org>
parents: 25330
diff changeset
1221 (< char 256))
0bc4ff279d60 (term-send-raw-meta): Strip modifiers from the keyboard
Gerd Moellmann <gerd@gnu.org>
parents: 25330
diff changeset
1222 (make-string 1 char)
0bc4ff279d60 (term-send-raw-meta): Strip modifiers from the keyboard
Gerd Moellmann <gerd@gnu.org>
parents: 25330
diff changeset
1223 (format "\e%c" char)))))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1224
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1225 (defun term-mouse-paste (click arg)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1226 "Insert the last stretch of killed text at the position clicked on."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1227 (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
1228 (term-if-xemacs
8d2f156b72ff (term-mouse-paste): Make work for xemacs. Minor GNU emacs fixes.
Per Bothner <bothner@cygnus.com>
parents: 11032
diff changeset
1229 (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
1230 (x-get-cutbuffer)
8d2f156b72ff (term-mouse-paste): Make work for xemacs. Minor GNU emacs fixes.
Per Bothner <bothner@cygnus.com>
parents: 11032
diff changeset
1231 (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
1232 (term-ifnot-xemacs
8d2f156b72ff (term-mouse-paste): Make work for xemacs. Minor GNU emacs fixes.
Per Bothner <bothner@cygnus.com>
parents: 11032
diff changeset
1233 ;; 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
1234 (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
1235 (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
1236 (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
1237 ((listp arg) 0)
8d2f156b72ff (term-mouse-paste): Make work for xemacs. Minor GNU emacs fixes.
Per Bothner <bothner@cygnus.com>
parents: 11032
diff changeset
1238 ((eq arg '-) -1)
8d2f156b72ff (term-mouse-paste): Make work for xemacs. Minor GNU emacs fixes.
Per Bothner <bothner@cygnus.com>
parents: 11032
diff changeset
1239 (t (1- arg)))))))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1240
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1241 ;; 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
1242 ;; 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
1243 ;; 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
1244 (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
1245 (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
1246 (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
1247 (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
1248 (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
1249 (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
1250 (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
1251 (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
1252 (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
1253 (defun term-send-backspace () (interactive) (term-send-raw-string "\C-H"))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1254
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1255 (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
1256 "Change term-escape-char and keymaps that depend on it."
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1257 (if term-escape-char
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1258 (define-key term-raw-map term-escape-char 'term-send-raw))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1259 (setq c (make-string 1 c))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1260 (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
1261 ;; Define standard bindings in term-raw-escape-map
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1262 (define-key term-raw-escape-map "\C-x"
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1263 (lookup-key (current-global-map) "\C-x"))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1264 (define-key term-raw-escape-map "\C-v"
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1265 (lookup-key (current-global-map) "\C-v"))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1266 (define-key term-raw-escape-map "\C-u"
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1267 (lookup-key (current-global-map) "\C-u"))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1268 (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
1269 (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
1270 ;; 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
1271 (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
1272 (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
1273
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1274 (defun term-char-mode ()
10515
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
1275 "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
1276 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
1277 intervention from Emacs, except for the escape character (usually C-c)."
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1278 (interactive)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1279 (if (not term-raw-map)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1280 (let* ((map (make-keymap))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1281 (esc-map (make-keymap))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1282 (i 0))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1283 (while (< i 128)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1284 (define-key map (make-string 1 i) 'term-send-raw)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1285 (define-key esc-map (make-string 1 i) 'term-send-raw-meta)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1286 (setq i (1+ i)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1287 (define-key map "\e" esc-map)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1288 (setq term-raw-map map)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1289 (setq term-raw-escape-map
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1290 (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
1291
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
1292 ;;; 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
1293
10515
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
1294 (term-if-emacs19
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
1295 (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
1296 (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
1297 (term-ifnot-xemacs
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
1298 (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
1299 (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
1300 (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
1301 (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
1302 (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
1303 (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
1304 (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
1305 (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
1306 (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
1307 (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
1308 (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
1309 (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
1310 (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
1311
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
1312
11032
4b411b6a4e70 (term-char-mode): Fix arrow key and [button2] support for xemacs.
Per Bothner <bothner@cygnus.com>
parents: 10933
diff changeset
1313 (term-set-escape-char ?\C-c)))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1314 ;; 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
1315 (if (term-in-line-mode)
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
1316 (progn
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
1317 (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
1318 (use-local-map term-raw-map)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1319
10515
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
1320 ;; 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
1321 (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
1322 (save-input-sender term-input-sender))
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
1323 (if (> (point) pmark)
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
1324 (unwind-protect
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
1325 (progn
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
1326 (setq term-input-sender
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
1327 (symbol-function 'term-send-string))
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
1328 (end-of-line)
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
1329 (term-send-input))
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
1330 (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
1331 (term-update-mode-line))))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1332
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1333 (defun term-line-mode ()
10515
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
1334 "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
1335 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
1336 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
1337 (interactive)
10515
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
1338 (if (term-in-char-mode)
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
1339 (progn
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
1340 (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
1341 (term-update-mode-line))))
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1342
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1343 (defun term-update-mode-line ()
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1344 (setq mode-line-process
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1345 (if (term-in-char-mode)
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1346 (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
1347 (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
1348 (force-mode-line-update))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1349
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1350 (defun term-check-proc (buffer)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1351 "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
1352 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
1353 name of one"
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1354 (let ((proc (get-buffer-process buffer)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1355 (and proc (memq (process-status proc) '(run stop)))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1356
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1357 ;;;###autoload
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1358 (defun make-term (name program &optional startfile &rest switches)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1359 "Make a term process NAME in a buffer, running PROGRAM.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1360 The name of the buffer is made by surrounding NAME with `*'s.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1361 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
1362 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
1363 the process. Any more args are arguments to PROGRAM."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1364 (let ((buffer (get-buffer-create (concat "*" name "*"))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1365 ;; 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
1366 ;; term mode. Otherwise, leave buffer and existing process alone.
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1367 (cond ((not (term-check-proc buffer))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1368 (save-excursion
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1369 (set-buffer buffer)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1370 (term-mode)) ; Install local vars, mode, keymap, ...
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1371 (term-exec buffer name program startfile switches)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1372 buffer))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1373
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1374 ;;;###autoload
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1375 (defun term (program)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1376 "Start a terminal-emulator in a new buffer."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1377 (interactive (list (read-from-minibuffer "Run program: "
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1378 (or explicit-shell-file-name
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1379 (getenv "ESHELL")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1380 (getenv "SHELL")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1381 "/bin/sh"))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1382 (set-buffer (make-term "terminal" program))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1383 (term-mode)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1384 (term-char-mode)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1385 (switch-to-buffer "*terminal*"))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1386
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1387 (defun term-exec (buffer name command startfile switches)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1388 "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
1389 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
1390 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
1391 buffer. The hook term-exec-hook is run after each exec."
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1392 (save-excursion
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1393 (set-buffer buffer)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1394 (let ((proc (get-buffer-process buffer))) ; Blast any old process.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1395 (if proc (delete-process proc)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1396 ;; Crank up a new process
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1397 (let ((proc (term-exec-1 name buffer command switches)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1398 (make-local-variable 'term-ptyp)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1399 (setq term-ptyp process-connection-type) ; T if pty, NIL if pipe.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1400 ;; Jump to the end, and set the process mark.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1401 (goto-char (point-max))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1402 (set-marker (process-mark proc) (point))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1403 (set-process-filter proc 'term-emulate-terminal)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1404 ;; Feed it the startfile.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1405 (cond (startfile
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1406 ;;This is guaranteed to wait long enough
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1407 ;;but has bad results if the term does not prompt at all
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1408 ;; (while (= size (buffer-size))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1409 ;; (sleep-for 1))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1410 ;;I hope 1 second is enough!
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1411 (sleep-for 1)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1412 (goto-char (point-max))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1413 (insert-file-contents startfile)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1414 (setq startfile (buffer-substring (point) (point-max)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1415 (delete-region (point) (point-max))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1416 (term-send-string proc startfile)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1417 (run-hooks 'term-exec-hook)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1418 buffer)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1419
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1420 ;;; Name to use for TERM.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1421 ;;; Using "emacs" loses, because bash disables editing if TERM == emacs.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1422 (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
1423 ; Format string, usage:
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
1424 ; (format term-termcap-string emacs-term-name "TERMCAP=" 24 80)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1425 (defvar term-termcap-format
10044
c840b3eb9015 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 9603
diff changeset
1426 "%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
1427 :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
1428 :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
1429 :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
1430 :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
1431 :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
1432 :UP=\\E[%%dA:DO=\\E[%%dB:LE=\\E[%%dD:RI=\\E[%%dC"
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1433 ;;; : -undefine ic
13961
ff6ac63de609 (term-process-pager): Fix message spelling.
Karl Heuer <kwzh@gnu.org>
parents: 13337
diff changeset
1434 "termcap capabilities supported")
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1435
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1436 ;;; This auxiliary function cranks up the process for term-exec in
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1437 ;;; the appropriate environment.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1438
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1439 (defun term-exec-1 (name buffer command switches)
10044
c840b3eb9015 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 9603
diff changeset
1440 ;; 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
1441 ;; (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
1442 ;; The 'if ...; then shift; fi' hack is because Bourne shell
c840b3eb9015 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 9603
diff changeset
1443 ;; 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
1444 ;; 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
1445 (let ((process-environment
c840b3eb9015 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 9603
diff changeset
1446 (nconc
c840b3eb9015 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 9603
diff changeset
1447 (list
c840b3eb9015 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 9603
diff changeset
1448 (format "TERM=%s" term-term-name)
c840b3eb9015 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 9603
diff changeset
1449 (if (and (boundp 'system-uses-terminfo) system-uses-terminfo)
c840b3eb9015 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 9603
diff changeset
1450 (format "TERMINFO=%s" data-directory)
c840b3eb9015 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 9603
diff changeset
1451 (format term-termcap-format "TERMCAP="
c840b3eb9015 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 9603
diff changeset
1452 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
1453 (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
1454 (format "LINES=%d" term-height)
c840b3eb9015 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 9603
diff changeset
1455 (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
1456 process-environment))
20153
7ebe9039c4f9 (term-exec-1): Bind inhibit-eol-conversion to t before
Kenichi Handa <handa@m17n.org>
parents: 20021
diff changeset
1457 (process-connection-type t)
7ebe9039c4f9 (term-exec-1): Bind inhibit-eol-conversion to t before
Kenichi Handa <handa@m17n.org>
parents: 20021
diff changeset
1458 ;; 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
1459 (inhibit-eol-conversion t)
7ebe9039c4f9 (term-exec-1): Bind inhibit-eol-conversion to t before
Kenichi Handa <handa@m17n.org>
parents: 20021
diff changeset
1460 )
10044
c840b3eb9015 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 9603
diff changeset
1461 (apply 'start-process name buffer
c840b3eb9015 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 9603
diff changeset
1462 "/bin/sh" "-c"
c840b3eb9015 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 9603
diff changeset
1463 (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
1464 if [ $1 = .. ]; then shift; fi; exec \"$@\""
c840b3eb9015 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 9603
diff changeset
1465 term-height term-width)
c840b3eb9015 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 9603
diff changeset
1466 ".."
c840b3eb9015 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 9603
diff changeset
1467 command switches)))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1468
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
1469 ;;; This should be in Emacs, but it isn't.
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1470 (defun term-mem (item list &optional elt=)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1471 "Test to see if ITEM is equal to an item in LIST.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1472 Option comparison function ELT= defaults to equal."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1473 (let ((elt= (or elt= (function equal)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1474 (done nil))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1475 (while (and list (not done))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1476 (if (funcall elt= item (car list))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1477 (setq done list)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1478 (setq list (cdr list))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1479 done))
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
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1482 ;;; Input history processing in a buffer
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1483 ;;; ===========================================================================
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1484 ;;; Useful input history functions, courtesy of the Ergo group.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1485
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1486 ;;; Eleven commands:
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1487 ;;; term-dynamic-list-input-ring List history in help buffer.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1488 ;;; term-previous-input Previous input...
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1489 ;;; term-previous-matching-input ...matching a string.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1490 ;;; term-previous-matching-input-from-input ... matching the current input.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1491 ;;; term-next-input Next input...
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1492 ;;; term-next-matching-input ...matching a string.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1493 ;;; term-next-matching-input-from-input ... matching the current input.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1494 ;;; term-backward-matching-input Backwards input...
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1495 ;;; term-forward-matching-input ...matching a string.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1496 ;;; term-replace-by-expanded-history Expand history at point;
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1497 ;;; replace with expanded history.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1498 ;;; term-magic-space Expand history and insert space.
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 ;;; Three functions:
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1501 ;;; term-read-input-ring Read into term-input-ring...
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1502 ;;; term-write-input-ring Write to term-input-ring-file-name.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1503 ;;; term-replace-by-expanded-history-before-point Workhorse function.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1504
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1505 (defun term-read-input-ring (&optional silent)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1506 "Sets the buffer's `term-input-ring' from a history file.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1507 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
1508 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
1509 If `term-input-ring-file-name' is nil this function does nothing.
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 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
1512 failure to read the history file.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1513
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1514 This function is useful for major mode commands and mode hooks.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1515
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1516 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
1517 with the most recent command last.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1518 See also `term-input-ignoredups' and `term-write-input-ring'."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1519 (cond ((or (null term-input-ring-file-name)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1520 (equal term-input-ring-file-name ""))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1521 nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1522 ((not (file-readable-p term-input-ring-file-name))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1523 (or silent
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1524 (message "Cannot read history file %s"
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1525 term-input-ring-file-name)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1526 (t
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1527 (let ((history-buf (get-buffer-create " *temp*"))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1528 (file term-input-ring-file-name)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1529 (count 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1530 (ring (make-ring term-input-ring-size)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1531 (unwind-protect
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1532 (save-excursion
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1533 (set-buffer history-buf)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1534 (widen)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1535 (erase-buffer)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1536 (insert-file-contents file)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1537 ;; Save restriction in case file is already visited...
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1538 ;; Watch for those date stamps in history files!
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1539 (goto-char (point-max))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1540 (while (and (< count term-input-ring-size)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1541 (re-search-backward "^[ \t]*\\([^#\n].*\\)[ \t]*$"
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1542 nil t))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1543 (let ((history (buffer-substring (match-beginning 1)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1544 (match-end 1))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1545 (if (or (null term-input-ignoredups)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1546 (ring-empty-p ring)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1547 (not (string-equal (ring-ref ring 0) history)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1548 (ring-insert-at-beginning ring history)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1549 (setq count (1+ count))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1550 (kill-buffer history-buf))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1551 (setq term-input-ring ring
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1552 term-input-ring-index nil)))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1553
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1554 (defun term-write-input-ring ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1555 "Writes the buffer's `term-input-ring' to a history file.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1556 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
1557 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
1558 If `term-input-ring-file-name' is nil this function does nothing.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1559
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1560 Useful within process sentinels.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1561
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1562 See also `term-read-input-ring'."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1563 (cond ((or (null term-input-ring-file-name)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1564 (equal term-input-ring-file-name "")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1565 (null term-input-ring) (ring-empty-p term-input-ring))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1566 nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1567 ((not (file-writable-p term-input-ring-file-name))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1568 (message "Cannot write history file %s" term-input-ring-file-name))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1569 (t
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1570 (let* ((history-buf (get-buffer-create " *Temp Input History*"))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1571 (ring term-input-ring)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1572 (file term-input-ring-file-name)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1573 (index (ring-length ring)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1574 ;; Write it all out into a buffer first. Much faster, but messier,
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1575 ;; than writing it one line at a time.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1576 (save-excursion
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1577 (set-buffer history-buf)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1578 (erase-buffer)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1579 (while (> index 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1580 (setq index (1- index))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1581 (insert (ring-ref ring index) ?\n))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1582 (write-region (buffer-string) nil file nil 'no-message)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1583 (kill-buffer nil))))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1584
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1585
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1586 (defun term-dynamic-list-input-ring ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1587 "List in help buffer the buffer's input history."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1588 (interactive)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1589 (if (or (not (ring-p term-input-ring))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1590 (ring-empty-p term-input-ring))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1591 (message "No history")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1592 (let ((history nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1593 (history-buffer " *Input History*")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1594 (index (1- (ring-length term-input-ring)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1595 (conf (current-window-configuration)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1596 ;; We have to build up a list ourselves from the ring vector.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1597 (while (>= index 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1598 (setq history (cons (ring-ref term-input-ring index) history)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1599 index (1- index)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1600 ;; Change "completion" to "history reference"
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1601 ;; to make the display accurate.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1602 (with-output-to-temp-buffer history-buffer
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1603 (display-completion-list history)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1604 (set-buffer history-buffer)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1605 (forward-line 3)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1606 (while (search-backward "completion" nil 'move)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1607 (replace-match "history reference")))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1608 (sit-for 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1609 (message "Hit space to flush")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1610 (let ((ch (read-event)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1611 (if (eq ch ?\ )
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1612 (set-window-configuration conf)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1613 (setq unread-command-events (list ch)))))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1614
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1615
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1616 (defun term-regexp-arg (prompt)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1617 ;; 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
1618 (let* (;; Don't clobber this.
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1619 (last-command last-command)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1620 (regexp (read-from-minibuffer prompt nil nil nil
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1621 'minibuffer-history-search-history)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1622 (list (if (string-equal regexp "")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1623 (setcar minibuffer-history-search-history
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1624 (nth 1 minibuffer-history-search-history))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1625 regexp)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1626 (prefix-numeric-value current-prefix-arg))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1627
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1628 (defun term-search-arg (arg)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1629 ;; 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
1630 (cond ((not (term-after-pmark-p))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1631 (error "Not at command line"))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1632 ((or (null term-input-ring)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1633 (ring-empty-p term-input-ring))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1634 (error "Empty input ring"))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1635 ((zerop arg)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1636 ;; arg of zero resets search from beginning, and uses arg of 1
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1637 (setq term-input-ring-index nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1638 1)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1639 (t
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1640 arg)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1641
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1642 (defun term-search-start (arg)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1643 ;; Index to start a directional search, starting at term-input-ring-index
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1644 (if term-input-ring-index
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1645 ;; If a search is running, offset by 1 in direction of arg
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1646 (mod (+ term-input-ring-index (if (> arg 0) 1 -1))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1647 (ring-length term-input-ring))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1648 ;; For a new search, start from beginning or end, as appropriate
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1649 (if (>= arg 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1650 0 ; First elt for forward search
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1651 (1- (ring-length term-input-ring))))) ; Last elt for backward search
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1652
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1653 (defun term-previous-input-string (arg)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1654 "Return the string ARG places along the input ring.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1655 Moves relative to `term-input-ring-index'."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1656 (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
1657 (mod (+ arg term-input-ring-index)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1658 (ring-length term-input-ring))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1659 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-previous-input (arg)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1662 "Cycle backwards 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-matching-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-next-input (arg)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1667 "Cycle forwards through input history."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1668 (interactive "*p")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1669 (term-previous-input (- arg)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1670
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1671 (defun term-previous-matching-input-string (regexp arg)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1672 "Return the string matching REGEXP ARG places along the input ring.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1673 Moves relative to `term-input-ring-index'."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1674 (let* ((pos (term-previous-matching-input-string-position regexp arg)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1675 (if pos (ring-ref term-input-ring pos))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1676
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
1677 (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
1678 (regexp arg &optional start)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1679 "Return the index matching REGEXP ARG places along the input ring.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1680 Moves relative to START, or `term-input-ring-index'."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1681 (if (or (not (ring-p term-input-ring))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1682 (ring-empty-p term-input-ring))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1683 (error "No history"))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1684 (let* ((len (ring-length term-input-ring))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1685 (motion (if (> arg 0) 1 -1))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1686 (n (mod (- (or start (term-search-start arg)) motion) len))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1687 (tried-each-ring-item nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1688 (prev nil))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1689 ;; Do the whole search as many times as the argument says.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1690 (while (and (/= arg 0) (not tried-each-ring-item))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1691 ;; Step once.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1692 (setq prev n
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1693 n (mod (+ n motion) len))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1694 ;; If we haven't reached a match, step some more.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1695 (while (and (< n len) (not tried-each-ring-item)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1696 (not (string-match regexp (ring-ref term-input-ring n))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1697 (setq n (mod (+ n motion) len)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1698 ;; If we have gone all the way around in this search.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1699 tried-each-ring-item (= n prev)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1700 (setq arg (if (> arg 0) (1- arg) (1+ arg))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1701 ;; 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
1702 (if (string-match regexp (ring-ref term-input-ring n))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1703 n)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1704
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1705 (defun term-previous-matching-input (regexp arg)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1706 "Search backwards through input history for match for REGEXP.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1707 \(Previous history elements are earlier commands.)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1708 With prefix argument N, search for Nth previous match.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1709 If N is negative, find the next or Nth next match."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1710 (interactive (term-regexp-arg "Previous input matching (regexp): "))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1711 (setq arg (term-search-arg arg))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1712 (let ((pos (term-previous-matching-input-string-position regexp arg)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1713 ;; Has a match been found?
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1714 (if (null pos)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1715 (error "Not found")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1716 (setq term-input-ring-index pos)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1717 (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
1718 (delete-region
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1719 ;; Can't use kill-region as it sets this-command
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1720 (process-mark (get-buffer-process (current-buffer))) (point))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1721 (insert (ring-ref term-input-ring pos)))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1722
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1723 (defun term-next-matching-input (regexp arg)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1724 "Search forwards through input history for match for REGEXP.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1725 \(Later history elements are more recent commands.)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1726 With prefix argument N, search for Nth following match.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1727 If N is negative, find the previous or Nth previous match."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1728 (interactive (term-regexp-arg "Next input matching (regexp): "))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1729 (term-previous-matching-input regexp (- arg)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1730
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1731 (defun term-previous-matching-input-from-input (arg)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1732 "Search backwards through input history for match for current input.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1733 \(Previous history elements are earlier commands.)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1734 With prefix argument N, search for Nth previous match.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1735 If N is negative, search forwards for the -Nth following match."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1736 (interactive "p")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1737 (if (not (memq last-command '(term-previous-matching-input-from-input
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1738 term-next-matching-input-from-input)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1739 ;; Starting a new search
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1740 (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
1741 (buffer-substring
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
1742 (process-mark (get-buffer-process (current-buffer)))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1743 (point))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1744 term-input-ring-index nil))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1745 (term-previous-matching-input
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1746 (concat "^" (regexp-quote term-matching-input-from-input-string))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1747 arg))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1748
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1749 (defun term-next-matching-input-from-input (arg)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1750 "Search forwards through input history for match for current input.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1751 \(Following history elements are more recent commands.)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1752 With prefix argument N, search for Nth following match.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1753 If N is negative, search backwards for the -Nth previous match."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1754 (interactive "p")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1755 (term-previous-matching-input-from-input (- arg)))
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
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1758 (defun term-replace-by-expanded-history (&optional silent)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1759 "Expand input command history references before point.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1760 Expansion is dependent on the value of `term-input-autoexpand'.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1761
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1762 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
1763 match the command interpreter's idea, assuming it has one.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1764
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
1765 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
1766 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
1767 it cannot expand absolute input line number references.
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 If the optional argument SILENT is non-nil, never complain
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1770 even if history reference seems erroneous.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1771
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1772 See `term-magic-space' and `term-replace-by-expanded-history-before-point'.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1773
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1774 Returns t if successful."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1775 (interactive)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1776 (if (and term-input-autoexpand
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1777 (string-match "[!^]" (funcall term-get-old-input))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1778 (save-excursion (beginning-of-line)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1779 (looking-at term-prompt-regexp)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1780 ;; Looks like there might be history references in the command.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1781 (let ((previous-modified-tick (buffer-modified-tick)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1782 (message "Expanding history references...")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1783 (term-replace-by-expanded-history-before-point silent)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1784 (/= previous-modified-tick (buffer-modified-tick)))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1785
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1786
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1787 (defun term-replace-by-expanded-history-before-point (silent)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1788 "Expand directory stack reference before point.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1789 See `term-replace-by-expanded-history'. Returns t if successful."
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 (let ((toend (- (save-excursion (end-of-line nil) (point)) (point)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1792 (start (progn (term-bol nil) (point))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1793 (while (progn
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1794 (skip-chars-forward "^!^"
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1795 (save-excursion
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1796 (end-of-line nil) (- (point) toend)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1797 (< (point)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1798 (save-excursion
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1799 (end-of-line nil) (- (point) toend))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1800 ;; This seems a bit complex. We look for references such as !!, !-num,
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1801 ;; !foo, !?foo, !{bar}, !?{bar}, ^oh, ^my^, ^god^it, ^never^ends^.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1802 ;; If that wasn't enough, the plings can be suffixed with argument
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1803 ;; range specifiers.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1804 ;; Argument ranges are complex too, so we hive off the input line,
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1805 ;; referenced with plings, with the range string to `term-args'.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1806 (setq term-input-ring-index nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1807 (cond ((or (= (preceding-char) ?\\)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1808 (term-within-quotes start (point)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1809 ;; The history is quoted, or we're in quotes.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1810 (goto-char (1+ (point))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1811 ((looking-at "![0-9]+\\($\\|[^-]\\)")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1812 ;; We cannot know the interpreter's idea of input line numbers.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1813 (goto-char (match-end 0))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1814 (message "Absolute reference cannot be expanded"))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1815 ((looking-at "!-\\([0-9]+\\)\\(:?[0-9^$*-]+\\)?")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1816 ;; Just a number of args from `number' lines backward.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1817 (let ((number (1- (string-to-number
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1818 (buffer-substring (match-beginning 1)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1819 (match-end 1))))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1820 (if (<= number (ring-length term-input-ring))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1821 (progn
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1822 (replace-match
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1823 (term-args (term-previous-input-string number)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1824 (match-beginning 2) (match-end 2))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1825 t t)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1826 (setq term-input-ring-index number)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1827 (message "History item: %d" (1+ number)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1828 (goto-char (match-end 0))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1829 (message "Relative reference exceeds input history size"))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1830 ((or (looking-at "!!?:?\\([0-9^$*-]+\\)") (looking-at "!!"))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1831 ;; Just a number of args from the previous input line.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1832 (replace-match
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1833 (term-args (term-previous-input-string 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1834 (match-beginning 1) (match-end 1))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1835 t t)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1836 (message "History item: previous"))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1837 ((looking-at
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1838 "!\\??\\({\\(.+\\)}\\|\\(\\sw+\\)\\)\\(:?[0-9^$*-]+\\)?")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1839 ;; Most recent input starting with or containing (possibly
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1840 ;; protected) string, maybe just a number of args. Phew.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1841 (let* ((mb1 (match-beginning 1)) (me1 (match-end 1))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1842 (mb2 (match-beginning 2)) (me2 (match-end 2))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1843 (exp (buffer-substring (or mb2 mb1) (or me2 me1)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1844 (pref (if (save-match-data (looking-at "!\\?")) "" "^"))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1845 (pos (save-match-data
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1846 (term-previous-matching-input-string-position
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1847 (concat pref (regexp-quote exp)) 1))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1848 (if (null pos)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1849 (progn
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1850 (goto-char (match-end 0))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1851 (or silent
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1852 (progn (message "Not found")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1853 (ding))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1854 (setq term-input-ring-index pos)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1855 (replace-match
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1856 (term-args (ring-ref term-input-ring pos)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1857 (match-beginning 4) (match-end 4))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1858 t t)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1859 (message "History item: %d" (1+ pos)))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1860 ((looking-at "\\^\\([^^]+\\)\\^?\\([^^]*\\)\\^?")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1861 ;; Quick substitution on the previous input line.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1862 (let ((old (buffer-substring (match-beginning 1) (match-end 1)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1863 (new (buffer-substring (match-beginning 2) (match-end 2)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1864 (pos nil))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1865 (replace-match (term-previous-input-string 0) t t)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1866 (setq pos (point))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1867 (goto-char (match-beginning 0))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1868 (if (not (search-forward old pos t))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1869 (or silent
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1870 (error "Not found"))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1871 (replace-match new t t)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1872 (message "History item: substituted"))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1873 (t
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1874 (goto-char (match-end 0))))))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1875
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1876
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1877 (defun term-magic-space (arg)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1878 "Expand input history references before point and insert ARG spaces.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1879 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
1880 (interactive "p")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1881 (term-replace-by-expanded-history)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1882 (self-insert-command arg))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1883
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1884 (defun term-within-quotes (beg end)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1885 "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
1886 Quotes are single and double."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1887 (let ((countsq (term-how-many-region "\\(^\\|[^\\\\]\\)\'" beg end))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1888 (countdq (term-how-many-region "\\(^\\|[^\\\\]\\)\"" beg end)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1889 (or (= (mod countsq 2) 1) (= (mod countdq 2) 1))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1890
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1891 (defun term-how-many-region (regexp beg end)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1892 "Return number of matches for REGEXP from BEG to END."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1893 (let ((count 0))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1894 (save-excursion
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1895 (save-match-data
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1896 (goto-char beg)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1897 (while (re-search-forward regexp end t)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1898 (setq count (1+ count)))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1899 count))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1900
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1901 (defun term-args (string begin end)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1902 ;; 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
1903 ;; 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
1904 ;; 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
1905 (save-match-data
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1906 (if (null begin)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1907 (term-arguments string 0 nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1908 (let* ((range (buffer-substring
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1909 (if (eq (char-after begin) ?:) (1+ begin) begin) end))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1910 (nth (cond ((string-match "^[*^]" range) 1)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1911 ((string-match "^-" range) 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1912 ((string-equal range "$") nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1913 (t (string-to-number range))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1914 (mth (cond ((string-match "[-*$]$" range) nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1915 ((string-match "-" range)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1916 (string-to-number (substring range (match-end 0))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1917 (t nth))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1918 (term-arguments string nth mth)))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1919
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1920 ;; Return a list of arguments from ARG. Break it up at the
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1921 ;; delimiters in term-delimiter-argument-list. Returned list is backwards.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1922 (defun term-delim-arg (arg)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1923 (if (null term-delimiter-argument-list)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1924 (list arg)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1925 (let ((args nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1926 (pos 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1927 (len (length arg)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1928 (while (< pos len)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1929 (let ((char (aref arg pos))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1930 (start pos))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1931 (if (memq char term-delimiter-argument-list)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1932 (while (and (< pos len) (eq (aref arg pos) char))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1933 (setq pos (1+ pos)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1934 (while (and (< pos len)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1935 (not (memq (aref arg pos)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1936 term-delimiter-argument-list)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1937 (setq pos (1+ pos))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1938 (setq args (cons (substring arg start pos) args))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1939 args)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1940
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1941 (defun term-arguments (string nth mth)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1942 "Return from STRING the NTH to MTH arguments.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1943 NTH and/or MTH can be nil, which means the last argument.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1944 Returned arguments are separated by single spaces.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1945 We assume whitespace separates arguments, except within quotes.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1946 Also, a run of one or more of a single character
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1947 in `term-delimiter-argument-list' is a separate argument.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1948 Argument 0 is the command name."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1949 (let ((argpart "[^ \n\t\"'`]+\\|\\(\"[^\"]*\"\\|'[^']*'\\|`[^`]*`\\)")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1950 (args ()) (pos 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1951 (count 0)
15246
ba353653c03a (term-send-raw-string): send-string -> process-send-string.
Karl Heuer <kwzh@gnu.org>
parents: 15212
diff changeset
1952 beg str quotes)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1953 ;; 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
1954 (while (and (or (null mth) (<= count mth))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1955 (string-match argpart string pos))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1956 (if (and beg (= pos (match-beginning 0)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1957 ;; It's contiguous, part of the same arg.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1958 (setq pos (match-end 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1959 quotes (or quotes (match-beginning 1)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1960 ;; It's a new separate arg.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1961 (if beg
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1962 ;; Put the previous arg, if there was one, onto ARGS.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1963 (setq str (substring string beg pos)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1964 args (if quotes (cons str args)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1965 (nconc (term-delim-arg str) args))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1966 count (1+ count)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1967 (setq quotes (match-beginning 1))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1968 (setq beg (match-beginning 0))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1969 (setq pos (match-end 0))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1970 (if beg
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1971 (setq str (substring string beg pos)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1972 args (if quotes (cons str args)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1973 (nconc (term-delim-arg str) args))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1974 count (1+ count)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1975 (let ((n (or nth (1- count)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1976 (m (if mth (1- (- count mth)) 0)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1977 (mapconcat
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1978 (function (lambda (a) a)) (nthcdr n (nreverse (nthcdr m args))) " "))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1979
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1980 ;;;
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1981 ;;; Input processing stuff [line mode]
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1982 ;;;
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1983
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
1984 (defun term-send-input ()
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1985 "Send input to process.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1986 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
1987 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
1988 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
1989 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
1990 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
1991 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
1992 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
1993 term-input-filter returns non-nil when called on the input.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1994
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1995 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
1996 `term-input-autoexpand'. The list of function names contained in the value
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1997 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
1998 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
1999 `term-input-filter' returns non-nil when called on the input.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2000
10933
3057c4fd86d3 * term.el (term-eol-on-send): New variable. Use it.
Per Bothner <bothner@cygnus.com>
parents: 10679
diff changeset
2001 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
2002 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
2003
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2004 The values of `term-get-old-input', `term-input-filter-functions', and
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2005 `term-input-filter' are chosen according to the command interpreter running
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2006 in the buffer. E.g.,
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2007
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2008 If the interpreter is the csh,
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2009 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
2010 initial string matching regexp term-prompt-regexp.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2011 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
2012 \"popd\" commands. When it sees one, it cd's the buffer.
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2013 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
2014 space.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2015
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2016 If the term is Lucid Common Lisp,
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2017 term-get-old-input snarfs the sexp ending at point.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2018 term-input-filter-functions does nothing.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2019 term-input-filter returns NIL if the input matches input-filter-regexp,
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2020 which matches (1) all whitespace (2) :a, :c, etc.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2021
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2022 Similarly for Soar, Scheme, etc."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2023 (interactive)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2024 ;; Note that the input string does not include its terminal newline.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2025 (let ((proc (get-buffer-process (current-buffer))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2026 (if (not proc) (error "Current buffer has no process")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2027 (let* ((pmark (process-mark proc))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2028 (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
2029 (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
2030 (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
2031 (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
2032 (buffer-substring pmark (point)))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2033 (funcall term-get-old-input)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2034 (input (if (not (eq term-input-autoexpand 'input))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2035 ;; Just whatever's already there
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2036 intxt
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2037 ;; Expand and leave it visible in buffer
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2038 (term-replace-by-expanded-history t)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2039 (buffer-substring pmark (point))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2040 (history (if (not (eq term-input-autoexpand 'history))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2041 input
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2042 ;; This is messy 'cos ultimately the original
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2043 ;; functions used do insertion, rather than return
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2044 ;; strings. We have to expand, then insert back.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2045 (term-replace-by-expanded-history t)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2046 (let ((copy (buffer-substring pmark (point))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2047 (delete-region pmark (point))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2048 (insert input)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2049 copy))))
10671
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
2050 (if (term-pager-enabled)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2051 (save-excursion
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2052 (goto-char (process-mark proc))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2053 (setq term-pager-count (term-current-row))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2054 (if (and (funcall term-input-filter history)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2055 (or (null term-input-ignoredups)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2056 (not (ring-p term-input-ring))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2057 (ring-empty-p term-input-ring)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2058 (not (string-equal (ring-ref term-input-ring 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2059 history))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2060 (ring-insert term-input-ring history))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2061 (let ((functions term-input-filter-functions))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2062 (while functions
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2063 (funcall (car functions) (concat input "\n"))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2064 (setq functions (cdr functions))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2065 (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
2066
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2067 ;; Update the markers before we send the input
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2068 ;; in case we get output amidst sending the input.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2069 (set-marker term-last-input-start pmark)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2070 (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
2071 (if input-is-new
3057c4fd86d3 * term.el (term-eol-on-send): New variable. Use it.
Per Bothner <bothner@cygnus.com>
parents: 10679
diff changeset
2072 (progn
3057c4fd86d3 * term.el (term-eol-on-send): New variable. Use it.
Per Bothner <bothner@cygnus.com>
parents: 10679
diff changeset
2073 ;; 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
2074 (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
2075 (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
2076 (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
2077 (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
2078 (goto-char pmark)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2079 (funcall term-input-sender proc input)))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2080
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2081 (defun term-get-old-input-default ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2082 "Default for term-get-old-input.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2083 Take the current line, and discard any initial text matching
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2084 term-prompt-regexp."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2085 (save-excursion
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2086 (beginning-of-line)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2087 (term-skip-prompt)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2088 (let ((beg (point)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2089 (end-of-line)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2090 (buffer-substring beg (point)))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2091
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2092 (defun term-copy-old-input ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2093 "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
2094 Calls `term-get-old-input' to get old input."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2095 (interactive)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2096 (let ((input (funcall term-get-old-input))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2097 (process (get-buffer-process (current-buffer))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2098 (if (not process)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2099 (error "Current buffer has no process")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2100 (goto-char (process-mark process))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2101 (insert input))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2102
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2103 (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
2104 "Skip past the text matching regexp term-prompt-regexp.
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2105 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
2106 (let ((eol (save-excursion (end-of-line) (point))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2107 (if (and (looking-at term-prompt-regexp)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2108 (<= (match-end 0) eol))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2109 (goto-char (match-end 0)))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2110
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2111
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2112 (defun term-after-pmark-p ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2113 "Is point after the process output marker?"
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2114 ;; 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
2115 ;; 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
2116 ;; 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
2117 ;; services input during execution of lisp commands.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2118 (let ((proc-pos (marker-position
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2119 (process-mark (get-buffer-process (current-buffer))))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2120 (<= proc-pos (point))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2121
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2122 (defun term-simple-send (proc string)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2123 "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
2124 This just sends STRING plus a newline. To override this,
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2125 set the hook TERM-INPUT-SENDER."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2126 (term-send-string proc string)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2127 (term-send-string proc "\n"))
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 (defun term-bol (arg)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2130 "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
2131 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
2132 -- go straight to column 0.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2133
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2134 The prompt skip is done by skipping text matching the regular expression
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2135 term-prompt-regexp, a buffer local variable."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2136 (interactive "P")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2137 (beginning-of-line)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2138 (if (null arg) (term-skip-prompt)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2139
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2140 ;;; 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
2141 ;;; saved -- typically passwords to ftp, telnet, or somesuch.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2142 ;;; Just enter m-x term-send-invisible and type in your line.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2143
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2144 (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
2145 "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
2146 Prompt with argument PROMPT, a string. Optional argument STARS causes
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2147 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
2148 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
2149 `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
2150 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
2151
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2152 Note that the keystrokes comprising the text can still be recovered
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2153 \(temporarily) with \\[view-lossage]. This may be a security bug for some
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2154 applications."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2155 (let ((ans "")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2156 (c 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2157 (echo-keystrokes 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2158 (cursor-in-echo-area t)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2159 (done nil))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2160 (while (not done)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2161 (if stars
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2162 (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
2163 (message "%s" prompt))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2164 (setq c (read-char))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2165 (cond ((= c ?\C-g)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2166 ;; 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
2167 ;; inhibit-quit is set. In later versions of Emacs read-char
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2168 ;; may clear quit-flag itself and return C-g. That would make
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2169 ;; it impossible to quit this loop in a simple way, so
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2170 ;; re-enable it here (for backward-compatibility the check for
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2171 ;; quit-flag below would still be necessary, so this seems
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2172 ;; like the simplest way to do things).
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2173 (setq quit-flag t
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2174 done t))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2175 ((or (= c ?\r) (= c ?\n) (= c ?\e))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2176 (setq done t))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2177 ((= c ?\C-u)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2178 (setq ans ""))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2179 ((and (/= c ?\b) (/= c ?\177))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2180 (setq ans (concat ans (char-to-string c))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2181 ((> (length ans) 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2182 (setq ans (substring ans 0 -1)))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2183 (if quit-flag
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2184 ;; Emulate a true quit, except that we have to return a value.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2185 (prog1
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2186 (setq quit-flag nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2187 (message "Quit")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2188 (beep t))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2189 (message "")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2190 ans)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2191
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2192 (defun term-send-invisible (str &optional proc)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2193 "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
2194 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
2195 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
2196 Security bug: your string can still be temporarily recovered with
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2197 \\[view-lossage]."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2198 (interactive "P") ; Defeat snooping via C-x esc
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2199 (if (not (stringp str))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2200 (setq str (term-read-noecho "Non-echoed text: " t)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2201 (if (not proc)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2202 (setq proc (get-buffer-process (current-buffer))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2203 (if (not proc) (error "Current buffer has no process")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2204 (setq term-kill-echo-list (nconc term-kill-echo-list
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2205 (cons str nil)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2206 (term-send-string proc str)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2207 (term-send-string proc "\n")))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2208
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2209
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2210 ;;; Low-level process communication
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2211
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2212 (defvar term-input-chunk-size 512
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2213 "*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
2214 If your process is choking on big inputs, try lowering the value.")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2215
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2216 (defun term-send-string (proc str)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2217 "Send PROCESS the contents of STRING as input.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2218 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
2219 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
2220 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
2221 from hanging when you send them long inputs on some OS's."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2222 (let* ((len (length str))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2223 (i (min len term-input-chunk-size)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2224 (process-send-string proc (substring str 0 i))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2225 (while (< i len)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2226 (let ((next-i (+ i term-input-chunk-size)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2227 (accept-process-output)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2228 (process-send-string proc (substring str i (min len next-i)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2229 (setq i next-i)))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2230
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2231 (defun term-send-region (proc start end)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2232 "Sends to PROC the region delimited by START and END.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2233 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
2234 your process from hanging on long inputs. See term-send-string."
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2235 (term-send-string proc (buffer-substring start end)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2236
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2237
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2238 ;;; Random input hackage
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2239
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2240 (defun term-kill-output ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2241 "Kill all output from interpreter since last input."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2242 (interactive)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2243 (let ((pmark (process-mark (get-buffer-process (current-buffer)))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2244 (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
2245 (goto-char pmark)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2246 (insert "*** output flushed ***\n")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2247 (set-marker pmark (point))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2248
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2249 (defun term-show-output ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2250 "Display start of this batch of interpreter output at top of window.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2251 Sets mark to the value of point when this command is run."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2252 (interactive)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2253 (goto-char term-last-input-end)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2254 (backward-char)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2255 (beginning-of-line)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2256 (set-window-start (selected-window) (point))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2257 (end-of-line))
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-interrupt-subjob ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2260 "Interrupt 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 (interrupt-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-kill-subjob ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2265 "Send kill 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 (kill-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-quit-subjob ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2270 "Send quit signal to the current subjob."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2271 (interactive)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2272 (quit-process nil term-ptyp))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2273
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2274 (defun term-stop-subjob ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2275 "Stop the current subjob.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2276 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
2277 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
2278 this, use \\[term-continue-subjob] to resume the process. (This
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2279 is not a problem with most shells, since they ignore this signal.)"
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2280 (interactive)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2281 (stop-process nil term-ptyp))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2282
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2283 (defun term-continue-subjob ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2284 "Send CONT signal to process buffer's process group.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2285 Useful if you accidentally suspend the top-level process."
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 (continue-process nil term-ptyp))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2288
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2289 (defun term-kill-input ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2290 "Kill all text from last stuff output by interpreter to point."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2291 (interactive)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2292 (let* ((pmark (process-mark (get-buffer-process (current-buffer))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2293 (p-pos (marker-position pmark)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2294 (if (> (point) p-pos)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2295 (kill-region pmark (point)))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2296
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2297 (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
2298 "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
2299 buffer."
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2300 (interactive "p")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2301 (if (eobp)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2302 (process-send-eof)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2303 (delete-char arg)))
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-send-eof ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2306 "Send an EOF to the current buffer's process."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2307 (interactive)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2308 (process-send-eof))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2309
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2310 (defun term-backward-matching-input (regexp arg)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2311 "Search backward through buffer for match for REGEXP.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2312 Matches are searched for on lines that match `term-prompt-regexp'.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2313 With prefix argument N, search for Nth previous match.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2314 If N is negative, find the next or Nth next match."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2315 (interactive (term-regexp-arg "Backward input matching (regexp): "))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2316 (let* ((re (concat term-prompt-regexp ".*" regexp))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2317 (pos (save-excursion (end-of-line (if (> arg 0) 0 1))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2318 (if (re-search-backward re nil t arg)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2319 (point)))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2320 (if (null pos)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2321 (progn (message "Not found")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2322 (ding))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2323 (goto-char pos)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2324 (term-bol nil))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2325
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2326 (defun term-forward-matching-input (regexp arg)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2327 "Search forward through buffer for match for REGEXP.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2328 Matches are searched for on lines that match `term-prompt-regexp'.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2329 With prefix argument N, search for Nth following match.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2330 If N is negative, find the previous or Nth previous match."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2331 (interactive (term-regexp-arg "Forward input matching (regexp): "))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2332 (term-backward-matching-input regexp (- arg)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2333
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2334
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2335 (defun term-next-prompt (n)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2336 "Move to end of Nth next prompt in the buffer.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2337 See `term-prompt-regexp'."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2338 (interactive "p")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2339 (let ((paragraph-start term-prompt-regexp))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2340 (end-of-line (if (> n 0) 1 0))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2341 (forward-paragraph n)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2342 (term-skip-prompt)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2343
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2344 (defun term-previous-prompt (n)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2345 "Move to end of Nth previous prompt in the buffer.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2346 See `term-prompt-regexp'."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2347 (interactive "p")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2348 (term-next-prompt (- n)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2349
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2350 ;;; Support for source-file processing commands.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2351 ;;;============================================================================
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2352 ;;; Many command-interpreters (e.g., Lisp, Scheme, Soar) have
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2353 ;;; 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
2354 ;;; 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
2355 ;;; 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
2356 ;;; for defining these commands.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2357 ;;;
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2358 ;;; 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
2359 ;;; and Soar, in that they don't know anything about file extensions.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2360 ;;; So the compile/load interface gets the wrong default occasionally.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2361 ;;; The load-file/compile-file default mechanism could be smarter -- it
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2362 ;;; 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
2363 ;;; 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
2364 ;;; 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
2365 ;;; 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
2366 ;;; because the extension for executable files varies so much (.o, .bin,
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2367 ;;; .lbin, .mo, .vo, .ao, ...).
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2368
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2369
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2370 ;;; TERM-SOURCE-DEFAULT -- determines defaults for source-file processing
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2371 ;;; commands.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2372 ;;;
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2373 ;;; 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
2374 ;;; 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
2375 ;;; interpreter.
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 ;;; TERM-GET-SOURCE -- used by the source-file processing commands to prompt
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2378 ;;; for the file to process.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2379
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2380 ;;; (TERM-SOURCE-DEFAULT previous-dir/file source-modes)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2381 ;;;============================================================================
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2382 ;;; 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
2383 ;;; 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
2384 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2385 ;;; - 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
2386 ;;; 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
2387 ;;; - SOURCE-MODES is a list used to determine what buffers contain source
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2388 ;;; 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
2389 ;;; 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
2390 ;;;
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2391 ;;; 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
2392 ;;; 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
2393 ;;; 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
2394 ;;; 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
2395 ;;;
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2396 ;;; 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
2397 ;;; SOURCE-MODES, then the the filename is the default file, and the
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2398 ;;; 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
2399 ;;;
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2400 ;;; 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
2401 ;;; 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
2402 ;;; 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
2403 ;;; 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
2404 ;;; 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
2405 ;;;
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2406 ;;; SOURCE-REGEXP is typically going to be something like (tea-mode)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2407 ;;; for T programs, (lisp-mode) for Lisp programs, (soar-mode lisp-mode)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2408 ;;; 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
2409 ;;;
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2410 ;;; The function returns a pair: (default-directory . default-file).
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2411
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2412 (defun term-source-default (previous-dir/file source-modes)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2413 (cond ((and buffer-file-name (memq major-mode source-modes))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2414 (cons (file-name-directory buffer-file-name)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2415 (file-name-nondirectory buffer-file-name)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2416 (previous-dir/file)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2417 (t
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2418 (cons default-directory nil))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2419
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2420
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2421 ;;; (TERM-CHECK-SOURCE fname)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2422 ;;;============================================================================
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2423 ;;; 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
2424 ;;; 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
2425 ;;; 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
2426 ;;; 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
2427 ;;; the load or compile.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2428
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2429 (defun term-check-source (fname)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2430 (let ((buff (get-file-buffer fname)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2431 (if (and buff
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2432 (buffer-modified-p buff)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2433 (y-or-n-p (format "Save buffer %s first? "
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2434 (buffer-name buff))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2435 ;; save BUFF.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2436 (let ((old-buffer (current-buffer)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2437 (set-buffer buff)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2438 (save-buffer)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2439 (set-buffer old-buffer)))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2440
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2441
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2442 ;;; (TERM-GET-SOURCE prompt prev-dir/file source-modes mustmatch-p)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2443 ;;;============================================================================
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2444 ;;; TERM-GET-SOURCE is used to prompt for filenames in command-interpreter
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2445 ;;; commands that process source files (like loading or compiling a file).
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2446 ;;; It prompts for the filename, provides a default, if there is one,
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2447 ;;; 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
2448 ;;;
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2449 ;;; 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
2450 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2451 ;;; 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
2452 ;;; 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
2453 ;;; 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
2454 ;;; 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
2455 ;;; 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
2456 ;;;
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2457 ;;; A typical use:
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2458 ;;; (interactive (term-get-source "Compile file: " prev-lisp-dir/file
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2459 ;;; '(lisp-mode) t))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2460
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2461 ;;; 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
2462 ;;; 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
2463 (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
2464 "Returns string around POINT that starts the current line or nil."
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2465 (save-excursion
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2466 (let* ((point (point))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2467 (bol (progn (beginning-of-line) (point)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2468 (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
2469 (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
2470 (and (search-backward "\"" bol t)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2471 (1+ (point)))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2472 (end (progn (goto-char point)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2473 (and (search-forward "\"" eol t)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2474 (1- (point))))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2475 (and start end
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2476 (buffer-substring start end)))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2477
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2478 (defun term-get-source (prompt prev-dir/file source-modes mustmatch-p)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2479 (let* ((def (term-source-default prev-dir/file source-modes))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2480 (stringfile (term-extract-string))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2481 (sfile-p (and stringfile
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2482 (condition-case ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2483 (file-exists-p stringfile)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2484 (error nil))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2485 (not (file-directory-p stringfile))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2486 (defdir (if sfile-p (file-name-directory stringfile)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2487 (car def)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2488 (deffile (if sfile-p (file-name-nondirectory stringfile)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2489 (cdr def)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2490 (ans (read-file-name (if deffile (format "%s(default %s) "
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2491 prompt deffile)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2492 prompt)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2493 defdir
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2494 (concat defdir deffile)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2495 mustmatch-p)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2496 (list (expand-file-name (substitute-in-file-name ans)))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2497
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2498 ;;; I am somewhat divided on this string-default feature. It seems
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2499 ;;; to violate the principle-of-least-astonishment, in that it makes
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2500 ;;; 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
2501 ;;; 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
2502 ;;; 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
2503 ;;; on this.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2504 ;;; -Olin
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2505
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2506
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2507 ;;; Simple process query facility.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2508 ;;; ===========================================================================
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2509 ;;; 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
2510 ;;; 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
2511 ;;; arglist for a Common Lisp function might send a "(arglist 'foo)" query
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2512 ;;; 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
2513 ;;;
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2514 ;;; This simple facility just sends strings to the inferior process and pops
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2515 ;;; 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
2516 ;;; 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
2517 ;;; 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
2518 ;;; 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
2519
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2520 ;;; 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
2521 ;;; 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
2522 (defun term-proc-query (proc str)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2523 (let* ((proc-buf (process-buffer proc))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2524 (proc-mark (process-mark proc)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2525 (display-buffer proc-buf)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2526 (set-buffer proc-buf) ; but it's not the selected *window*
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2527 (let ((proc-win (get-buffer-window proc-buf))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2528 (proc-pt (marker-position proc-mark)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2529 (term-send-string proc str) ; send the query
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2530 (accept-process-output proc) ; wait for some output
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2531 ;; 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
2532 ;; 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
2533 ;; I don't know why. Wizards invited to improve it.
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2534 (if (not (pos-visible-in-window-p proc-pt proc-win))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2535 (let ((opoint (window-point proc-win)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2536 (set-window-point proc-win proc-mark) (sit-for 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2537 (if (not (pos-visible-in-window-p opoint proc-win))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2538 (push-mark opoint)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2539 (set-window-point proc-win opoint)))))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2540
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2541 ;;; Returns the current column in the current screen line.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2542 ;;; Note: (current-column) yields column in buffer line.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2543
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2544 (defun term-horizontal-column ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2545 (- (term-current-column) (term-start-line-column)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2546
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2547 ;; Calls either vertical-motion or buffer-vertical-motion
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2548 (defmacro term-vertical-motion (count)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2549 (list 'funcall 'term-vertical-motion count))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2550
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2551 ;; An emulation of vertical-motion that is independent of having a window.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2552 ;; Instead, it uses the term-width variable as the logical window width.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2553
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2554 (defun buffer-vertical-motion (count)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2555 (cond ((= count 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2556 (move-to-column (* term-width (/ (current-column) term-width)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2557 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2558 ((> count 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2559 (let ((H)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2560 (todo (+ count (/ (current-column) term-width))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2561 (end-of-line)
13961
ff6ac63de609 (term-process-pager): Fix message spelling.
Karl Heuer <kwzh@gnu.org>
parents: 13337
diff changeset
2562 ;; The loop iterates over buffer lines;
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2563 ;; 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
2564 ;; the ceiling of dividing the buffer line width by term-width.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2565 (while (and (<= (setq H (max (/ (+ (current-column) term-width -1)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2566 term-width)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2567 1))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2568 todo)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2569 (not (eobp)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2570 (setq todo (- todo H))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2571 (forward-char) ;; Move past the ?\n
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2572 (end-of-line)) ;; and on to the end of the next line.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2573 (if (and (>= todo H) (> todo 0))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2574 (+ (- count todo) H -1) ;; Hit end of buffer.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2575 (move-to-column (* todo term-width))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2576 count)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2577 (t ;; (< count 0) ;; Similar algorithm, but for upward motion.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2578 (let ((H)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2579 (todo (- count)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2580 (while (and (<= (setq H (max (/ (+ (current-column) term-width -1)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2581 term-width)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2582 1))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2583 todo)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2584 (progn (beginning-of-line)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2585 (not (bobp))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2586 (setq todo (- todo H))
13961
ff6ac63de609 (term-process-pager): Fix message spelling.
Karl Heuer <kwzh@gnu.org>
parents: 13337
diff changeset
2587 (backward-char)) ;; Move to end of previous line.
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2588 (if (and (>= todo H) (> todo 0))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2589 (+ count todo (- 1 H)) ;; Hit beginning of buffer.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2590 (move-to-column (* (- H todo 1) term-width))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2591 count)))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2592
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2593 ;;; The term-start-line-column variable is used as a cache.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2594 (defun term-start-line-column ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2595 (cond (term-start-line-column)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2596 ((let ((save-pos (point)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2597 (term-vertical-motion 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2598 (setq term-start-line-column (current-column))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2599 (goto-char save-pos)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2600 term-start-line-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 ;;; Same as (current-column), but uses term-current-column as a cache.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2603 (defun term-current-column ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2604 (cond (term-current-column)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2605 ((setq term-current-column (current-column)))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2606
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2607 ;;; Move DELTA column right (or left if delta < 0).
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2608
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2609 (defun term-move-columns (delta)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2610 (setq term-current-column (+ (term-current-column) delta))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2611 (move-to-column term-current-column t))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2612
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2613 ;; Insert COUNT copies of CHAR in the default face.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2614 (defun term-insert-char (char count)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2615 (let ((old-point (point)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2616 (insert-char char count)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2617 (put-text-property old-point (point) 'face 'default)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2618
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2619 (defun term-current-row ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2620 (cond (term-current-row)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2621 ((setq term-current-row
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2622 (save-restriction
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2623 (save-excursion
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2624 (narrow-to-region term-home-marker (point-max))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2625 (- (term-vertical-motion -9999))))))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2626
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2627 (defun term-adjust-current-row-cache (delta)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2628 (if term-current-row
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2629 (setq term-current-row (+ term-current-row delta))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2630
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2631 (defun term-terminal-pos ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2632 (save-excursion ; save-restriction
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2633 (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
2634 x y)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2635 (term-vertical-motion 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2636 (setq x (- save-col (current-column)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2637 (setq y (term-vertical-motion term-height))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2638 (cons x y))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2639
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2640 ;;;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
2641 ;;;difference ;-) -mm
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2642
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2643 (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
2644 ;; 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
2645 (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
2646 ;; 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
2647 (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
2648 (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
2649 (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
2650 (argument
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2651 (save-match-data
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2652 (substring message
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2653 (+ start 8)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2654 (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
2655 (+ start 8)))))
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2656 ignore)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2657 ;; 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
2658 (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
2659
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2660 ;; 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
2661 (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
2662 (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
2663 ((= command-code ?h)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2664 (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
2665 ((= command-code ?u)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2666 (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
2667 ;; 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
2668 (t
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2669 (setq ignore t)))
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2670
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2671 ;; 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
2672 (if ignore
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2673 nil
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2674 (setq default-directory
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2675 (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
2676 (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
2677 (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
2678 (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
2679 (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
2680 (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
2681 (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
2682 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
2683
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2684 ;; 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
2685 ;; 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
2686 (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
2687 (progn
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2688 (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
2689 (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
2690 (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
2691 (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
2692 (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
2693 (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
2694 (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
2695 (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
2696 (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
2697 message)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2698
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2699
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2700 ;;; Terminal emulation
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2701 ;;; This is the standard process filter for term buffers.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2702 ;;; It emulates (most of the features of) a VT100/ANSI-style terminal.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2703
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2704 (defun term-emulate-terminal (proc str)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2705 (let* ((previous-buffer (current-buffer))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2706 (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
2707 (selected (selected-window))
24936
10d20f341dee (term-emulate-terminal): Avoid infinite loop
Richard M. Stallman <rms@gnu.org>
parents: 24044
diff changeset
2708 last-win
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2709 (str-length (length str)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2710 (unwind-protect
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2711 (progn
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2712 (set-buffer (process-buffer proc))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2713
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2714 ;;; 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
2715
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2716 (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
2717 (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
2718
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2719 (if (marker-buffer term-pending-delete-marker)
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 ;; Delete text following term-pending-delete-marker.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2722 (delete-region term-pending-delete-marker (process-mark proc))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2723 (set-marker term-pending-delete-marker nil)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2724
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2725 (if (eq (window-buffer) (current-buffer))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2726 (progn
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2727 (setq term-vertical-motion (symbol-function 'vertical-motion))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2728 (term-check-size proc))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2729 (setq term-vertical-motion
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2730 (symbol-function 'buffer-vertical-motion)))
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 (setq save-marker (copy-marker (process-mark proc)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2733
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2734 (if (/= (point) (process-mark proc))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2735 (progn (setq save-point (point-marker))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2736 (goto-char (process-mark proc))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2737
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2738 (save-restriction
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2739 ;; If the buffer is in line mode, and there is a partial
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2740 ;; input line, save the line (by narrowing to leave it
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2741 ;; outside the restriction ) until we're done with output.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2742 (if (and (> (point-max) (process-mark proc))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2743 (term-in-line-mode))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2744 (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
2745
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2746 (if term-log-buffer
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2747 (princ str term-log-buffer))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2748 (cond ((eq term-terminal-state 4) ;; Have saved pending output.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2749 (setq str (concat term-terminal-parameter str))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2750 (setq term-terminal-parameter nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2751 (setq str-length (length str))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2752 (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
2753
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2754 (while (< i str-length)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2755 (setq char (aref str i))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2756 (cond ((< term-terminal-state 2)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2757 ;; Look for prefix of regular chars
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2758 (setq funny
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2759 (string-match "[\r\n\000\007\033\t\b\032\016\017]"
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2760 str i))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2761 (if (not funny) (setq funny str-length))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2762 (cond ((> funny i)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2763 (cond ((eq term-terminal-state 1)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2764 (term-move-columns 1)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2765 (setq term-terminal-state 0)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2766 (setq count (- funny i))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2767 (setq temp (- (+ (term-horizontal-column) count)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2768 term-width))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2769 (cond ((<= temp 0)) ;; All count chars fit in line.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2770 ((> count temp) ;; Some chars fit.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2771 ;; This iteration, handle only what fits.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2772 (setq count (- count temp))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2773 (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
2774 ((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
2775 term-scroll-with-delete))
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
2776 (> (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
2777 (term-adjust-current-row-cache 1)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2778 (setq count (min count term-width))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2779 (setq funny (+ count i))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2780 (setq term-start-line-column
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2781 term-current-column))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2782 (t ;; Doing PAGER processing.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2783 (setq count 0 funny i)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2784 (setq term-current-column nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2785 (setq term-start-line-column nil)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2786 (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
2787 ;; 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
2788 ;; 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
2789 (cond ((/= (point) (point-max))
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
2790 (if term-insert-mode
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
2791 ;; 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
2792 ;; 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
2793 ;; 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
2794 ;; 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
2795 (term-insert-spaces count))
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
2796 (term-move-columns count)
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
2797 (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
2798 (t (setq term-current-column (+ (term-current-column) count))))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2799 (insert (substring str i funny))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2800 (put-text-property old-point (point)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2801 'face term-current-face)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2802 ;; If the last char was written in last column,
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2803 ;; back up one column, but remember we did so.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2804 ;; Thus we emulate xterm/vt100-style line-wrapping.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2805 (cond ((eq temp 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2806 (term-move-columns -1)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2807 (setq term-terminal-state 1)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2808 (setq i (1- funny)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2809 ((and (setq term-terminal-state 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2810 (eq char ?\^I)) ; TAB
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2811 ;; FIXME: Does not handle line wrap!
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2812 (setq count (term-current-column))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2813 (setq count (+ count 8 (- (mod count 8))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2814 (if (< (move-to-column count nil) count)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2815 (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
2816 (setq term-current-column count))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2817 ((eq char ?\r)
12229
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
2818 ;; 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
2819 (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
2820 (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
2821 (= (point) (point-max))
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
2822 (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
2823 term-kill-echo-list
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
2824 term-scroll-with-delete)))
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
2825 (insert ?\n)
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
2826 (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
2827 (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
2828 (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
2829 (setq i temp))
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
2830 (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
2831 (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
2832 (setq term-current-column term-start-line-column))))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2833 ((eq char ?\n)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2834 (if (not (and term-kill-echo-list
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2835 (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
2836 (term-down 1 t)))
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
2837 ((eq char ?\b)
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
2838 (term-move-columns -1))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2839 ((eq char ?\033) ; Escape
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2840 (setq term-terminal-state 2))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2841 ((eq char 0)) ; NUL: Do nothing
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2842 ((eq char ?\016)) ; Shift Out - ignored
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2843 ((eq char ?\017)) ; Shift In - ignored
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2844 ((eq char ?\^G)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2845 (beep t)) ; Bell
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2846 ((eq char ?\032)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2847 (let ((end (string-match "\n" str i)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2848 (if end
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2849 (progn (funcall term-command-hook
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2850 (substring str (1+ i) (1- end)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2851 (setq i end))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2852 (setq term-terminal-parameter
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2853 (substring str i))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2854 (setq term-terminal-state 4)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2855 (setq i str-length))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2856 (t ; insert char FIXME: Should never happen
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2857 (term-move-columns 1)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2858 (backward-delete-char 1)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2859 (insert char))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2860 ((eq term-terminal-state 2) ; Seen Esc
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2861 (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
2862
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2863 ;;; 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
2864 ;;; 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
2865 ;;; 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
2866
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2867 (make-local-variable 'term-terminal-parameter)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2868 (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
2869 (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
2870 (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
2871 (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
2872 (make-local-variable 'term-terminal-more-parameters)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2873 (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
2874 (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
2875 (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
2876 (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
2877 (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
2878 (setq term-terminal-more-parameters 0)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2879 (setq term-terminal-state 3))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2880 ((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
2881 (term-handle-deferred-scroll)
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
2882 (term-down 1 t)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2883 (setq term-terminal-state 0))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2884 ((eq char ?M) ;; scroll reversed
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2885 (term-insert-lines 1)
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 ?7) ;; Save cursor
12229
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
2888 (term-handle-deferred-scroll)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2889 (setq term-saved-cursor
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2890 (cons (term-current-row)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2891 (term-horizontal-column)))
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 char ?8) ;; Restore cursor
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2894 (if term-saved-cursor
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2895 (term-goto (car term-saved-cursor)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2896 (cdr term-saved-cursor)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2897 (setq term-terminal-state 0))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2898 ((setq term-terminal-state 0))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2899 ((eq term-terminal-state 3) ; Seen Esc [
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2900 (cond ((and (>= char ?0) (<= char ?9))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2901 (setq term-terminal-parameter
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2902 (+ (* 10 term-terminal-parameter) (- char ?0))))
23311
fd4a0e88aed5 (term-delimiter-argument-list): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents: 20153
diff changeset
2903 ((eq char ?\;)
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2904 ;;; 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
2905 (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
2906 (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
2907 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
2908 (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
2909 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
2910 (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
2911 term-terminal-previous-parameter)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2912 (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
2913 term-terminal-parameter)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2914 (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
2915 ((eq char ??)) ; Ignore ?
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2916 (t
10671
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
2917 (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
2918 (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
2919 (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
2920 (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
2921 (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
2922 (setq term-terminal-previous-parameter -1)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2923 (setq term-terminal-state 0)))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2924 (if (term-handling-pager)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2925 ;; Finish stuff to get ready to handle PAGER.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2926 (progn
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2927 (if (> (% (current-column) term-width) 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2928 (setq term-terminal-parameter
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2929 (substring str i))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2930 ;; We're at column 0. Goto end of buffer; to compensate,
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2931 ;; prepend a ?\r for later. This looks more consistent.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2932 (if (zerop i)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2933 (setq term-terminal-parameter
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2934 (concat "\r" (substring str i)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2935 (setq term-terminal-parameter (substring str (1- i)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2936 (aset term-terminal-parameter 0 ?\r))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2937 (goto-char (point-max)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2938 (setq term-terminal-state 4)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2939 (make-local-variable 'term-pager-old-filter)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2940 (setq term-pager-old-filter (process-filter proc))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2941 (set-process-filter proc term-pager-filter)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2942 (setq i str-length)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2943 (setq i (1+ i))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2944
12229
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
2945 (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
2946 (term-handle-deferred-scroll))
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
2947
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2948 (set-marker (process-mark proc) (point))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2949 (if save-point
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2950 (progn (goto-char save-point)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2951 (set-marker save-point nil)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2952
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2953 ;; Check for a pending filename-and-line number to display.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2954 ;; We do this before scrolling, because we might create a new window.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2955 (if (and term-pending-frame
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2956 (eq (window-buffer selected) (current-buffer)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2957 (progn (term-display-line (car term-pending-frame)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2958 (cdr term-pending-frame))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2959 (setq term-pending-frame nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2960 ;; We have created a new window, so check the window size.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2961 (term-check-size proc)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2962
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2963 ;; Scroll each window displaying the buffer but (by default)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2964 ;; only if the point matches the process-mark we started with.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2965 (setq win selected)
24936
10d20f341dee (term-emulate-terminal): Avoid infinite loop
Richard M. Stallman <rms@gnu.org>
parents: 24044
diff changeset
2966 ;; Avoid infinite loop in strange case where minibuffer window
10d20f341dee (term-emulate-terminal): Avoid infinite loop
Richard M. Stallman <rms@gnu.org>
parents: 24044
diff changeset
2967 ;; is selected but not active.
10d20f341dee (term-emulate-terminal): Avoid infinite loop
Richard M. Stallman <rms@gnu.org>
parents: 24044
diff changeset
2968 (while (window-minibuffer-p win)
10d20f341dee (term-emulate-terminal): Avoid infinite loop
Richard M. Stallman <rms@gnu.org>
parents: 24044
diff changeset
2969 (setq win (next-window win nil t)))
10d20f341dee (term-emulate-terminal): Avoid infinite loop
Richard M. Stallman <rms@gnu.org>
parents: 24044
diff changeset
2970 (setq last-win win)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2971 (while (progn
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2972 (setq win (next-window win nil t))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2973 (if (eq (window-buffer win) (process-buffer proc))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2974 (let ((scroll term-scroll-to-bottom-on-output))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2975 (select-window win)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2976 (if (or (= (point) save-marker)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2977 (eq scroll t) (eq scroll 'all)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2978 ;; Maybe user wants point to jump to the end.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2979 (and (eq selected win)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2980 (or (eq scroll 'this) (not save-point)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2981 (and (eq scroll 'others)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2982 (not (eq selected win))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2983 (progn
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2984 (goto-char term-home-marker)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2985 (recenter 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2986 (goto-char (process-mark proc))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2987 (if (not (pos-visible-in-window-p (point) win))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2988 (recenter -1))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2989 ;; Optionally scroll so that the text
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2990 ;; ends at the bottom of the window.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2991 (if (and term-scroll-show-maximum-output
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2992 (>= (point) (process-mark proc)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2993 (save-excursion
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2994 (goto-char (point-max))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2995 (recenter -1)))))
24936
10d20f341dee (term-emulate-terminal): Avoid infinite loop
Richard M. Stallman <rms@gnu.org>
parents: 24044
diff changeset
2996 (not (eq win last-win))))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2997
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2998 ;;; 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
2999 (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
3000 (save-excursion
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3001 (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
3002 (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
3003 (beginning-of-line)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3004 (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
3005 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3006
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3007 (set-marker save-marker nil))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3008 ;; unwind-protect cleanup-forms follow:
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3009 (set-buffer previous-buffer)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3010 (select-window selected))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3011
12229
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
3012 (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
3013 (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
3014 (if (>= count 0)
12229
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
3015 (save-excursion
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
3016 (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
3017 (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
3018 (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
3019 (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
3020
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3021 ;;; 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
3022 ;;; 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
3023
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3024 (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
3025 (cond
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3026
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3027 ;;; Bold
17814
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
3028 ((eq parameter 1)
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
3029 (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
3030
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3031 ;;; Underline
17814
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
3032 ((eq parameter 4)
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
3033 (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
3034
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3035 ;;; 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
3036 ;;; 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
3037 ((eq parameter 5)
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-bold 1))
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3039
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3040 ;;; Reverse
17814
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
3041 ((eq parameter 7)
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
3042 (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
3043
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3044 ;;; Invisible
17814
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
3045 ((eq parameter 8)
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
3046 (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
3047
24966
bfa093996074 (ansi-term-fg-faces-vector): Added support for ANSI
Karl Heuer <kwzh@gnu.org>
parents: 24936
diff changeset
3048 ;;; Foreground
17814
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
3049 ((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
3050 (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
3051
24966
bfa093996074 (ansi-term-fg-faces-vector): Added support for ANSI
Karl Heuer <kwzh@gnu.org>
parents: 24936
diff changeset
3052 ;;; Reset foreground
bfa093996074 (ansi-term-fg-faces-vector): Added support for ANSI
Karl Heuer <kwzh@gnu.org>
parents: 24936
diff changeset
3053 ((eq parameter 39)
bfa093996074 (ansi-term-fg-faces-vector): Added support for ANSI
Karl Heuer <kwzh@gnu.org>
parents: 24936
diff changeset
3054 (setq term-ansi-current-color 0))
bfa093996074 (ansi-term-fg-faces-vector): Added support for ANSI
Karl Heuer <kwzh@gnu.org>
parents: 24936
diff changeset
3055
bfa093996074 (ansi-term-fg-faces-vector): Added support for ANSI
Karl Heuer <kwzh@gnu.org>
parents: 24936
diff changeset
3056 ;;; Background
17814
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
3057 ((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
3058 (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
3059
24966
bfa093996074 (ansi-term-fg-faces-vector): Added support for ANSI
Karl Heuer <kwzh@gnu.org>
parents: 24936
diff changeset
3060 ;;; Reset background
bfa093996074 (ansi-term-fg-faces-vector): Added support for ANSI
Karl Heuer <kwzh@gnu.org>
parents: 24936
diff changeset
3061 ((eq parameter 49)
bfa093996074 (ansi-term-fg-faces-vector): Added support for ANSI
Karl Heuer <kwzh@gnu.org>
parents: 24936
diff changeset
3062 (setq term-ansi-current-bg-color 0))
bfa093996074 (ansi-term-fg-faces-vector): Added support for ANSI
Karl Heuer <kwzh@gnu.org>
parents: 24936
diff changeset
3063
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3064 ;;; 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
3065 (t
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
3066 (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
3067 (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
3068 (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
3069 (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
3070 (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
3071 (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
3072 (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
3073 (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
3074 (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
3075
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3076 ; (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
3077 ; 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
3078 ; 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
3079 ; 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
3080 ; 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
3081 ; 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
3082 ; 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
3083 ; 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
3084
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3085
17814
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-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
3087 (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
3088 (progn
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
3089 (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
3090 (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
3091 (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
3092 '(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
3093 (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
3094 (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
3095 (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
3096 ;; 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
3097 (progn
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 (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
3100 (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
3101 (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
3102 (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
3103 (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
3104 (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
3105 (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
3106 (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
3107 (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
3108 (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
3109 (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
3110 '(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
3111 (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
3112 (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
3113 (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
3114 ;; 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
3115 (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
3116 (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
3117 (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
3118 (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
3119 (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
3120 (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
3121 (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
3122 (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
3123 (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
3124
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3125 ; (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
3126
17814
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
3127 (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
3128
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3129
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3130 ;;; 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
3131 ;;; i.e. we have previously seen Escape followed by ?[.
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3132
10671
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
3133 (defun term-handle-ansi-escape (proc char)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3134 (cond
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3135 ((eq char ?H) ; cursor motion
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3136 (if (<= term-terminal-parameter 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3137 (setq term-terminal-parameter 1))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3138 (if (<= term-terminal-previous-parameter 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3139 (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
3140 (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
3141 (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
3142 (if (> term-terminal-parameter term-width)
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
3143 (setq term-terminal-parameter term-width))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3144 (term-goto
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3145 (1- term-terminal-previous-parameter)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3146 (1- term-terminal-parameter)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3147 ;; \E[A - cursor up
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3148 ((eq char ?A)
12229
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
3149 (term-handle-deferred-scroll)
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
3150 (term-down (- (max 1 term-terminal-parameter)) t))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3151 ;; \E[B - cursor down
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3152 ((eq char ?B)
12229
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
3153 (term-down (max 1 term-terminal-parameter) t))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3154 ;; \E[C - cursor right
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3155 ((eq char ?C)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3156 (term-move-columns (max 1 term-terminal-parameter)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3157 ;; \E[D - cursor left
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3158 ((eq char ?D)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3159 (term-move-columns (- (max 1 term-terminal-parameter))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3160 ;; \E[J - clear to end of screen
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3161 ((eq char ?J)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3162 (term-erase-in-display term-terminal-parameter))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3163 ;; \E[K - clear to end of line
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3164 ((eq char ?K)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3165 (term-erase-in-line term-terminal-parameter))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3166 ;; \E[L - insert lines
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3167 ((eq char ?L)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3168 (term-insert-lines (max 1 term-terminal-parameter)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3169 ;; \E[M - delete lines
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3170 ((eq char ?M)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3171 (term-delete-lines (max 1 term-terminal-parameter)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3172 ;; \E[P - delete chars
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3173 ((eq char ?P)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3174 (term-delete-chars (max 1 term-terminal-parameter)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3175 ;; \E[@ - insert spaces
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3176 ((eq char ?@)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3177 (term-insert-spaces (max 1 term-terminal-parameter)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3178 ;; \E[?h - DEC Private Mode Set
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3179 ((eq char ?h)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3180 (cond ((eq term-terminal-parameter 4)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3181 (setq term-insert-mode t))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3182 ((eq term-terminal-parameter 47)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3183 (term-switch-to-alternate-sub-buffer t))))
10044
c840b3eb9015 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 9603
diff changeset
3184 ;; \E[?l - DEC Private Mode Reset
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3185 ((eq char ?l)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3186 (cond ((eq term-terminal-parameter 4)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3187 (setq term-insert-mode nil))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3188 ((eq term-terminal-parameter 47)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3189 (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
3190
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3191 ;;; Modified to allow ansi coloring -mm
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3192 ;; \E[m - Set/reset standard mode
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3193 ((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
3194 (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
3195 (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
3196 (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
3197 (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
3198 (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
3199 (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
3200 (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
3201 (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
3202 (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
3203
10671
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
3204 ;; \E[6n - Report cursor position
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
3205 ((eq char ?n)
12229
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
3206 (term-handle-deferred-scroll)
10671
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
3207 (process-send-string proc
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
3208 (format "\e[%s;%sR"
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
3209 (1+ (term-current-row))
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
3210 (1+ (term-horizontal-column)))))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3211 ;; \E[r - Set scrolling region
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3212 ((eq char ?r)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3213 (term-scroll-region
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3214 (1- term-terminal-previous-parameter)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3215 term-terminal-parameter))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3216 (t)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3217
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3218 (defun term-scroll-region (top bottom)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3219 "Set scrolling region.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3220 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
3221 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
3222 The top-most line is line 0."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3223 (setq term-scroll-start
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3224 (if (or (< top 0) (>= top term-height))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3225 0
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3226 top))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3227 (setq term-scroll-end
10671
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
3228 (if (or (<= bottom term-scroll-start) (> bottom term-height))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3229 term-height
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3230 bottom))
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 (or (term-using-alternate-sub-buffer)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3233 (not (and (= term-scroll-start 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3234 (= term-scroll-end term-height))))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3235
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3236 (defun term-switch-to-alternate-sub-buffer (set)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3237 ;; 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
3238 ;; 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
3239 ;; 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
3240 (term-handle-deferred-scroll)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3241 (if (eq set (not (term-using-alternate-sub-buffer)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3242 (let ((row (term-current-row))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3243 (col (term-horizontal-column)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3244 (cond (set
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3245 (goto-char (point-max))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3246 (if (not (eq (preceding-char) ?\n))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3247 (term-insert-char ?\n 1))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3248 (setq term-scroll-with-delete t)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3249 (setq term-saved-home-marker (copy-marker term-home-marker))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3250 (set-marker term-home-marker (point)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3251 (t
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3252 (setq term-scroll-with-delete
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3253 (not (and (= term-scroll-start 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3254 (= term-scroll-end term-height))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3255 (set-marker term-home-marker term-saved-home-marker)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3256 (set-marker term-saved-home-marker nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3257 (setq term-saved-home-marker nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3258 (goto-char term-home-marker)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3259 (setq term-current-column nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3260 (setq term-current-row 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3261 (term-goto row col))))
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 ;; Default value for the symbol term-command-hook.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3264
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3265 (defun term-command-hook (string)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3266 (cond ((= (aref string 0) ?\032)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3267 ;; gdb (when invoked with -fullname) prints:
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3268 ;; \032\032FULLFILENAME:LINENUMBER:CHARPOS:BEG_OR_MIDDLE:PC\n
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3269 (let* ((first-colon (string-match ":" string 1))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3270 (second-colon
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3271 (string-match ":" string (1+ first-colon)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3272 (filename (substring string 1 first-colon))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3273 (fileline (string-to-int
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3274 (substring string (1+ first-colon) second-colon))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3275 (setq term-pending-frame (cons filename fileline))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3276 ((= (aref string 0) ?/)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3277 (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
3278 ;; 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
3279 ;; probably too big a security hole.
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
3280 ;; ((= (aref string 0) ?!)
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
3281 ;; (eval (car (read-from-string string 1))))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3282 (t)));; Otherwise ignore it
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3283
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3284 ;; 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
3285 ;; and that its line LINE is visible.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3286 ;; Put the overlay-arrow on the line LINE in that buffer.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3287 ;; This is mainly used by gdb.
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 (defun term-display-line (true-file line)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3290 (term-display-buffer-line (find-file-noselect true-file) line))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3291
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3292 (defun term-display-buffer-line (buffer line)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3293 (let* ((window (display-buffer buffer t))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3294 (pos))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3295 (save-excursion
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3296 (set-buffer buffer)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3297 (save-restriction
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3298 (widen)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3299 (goto-line line)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3300 (setq pos (point))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3301 (setq overlay-arrow-string "=>")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3302 (or overlay-arrow-position
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3303 (setq overlay-arrow-position (make-marker)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3304 (set-marker overlay-arrow-position (point) (current-buffer)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3305 (cond ((or (< pos (point-min)) (> pos (point-max)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3306 (widen)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3307 (goto-char pos))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3308 (set-window-point window overlay-arrow-position)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3309
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3310 ;;; The buffer-local marker term-home-marker defines the "home position"
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3311 ;;; (in terms of cursor motion). However, we move the term-home-marker
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3312 ;;; "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
3313
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3314 (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
3315 (term-handle-deferred-scroll)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3316 (goto-char term-home-marker)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3317 (setq term-current-row 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3318 (setq term-current-column (current-column))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3319 (setq term-start-line-column term-current-column))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3320
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3321 (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
3322 (term-handle-deferred-scroll)
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
3323 (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
3324 ;; 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
3325 (term-vertical-motion 0)
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
3326 (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
3327 (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
3328 (t
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
3329 (term-goto-home)))
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
3330 (term-down row)
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
3331 (term-move-columns col))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3332
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3333 ; The page is full, so enter "pager" mode, and wait for input.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3334
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3335 (defun term-process-pager ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3336 (if (not term-pager-break-map)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3337 (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
3338 (i 0) tmp)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3339 ; (while (< i 128)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3340 ; (define-key map (make-string 1 i) 'term-send-raw)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3341 ; (setq i (1+ i)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3342 (define-key map "\e"
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3343 (lookup-key (current-global-map) "\e"))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3344 (define-key map "\C-x"
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3345 (lookup-key (current-global-map) "\C-x"))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3346 (define-key map "\C-u"
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3347 (lookup-key (current-global-map) "\C-u"))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3348 (define-key map " " 'term-pager-page)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3349 (define-key map "\r" 'term-pager-line)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3350 (define-key map "?" 'term-pager-help)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3351 (define-key map "h" 'term-pager-help)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3352 (define-key map "b" 'term-pager-back-page)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3353 (define-key map "\177" 'term-pager-back-line)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3354 (define-key map "q" 'term-pager-discard)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3355 (define-key map "D" 'term-pager-disable)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3356 (define-key map "<" 'term-pager-bob)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3357 (define-key map ">" 'term-pager-eob)
10515
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
3358
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
3359 ;; Add menu bar.
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
3360 (term-if-emacs19
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
3361 (term-ifnot-xemacs
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
3362 (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
3363 (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
3364 (setq tmp (make-sparse-keymap "More pages?"))
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
3365 (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
3366 (define-key tmp [disable]
13961
ff6ac63de609 (term-process-pager): Fix message spelling.
Karl Heuer <kwzh@gnu.org>
parents: 13337
diff changeset
3367 '("Disable paging" . term-fake-pager-disable))
10515
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
3368 (define-key tmp [discard]
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
3369 '("Discard remaining output" . term-pager-discard))
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
3370 (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
3371 (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
3372 (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
3373 (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
3374 (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
3375 (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
3376 (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
3377 ))
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
3378
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3379 (setq term-pager-break-map map)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3380 ; (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
3381 ; (stop-process process))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3382 (setq term-pager-old-local-map (current-local-map))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3383 (use-local-map term-pager-break-map)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3384 (make-local-variable 'term-old-mode-line-format)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3385 (setq term-old-mode-line-format mode-line-format)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3386 (setq mode-line-format
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3387 (list "-- **MORE** "
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3388 mode-line-buffer-identification
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3389 " [Type ? for help] "
10515
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
3390 "%-"))
11570
f210b0ee984a (term-update-mode-line, term-process-pager): Use force-mode-line-update.
Karl Heuer <kwzh@gnu.org>
parents: 11033
diff changeset
3391 (force-mode-line-update))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3392
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3393 (defun term-pager-line (lines)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3394 (interactive "p")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3395 (let* ((moved (vertical-motion (1+ lines)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3396 (deficit (- lines moved)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3397 (if (> moved lines)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3398 (backward-char))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3399 (cond ((<= deficit 0) ;; OK, had enough in the buffer for request.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3400 (recenter (1- term-height)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3401 ((term-pager-continue deficit)))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3402
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3403 (defun term-pager-page (arg)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3404 "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
3405 (interactive "p")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3406 (term-pager-line (* arg term-height)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3407
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3408 ; Pager mode command to go to beginning of buffer
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3409 (defun term-pager-bob ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3410 (interactive)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3411 (goto-char (point-min))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3412 (if (= (vertical-motion term-height) term-height)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3413 (backward-char))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3414 (recenter (1- term-height)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3415
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3416 ; pager mode command to go to end of buffer
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3417 (defun term-pager-eob ()
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 (goto-char term-home-marker)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3420 (recenter 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3421 (goto-char (process-mark (get-buffer-process (current-buffer)))))
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 (defun term-pager-back-line (lines)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3424 (interactive "p")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3425 (vertical-motion (- 1 lines))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3426 (if (not (bobp))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3427 (backward-char)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3428 (beep)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3429 ;; Move cursor to end of window.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3430 (vertical-motion term-height)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3431 (backward-char))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3432 (recenter (1- term-height)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3433
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3434 (defun term-pager-back-page (arg)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3435 (interactive "p")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3436 (term-pager-back-line (* arg term-height)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3437
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3438 (defun term-pager-discard ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3439 (interactive)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3440 (setq term-terminal-parameter "")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3441 (interrupt-process nil t)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3442 (term-pager-continue term-height))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3443
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3444 ; Disable pager processing.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3445 ; Only callable while in pager mode. (Contrast term-disable-pager.)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3446 (defun term-pager-disable ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3447 (interactive)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3448 (if (term-handling-pager)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3449 (term-pager-continue nil)
10671
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
3450 (setq term-pager-count nil))
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
3451 (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
3452
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3453 ; Enable pager processing.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3454 (defun term-pager-enable ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3455 (interactive)
10671
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
3456 (or (term-pager-enabled)
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
3457 (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
3458 (term-update-mode-line))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3459
10515
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
3460 (defun term-pager-toggle ()
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
3461 (interactive)
10671
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
3462 (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
3463
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
3464 (term-ifnot-xemacs
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
3465 (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
3466 (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
3467 (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
3468 (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
3469 (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
3470 (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
3471
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3472 (defun term-pager-help ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3473 "Provide help on commands available in a terminal-emulator **MORE** break"
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3474 (interactive)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3475 (message "Terminal-emulator pager break help...")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3476 (sit-for 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3477 (with-electric-help
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3478 (function (lambda ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3479 (princ (substitute-command-keys
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3480 "\\<term-pager-break-map>\
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3481 Terminal-emulator MORE break.\n\
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3482 Type one of the following keys:\n\n\
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3483 \\[term-pager-page]\t\tMove forward one page.\n\
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3484 \\[term-pager-line]\t\tMove forward one line.\n\
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3485 \\[universal-argument] N \\[term-pager-page]\tMove N pages forward.\n\
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3486 \\[universal-argument] N \\[term-pager-line]\tMove N lines forward.\n\
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3487 \\[universal-argument] N \\[term-pager-back-line]\tMove N lines back.\n\
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3488 \\[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
3489 \\[term-pager-bob]\t\tMove to the beginning of the buffer.\n\
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3490 \\[term-pager-eob]\t\tMove to the end of the buffer.\n\
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3491 \\[term-pager-discard]\t\tKill pending output and kill process.\n\
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3492 \\[term-pager-disable]\t\tDisable PAGER handling.\n\n\
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3493 \\{term-pager-break-map}\n\
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3494 Any other key is passed through to the program
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3495 running under the terminal emulator and disables pager processing until
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3496 all pending output has been dealt with."))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3497 nil))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3498
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3499 (defun term-pager-continue (new-count)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3500 (let ((process (get-buffer-process (current-buffer))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3501 (use-local-map term-pager-old-local-map)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3502 (setq term-pager-old-local-map nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3503 (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
3504 (force-mode-line-update)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3505 (setq term-pager-count new-count)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3506 (set-process-filter process term-pager-old-filter)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3507 (funcall term-pager-old-filter process "")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3508 (continue-process process)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3510 ;; Make sure there are DOWN blank lines below the current one.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3511 ;; 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
3512
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3513 (defun term-handle-scroll (down)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3514 (let ((scroll-needed
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3515 (- (+ (term-current-row) down 1) term-scroll-end)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3516 (if (> scroll-needed 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3517 (let ((save-point (copy-marker (point))) (save-top))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3518 (goto-char term-home-marker)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3519 (cond (term-scroll-with-delete
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3520 ;; delete scroll-needed lines at term-scroll-start
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3521 (term-vertical-motion term-scroll-start)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3522 (setq save-top (point))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3523 (term-vertical-motion scroll-needed)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3524 (delete-region save-top (point))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3525 (goto-char save-point)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3526 (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
3527 (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
3528 (setq term-current-column nil)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3529 (term-insert-char ?\n scroll-needed))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3530 ((and (numberp term-pager-count)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3531 (< (setq term-pager-count (- term-pager-count down))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3532 0))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3533 (setq down 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3534 (term-process-pager))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3535 (t
12229
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
3536 (term-adjust-current-row-cache (- scroll-needed))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3537 (term-vertical-motion scroll-needed)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3538 (set-marker term-home-marker (point))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3539 (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
3540 (set-marker save-point nil))))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3541 down)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3542
12229
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
3543 (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
3544 "Move down DOWN screen lines vertically."
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3545 (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
3546 (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
3547 (setq down (term-handle-scroll down)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3548 (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
3549 (if (/= (point) (point-max))
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
3550 (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
3551 ;; 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
3552 (cond ((> down 0)
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
3553 (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
3554 (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
3555 (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
3556 (t
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
3557 (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
3558 (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
3559 (if start-column
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
3560 (term-move-columns start-column))))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3561
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3562 ;; Assuming point is at the beginning of a screen line,
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3563 ;; 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
3564 ;; FIXME: Probably should be called more than it is.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3565 (defun term-unwrap-line ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3566 (if (not (bolp)) (insert-before-markers ?\n)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3567
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3568 (defun term-erase-in-line (kind)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3569 (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
3570 (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
3571 (term-vertical-motion 0)
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
3572 (delete-region (point) saved-point)
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
3573 (term-insert-char ?\n cols)))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3574 (if (not (eq kind 1)) ;; erase right of point
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3575 (let ((saved-point (point))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3576 (wrapped (and (zerop (term-horizontal-column))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3577 (not (zerop (term-current-column))))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3578 (term-vertical-motion 1)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3579 (delete-region saved-point (point))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3580 ;; wrapped is true if we're at the beginning of screen line,
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3581 ;; but not a buffer line. If we delete the current screen line
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3582 ;; 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
3583 ;; 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
3584 ;; 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
3585 ;; current one. To avoid that, we make sure that current line
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3586 ;; contain a space, to force the previous line to continue to wrap.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3587 ;; 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
3588 ;; extra space when wrapped is false.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3589 (if wrapped
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3590 (insert ? ))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3591 (insert ?\n)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3592 (put-text-property saved-point (point) 'face 'default)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3593 (goto-char saved-point))))
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-erase-in-display (kind)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3596 "Erases (that is blanks out) part of the window.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3597 If KIND is 0, erase from (point) to (point-max);
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3598 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
3599 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
3600 (term-handle-deferred-scroll)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3601 (cond ((eq term-terminal-parameter 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3602 (delete-region (point) (point-max))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3603 (term-unwrap-line))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3604 ((let ((row (term-current-row))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3605 (col (term-horizontal-column))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3606 (start-region term-home-marker)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3607 (end-region (if (eq kind 1) (point) (point-max))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3608 (delete-region start-region end-region)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3609 (term-unwrap-line)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3610 (if (eq kind 1)
10671
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
3611 (term-insert-char ?\n row))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3612 (setq term-current-column nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3613 (setq term-current-row nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3614 (term-goto row col)))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3615
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3616 (defun term-delete-chars (count)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3617 (let ((save-point (point)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3618 (term-vertical-motion 1)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3619 (term-unwrap-line)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3620 (goto-char save-point)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3621 (move-to-column (+ (term-current-column) count) t)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3622 (delete-region save-point (point))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3623
12229
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
3624 ;;; 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
3625 ;;; 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
3626 ;;; 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
3627
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3628 (defun term-insert-spaces (count)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3629 (let ((save-point (point)) (save-eol))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3630 (term-vertical-motion 1)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3631 (if (bolp)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3632 (backward-char))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3633 (setq save-eol (point))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3634 (move-to-column (+ (term-start-line-column) (- term-width count)) t)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3635 (if (> save-eol (point))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3636 (delete-region (point) save-eol))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3637 (goto-char save-point)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3638 (term-insert-char ? count)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3639 (goto-char save-point)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3640
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3641 (defun term-delete-lines (lines)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3642 (let ((start (point))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3643 (save-current-column term-current-column)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3644 (save-start-line-column term-start-line-column)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3645 (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
3646 (term-down lines)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3647 (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
3648 (term-down (- term-scroll-end save-current-row lines))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3649 (term-insert-char ?\n lines)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3650 (setq term-current-column save-current-column)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3651 (setq term-start-line-column save-start-line-column)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3652 (setq term-current-row save-current-row)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3653 (goto-char start)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3654
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3655 (defun term-insert-lines (lines)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3656 (let ((start (point))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3657 (start-deleted)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3658 (save-current-column term-current-column)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3659 (save-start-line-column term-start-line-column)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3660 (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
3661 (term-down (- term-scroll-end save-current-row lines))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3662 (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
3663 (term-down lines)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3664 (delete-region start-deleted (point))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3665 (goto-char start)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3666 (setq term-current-column save-current-column)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3667 (setq term-start-line-column save-start-line-column)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3668 (setq term-current-row save-current-row)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3669 (term-insert-char ?\n lines)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3670 (goto-char start)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3671
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3672 (defun term-set-output-log (name)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3673 "Record raw inferior process output in a buffer."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3674 (interactive (list (if term-log-buffer
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3675 nil
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3676 (read-buffer "Record output in buffer: "
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3677 (format "%s output-log"
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3678 (buffer-name (current-buffer)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3679 nil))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3680 (if (or (null name) (equal name ""))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3681 (progn (setq term-log-buffer nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3682 (message "Output logging off."))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3683 (if (get-buffer name)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3684 nil
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3685 (save-excursion
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3686 (set-buffer (get-buffer-create name))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3687 (fundamental-mode)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3688 (buffer-disable-undo (current-buffer))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3689 (erase-buffer)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3690 (setq term-log-buffer (get-buffer name))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3691 (message "Recording terminal emulator output into buffer \"%s\""
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3692 (buffer-name term-log-buffer))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3693
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3694 (defun term-stop-photo ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3695 "Discontinue raw inferior process logging."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3696 (interactive)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3697 (term-set-output-log nil))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3698
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3699 (defun term-show-maximum-output ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3700 "Put the end of the buffer at the bottom of the window."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3701 (interactive)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3702 (goto-char (point-max))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3703 (recenter -1))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3704
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3705 ;;; Do the user's customisation...
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3706
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3707 (defvar term-load-hook nil
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3708 "This hook is run when term is loaded in.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3709 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
3710
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3711 (run-hooks 'term-load-hook)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3712
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3713
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3714 ;;; Filename/command/history completion in a buffer
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3715 ;;; ===========================================================================
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3716 ;;; Useful completion functions, courtesy of the Ergo group.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3717
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3718 ;;; Six commands:
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3719 ;;; term-dynamic-complete Complete or expand command, filename,
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3720 ;;; history at point.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3721 ;;; term-dynamic-complete-filename Complete filename at point.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3722 ;;; term-dynamic-list-filename-completions List completions in help buffer.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3723 ;;; term-replace-by-expanded-filename Expand and complete filename at point;
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3724 ;;; replace with expanded/completed name.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3725 ;;; term-dynamic-simple-complete Complete stub given candidates.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3726
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3727 ;;; 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
3728 ;;; available for people who want them. Shell-mode installs them:
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3729 ;;; (define-key shell-mode-map "\t" 'term-dynamic-complete)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3730 ;;; (define-key shell-mode-map "\M-?"
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3731 ;;; 'term-dynamic-list-filename-completions)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3732 ;;;
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3733 ;;; 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
3734 ;;; want them present in specific modes.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3735
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3736 (defvar term-completion-autolist nil
13961
ff6ac63de609 (term-process-pager): Fix message spelling.
Karl Heuer <kwzh@gnu.org>
parents: 13337
diff changeset
3737 "*If non-nil, automatically list possibilities on partial completion.
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3738 This mirrors the optional behavior of tcsh.")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3739
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3740 (defvar term-completion-addsuffix t
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3741 "*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
3742 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
3743 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
3744 completion. This mirrors the optional behavior of tcsh.")
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3745
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3746 (defvar term-completion-recexact nil
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3747 "*If non-nil, use shortest completion if characters cannot be added.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3748 This mirrors the optional behavior of tcsh.
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 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
3751
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3752 (defvar term-completion-fignore nil
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3753 "*List of suffixes to be disregarded during file completion.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3754 This mirrors the optional behavior of bash and tcsh.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3755
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3756 Note that this applies to `term-dynamic-complete-filename' only.")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3757
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3758 (defvar term-file-name-prefix ""
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3759 "Prefix prepended to absolute file names taken from process input.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3760 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
3761 directory tracking functions.")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3762
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3763
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3764 (defun term-directory (directory)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3765 ;; Return expanded DIRECTORY, with `term-file-name-prefix' if absolute.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3766 (expand-file-name (if (file-name-absolute-p directory)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3767 (concat term-file-name-prefix directory)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3768 directory)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3769
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3770
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3771 (defun term-word (word-chars)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3772 "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
3773 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
3774 inside of a \"[...]\" (see `skip-chars-forward')."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3775 (save-excursion
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3776 (let ((limit (point))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3777 (word (concat "[" word-chars "]"))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3778 (non-word (concat "[^" word-chars "]")))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3779 (if (re-search-backward non-word nil 'move)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3780 (forward-char 1))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3781 ;; Anchor the search forwards.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3782 (if (or (eolp) (looking-at non-word))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3783 nil
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3784 (re-search-forward (concat word "+") limit)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3785 (buffer-substring (match-beginning 0) (match-end 0))))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3786
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3787
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3788 (defun term-match-partial-filename ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3789 "Return the filename at point, or nil if non is found.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3790 Environment variables are substituted. See `term-word'."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3791 (let ((filename (term-word "~/A-Za-z0-9+@:_.$#,={}-")))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3792 (and filename (substitute-in-file-name filename))))
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
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3795 (defun term-dynamic-complete ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3796 "Dynamically perform completion at point.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3797 Calls the functions in `term-dynamic-complete-functions' to perform
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3798 completion until a function returns non-nil, at which point completion is
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3799 assumed to have occurred."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3800 (interactive)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3801 (let ((functions term-dynamic-complete-functions))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3802 (while (and functions (null (funcall (car functions))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3803 (setq functions (cdr functions)))))
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
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3806 (defun term-dynamic-complete-filename ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3807 "Dynamically complete the filename at point.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3808 Completes if after a filename. See `term-match-partial-filename' and
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3809 `term-dynamic-complete-as-filename'.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3810 This function is similar to `term-replace-by-expanded-filename', except that
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3811 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
3812 adds completion characters to the end of the filename. A completions listing
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3813 may be shown in a help buffer if completion is ambiguous.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3814
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3815 Completion is dependent on the value of `term-completion-addsuffix',
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3816 `term-completion-recexact' and `term-completion-fignore', and the timing of
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3817 completions listing is dependent on the value of `term-completion-autolist'.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3818
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3819 Returns t if successful."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3820 (interactive)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3821 (if (term-match-partial-filename)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3822 (prog2 (or (eq (selected-window) (minibuffer-window))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3823 (message "Completing file name..."))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3824 (term-dynamic-complete-as-filename))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3825
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3826 (defun term-dynamic-complete-as-filename ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3827 "Dynamically complete at point as a filename.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3828 See `term-dynamic-complete-filename'. Returns t if successful."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3829 (let* ((completion-ignore-case nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3830 (completion-ignored-extensions term-completion-fignore)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3831 (success t)
17147
2824e1f84717 (term-completion-addsuffix): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents: 16848
diff changeset
3832 (dirsuffix (cond ((not term-completion-addsuffix) "")
2824e1f84717 (term-completion-addsuffix): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents: 16848
diff changeset
3833 ((not (consp term-completion-addsuffix)) "/")
2824e1f84717 (term-completion-addsuffix): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents: 16848
diff changeset
3834 (t (car term-completion-addsuffix))))
2824e1f84717 (term-completion-addsuffix): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents: 16848
diff changeset
3835 (filesuffix (cond ((not term-completion-addsuffix) "")
2824e1f84717 (term-completion-addsuffix): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents: 16848
diff changeset
3836 ((not (consp term-completion-addsuffix)) " ")
2824e1f84717 (term-completion-addsuffix): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents: 16848
diff changeset
3837 (t (cdr term-completion-addsuffix))))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3838 (filename (or (term-match-partial-filename) ""))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3839 (pathdir (file-name-directory filename))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3840 (pathnondir (file-name-nondirectory filename))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3841 (directory (if pathdir (term-directory pathdir) default-directory))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3842 (completion (file-name-completion pathnondir directory))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3843 (mini-flag (eq (selected-window) (minibuffer-window))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3844 (cond ((null completion)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3845 (message "No completions of %s" filename)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3846 (setq success nil))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3847 ((eq completion t) ; Means already completed "file".
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3848 (if term-completion-addsuffix (insert " "))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3849 (or mini-flag (message "Sole completion")))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3850 ((string-equal completion "") ; Means completion on "directory/".
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3851 (term-dynamic-list-filename-completions))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3852 (t ; Completion string returned.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3853 (let ((file (concat (file-name-as-directory directory) completion)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3854 (insert (substring (directory-file-name completion)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3855 (length pathnondir)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3856 (cond ((symbolp (file-name-completion completion directory))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3857 ;; We inserted a unique completion.
17147
2824e1f84717 (term-completion-addsuffix): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents: 16848
diff changeset
3858 (insert (if (file-directory-p file) dirsuffix filesuffix))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3859 (or mini-flag (message "Completed")))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3860 ((and term-completion-recexact term-completion-addsuffix
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3861 (string-equal pathnondir completion)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3862 (file-exists-p file))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3863 ;; 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
3864 (insert (if (file-directory-p file) dirsuffix filesuffix))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3865 (or mini-flag (message "Completed shortest")))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3866 ((or term-completion-autolist
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3867 (string-equal pathnondir completion))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3868 ;; It's not unique, list possible completions.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3869 (term-dynamic-list-filename-completions))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3870 (t
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3871 (or mini-flag (message "Partially completed")))))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3872 success))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3873
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3874
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3875 (defun term-replace-by-expanded-filename ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3876 "Dynamically expand and complete the filename at point.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3877 Replace the filename with an expanded, canonicalised and completed replacement.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3878 \"Expanded\" means environment variables (e.g., $HOME) and `~'s are replaced
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3879 with the corresponding directories. \"Canonicalised\" means `..' and `.' are
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3880 removed, and the filename is made absolute instead of relative. For expansion
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3881 see `expand-file-name' and `substitute-in-file-name'. For completion see
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3882 `term-dynamic-complete-filename'."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3883 (interactive)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3884 (replace-match (expand-file-name (term-match-partial-filename)) t t)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3885 (term-dynamic-complete-filename))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3886
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3887
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3888 (defun term-dynamic-simple-complete (stub candidates)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3889 "Dynamically complete STUB from CANDIDATES list.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3890 This function inserts completion characters at point by completing STUB from
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3891 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
3892 if completion is ambiguous.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3893
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3894 Returns nil if no completion was inserted.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3895 Returns `sole' if completed with the only completion match.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3896 Returns `shortest' if completed with the shortest of the completion matches.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3897 Returns `partial' if completed as far as possible with the completion matches.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3898 Returns `listed' if a completion listing was shown.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3899
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3900 See also `term-dynamic-complete-filename'."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3901 (let* ((completion-ignore-case nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3902 (candidates (mapcar (function (lambda (x) (list x))) candidates))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3903 (completions (all-completions stub candidates)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3904 (cond ((null completions)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3905 (message "No completions of %s" stub)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3906 nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3907 ((= 1 (length completions)) ; Gotcha!
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3908 (let ((completion (car completions)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3909 (if (string-equal completion stub)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3910 (message "Sole completion")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3911 (insert (substring completion (length stub)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3912 (message "Completed"))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3913 (if term-completion-addsuffix (insert " "))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3914 'sole))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3915 (t ; There's no unique completion.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3916 (let ((completion (try-completion stub candidates)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3917 ;; Insert the longest substring.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3918 (insert (substring completion (length stub)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3919 (cond ((and term-completion-recexact term-completion-addsuffix
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3920 (string-equal stub completion)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3921 (member completion completions))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3922 ;; It's not unique, but user wants shortest match.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3923 (insert " ")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3924 (message "Completed shortest")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3925 'shortest)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3926 ((or term-completion-autolist
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3927 (string-equal stub completion))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3928 ;; It's not unique, list possible completions.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3929 (term-dynamic-list-completions completions)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3930 'listed)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3931 (t
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3932 (message "Partially completed")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3933 'partial)))))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3934
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3935
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3936 (defun term-dynamic-list-filename-completions ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3937 "List in help buffer possible completions of the filename at point."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3938 (interactive)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3939 (let* ((completion-ignore-case nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3940 (filename (or (term-match-partial-filename) ""))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3941 (pathdir (file-name-directory filename))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3942 (pathnondir (file-name-nondirectory filename))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3943 (directory (if pathdir (term-directory pathdir) default-directory))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3944 (completions (file-name-all-completions pathnondir directory)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3945 (if completions
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3946 (term-dynamic-list-completions completions)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3947 (message "No completions of %s" filename))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3948
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3949
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3950 (defun term-dynamic-list-completions (completions)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3951 "List in help buffer sorted COMPLETIONS.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3952 Typing SPC flushes the help buffer."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3953 (let ((conf (current-window-configuration)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3954 (with-output-to-temp-buffer "*Completions*"
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3955 (display-completion-list (sort completions 'string-lessp)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3956 (message "Hit space to flush")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3957 (let (key first)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3958 (if (save-excursion
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3959 (set-buffer (get-buffer "*Completions*"))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3960 (setq key (read-key-sequence nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3961 first (aref key 0))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3962 (and (consp first)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3963 (eq (window-buffer (posn-window (event-start first)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3964 (get-buffer "*Completions*"))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3965 (eq (key-binding key) 'mouse-choose-completion)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3966 ;; If the user does mouse-choose-completion with the mouse,
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3967 ;; execute the command, then delete the completion window.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3968 (progn
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3969 (mouse-choose-completion first)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3970 (set-window-configuration conf))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3971 (if (eq first ?\ )
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3972 (set-window-configuration conf)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3973 (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
3974
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3975 ;;; 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
3976 (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
3977 "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
3978 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
3979 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
3980 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
3981 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
3982 (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
3983 ;; 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
3984 ;; 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
3985 (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
3986 (save-excursion
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3987 (set-buffer buffer)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3988 (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
3989 (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
3990 buffer))
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3991
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3992 (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
3993 (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
3994 (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
3995
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3996 ;;;###autoload
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3997 (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
3998 "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
3999 (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
4000 (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
4001 (getenv "ESHELL")
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
4002 (getenv "SHELL")
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
4003 "/bin/sh"))))
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
4004
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
4005 ;; 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
4006 (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
4007 (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
4008 new-buffer-name
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
4009 (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
4010 (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
4011 (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
4012 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
4013 "ansi-term")))
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
4014
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
4015 (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
4016
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
4017 ;; 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
4018 ;; 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
4019 ;; 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
4020
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
4021 (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
4022 (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
4023
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
4024 (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
4025 (term-mode)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
4026 (term-char-mode)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
4027
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
4028 ;; 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
4029 ;; 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
4030 ;; .emacs ...
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
4031
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
4032 (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
4033
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
4034 (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
4035
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4036
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4037 ;;; Converting process modes to use term mode
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4038 ;;; ===========================================================================
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4039 ;;; Renaming variables
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
4040 ;;; 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
4041 ;;; ones:
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4042 ;;; Local variables:
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4043 ;;; last-input-start term-last-input-start
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4044 ;;; last-input-end term-last-input-end
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4045 ;;; shell-prompt-pattern term-prompt-regexp
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4046 ;;; shell-set-directory-error-hook <no equivalent>
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4047 ;;; Miscellaneous:
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4048 ;;; shell-set-directory <unnecessary>
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4049 ;;; shell-mode-map term-mode-map
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4050 ;;; Commands:
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4051 ;;; shell-send-input term-send-input
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4052 ;;; shell-send-eof term-delchar-or-maybe-eof
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4053 ;;; kill-shell-input term-kill-input
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4054 ;;; interrupt-shell-subjob term-interrupt-subjob
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4055 ;;; stop-shell-subjob term-stop-subjob
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4056 ;;; quit-shell-subjob term-quit-subjob
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4057 ;;; kill-shell-subjob term-kill-subjob
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4058 ;;; kill-output-from-shell term-kill-output
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4059 ;;; show-output-from-shell term-show-output
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4060 ;;; copy-last-shell-input Use term-previous-input/term-next-input
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4061 ;;;
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4062 ;;; SHELL-SET-DIRECTORY is gone, its functionality taken over by
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4063 ;;; SHELL-DIRECTORY-TRACKER, the shell mode's term-input-filter-functions.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4064 ;;; Term mode does not provide functionality equivalent to
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4065 ;;; shell-set-directory-error-hook; it is gone.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4066 ;;;
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4067 ;;; term-last-input-start is provided for modes which want to munge
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4068 ;;; the buffer after input is sent, perhaps because the inferior
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4069 ;;; insists on echoing the input. The LAST-INPUT-START variable in
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4070 ;;; the old shell package was used to implement a history mechanism,
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4071 ;;; but you should think twice before using term-last-input-start
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4072 ;;; 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
4073 ;;;
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4074 ;;; 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
4075 ;;; *not* create the term-mode local variables in your foo-mode function.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4076 ;;; 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
4077 ;;; necessary term-specific local variables. Then create the
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4078 ;;; 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
4079 ;;; 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
4080 ;;; (term-{prompt-regexp, input-filter, input-filter-functions,
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4081 ;;; 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
4082 ;;; 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
4083 ;;; 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
4084 ;;; is typical:
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
4085 ;;;
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4086 ;;; (defvar shell-mode-map '())
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4087 ;;; (cond ((not shell-mode-map)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4088 ;;; (setq shell-mode-map (copy-keymap term-mode-map))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4089 ;;; (define-key shell-mode-map "\C-c\C-f" 'shell-forward-command)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4090 ;;; (define-key shell-mode-map "\C-c\C-b" 'shell-backward-command)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4091 ;;; (define-key shell-mode-map "\t" 'term-dynamic-complete)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4092 ;;; (define-key shell-mode-map "\M-?"
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4093 ;;; 'term-dynamic-list-filename-completions)))
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 ;;; (defun shell-mode ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4096 ;;; (interactive)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4097 ;;; (term-mode)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4098 ;;; (setq term-prompt-regexp shell-prompt-pattern)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4099 ;;; (setq major-mode 'shell-mode)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4100 ;;; (setq mode-name "Shell")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4101 ;;; (use-local-map shell-mode-map)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4102 ;;; (make-local-variable 'shell-directory-stack)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4103 ;;; (setq shell-directory-stack nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4104 ;;; (add-hook 'term-input-filter-functions 'shell-directory-tracker)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4105 ;;; (run-hooks 'shell-mode-hook))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4106 ;;;
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4107 ;;;
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4108 ;;; 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
4109 ;;;
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4110 ;;; For modes that use term-mode, term-dynamic-complete-functions is the
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4111 ;;; hook to add completion functions to. Functions on this list should return
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4112 ;;; non-nil if completion occurs (i.e., further completion should not occur).
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4113 ;;; 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
4114 ;;; completion job.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4115
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4116 (provide 'term)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4117
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4118 ;;; term.el ends here