annotate lisp/term.el @ 17846:c427501449a1

(display_text_line): Move the code to fill out the line with the newline's face to the end of the newline code. Add changes (commented out) to record ellipsis positions in charstarts.
author Richard M. Stallman <rms@gnu.org>
date Fri, 16 May 1997 07:32:59 +0000
parents 56a59138fa6c
children e159c69a45f0
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
13337
84acc3adcd63 Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 12229
diff changeset
1 ;;; term.el --- general command interpreter in a window stuff
84acc3adcd63 Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 12229
diff changeset
2
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3 ;;; Copyright (C) 1988, 1990, 1992, 1994, 1995 Free Software Foundation, Inc.
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
4
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
5 ;;; Author: Per Bothner <bothner@cygnus.com>
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
6 ;;; Based on comint mode written by: Olin Shivers <shivers@cs.cmu.edu>
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
7 ;;; Keyword: processes
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
8
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
9 ;;; 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
10 ;;; 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
11
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
12 ;;; 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
13
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
14 ;;; 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
15 ;;; --------------------------------------
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
16 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
17 ;;; 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
18 ;;; 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
19 ;;; 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
20 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
21 ;;; 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
22 ;;; 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
23 ;;; 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
24 ;;; 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
25 ;;; 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
26 ;;; 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
27 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
28 ;;; ;; 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
29 ;;; ;; 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
30 ;;; ;; 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
31 ;;; (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
32 ;;; (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
33 ;;; (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
34 ;;; (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
35 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
36 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
37 ;;; IMPORTANT: additions & changes
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
38 ;;; ------------------------------
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
39 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
40 ;;; 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
41 ;;; 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
42 ;;; 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
43 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
44 ;;; 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
45 ;;; 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
46 ;;; 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
47 ;;; 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
48 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
49 ;;; 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
50 ;;; 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
51 ;;; 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
52 ;;; 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
53 ;;; '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
54 ;;; 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
55 ;;; 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
56 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
57 ;;; 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
58 ;;; 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
59 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
60 ;;; # Local access
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
61 ;;; 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
62 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
63 ;;; # 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
64 ;;; deny root *
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 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
67 ;;; ----------------------------------------
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
68 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
69 ;;; 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
70 ;;; 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
71 ;;; 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
72 ;;;
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 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
75 ;;; 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
76 ;;; 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
77 ;;; usual.
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
78 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
79 ;;; ----------------------------------------
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
80 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
81 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
82 ;;; 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
83 ;;; 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
84 ;;; 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
85 ;;; 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
86 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
87 ;;; 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
88 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
89 ;;; Important caveat:
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
90 ;;; -----------------
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
91 ;;; if 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
92 ;;; 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
93 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
94 ;;; ----------------------------------------
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
95 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
96 ;;; 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
97 ;;; 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
98 ;;; 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
99 ;;; 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
100 ;;; check!)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
101 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
102 ;;; 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
103 ;;; 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
104 ;;; 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
105 ;;; 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
106 ;;;
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 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
109 ;;; TODO:
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 ;;; - 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
112 ;;; - 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
113 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
114 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
115 ;;; Changes:
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
116 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
117 ;;; 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
118 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
119 ;;; - 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
120 ;;; 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
121 ;;; - 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
122 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
123 ;;; 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
124 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
125 ;;; - 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
126 ;;; - 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
127 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
128 ;;; V2.3 November
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
129 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
130 ;;; - 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
131 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
132 ;;; 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
133 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
134 ;;; - 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
135 ;;; color_ls )
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
136 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
137 ;;; - 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
138 ;;; comint.el)
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 ;;; 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
141 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
142 ;;; - 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
143 ;;; - 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
144 ;;; - 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
145 ;;;
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 ;;; 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
148 ;;; 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
149 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
150 ;;; (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
151 ;;; (function
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
152 ;;; (lambda ()
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
153 ;;; (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
154 ;;; (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
155 ;;; (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
156 ;;; (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
157 ;;; (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
158 ;;; (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
159 ;;; (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
160 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
161 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
162 ;;; ----------------------------------------
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 ;;; 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
165 ;;; 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
166 ;;; 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
167 ;;; 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
168 ;;; 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
169 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
170 ;;; ----------------------------------------
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
171 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
172 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
173 ;;; # 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
174 ;;; # 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
175 ;;; # 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
176 ;;; # 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
177 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
178 ;;; # 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
179 ;;; # 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
180 ;;; # colorization off.
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
181 ;;; COLOR tty
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
182 ;;; OPTIONS -F
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
183 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
184 ;;; # 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
185 ;;; # colorizable
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
186 ;;; TERM eterm
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 ;;; # 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
189 ;;; EIGHTBIT 1
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
190 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
191 ;;; # 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
192 ;;; # 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
193 ;;; # Attribute codes:
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
194 ;;; # 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
195 ;;; # Text color codes:
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
196 ;;; # 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
197 ;;; # Background color codes:
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
198 ;;; # 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
199 ;;; 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
200 ;;; 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
201 ;;; 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
202 ;;; 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
203 ;;; 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
204 ;;; 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
205 ;;; 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
206 ;;; 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
207 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
208 ;;; # 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
209 ;;; EXEC 00;32
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
210 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
211 ;;; # 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
212 ;;; # 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
213 ;;; # 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
214 ;;; .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
215 ;;; .tgz 01;33
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
216 ;;; .arj 01;33
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
217 ;;; .taz 01;33
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
218 ;;; .lzh 01;33
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
219 ;;; .zip 01;33
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
220 ;;; .z 01;33
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
221 ;;; .Z 01;33
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
222 ;;; .gz 01;33
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
223 ;;; .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
224 ;;; .gif 01;35
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
225 ;;; .bmp 01;35
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
226 ;;; .xbm 01;35
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
227 ;;; .xpm 01;35
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
228 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
229 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
230 ;;; ----------------------------------------
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
231 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
232 ;;; 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
233 ;;; 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
234 ;;; 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
235 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
236 ;;; ----------------------------------------
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
237 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
238 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
239 ;;; set os = `uname`
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
240 ;;; set host = `hostname`
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
241 ;;; set date = `date`
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
242 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
243 ;;; # 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
244 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
245 ;;; set user = `whoami`
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 ;;; 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
250 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
251 ;;; echo --------------------------------------------------------------
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
252 ;;; echo Hello $user
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
253 ;;; 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
254 ;;; 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
255 ;;; echo --------------------------------------------------------------
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
256 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
257 ;;; setenv EDITOR emacsclient
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
258 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
259 ;;; # 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
260 ;;; # 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
261 ;;; # $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
262 ;;; # 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
263 ;;; # 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
264 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
265 ;;; # 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
266 ;;; # time one !
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 ;;; 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
269 ;;; 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
270 ;;; 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
271 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
272 ;;; # 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
273 ;;; # 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
274 ;;; # 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
275 ;;; # 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
276 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
277 ;;; 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
278 ;;; 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
279 ;;; end
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
280 ;;; 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
281 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
282 ;;; # 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
283 ;;; # 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
284 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
285 ;;; 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
286 ;;; 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
287 ;;; 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
288 ;;; end
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
289 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
290 ;;; # 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
291 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
292 ;;; echo "AnSiTh" $host
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
293 ;;; echo "AnSiTu" $user
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
294 ;;; echo "AnSiTc" $cwd
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
295 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
296 ;;; # some housekeeping
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
297 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
298 ;;; unset cwd_hack
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
299 ;;; unset host_hack
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
300 ;;; unset user_hack
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
301 ;;; unset temp
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
302 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
303 ;;; 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
304 ;;; endif
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
305 ;;;
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 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
308 ;;; # 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
309 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
310 ;;; unset os
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
311 ;;; unset date
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 ;;;
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 ;;; Original Commentary:
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
316 ;;; --------------------
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
317
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13961
diff changeset
318 ;; The changelog is at the end of this file.
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
319
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13961
diff changeset
320 ;; 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
321 ;; merge them into the master source.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13961
diff changeset
322 ;; - Per Bothner (bothner@cygnus.com)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
323
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13961
diff changeset
324 ;; 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
325 ;; (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
326 ;; 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
327 ;; 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
328 ;; 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
329 ;; saves code, implementation time, etc., etc.).
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
330
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13961
diff changeset
331 ;; 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
332 ;; background, dbx, gdb, kermit, prolog, telnet) to use term-mode
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13961
diff changeset
333 ;; 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
334
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
335
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13961
diff changeset
336 ;; Brief Command Documentation:
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13961
diff changeset
337 ;;============================================================================
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13961
diff changeset
338 ;; 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
339 ;; mode)
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13961
diff changeset
340 ;;
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13961
diff changeset
341 ;; m-p term-previous-input Cycle backwards in input history
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13961
diff changeset
342 ;; m-n term-next-input Cycle forwards
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13961
diff changeset
343 ;; 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
344 ;; m-s comint-next-matching-input Next input that matches
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13961
diff changeset
345 ;; return term-send-input
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13961
diff changeset
346 ;; 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
347 ;; 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
348 ;; c-c c-u term-kill-input ^u
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13961
diff changeset
349 ;; c-c c-w backward-kill-word ^w
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13961
diff changeset
350 ;; c-c c-c term-interrupt-subjob ^c
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13961
diff changeset
351 ;; c-c c-z term-stop-subjob ^z
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13961
diff changeset
352 ;; c-c c-\ term-quit-subjob ^\
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13961
diff changeset
353 ;; 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
354 ;; 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
355 ;; 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
356 ;;
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13961
diff changeset
357 ;; Not bound by default in term-mode
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13961
diff changeset
358 ;; 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
359 ;; (These are bound in shell-mode)
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13961
diff changeset
360 ;; term-dynamic-complete Complete filename at point.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13961
diff changeset
361 ;; term-dynamic-list-completions List completions in help buffer.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13961
diff changeset
362 ;; 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
363 ;; replace with expanded/completed name.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13961
diff changeset
364 ;; term-kill-subjob No mercy.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13961
diff changeset
365 ;; term-show-maximum-output Show as much output as possible.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13961
diff changeset
366 ;; 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
367 ;; group. Useful if you accidentally
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13961
diff changeset
368 ;; suspend your process (with C-c C-z).
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
369
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
370 ;; 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
371 ;; term-load-hook is run after loading in this package.
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
372
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13961
diff changeset
373 ;; Code:
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
374
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13961
diff changeset
375 ;; 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
376 ;; 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
377 (defconst term-protocol-version "0.95")
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
378
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
379 (require 'ring)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
380 (require 'ehelp)
17407
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
381
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
382 (defgroup term nil
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
383 "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
384 :group 'processes
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
385 :group 'unix)
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
386
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
387
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
388 ;;; Buffer Local Variables:
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
389 ;;;============================================================================
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
390 ;;; Term mode buffer local variables:
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
391 ;;; term-prompt-regexp - string term-bol uses to match prompt.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
392 ;;; term-delimiter-argument-list - list For delimiters and arguments
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
393 ;;; term-last-input-start - marker Handy if inferior always echoes
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
394 ;;; 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
395 ;; For the input history mechanism:
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
396 (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
397 ;;; term-input-ring-size - integer
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
398 ;;; term-input-ring - ring
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
399 ;;; term-input-ring-index - number ...
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
400 ;;; term-input-autoexpand - symbol ...
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
401 ;;; term-input-ignoredups - boolean ...
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
402 ;;; term-last-input-match - string ...
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
403 ;;; term-dynamic-complete-functions - hook For the completion mechanism
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
404 ;;; 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
405 ;;; term-get-old-input - function Hooks for specific
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
406 ;;; term-input-filter-functions - hook process-in-a-buffer
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
407 ;;; term-input-filter - function modes.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
408 ;;; term-input-send - function
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
409 ;;; term-scroll-to-bottom-on-output - symbol ...
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
410 ;;; 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
411 (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
412 (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
413 (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
414 (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
415 ;; 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
416 (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
417 ;; or nil if unknown.
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
418 (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
419 (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
420 ;; or nil if unknown.
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
421 (defvar term-insert-mode nil)
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
422 (defvar term-vertical-motion)
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
423 (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
424 ;; state 0: Normal state
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
425 ;; 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
426 ;; 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
427 ;; (and line warp) before displaying it.
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
428 ;; 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
429 ;; state 2: seen ESC
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
430 ;; state 3: seen ESC [ (or ESC [ ?)
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
431 ;; 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
432 (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
433 ;; we want suppressed.
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
434 (defvar term-terminal-parameter)
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
435 (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
436 (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
437 (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
438 (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
439 (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
440 ;; 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
441 (defvar term-saved-cursor nil)
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
442 (defvar term-command-hook)
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
443 (defvar term-log-buffer nil)
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
444 (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
445 ;; 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
446 ;; 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
447 ;; 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
448 ;; (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
449 (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
450 ;; 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
451 ;; 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
452 (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
453 (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
454 (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
455 (defvar term-pager-old-filter) ;; Saved process-filter while paging.
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
456
17407
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
457 (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
458 "*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
459 :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
460 :group 'term)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
461
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
462 (defvar term-prompt-regexp "^"
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
463 "Regexp to recognise prompts in the inferior process.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
464 Defaults to \"^\", the null string at BOL.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
465
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
466 Good choices:
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
467 Canonical Lisp: \"^[^> \\n]*>+:? *\" (Lucid, franz, kcl, T, cscheme, oaklisp)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
468 Lucid Common Lisp: \"^\\\\(>\\\\|\\\\(->\\\\)+\\\\) *\"
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
469 franz: \"^\\\\(->\\\\|<[0-9]*>:\\\\) *\"
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
470 kcl: \"^>+ *\"
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
471 shell: \"^[^#$%>\\n]*[#$%>] *\"
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
472 T: \"^>+ *\"
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
473
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
474 This is a good thing to set in mode hooks.")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
475
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
476 (defvar term-delimiter-argument-list ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
477 "List of characters to recognise as separate arguments in input.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
478 Strings comprising a character in this list will separate the arguments
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
479 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
480 whitespace). See `term-arguments'.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
481 Defaults to the empty list.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
482
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
483 For shells, a good value is (?\\| ?& ?< ?> ?\\( ?\\) ?;).
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 This is a good thing to set in mode hooks.")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
486
17407
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
487 (defcustom term-input-autoexpand nil
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
488 "*If non-nil, expand input command history references on completion.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
489 This mirrors the optional behavior of tcsh (its autoexpand and histlit).
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
490
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
491 If the value is `input', then the expansion is seen on input.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
492 If the value is `history', then the expansion is only when inserting
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
493 into the buffer's input ring. See also `term-magic-space' and
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
494 `term-dynamic-complete'.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
495
17407
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
496 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
497 :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
498 :group 'term)
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
499
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
500 (defcustom term-input-ignoredups nil
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
501 "*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
502 This mirrors the optional behavior of bash.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
503
17407
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
504 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
505 :type 'boolean
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
506 :group 'term)
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
507
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
508 (defcustom term-input-ring-file-name nil
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
509 "*If non-nil, name of the file to read/write input history.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
510 See also `term-read-input-ring' and `term-write-input-ring'.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
511
17407
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
512 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
513 :type 'boolean
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
514 :group 'term)
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
515
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
516 (defcustom term-scroll-to-bottom-on-output nil
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
517 "*Controls whether interpreter output causes window to scroll.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
518 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
519 If `this', scroll only the selected window.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
520 If `others', scroll only those that are not the selected window.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
521
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
522 The default is nil.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
523
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
524 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
525 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
526 :type 'boolean
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
527 :group 'term)
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
528
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
529 (defcustom term-scroll-show-maximum-output nil
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
530 "*Controls how interpreter output causes window to scroll.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
531 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
532
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
533 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
534 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
535 :type 'boolean
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
536 :group 'term)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
537
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
538 ;; Where gud-display-frame should put the debugging arrow. This is
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
539 ;; set by the marker-filter, which scans the debugger's output for
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
540 ;; indications of the current pc.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
541 (defvar term-pending-frame 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 ;;; Here are the per-interpreter hooks.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
544 (defvar term-get-old-input (function term-get-old-input-default)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
545 "Function that submits old text in term mode.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
546 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
547 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
548 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
549 leading text matching term-prompt-regexp")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
550
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
551 (defvar term-dynamic-complete-functions
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
552 '(term-replace-by-expanded-history term-dynamic-complete-filename)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
553 "List of functions called to perform completion.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
554 Functions should return non-nil if completion was performed.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
555 See also `term-dynamic-complete'.
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 This is a good thing to set in mode hooks.")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
558
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
559 (defvar term-input-filter
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
560 (function (lambda (str) (not (string-match "\\`\\s *\\'" str))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
561 "Predicate for filtering additions to input history.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
562 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
563 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
564
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
565 (defvar term-input-filter-functions '()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
566 "Functions to call before input is sent to the process.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
567 These functions get one argument, a string containing the text to send.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
568
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
569 This variable is buffer-local.")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
570
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
571 (defvar term-input-sender (function term-simple-send)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
572 "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
573 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
574 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
575 the user command term-send-input. term-simple-send just sends
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
576 the string plus a newline.")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
577
17407
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
578 (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
579 "*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
580 See `term-send-input'."
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
581 :type 'boolean
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
582 :group 'term)
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
583
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
584 (defcustom term-mode-hook '()
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
585 "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
586 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
587 :type 'hook
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
588 :group 'term)
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
589
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
590 (defcustom term-exec-hook '()
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
591 "Called each time a process is exec'd by term-exec.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
592 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
593 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
594 \(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
595 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
596 :type 'hook
ae0ba78d6c07 Add defgroup's; change use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17283
diff changeset
597 :group 'term)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
598
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
599 (defvar term-mode-map nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
600 (defvar term-raw-map nil
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
601 "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
602 (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
603 "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
604 Do not change it directly; use term-set-escape-char instead.")
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
605 (defvar term-raw-escape-map nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
606
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
607 (defvar term-pager-break-map nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
608
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
609 (defvar term-ptyp t
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
610 "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
611 This is to work around a bug in Emacs process signaling.")
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
612
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
613 (defvar term-last-input-match ""
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
614 "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
615 Buffer local variable.")
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
616
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
617 (defvar term-input-ring nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
618 (defvar term-last-input-start)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
619 (defvar term-last-input-end)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
620 (defvar term-input-ring-index nil
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
621 "Index of last matched history element.")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
622 (defvar term-matching-input-from-input-string ""
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
623 "Input previously used to match input history.")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
624 ; 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
625 ; assuming this is Emacs 19.20 or newer.
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
626 (defvar term-pager-filter t)
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 (put 'term-replace-by-expanded-history 'menu-enable 'term-input-autoexpand)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
629 (put 'term-input-ring 'permanent-local t)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
630 (put 'term-input-ring-index 'permanent-local t)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
631 (put 'term-input-autoexpand 'permanent-local t)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
632 (put 'term-input-filter-functions 'permanent-local t)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
633 (put 'term-scroll-to-bottom-on-output 'permanent-local t)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
634 (put 'term-scroll-show-maximum-output 'permanent-local t)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
635 (put 'term-ptyp 'permanent-local t)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
636
10515
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
637 ;; Do FORMS if running under Emacs-19.
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
638 (defmacro term-if-emacs19 (&rest forms)
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
639 (if (string-match "^19" emacs-version) (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
640 ;; True if running under XEmacs (previously Lucid Emacs).
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
641 (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
642 ;; 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
643 (defmacro term-if-xemacs (&rest forms)
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
644 (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
645 ;; 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
646 (defmacro term-ifnot-xemacs (&rest forms)
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
647 (if (not (term-is-xemacs)) (cons 'progn forms)))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
648
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
649 (defmacro term-in-char-mode () '(eq (current-local-map) term-raw-map))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
650 (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
651 ;; True if currently doing PAGER handling.
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
652 (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
653 (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
654 (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
655
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
656 (defvar term-signals-menu)
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
657 (defvar term-terminal-menu)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
658
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
659 ;;; 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
660 (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
661 (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
662 (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
663 (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
664 (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
665 (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
666 (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
667 (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
668 (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
669 (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
670 (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
671 (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
672 (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
673 (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
674 (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
675 (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
676 (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
677 (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
678 (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
679 (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
680 (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
681 (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
682 (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
683 (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
684
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
685 ;;; 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
686 (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
687 (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
688 (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
689 (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
690 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
691
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
692 ;;; faces -mm
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
693
17814
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
694 (defmacro term-ignore-error (body)
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
695 `(condition-case nil
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
696 (progn @,body)
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
697 (error nil)))
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
698
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
699 (defvar term-default-fg-color "SkyBlue")
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
700 (defvar term-default-bg-color "LightBlue")
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
701
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
702 (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
703 ;;; --- Simple faces ---
17814
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
704 (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
705 (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
706 (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
707 (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
708 (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
709 (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
710 (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
711 (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
712
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
713 (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
714 (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
715 (term-ignore-error
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
716 (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
717 (term-ignore-error
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
718 (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
719
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
720 (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
721 (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
722 (term-ignore-error
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
723 (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
724 (term-ignore-error
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
725 (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
726
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
727 (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
728 (term-ignore-error
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
729 (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
730
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
731 (copy-face 'default 'term-invisible-inv)
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
732 (term-ignore-error
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
733 (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
734
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-bold)
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
736 (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
737
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
738 ;; 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
739 (term-ignore-error
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
740 (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
741
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
742 (term-ignore-error
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
743 (set-face-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
744
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
745 ;;; --- Fg faces ---
17814
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
746 (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
747 (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
748 (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
749 (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
750 (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
751 (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
752 (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
753 (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
754
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
755 (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
756 (term-ignore-error
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
757 (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
758 (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
759 (term-ignore-error
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
760 (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
761 (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
762 (term-ignore-error
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
763 (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
764 (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
765 (term-ignore-error
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
766 (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
767 (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
768 (term-ignore-error
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
769 (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
770 (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
771 (term-ignore-error
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
772 (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
773 (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
774 (term-ignore-error
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
775 (set-face-foreground 'term-cyan "cyan"))
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-white)
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-white "white"))
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
779
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
780 ;;; --- Bg faces ---
17814
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
781 (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
782 (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
783 (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
784 (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
785 (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
786 (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
787 (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
788 (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
789
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
790 (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
791 (term-ignore-error
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
792 (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
793 (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
794 (term-ignore-error
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
795 (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
796 (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
797 (term-ignore-error
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
798 (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
799 (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
800 (term-ignore-error
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
801 (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
802 (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
803 (term-ignore-error
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
804 (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
805 (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
806 (term-ignore-error
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
807 (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
808 (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
809 (term-ignore-error
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
810 (set-face-background 'term-cyanbg "cyan"))
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-whitebg)
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-whitebg "white")))
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
814
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
815 (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
816 [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
817 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
818
17814
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
819 (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
820 [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
821 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
822
17814
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
823 (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
824 [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
825 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
826
17814
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
827 (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
828 [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
829 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
830
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
831 ;;; 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
832 (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
833 "*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
834 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
835 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
836 is buffer-local.")
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
837 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
838
10515
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
839 (term-if-xemacs
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
840 (defvar term-terminal-menu
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
841 '("Terminal"
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
842 [ "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
843 [ "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
844 [ "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
845 [ "Disable paging" term-pager-toggle term-pager-count])))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
846
17659
a62b21f702b0 (term-mode): Add a mode-class property.
Richard M. Stallman <rms@gnu.org>
parents: 17407
diff changeset
847 (put 'term-mode 'mode-class 'special)
a62b21f702b0 (term-mode): Add a mode-class property.
Richard M. Stallman <rms@gnu.org>
parents: 17407
diff changeset
848
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
849 (defun term-mode ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
850 "Major mode for interacting with an inferior interpreter.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
851 Interpreter name is same as buffer name, sans the asterisks.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
852 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
853 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
854 In char sub-mode, each character (except `term-escape-char`) is
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
855 set immediately.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
856
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
857 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
858 shell-mode, etc.. This can be done by setting the hooks
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
859 term-input-filter-functions, term-input-filter, term-input-sender and
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
860 term-get-old-input to appropriate functions, and the variable
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
861 term-prompt-regexp to the appropriate regular expression.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
862
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
863 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
864 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
865 \\[term-previous-input], and \\[term-dynamic-list-input-ring].
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
866 Input ring history expansion can be achieved with the commands
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
867 \\[term-replace-by-expanded-history] or \\[term-magic-space].
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
868 Input ring expansion is controlled by the variable `term-input-autoexpand',
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
869 and addition is controlled by the variable `term-input-ignoredups'.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
870
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
871 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
872 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
873 and `term-scroll-to-bottom-on-output'.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
874
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
875 If you accidentally suspend your process, use \\[term-continue-subjob]
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
876 to continue it.
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 \\{term-mode-map}
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
879
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
880 Entry to this mode runs the hooks on term-mode-hook"
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
881 (interactive)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
882 ;; Do not remove this. All major modes must do this.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
883 (kill-all-local-variables)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
884 (setq major-mode 'term-mode)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
885 (setq mode-name "Term")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
886 (use-local-map term-mode-map)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
887 (make-local-variable 'term-home-marker)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
888 (setq term-home-marker (copy-marker 0))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
889 (make-local-variable 'term-saved-home-marker)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
890 (make-local-variable 'term-height)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
891 (make-local-variable 'term-width)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
892 (setq term-width (1- (window-width)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
893 (setq term-height (1- (window-height)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
894 (make-local-variable 'term-terminal-parameter)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
895 (make-local-variable 'term-saved-cursor)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
896 (make-local-variable 'term-last-input-start)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
897 (setq term-last-input-start (make-marker))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
898 (make-local-variable 'term-last-input-end)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
899 (setq term-last-input-end (make-marker))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
900 (make-local-variable 'term-last-input-match)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
901 (setq term-last-input-match "")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
902 (make-local-variable 'term-prompt-regexp) ; Don't set; default
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
903 (make-local-variable 'term-input-ring-size) ; ...to global val.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
904 (make-local-variable 'term-input-ring)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
905 (make-local-variable 'term-input-ring-file-name)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
906 (or (and (boundp 'term-input-ring) term-input-ring)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
907 (setq term-input-ring (make-ring term-input-ring-size)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
908 (make-local-variable 'term-input-ring-index)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
909 (or (and (boundp 'term-input-ring-index) term-input-ring-index)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
910 (setq term-input-ring-index nil))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
911
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
912 (make-local-variable 'term-command-hook)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
913 (setq term-command-hook (symbol-function 'term-command-hook))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
914
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
915 ;;; 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
916 ;;; 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
917 ;;; 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
918 ;;; 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
919
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
920 (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
921 (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
922
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
923 (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
924 (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
925
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
926 (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
927 (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
928
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
929 ;;; 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
930 (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
931 (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
932 (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
933
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
934 ;;; 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
935 (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
936
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
937 ;;; 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
938 (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
939 (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
940 (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
941 (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
942 (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
943 (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
944 (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
945 (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
946
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
947 (make-local-variable 'term-terminal-state)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
948 (make-local-variable 'term-kill-echo-list)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
949 (make-local-variable 'term-start-line-column)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
950 (make-local-variable 'term-current-column)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
951 (make-local-variable 'term-current-row)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
952 (make-local-variable 'term-log-buffer)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
953 (make-local-variable 'term-scroll-start)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
954 (make-local-variable 'term-scroll-end)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
955 (setq term-scroll-end term-height)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
956 (make-local-variable 'term-scroll-with-delete)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
957 (make-local-variable 'term-pager-count)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
958 (make-local-variable 'term-pager-old-local-map)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
959 (make-local-variable 'term-old-mode-map)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
960 (make-local-variable 'term-insert-mode)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
961 (make-local-variable 'term-dynamic-complete-functions)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
962 (make-local-variable 'term-completion-fignore)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
963 (make-local-variable 'term-get-old-input)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
964 (make-local-variable 'term-matching-input-from-input-string)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
965 (make-local-variable 'term-input-autoexpand)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
966 (make-local-variable 'term-input-ignoredups)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
967 (make-local-variable 'term-delimiter-argument-list)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
968 (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
969 (make-local-variable 'term-input-filter)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
970 (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
971 (make-local-variable 'term-eol-on-send)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
972 (make-local-variable 'term-scroll-to-bottom-on-output)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
973 (make-local-variable 'term-scroll-show-maximum-output)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
974 (make-local-variable 'term-ptyp)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
975 (make-local-variable 'term-exec-hook)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
976 (make-local-variable 'term-vertical-motion)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
977 (make-local-variable 'term-pending-delete-marker)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
978 (setq term-pending-delete-marker (make-marker))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
979 (make-local-variable 'term-current-face)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
980 (make-local-variable 'term-pending-frame)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
981 (setq term-pending-frame nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
982 (run-hooks 'term-mode-hook)
10515
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
983 (term-if-xemacs
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
984 (set-buffer-menubar
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
985 (append current-menubar (list term-terminal-menu))))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
986 (or term-input-ring
10671
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
987 (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
988 (term-update-mode-line))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
989
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
990 (if term-mode-map
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
991 nil
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
992 (setq term-mode-map (make-sparse-keymap))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
993 (define-key term-mode-map "\ep" 'term-previous-input)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
994 (define-key term-mode-map "\en" 'term-next-input)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
995 (define-key term-mode-map "\er" 'term-previous-matching-input)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
996 (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
997 (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
998 (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
999 'term-previous-matching-input-from-input)
10515
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
1000 (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
1001 (define-key term-mode-map "\e\C-l" 'term-show-output)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1002 (define-key term-mode-map "\C-m" 'term-send-input)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1003 (define-key term-mode-map "\C-d" 'term-delchar-or-maybe-eof)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1004 (define-key term-mode-map "\C-c\C-a" 'term-bol)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1005 (define-key term-mode-map "\C-c\C-u" 'term-kill-input)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1006 (define-key term-mode-map "\C-c\C-w" 'backward-kill-word)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1007 (define-key term-mode-map "\C-c\C-c" 'term-interrupt-subjob)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1008 (define-key term-mode-map "\C-c\C-z" 'term-stop-subjob)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1009 (define-key term-mode-map "\C-c\C-\\" 'term-quit-subjob)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1010 (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
1011 (define-key term-mode-map "\C-c\C-o" 'term-kill-output)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1012 (define-key term-mode-map "\C-c\C-r" 'term-show-output)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1013 (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
1014 (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
1015 (define-key term-mode-map "\C-c\C-n" 'term-next-prompt)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1016 (define-key term-mode-map "\C-c\C-p" 'term-previous-prompt)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1017 (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
1018 (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
1019 (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
1020 (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
1021
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1022
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1023 ; ;; completion:
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
1024 ; (define-key term-mode-map [menu-bar completion]
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1025 ; (cons "Complete" (make-sparse-keymap "Complete")))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1026 ; (define-key term-mode-map [menu-bar completion complete-expand]
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1027 ; '("Expand File Name" . term-replace-by-expanded-filename))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1028 ; (define-key term-mode-map [menu-bar completion complete-listing]
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1029 ; '("File Completion Listing" . term-dynamic-list-filename-completions))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1030 ; (define-key term-mode-map [menu-bar completion complete-file]
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1031 ; '("Complete File Name" . term-dynamic-complete-filename))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1032 ; (define-key term-mode-map [menu-bar completion complete]
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1033 ; '("Complete Before Point" . term-dynamic-complete))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1034 ; ;; Put them in the menu bar:
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1035 ; (setq menu-bar-final-items (append '(terminal completion inout signals)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1036 ; menu-bar-final-items))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1037 )
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1038
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1039 ;; Menu bars:
10515
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
1040 (term-ifnot-xemacs
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
1041 (term-if-emacs19
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1042
10671
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1043 ;; terminal:
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1044 (let (newmap)
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1045 (setq newmap (make-sparse-keymap "Terminal"))
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1046 (define-key newmap [terminal-pager-enable]
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1047 '("Enable paging" . term-fake-pager-enable))
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1048 (define-key newmap [terminal-pager-disable]
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1049 '("Disable paging" . term-fake-pager-disable))
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1050 (define-key newmap [terminal-char-mode]
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1051 '("Character mode" . term-char-mode))
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1052 (define-key newmap [terminal-line-mode]
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1053 '("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
1054 (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
1055
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1056 ;; completion: (line mode only)
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1057 (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
1058 (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
1059 (cons "Complete" term-completion-menu))
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1060 (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
1061 '("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
1062 (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
1063 '("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
1064 (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
1065 '("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
1066 (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
1067 '("Complete Before Point" . term-dynamic-complete))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1068
10671
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1069 ;; Input history: (line mode only)
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1070 (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
1071 (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
1072 (cons "In/Out" term-inout-menu))
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1073 (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
1074 '("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
1075 (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
1076 '("Forward Output Group" . term-next-prompt))
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1077 (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
1078 '("Backward Output Group" . term-previous-prompt))
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1079 (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
1080 '("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
1081 (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
1082 '("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
1083 (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
1084 '("Kill Current Input" . term-kill-input))
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1085 (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
1086 '("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
1087 (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
1088 '("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
1089 (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
1090 '("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
1091 (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
1092 '("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
1093 (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
1094 '("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
1095 (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
1096 '("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
1097 (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
1098 '("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
1099 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
1100 (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
1101 '("Next Input" . term-next-input))
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1102 (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
1103 '("Previous Input" . term-previous-input))
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1104 (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
1105 '("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
1106 (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
1107 '("Expand History Before Point" . term-replace-by-expanded-history))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1108
10671
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1109 ;; Signals
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1110 (setq newmap (make-sparse-keymap "Signals"))
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1111 (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
1112 (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
1113 (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
1114 (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
1115 (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
1116 (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
1117 (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
1118 (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
1119 )))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1120
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1121 (defun term-reset-size (height width)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1122 (setq term-height height)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1123 (setq term-width width)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1124 (setq term-start-line-column nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1125 (setq term-current-row nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1126 (setq term-current-column nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1127 (term-scroll-region 0 height))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1128
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1129 ;; 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
1130 ;; matches part of the buffer before point.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1131 ;; If so, delete that matched part of the buffer - this suppresses echo.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1132 ;; Also, remove that string from the term-kill-echo-list.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1133 ;; 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
1134 ;; in case something gets out of sync. (Except for type-ahead, there
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1135 ;; should only be one element in the list.)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1136
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1137 (defun term-check-kill-echo-list ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1138 (let ((cur term-kill-echo-list) (found nil) (save-point (point)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1139 (unwind-protect
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1140 (progn
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1141 (end-of-line)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1142 (while cur
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1143 (let* ((str (car cur)) (len (length str)) (start (- (point) len)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1144 (if (and (>= start (point-min))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1145 (string= str (buffer-substring start (point))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1146 (progn (delete-backward-char len)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1147 (setq term-kill-echo-list (cdr cur))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1148 (setq term-current-column nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1149 (setq term-current-row nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1150 (setq term-start-line-column nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1151 (setq cur nil found t))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1152 (setq cur (cdr cur))))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1153 (if (not found)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1154 (goto-char save-point)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1155 found))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1156
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1157 (defun term-check-size (process)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1158 (if (or (/= term-height (1- (window-height)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1159 (/= term-width (1- (window-width))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1160 (progn
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1161 (term-reset-size (1- (window-height)) (1- (window-width)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1162 (set-process-window-size process term-height term-width))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1163
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1164 (defun term-send-raw-string (chars)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1165 (let ((proc (get-buffer-process (current-buffer))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1166 (if (not proc)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1167 (error "Current buffer has no process")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1168 ;; Note that (term-current-row) must be called *after*
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1169 ;; (point) has been updated to (process-mark proc).
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1170 (goto-char (process-mark proc))
10671
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1171 (if (term-pager-enabled)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1172 (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
1173 (process-send-string proc chars))))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1174
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1175 (defun term-send-raw ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1176 "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
1177 without any interpretation."
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1178 (interactive)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1179 ;; Convert `return' to C-m, etc.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1180 (if (and (symbolp last-input-char)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1181 (get last-input-char 'ascii-character))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1182 (setq last-input-char (get last-input-char 'ascii-character)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1183 (term-send-raw-string (make-string 1 last-input-char)))
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-meta ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1186 (interactive)
10671
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1187 (if (symbolp last-input-char)
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1188 ;; Convert `return' to C-m, etc.
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1189 (let ((tmp (get last-input-char 'event-symbol-elements)))
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1190 (if tmp
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1191 (setq last-input-char (car tmp)))
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1192 (if (symbolp last-input-char)
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1193 (progn
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1194 (setq tmp (get last-input-char 'ascii-character))
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1195 (if tmp (setq last-input-char tmp))))))
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1196 (term-send-raw-string (if (and (numberp last-input-char)
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1197 (> last-input-char 127)
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1198 (< last-input-char 256))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1199 (make-string 1 last-input-char)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1200 (format "\e%c" last-input-char))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1201
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1202 (defun term-mouse-paste (click arg)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1203 "Insert the last stretch of killed text at the position clicked on."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1204 (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
1205 (term-if-xemacs
8d2f156b72ff (term-mouse-paste): Make work for xemacs. Minor GNU emacs fixes.
Per Bothner <bothner@cygnus.com>
parents: 11032
diff changeset
1206 (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
1207 (x-get-cutbuffer)
8d2f156b72ff (term-mouse-paste): Make work for xemacs. Minor GNU emacs fixes.
Per Bothner <bothner@cygnus.com>
parents: 11032
diff changeset
1208 (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
1209 (term-ifnot-xemacs
8d2f156b72ff (term-mouse-paste): Make work for xemacs. Minor GNU emacs fixes.
Per Bothner <bothner@cygnus.com>
parents: 11032
diff changeset
1210 ;; 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
1211 (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
1212 (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
1213 (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
1214 ((listp arg) 0)
8d2f156b72ff (term-mouse-paste): Make work for xemacs. Minor GNU emacs fixes.
Per Bothner <bothner@cygnus.com>
parents: 11032
diff changeset
1215 ((eq arg '-) -1)
8d2f156b72ff (term-mouse-paste): Make work for xemacs. Minor GNU emacs fixes.
Per Bothner <bothner@cygnus.com>
parents: 11032
diff changeset
1216 (t (1- arg)))))))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1217
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1218 ;; 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
1219 ;; 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
1220 ;; 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
1221 (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
1222 (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
1223 (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
1224 (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
1225 (defun term-send-home () (interactive) (term-send-raw-string "\e[H"))
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
1226 (defun term-send-end () (interactive) (term-send-raw-string "\eOw"))
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
1227 (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
1228 (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
1229 (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
1230 (defun term-send-backspace () (interactive) (term-send-raw-string "\C-H"))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1231
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1232 (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
1233 "Change term-escape-char and keymaps that depend on it."
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1234 (if term-escape-char
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1235 (define-key term-raw-map term-escape-char 'term-send-raw))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1236 (setq c (make-string 1 c))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1237 (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
1238 ;; Define standard bindings in term-raw-escape-map
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1239 (define-key term-raw-escape-map "\C-x"
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1240 (lookup-key (current-global-map) "\C-x"))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1241 (define-key term-raw-escape-map "\C-v"
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1242 (lookup-key (current-global-map) "\C-v"))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1243 (define-key term-raw-escape-map "\C-u"
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1244 (lookup-key (current-global-map) "\C-u"))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1245 (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
1246 (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
1247 ;; 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
1248 (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
1249 (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
1250
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1251 (defun term-char-mode ()
10515
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
1252 "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
1253 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
1254 intervention from Emacs, except for the escape character (usually C-c)."
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1255 (interactive)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1256 (if (not term-raw-map)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1257 (let* ((map (make-keymap))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1258 (esc-map (make-keymap))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1259 (i 0))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1260 (while (< i 128)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1261 (define-key map (make-string 1 i) 'term-send-raw)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1262 (define-key esc-map (make-string 1 i) 'term-send-raw-meta)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1263 (setq i (1+ i)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1264 (define-key map "\e" esc-map)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1265 (setq term-raw-map map)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1266 (setq term-raw-escape-map
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1267 (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
1268
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
1269 ;;; 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
1270
10515
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
1271 (term-if-emacs19
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
1272 (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
1273 (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
1274 (term-ifnot-xemacs
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
1275 (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
1276 (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
1277 (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
1278 (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
1279 (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
1280 (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
1281 (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
1282 (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
1283 (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
1284 (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
1285 (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
1286 (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
1287 (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
1288
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
1289
11032
4b411b6a4e70 (term-char-mode): Fix arrow key and [button2] support for xemacs.
Per Bothner <bothner@cygnus.com>
parents: 10933
diff changeset
1290 (term-set-escape-char ?\C-c)))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1291 ;; 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
1292 (if (term-in-line-mode)
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
1293 (progn
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
1294 (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
1295 (use-local-map term-raw-map)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1296
10515
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
1297 ;; 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
1298 (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
1299 (save-input-sender term-input-sender))
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
1300 (if (> (point) pmark)
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
1301 (unwind-protect
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
1302 (progn
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
1303 (setq term-input-sender
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
1304 (symbol-function 'term-send-string))
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
1305 (end-of-line)
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
1306 (term-send-input))
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
1307 (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
1308 (term-update-mode-line))))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1309
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1310 (defun term-line-mode ()
10515
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
1311 "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
1312 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
1313 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
1314 (interactive)
10515
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
1315 (if (term-in-char-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 (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
1318 (term-update-mode-line))))
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1319
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1320 (defun term-update-mode-line ()
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1321 (setq mode-line-process
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1322 (if (term-in-char-mode)
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
1323 (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
1324 (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
1325 (force-mode-line-update))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1326
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1327 (defun term-check-proc (buffer)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1328 "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
1329 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
1330 name of one"
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1331 (let ((proc (get-buffer-process buffer)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1332 (and proc (memq (process-status proc) '(run stop)))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1333
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1334 ;;;###autoload
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1335 (defun make-term (name program &optional startfile &rest switches)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1336 "Make a term process NAME in a buffer, running PROGRAM.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1337 The name of the buffer is made by surrounding NAME with `*'s.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1338 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
1339 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
1340 the process. Any more args are arguments to PROGRAM."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1341 (let ((buffer (get-buffer-create (concat "*" name "*"))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1342 ;; 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
1343 ;; term mode. Otherwise, leave buffer and existing process alone.
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1344 (cond ((not (term-check-proc buffer))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1345 (save-excursion
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1346 (set-buffer buffer)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1347 (term-mode)) ; Install local vars, mode, keymap, ...
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1348 (term-exec buffer name program startfile switches)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1349 buffer))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1350
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1351 ;;;###autoload
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1352 (defun term (program)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1353 "Start a terminal-emulator in a new buffer."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1354 (interactive (list (read-from-minibuffer "Run program: "
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1355 (or explicit-shell-file-name
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1356 (getenv "ESHELL")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1357 (getenv "SHELL")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1358 "/bin/sh"))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1359 (set-buffer (make-term "terminal" program))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1360 (term-mode)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1361 (term-char-mode)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1362 (switch-to-buffer "*terminal*"))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1363
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1364 (defun term-exec (buffer name command startfile switches)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1365 "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
1366 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
1367 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
1368 buffer. The hook term-exec-hook is run after each exec."
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1369 (save-excursion
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1370 (set-buffer buffer)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1371 (let ((proc (get-buffer-process buffer))) ; Blast any old process.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1372 (if proc (delete-process proc)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1373 ;; Crank up a new process
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1374 (let ((proc (term-exec-1 name buffer command switches)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1375 (make-local-variable 'term-ptyp)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1376 (setq term-ptyp process-connection-type) ; T if pty, NIL if pipe.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1377 ;; Jump to the end, and set the process mark.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1378 (goto-char (point-max))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1379 (set-marker (process-mark proc) (point))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1380 (set-process-filter proc 'term-emulate-terminal)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1381 ;; Feed it the startfile.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1382 (cond (startfile
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1383 ;;This is guaranteed to wait long enough
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1384 ;;but has bad results if the term does not prompt at all
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1385 ;; (while (= size (buffer-size))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1386 ;; (sleep-for 1))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1387 ;;I hope 1 second is enough!
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1388 (sleep-for 1)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1389 (goto-char (point-max))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1390 (insert-file-contents startfile)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1391 (setq startfile (buffer-substring (point) (point-max)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1392 (delete-region (point) (point-max))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1393 (term-send-string proc startfile)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1394 (run-hooks 'term-exec-hook)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1395 buffer)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1396
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1397 ;;; Name to use for TERM.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1398 ;;; Using "emacs" loses, because bash disables editing if TERM == emacs.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1399 (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
1400 ; Format string, usage:
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
1401 ; (format term-termcap-string emacs-term-name "TERMCAP=" 24 80)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1402 (defvar term-termcap-format
10044
c840b3eb9015 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 9603
diff changeset
1403 "%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
1404 :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
1405 :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
1406 :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
1407 :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
1408 :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
1409 :UP=\\E[%%dA:DO=\\E[%%dB:LE=\\E[%%dD:RI=\\E[%%dC"
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1410 ;;; : -undefine ic
13961
ff6ac63de609 (term-process-pager): Fix message spelling.
Karl Heuer <kwzh@gnu.org>
parents: 13337
diff changeset
1411 "termcap capabilities supported")
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1412
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1413 ;;; This auxiliary function cranks up the process for term-exec in
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1414 ;;; the appropriate environment.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1415
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1416 (defun term-exec-1 (name buffer command switches)
10044
c840b3eb9015 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 9603
diff changeset
1417 ;; 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
1418 ;; (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
1419 ;; The 'if ...; then shift; fi' hack is because Bourne shell
c840b3eb9015 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 9603
diff changeset
1420 ;; 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
1421 ;; 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
1422 (let ((process-environment
c840b3eb9015 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 9603
diff changeset
1423 (nconc
c840b3eb9015 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 9603
diff changeset
1424 (list
c840b3eb9015 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 9603
diff changeset
1425 (format "TERM=%s" term-term-name)
c840b3eb9015 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 9603
diff changeset
1426 (if (and (boundp 'system-uses-terminfo) system-uses-terminfo)
c840b3eb9015 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 9603
diff changeset
1427 (format "TERMINFO=%s" data-directory)
c840b3eb9015 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 9603
diff changeset
1428 (format term-termcap-format "TERMCAP="
c840b3eb9015 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 9603
diff changeset
1429 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
1430 (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
1431 (format "LINES=%d" term-height)
c840b3eb9015 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 9603
diff changeset
1432 (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
1433 process-environment))
ea6697d31d1c (term-exec-1): Run process on pty if possible.
Richard M. Stallman <rms@gnu.org>
parents: 15420
diff changeset
1434 (process-connection-type t))
10044
c840b3eb9015 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 9603
diff changeset
1435 (apply 'start-process name buffer
c840b3eb9015 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 9603
diff changeset
1436 "/bin/sh" "-c"
c840b3eb9015 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 9603
diff changeset
1437 (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
1438 if [ $1 = .. ]; then shift; fi; exec \"$@\""
c840b3eb9015 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 9603
diff changeset
1439 term-height term-width)
c840b3eb9015 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 9603
diff changeset
1440 ".."
c840b3eb9015 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 9603
diff changeset
1441 command switches)))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1442
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
1443 ;;; This should be in Emacs, but it isn't.
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1444 (defun term-mem (item list &optional elt=)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1445 "Test to see if ITEM is equal to an item in LIST.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1446 Option comparison function ELT= defaults to equal."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1447 (let ((elt= (or elt= (function equal)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1448 (done nil))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1449 (while (and list (not done))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1450 (if (funcall elt= item (car list))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1451 (setq done list)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1452 (setq list (cdr list))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1453 done))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1454
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1455
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1456 ;;; Input history processing in a buffer
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1457 ;;; ===========================================================================
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1458 ;;; Useful input history functions, courtesy of the Ergo group.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1459
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1460 ;;; Eleven commands:
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1461 ;;; term-dynamic-list-input-ring List history in help buffer.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1462 ;;; term-previous-input Previous input...
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1463 ;;; term-previous-matching-input ...matching a string.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1464 ;;; term-previous-matching-input-from-input ... matching the current input.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1465 ;;; term-next-input Next input...
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1466 ;;; term-next-matching-input ...matching a string.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1467 ;;; term-next-matching-input-from-input ... matching the current input.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1468 ;;; term-backward-matching-input Backwards input...
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1469 ;;; term-forward-matching-input ...matching a string.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1470 ;;; term-replace-by-expanded-history Expand history at point;
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1471 ;;; replace with expanded history.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1472 ;;; term-magic-space Expand history and insert space.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1473 ;;;
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1474 ;;; Three functions:
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1475 ;;; term-read-input-ring Read into term-input-ring...
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1476 ;;; term-write-input-ring Write to term-input-ring-file-name.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1477 ;;; term-replace-by-expanded-history-before-point Workhorse function.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1478
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1479 (defun term-read-input-ring (&optional silent)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1480 "Sets the buffer's `term-input-ring' from a history file.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1481 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
1482 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
1483 If `term-input-ring-file-name' is nil this function does nothing.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1484
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1485 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
1486 failure to read the history file.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1487
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1488 This function is useful for major mode commands and mode hooks.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1489
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1490 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
1491 with the most recent command last.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1492 See also `term-input-ignoredups' and `term-write-input-ring'."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1493 (cond ((or (null term-input-ring-file-name)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1494 (equal term-input-ring-file-name ""))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1495 nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1496 ((not (file-readable-p term-input-ring-file-name))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1497 (or silent
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1498 (message "Cannot read history file %s"
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1499 term-input-ring-file-name)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1500 (t
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1501 (let ((history-buf (get-buffer-create " *temp*"))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1502 (file term-input-ring-file-name)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1503 (count 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1504 (ring (make-ring term-input-ring-size)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1505 (unwind-protect
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1506 (save-excursion
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1507 (set-buffer history-buf)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1508 (widen)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1509 (erase-buffer)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1510 (insert-file-contents file)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1511 ;; Save restriction in case file is already visited...
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1512 ;; Watch for those date stamps in history files!
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1513 (goto-char (point-max))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1514 (while (and (< count term-input-ring-size)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1515 (re-search-backward "^[ \t]*\\([^#\n].*\\)[ \t]*$"
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1516 nil t))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1517 (let ((history (buffer-substring (match-beginning 1)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1518 (match-end 1))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1519 (if (or (null term-input-ignoredups)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1520 (ring-empty-p ring)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1521 (not (string-equal (ring-ref ring 0) history)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1522 (ring-insert-at-beginning ring history)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1523 (setq count (1+ count))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1524 (kill-buffer history-buf))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1525 (setq term-input-ring ring
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1526 term-input-ring-index nil)))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1527
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1528 (defun term-write-input-ring ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1529 "Writes the buffer's `term-input-ring' to a history file.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1530 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
1531 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
1532 If `term-input-ring-file-name' is nil this function does nothing.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1533
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1534 Useful within process sentinels.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1535
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1536 See also `term-read-input-ring'."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1537 (cond ((or (null term-input-ring-file-name)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1538 (equal term-input-ring-file-name "")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1539 (null term-input-ring) (ring-empty-p term-input-ring))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1540 nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1541 ((not (file-writable-p term-input-ring-file-name))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1542 (message "Cannot write history file %s" term-input-ring-file-name))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1543 (t
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1544 (let* ((history-buf (get-buffer-create " *Temp Input History*"))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1545 (ring term-input-ring)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1546 (file term-input-ring-file-name)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1547 (index (ring-length ring)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1548 ;; Write it all out into a buffer first. Much faster, but messier,
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1549 ;; than writing it one line at a time.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1550 (save-excursion
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1551 (set-buffer history-buf)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1552 (erase-buffer)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1553 (while (> index 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1554 (setq index (1- index))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1555 (insert (ring-ref ring index) ?\n))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1556 (write-region (buffer-string) nil file nil 'no-message)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1557 (kill-buffer nil))))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1558
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 (defun term-dynamic-list-input-ring ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1561 "List in help buffer the buffer's input history."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1562 (interactive)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1563 (if (or (not (ring-p term-input-ring))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1564 (ring-empty-p term-input-ring))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1565 (message "No history")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1566 (let ((history nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1567 (history-buffer " *Input History*")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1568 (index (1- (ring-length term-input-ring)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1569 (conf (current-window-configuration)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1570 ;; We have to build up a list ourselves from the ring vector.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1571 (while (>= index 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1572 (setq history (cons (ring-ref term-input-ring index) history)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1573 index (1- index)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1574 ;; Change "completion" to "history reference"
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1575 ;; to make the display accurate.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1576 (with-output-to-temp-buffer history-buffer
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1577 (display-completion-list history)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1578 (set-buffer history-buffer)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1579 (forward-line 3)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1580 (while (search-backward "completion" nil 'move)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1581 (replace-match "history reference")))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1582 (sit-for 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1583 (message "Hit space to flush")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1584 (let ((ch (read-event)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1585 (if (eq ch ?\ )
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1586 (set-window-configuration conf)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1587 (setq unread-command-events (list ch)))))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1588
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1589
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1590 (defun term-regexp-arg (prompt)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1591 ;; Return list of regexp and prefix arg using PROMPT.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1592 (let* ((minibuffer-history-sexp-flag nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1593 ;; Don't clobber this.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1594 (last-command last-command)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1595 (regexp (read-from-minibuffer prompt nil nil nil
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1596 'minibuffer-history-search-history)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1597 (list (if (string-equal regexp "")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1598 (setcar minibuffer-history-search-history
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1599 (nth 1 minibuffer-history-search-history))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1600 regexp)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1601 (prefix-numeric-value current-prefix-arg))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1602
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1603 (defun term-search-arg (arg)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1604 ;; 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
1605 (cond ((not (term-after-pmark-p))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1606 (error "Not at command line"))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1607 ((or (null term-input-ring)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1608 (ring-empty-p term-input-ring))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1609 (error "Empty input ring"))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1610 ((zerop arg)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1611 ;; arg of zero resets search from beginning, and uses arg of 1
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1612 (setq term-input-ring-index nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1613 1)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1614 (t
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1615 arg)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1616
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1617 (defun term-search-start (arg)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1618 ;; Index to start a directional search, starting at term-input-ring-index
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1619 (if term-input-ring-index
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1620 ;; If a search is running, offset by 1 in direction of arg
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1621 (mod (+ term-input-ring-index (if (> arg 0) 1 -1))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1622 (ring-length term-input-ring))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1623 ;; For a new search, start from beginning or end, as appropriate
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1624 (if (>= arg 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1625 0 ; First elt for forward search
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1626 (1- (ring-length term-input-ring))))) ; Last elt for backward search
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-previous-input-string (arg)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1629 "Return the string ARG places along the input ring.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1630 Moves relative to `term-input-ring-index'."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1631 (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
1632 (mod (+ arg term-input-ring-index)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1633 (ring-length term-input-ring))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1634 arg)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1635
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1636 (defun term-previous-input (arg)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1637 "Cycle backwards through input history."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1638 (interactive "*p")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1639 (term-previous-matching-input "." arg))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1640
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1641 (defun term-next-input (arg)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1642 "Cycle forwards through input history."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1643 (interactive "*p")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1644 (term-previous-input (- arg)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1645
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1646 (defun term-previous-matching-input-string (regexp arg)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1647 "Return the string matching REGEXP ARG places along the input ring.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1648 Moves relative to `term-input-ring-index'."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1649 (let* ((pos (term-previous-matching-input-string-position regexp arg)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1650 (if pos (ring-ref term-input-ring pos))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1651
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
1652 (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
1653 (regexp arg &optional start)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1654 "Return the index matching REGEXP ARG places along the input ring.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1655 Moves relative to START, or `term-input-ring-index'."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1656 (if (or (not (ring-p term-input-ring))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1657 (ring-empty-p term-input-ring))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1658 (error "No history"))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1659 (let* ((len (ring-length term-input-ring))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1660 (motion (if (> arg 0) 1 -1))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1661 (n (mod (- (or start (term-search-start arg)) motion) len))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1662 (tried-each-ring-item nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1663 (prev nil))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1664 ;; Do the whole search as many times as the argument says.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1665 (while (and (/= arg 0) (not tried-each-ring-item))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1666 ;; Step once.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1667 (setq prev n
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1668 n (mod (+ n motion) len))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1669 ;; If we haven't reached a match, step some more.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1670 (while (and (< n len) (not tried-each-ring-item)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1671 (not (string-match regexp (ring-ref term-input-ring n))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1672 (setq n (mod (+ n motion) len)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1673 ;; If we have gone all the way around in this search.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1674 tried-each-ring-item (= n prev)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1675 (setq arg (if (> arg 0) (1- arg) (1+ arg))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1676 ;; 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
1677 (if (string-match regexp (ring-ref term-input-ring n))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1678 n)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1679
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1680 (defun term-previous-matching-input (regexp arg)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1681 "Search backwards through input history for match for REGEXP.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1682 \(Previous history elements are earlier commands.)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1683 With prefix argument N, search for Nth previous match.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1684 If N is negative, find the next or Nth next match."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1685 (interactive (term-regexp-arg "Previous input matching (regexp): "))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1686 (setq arg (term-search-arg arg))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1687 (let ((pos (term-previous-matching-input-string-position regexp arg)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1688 ;; Has a match been found?
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1689 (if (null pos)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1690 (error "Not found")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1691 (setq term-input-ring-index pos)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1692 (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
1693 (delete-region
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1694 ;; Can't use kill-region as it sets this-command
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1695 (process-mark (get-buffer-process (current-buffer))) (point))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1696 (insert (ring-ref term-input-ring pos)))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1697
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1698 (defun term-next-matching-input (regexp arg)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1699 "Search forwards through input history for match for REGEXP.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1700 \(Later history elements are more recent commands.)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1701 With prefix argument N, search for Nth following match.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1702 If N is negative, find the previous or Nth previous match."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1703 (interactive (term-regexp-arg "Next input matching (regexp): "))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1704 (term-previous-matching-input regexp (- arg)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1705
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1706 (defun term-previous-matching-input-from-input (arg)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1707 "Search backwards through input history for match for current input.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1708 \(Previous history elements are earlier commands.)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1709 With prefix argument N, search for Nth previous match.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1710 If N is negative, search forwards for the -Nth following match."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1711 (interactive "p")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1712 (if (not (memq last-command '(term-previous-matching-input-from-input
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1713 term-next-matching-input-from-input)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1714 ;; Starting a new search
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1715 (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
1716 (buffer-substring
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
1717 (process-mark (get-buffer-process (current-buffer)))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1718 (point))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1719 term-input-ring-index nil))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1720 (term-previous-matching-input
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1721 (concat "^" (regexp-quote term-matching-input-from-input-string))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1722 arg))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1723
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1724 (defun term-next-matching-input-from-input (arg)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1725 "Search forwards through input history for match for current input.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1726 \(Following history elements are more recent commands.)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1727 With prefix argument N, search for Nth following match.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1728 If N is negative, search backwards for the -Nth previous match."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1729 (interactive "p")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1730 (term-previous-matching-input-from-input (- arg)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1731
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1732
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1733 (defun term-replace-by-expanded-history (&optional silent)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1734 "Expand input command history references before point.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1735 Expansion is dependent on the value of `term-input-autoexpand'.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1736
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1737 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
1738 match the command interpreter's idea, assuming it has one.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1739
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
1740 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
1741 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
1742 it cannot expand absolute input line number references.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1743
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1744 If the optional argument SILENT is non-nil, never complain
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1745 even if history reference seems erroneous.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1746
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1747 See `term-magic-space' and `term-replace-by-expanded-history-before-point'.
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 Returns t if successful."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1750 (interactive)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1751 (if (and term-input-autoexpand
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1752 (string-match "[!^]" (funcall term-get-old-input))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1753 (save-excursion (beginning-of-line)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1754 (looking-at term-prompt-regexp)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1755 ;; Looks like there might be history references in the command.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1756 (let ((previous-modified-tick (buffer-modified-tick)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1757 (message "Expanding history references...")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1758 (term-replace-by-expanded-history-before-point silent)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1759 (/= previous-modified-tick (buffer-modified-tick)))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1760
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 (defun term-replace-by-expanded-history-before-point (silent)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1763 "Expand directory stack reference before point.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1764 See `term-replace-by-expanded-history'. Returns t if successful."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1765 (save-excursion
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1766 (let ((toend (- (save-excursion (end-of-line nil) (point)) (point)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1767 (start (progn (term-bol nil) (point))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1768 (while (progn
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1769 (skip-chars-forward "^!^"
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1770 (save-excursion
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1771 (end-of-line nil) (- (point) toend)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1772 (< (point)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1773 (save-excursion
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1774 (end-of-line nil) (- (point) toend))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1775 ;; This seems a bit complex. We look for references such as !!, !-num,
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1776 ;; !foo, !?foo, !{bar}, !?{bar}, ^oh, ^my^, ^god^it, ^never^ends^.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1777 ;; If that wasn't enough, the plings can be suffixed with argument
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1778 ;; range specifiers.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1779 ;; Argument ranges are complex too, so we hive off the input line,
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1780 ;; referenced with plings, with the range string to `term-args'.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1781 (setq term-input-ring-index nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1782 (cond ((or (= (preceding-char) ?\\)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1783 (term-within-quotes start (point)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1784 ;; The history is quoted, or we're in quotes.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1785 (goto-char (1+ (point))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1786 ((looking-at "![0-9]+\\($\\|[^-]\\)")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1787 ;; We cannot know the interpreter's idea of input line numbers.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1788 (goto-char (match-end 0))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1789 (message "Absolute reference cannot be expanded"))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1790 ((looking-at "!-\\([0-9]+\\)\\(:?[0-9^$*-]+\\)?")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1791 ;; Just a number of args from `number' lines backward.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1792 (let ((number (1- (string-to-number
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1793 (buffer-substring (match-beginning 1)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1794 (match-end 1))))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1795 (if (<= number (ring-length term-input-ring))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1796 (progn
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1797 (replace-match
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1798 (term-args (term-previous-input-string number)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1799 (match-beginning 2) (match-end 2))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1800 t t)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1801 (setq term-input-ring-index number)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1802 (message "History item: %d" (1+ number)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1803 (goto-char (match-end 0))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1804 (message "Relative reference exceeds input history size"))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1805 ((or (looking-at "!!?:?\\([0-9^$*-]+\\)") (looking-at "!!"))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1806 ;; Just a number of args from the previous input line.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1807 (replace-match
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1808 (term-args (term-previous-input-string 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1809 (match-beginning 1) (match-end 1))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1810 t t)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1811 (message "History item: previous"))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1812 ((looking-at
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1813 "!\\??\\({\\(.+\\)}\\|\\(\\sw+\\)\\)\\(:?[0-9^$*-]+\\)?")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1814 ;; Most recent input starting with or containing (possibly
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1815 ;; protected) string, maybe just a number of args. Phew.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1816 (let* ((mb1 (match-beginning 1)) (me1 (match-end 1))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1817 (mb2 (match-beginning 2)) (me2 (match-end 2))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1818 (exp (buffer-substring (or mb2 mb1) (or me2 me1)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1819 (pref (if (save-match-data (looking-at "!\\?")) "" "^"))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1820 (pos (save-match-data
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1821 (term-previous-matching-input-string-position
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1822 (concat pref (regexp-quote exp)) 1))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1823 (if (null pos)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1824 (progn
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1825 (goto-char (match-end 0))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1826 (or silent
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1827 (progn (message "Not found")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1828 (ding))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1829 (setq term-input-ring-index pos)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1830 (replace-match
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1831 (term-args (ring-ref term-input-ring pos)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1832 (match-beginning 4) (match-end 4))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1833 t t)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1834 (message "History item: %d" (1+ pos)))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1835 ((looking-at "\\^\\([^^]+\\)\\^?\\([^^]*\\)\\^?")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1836 ;; Quick substitution on the previous input line.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1837 (let ((old (buffer-substring (match-beginning 1) (match-end 1)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1838 (new (buffer-substring (match-beginning 2) (match-end 2)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1839 (pos nil))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1840 (replace-match (term-previous-input-string 0) t t)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1841 (setq pos (point))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1842 (goto-char (match-beginning 0))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1843 (if (not (search-forward old pos t))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1844 (or silent
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1845 (error "Not found"))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1846 (replace-match new t t)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1847 (message "History item: substituted"))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1848 (t
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1849 (goto-char (match-end 0))))))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1850
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1851
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1852 (defun term-magic-space (arg)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1853 "Expand input history references before point and insert ARG spaces.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1854 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
1855 (interactive "p")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1856 (term-replace-by-expanded-history)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1857 (self-insert-command arg))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1858
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1859 (defun term-within-quotes (beg end)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1860 "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
1861 Quotes are single and double."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1862 (let ((countsq (term-how-many-region "\\(^\\|[^\\\\]\\)\'" beg end))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1863 (countdq (term-how-many-region "\\(^\\|[^\\\\]\\)\"" beg end)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1864 (or (= (mod countsq 2) 1) (= (mod countdq 2) 1))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1865
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1866 (defun term-how-many-region (regexp beg end)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1867 "Return number of matches for REGEXP from BEG to END."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1868 (let ((count 0))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1869 (save-excursion
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1870 (save-match-data
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1871 (goto-char beg)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1872 (while (re-search-forward regexp end t)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1873 (setq count (1+ count)))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1874 count))
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 (defun term-args (string begin end)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1877 ;; 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
1878 ;; 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
1879 ;; 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
1880 (save-match-data
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1881 (if (null begin)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1882 (term-arguments string 0 nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1883 (let* ((range (buffer-substring
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1884 (if (eq (char-after begin) ?:) (1+ begin) begin) end))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1885 (nth (cond ((string-match "^[*^]" range) 1)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1886 ((string-match "^-" range) 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1887 ((string-equal range "$") nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1888 (t (string-to-number range))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1889 (mth (cond ((string-match "[-*$]$" range) nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1890 ((string-match "-" range)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1891 (string-to-number (substring range (match-end 0))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1892 (t nth))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1893 (term-arguments string nth mth)))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1894
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1895 ;; Return a list of arguments from ARG. Break it up at the
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1896 ;; delimiters in term-delimiter-argument-list. Returned list is backwards.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1897 (defun term-delim-arg (arg)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1898 (if (null term-delimiter-argument-list)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1899 (list arg)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1900 (let ((args nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1901 (pos 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1902 (len (length arg)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1903 (while (< pos len)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1904 (let ((char (aref arg pos))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1905 (start pos))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1906 (if (memq char term-delimiter-argument-list)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1907 (while (and (< pos len) (eq (aref arg pos) char))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1908 (setq pos (1+ pos)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1909 (while (and (< pos len)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1910 (not (memq (aref arg pos)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1911 term-delimiter-argument-list)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1912 (setq pos (1+ pos))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1913 (setq args (cons (substring arg start pos) args))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1914 args)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1915
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1916 (defun term-arguments (string nth mth)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1917 "Return from STRING the NTH to MTH arguments.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1918 NTH and/or MTH can be nil, which means the last argument.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1919 Returned arguments are separated by single spaces.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1920 We assume whitespace separates arguments, except within quotes.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1921 Also, a run of one or more of a single character
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1922 in `term-delimiter-argument-list' is a separate argument.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1923 Argument 0 is the command name."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1924 (let ((argpart "[^ \n\t\"'`]+\\|\\(\"[^\"]*\"\\|'[^']*'\\|`[^`]*`\\)")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1925 (args ()) (pos 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1926 (count 0)
15246
ba353653c03a (term-send-raw-string): send-string -> process-send-string.
Karl Heuer <kwzh@gnu.org>
parents: 15212
diff changeset
1927 beg str quotes)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1928 ;; 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
1929 (while (and (or (null mth) (<= count mth))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1930 (string-match argpart string pos))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1931 (if (and beg (= pos (match-beginning 0)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1932 ;; It's contiguous, part of the same arg.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1933 (setq pos (match-end 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1934 quotes (or quotes (match-beginning 1)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1935 ;; It's a new separate arg.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1936 (if beg
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1937 ;; Put the previous arg, if there was one, onto ARGS.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1938 (setq str (substring string beg pos)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1939 args (if quotes (cons str args)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1940 (nconc (term-delim-arg str) args))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1941 count (1+ count)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1942 (setq quotes (match-beginning 1))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1943 (setq beg (match-beginning 0))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1944 (setq pos (match-end 0))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1945 (if beg
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1946 (setq str (substring string beg pos)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1947 args (if quotes (cons str args)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1948 (nconc (term-delim-arg str) args))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1949 count (1+ count)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1950 (let ((n (or nth (1- count)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1951 (m (if mth (1- (- count mth)) 0)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1952 (mapconcat
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1953 (function (lambda (a) a)) (nthcdr n (nreverse (nthcdr m args))) " "))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1954
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1955 ;;;
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1956 ;;; Input processing stuff [line mode]
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1957 ;;;
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1958
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
1959 (defun term-send-input ()
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1960 "Send input to process.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1961 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
1962 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
1963 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
1964 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
1965 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
1966 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
1967 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
1968 term-input-filter returns non-nil when called on the input.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1969
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1970 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
1971 `term-input-autoexpand'. The list of function names contained in the value
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1972 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
1973 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
1974 `term-input-filter' returns non-nil when called on the input.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1975
10933
3057c4fd86d3 * term.el (term-eol-on-send): New variable. Use it.
Per Bothner <bothner@cygnus.com>
parents: 10679
diff changeset
1976 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
1977 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
1978
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1979 The values of `term-get-old-input', `term-input-filter-functions', and
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1980 `term-input-filter' are chosen according to the command interpreter running
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1981 in the buffer. E.g.,
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 If the interpreter is the csh,
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1984 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
1985 initial string matching regexp term-prompt-regexp.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1986 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
1987 \"popd\" commands. When it sees one, it cd's the buffer.
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1988 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
1989 space.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1990
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
1991 If the term is Lucid Common Lisp,
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1992 term-get-old-input snarfs the sexp ending at point.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1993 term-input-filter-functions does nothing.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1994 term-input-filter returns NIL if the input matches input-filter-regexp,
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1995 which matches (1) all whitespace (2) :a, :c, etc.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1996
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1997 Similarly for Soar, Scheme, etc."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1998 (interactive)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1999 ;; Note that the input string does not include its terminal newline.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2000 (let ((proc (get-buffer-process (current-buffer))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2001 (if (not proc) (error "Current buffer has no process")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2002 (let* ((pmark (process-mark proc))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2003 (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
2004 (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
2005 (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
2006 (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
2007 (buffer-substring pmark (point)))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2008 (funcall term-get-old-input)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2009 (input (if (not (eq term-input-autoexpand 'input))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2010 ;; Just whatever's already there
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2011 intxt
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2012 ;; Expand and leave it visible in buffer
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2013 (term-replace-by-expanded-history t)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2014 (buffer-substring pmark (point))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2015 (history (if (not (eq term-input-autoexpand 'history))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2016 input
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2017 ;; This is messy 'cos ultimately the original
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2018 ;; functions used do insertion, rather than return
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2019 ;; strings. We have to expand, then insert back.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2020 (term-replace-by-expanded-history t)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2021 (let ((copy (buffer-substring pmark (point))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2022 (delete-region pmark (point))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2023 (insert input)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2024 copy))))
10671
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
2025 (if (term-pager-enabled)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2026 (save-excursion
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2027 (goto-char (process-mark proc))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2028 (setq term-pager-count (term-current-row))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2029 (if (and (funcall term-input-filter history)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2030 (or (null term-input-ignoredups)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2031 (not (ring-p term-input-ring))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2032 (ring-empty-p term-input-ring)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2033 (not (string-equal (ring-ref term-input-ring 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2034 history))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2035 (ring-insert term-input-ring history))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2036 (let ((functions term-input-filter-functions))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2037 (while functions
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2038 (funcall (car functions) (concat input "\n"))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2039 (setq functions (cdr functions))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2040 (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
2041
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2042 ;; Update the markers before we send the input
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2043 ;; in case we get output amidst sending the input.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2044 (set-marker term-last-input-start pmark)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2045 (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
2046 (if input-is-new
3057c4fd86d3 * term.el (term-eol-on-send): New variable. Use it.
Per Bothner <bothner@cygnus.com>
parents: 10679
diff changeset
2047 (progn
3057c4fd86d3 * term.el (term-eol-on-send): New variable. Use it.
Per Bothner <bothner@cygnus.com>
parents: 10679
diff changeset
2048 ;; 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
2049 (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
2050 (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
2051 (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
2052 (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
2053 (goto-char pmark)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2054 (funcall term-input-sender proc input)))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2055
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2056 (defun term-get-old-input-default ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2057 "Default for term-get-old-input.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2058 Take the current line, and discard any initial text matching
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2059 term-prompt-regexp."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2060 (save-excursion
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2061 (beginning-of-line)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2062 (term-skip-prompt)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2063 (let ((beg (point)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2064 (end-of-line)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2065 (buffer-substring beg (point)))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2066
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2067 (defun term-copy-old-input ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2068 "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
2069 Calls `term-get-old-input' to get old input."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2070 (interactive)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2071 (let ((input (funcall term-get-old-input))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2072 (process (get-buffer-process (current-buffer))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2073 (if (not process)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2074 (error "Current buffer has no process")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2075 (goto-char (process-mark process))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2076 (insert input))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2077
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2078 (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
2079 "Skip past the text matching regexp term-prompt-regexp.
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2080 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
2081 (let ((eol (save-excursion (end-of-line) (point))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2082 (if (and (looking-at term-prompt-regexp)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2083 (<= (match-end 0) eol))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2084 (goto-char (match-end 0)))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2085
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2086
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2087 (defun term-after-pmark-p ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2088 "Is point after the process output marker?"
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2089 ;; 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
2090 ;; 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
2091 ;; 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
2092 ;; services input during execution of lisp commands.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2093 (let ((proc-pos (marker-position
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2094 (process-mark (get-buffer-process (current-buffer))))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2095 (<= proc-pos (point))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2096
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2097 (defun term-simple-send (proc string)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2098 "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
2099 This just sends STRING plus a newline. To override this,
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2100 set the hook TERM-INPUT-SENDER."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2101 (term-send-string proc string)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2102 (term-send-string proc "\n"))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2103
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2104 (defun term-bol (arg)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2105 "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
2106 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
2107 -- go straight to column 0.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2108
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2109 The prompt skip is done by skipping text matching the regular expression
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2110 term-prompt-regexp, a buffer local variable."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2111 (interactive "P")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2112 (beginning-of-line)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2113 (if (null arg) (term-skip-prompt)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2114
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2115 ;;; 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
2116 ;;; saved -- typically passwords to ftp, telnet, or somesuch.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2117 ;;; Just enter m-x term-send-invisible and type in your line.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2118
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2119 (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
2120 "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
2121 Prompt with argument PROMPT, a string. Optional argument STARS causes
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2122 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
2123 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
2124 `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
2125 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
2126
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2127 Note that the keystrokes comprising the text can still be recovered
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2128 \(temporarily) with \\[view-lossage]. This may be a security bug for some
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2129 applications."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2130 (let ((ans "")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2131 (c 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2132 (echo-keystrokes 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2133 (cursor-in-echo-area t)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2134 (done nil))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2135 (while (not done)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2136 (if stars
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2137 (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
2138 (message "%s" prompt))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2139 (setq c (read-char))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2140 (cond ((= c ?\C-g)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2141 ;; 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
2142 ;; inhibit-quit is set. In later versions of Emacs read-char
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2143 ;; may clear quit-flag itself and return C-g. That would make
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2144 ;; it impossible to quit this loop in a simple way, so
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2145 ;; re-enable it here (for backward-compatibility the check for
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2146 ;; quit-flag below would still be necessary, so this seems
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2147 ;; like the simplest way to do things).
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2148 (setq quit-flag t
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2149 done t))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2150 ((or (= c ?\r) (= c ?\n) (= c ?\e))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2151 (setq done t))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2152 ((= c ?\C-u)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2153 (setq ans ""))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2154 ((and (/= c ?\b) (/= c ?\177))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2155 (setq ans (concat ans (char-to-string c))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2156 ((> (length ans) 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2157 (setq ans (substring ans 0 -1)))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2158 (if quit-flag
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2159 ;; Emulate a true quit, except that we have to return a value.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2160 (prog1
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2161 (setq quit-flag nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2162 (message "Quit")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2163 (beep t))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2164 (message "")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2165 ans)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2166
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2167 (defun term-send-invisible (str &optional proc)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2168 "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
2169 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
2170 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
2171 Security bug: your string can still be temporarily recovered with
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2172 \\[view-lossage]."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2173 (interactive "P") ; Defeat snooping via C-x esc
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2174 (if (not (stringp str))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2175 (setq str (term-read-noecho "Non-echoed text: " t)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2176 (if (not proc)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2177 (setq proc (get-buffer-process (current-buffer))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2178 (if (not proc) (error "Current buffer has no process")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2179 (setq term-kill-echo-list (nconc term-kill-echo-list
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2180 (cons str nil)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2181 (term-send-string proc str)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2182 (term-send-string proc "\n")))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2183
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2184
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2185 ;;; Low-level process communication
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2186
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2187 (defvar term-input-chunk-size 512
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2188 "*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
2189 If your process is choking on big inputs, try lowering the value.")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2190
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2191 (defun term-send-string (proc str)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2192 "Send PROCESS the contents of STRING as input.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2193 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
2194 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
2195 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
2196 from hanging when you send them long inputs on some OS's."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2197 (let* ((len (length str))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2198 (i (min len term-input-chunk-size)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2199 (process-send-string proc (substring str 0 i))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2200 (while (< i len)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2201 (let ((next-i (+ i term-input-chunk-size)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2202 (accept-process-output)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2203 (process-send-string proc (substring str i (min len next-i)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2204 (setq i next-i)))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2205
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2206 (defun term-send-region (proc start end)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2207 "Sends to PROC the region delimited by START and END.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2208 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
2209 your process from hanging on long inputs. See term-send-string."
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2210 (term-send-string proc (buffer-substring start end)))
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
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2213 ;;; Random input hackage
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2214
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2215 (defun term-kill-output ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2216 "Kill all output from interpreter since last input."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2217 (interactive)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2218 (let ((pmark (process-mark (get-buffer-process (current-buffer)))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2219 (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
2220 (goto-char pmark)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2221 (insert "*** output flushed ***\n")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2222 (set-marker pmark (point))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2223
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2224 (defun term-show-output ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2225 "Display start of this batch of interpreter output at top of window.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2226 Sets mark to the value of point when this command is run."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2227 (interactive)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2228 (goto-char term-last-input-end)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2229 (backward-char)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2230 (beginning-of-line)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2231 (set-window-start (selected-window) (point))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2232 (end-of-line))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2233
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2234 (defun term-interrupt-subjob ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2235 "Interrupt the current subjob."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2236 (interactive)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2237 (interrupt-process nil term-ptyp))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2238
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2239 (defun term-kill-subjob ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2240 "Send kill signal to the current subjob."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2241 (interactive)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2242 (kill-process nil term-ptyp))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2243
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2244 (defun term-quit-subjob ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2245 "Send quit signal to the current subjob."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2246 (interactive)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2247 (quit-process nil term-ptyp))
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-stop-subjob ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2250 "Stop the current subjob.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2251 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
2252 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
2253 this, use \\[term-continue-subjob] to resume the process. (This
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2254 is not a problem with most shells, since they ignore this signal.)"
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2255 (interactive)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2256 (stop-process nil term-ptyp))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2257
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2258 (defun term-continue-subjob ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2259 "Send CONT signal to process buffer's process group.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2260 Useful if you accidentally suspend the top-level process."
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 (continue-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-input ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2265 "Kill all text from last stuff output by interpreter to point."
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 (let* ((pmark (process-mark (get-buffer-process (current-buffer))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2268 (p-pos (marker-position pmark)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2269 (if (> (point) p-pos)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2270 (kill-region pmark (point)))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2271
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2272 (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
2273 "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
2274 buffer."
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2275 (interactive "p")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2276 (if (eobp)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2277 (process-send-eof)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2278 (delete-char arg)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2279
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2280 (defun term-send-eof ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2281 "Send an EOF to the current buffer's process."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2282 (interactive)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2283 (process-send-eof))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2284
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2285 (defun term-backward-matching-input (regexp arg)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2286 "Search backward through buffer for match for REGEXP.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2287 Matches are searched for on lines that match `term-prompt-regexp'.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2288 With prefix argument N, search for Nth previous match.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2289 If N is negative, find the next or Nth next match."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2290 (interactive (term-regexp-arg "Backward input matching (regexp): "))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2291 (let* ((re (concat term-prompt-regexp ".*" regexp))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2292 (pos (save-excursion (end-of-line (if (> arg 0) 0 1))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2293 (if (re-search-backward re nil t arg)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2294 (point)))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2295 (if (null pos)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2296 (progn (message "Not found")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2297 (ding))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2298 (goto-char pos)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2299 (term-bol nil))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2300
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2301 (defun term-forward-matching-input (regexp arg)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2302 "Search forward through buffer for match for REGEXP.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2303 Matches are searched for on lines that match `term-prompt-regexp'.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2304 With prefix argument N, search for Nth following match.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2305 If N is negative, find the previous or Nth previous match."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2306 (interactive (term-regexp-arg "Forward input matching (regexp): "))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2307 (term-backward-matching-input regexp (- arg)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2308
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-next-prompt (n)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2311 "Move to end of Nth next prompt in the buffer.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2312 See `term-prompt-regexp'."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2313 (interactive "p")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2314 (let ((paragraph-start term-prompt-regexp))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2315 (end-of-line (if (> n 0) 1 0))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2316 (forward-paragraph n)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2317 (term-skip-prompt)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2318
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2319 (defun term-previous-prompt (n)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2320 "Move to end of Nth previous prompt in the buffer.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2321 See `term-prompt-regexp'."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2322 (interactive "p")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2323 (term-next-prompt (- n)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2324
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2325 ;;; Support for source-file processing commands.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2326 ;;;============================================================================
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2327 ;;; Many command-interpreters (e.g., Lisp, Scheme, Soar) have
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2328 ;;; 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
2329 ;;; 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
2330 ;;; 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
2331 ;;; for defining these commands.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2332 ;;;
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2333 ;;; 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
2334 ;;; and Soar, in that they don't know anything about file extensions.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2335 ;;; So the compile/load interface gets the wrong default occasionally.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2336 ;;; The load-file/compile-file default mechanism could be smarter -- it
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2337 ;;; 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
2338 ;;; 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
2339 ;;; 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
2340 ;;; 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
2341 ;;; because the extension for executable files varies so much (.o, .bin,
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2342 ;;; .lbin, .mo, .vo, .ao, ...).
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
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2345 ;;; TERM-SOURCE-DEFAULT -- determines defaults for source-file processing
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2346 ;;; commands.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2347 ;;;
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2348 ;;; 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
2349 ;;; 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
2350 ;;; interpreter.
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 ;;; TERM-GET-SOURCE -- used by the source-file processing commands to prompt
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2353 ;;; for the file to process.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2354
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2355 ;;; (TERM-SOURCE-DEFAULT previous-dir/file source-modes)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2356 ;;;============================================================================
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2357 ;;; 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
2358 ;;; 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
2359 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2360 ;;; - 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
2361 ;;; 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
2362 ;;; - SOURCE-MODES is a list used to determine what buffers contain source
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2363 ;;; 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
2364 ;;; 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
2365 ;;;
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2366 ;;; 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
2367 ;;; 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
2368 ;;; 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
2369 ;;; 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
2370 ;;;
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2371 ;;; 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
2372 ;;; SOURCE-MODES, then the the filename is the default file, and the
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2373 ;;; 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
2374 ;;;
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2375 ;;; 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
2376 ;;; 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
2377 ;;; 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
2378 ;;; 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
2379 ;;; 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
2380 ;;;
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2381 ;;; SOURCE-REGEXP is typically going to be something like (tea-mode)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2382 ;;; for T programs, (lisp-mode) for Lisp programs, (soar-mode lisp-mode)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2383 ;;; 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
2384 ;;;
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2385 ;;; The function returns a pair: (default-directory . default-file).
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2386
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2387 (defun term-source-default (previous-dir/file source-modes)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2388 (cond ((and buffer-file-name (memq major-mode source-modes))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2389 (cons (file-name-directory buffer-file-name)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2390 (file-name-nondirectory buffer-file-name)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2391 (previous-dir/file)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2392 (t
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2393 (cons default-directory nil))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2394
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 ;;; (TERM-CHECK-SOURCE fname)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2397 ;;;============================================================================
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2398 ;;; 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
2399 ;;; 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
2400 ;;; 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
2401 ;;; 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
2402 ;;; the load or compile.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2403
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2404 (defun term-check-source (fname)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2405 (let ((buff (get-file-buffer fname)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2406 (if (and buff
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2407 (buffer-modified-p buff)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2408 (y-or-n-p (format "Save buffer %s first? "
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2409 (buffer-name buff))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2410 ;; save BUFF.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2411 (let ((old-buffer (current-buffer)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2412 (set-buffer buff)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2413 (save-buffer)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2414 (set-buffer old-buffer)))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2415
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2416
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2417 ;;; (TERM-GET-SOURCE prompt prev-dir/file source-modes mustmatch-p)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2418 ;;;============================================================================
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2419 ;;; TERM-GET-SOURCE is used to prompt for filenames in command-interpreter
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2420 ;;; commands that process source files (like loading or compiling a file).
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2421 ;;; It prompts for the filename, provides a default, if there is one,
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2422 ;;; 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
2423 ;;;
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2424 ;;; 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
2425 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2426 ;;; 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
2427 ;;; 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
2428 ;;; 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
2429 ;;; 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
2430 ;;; 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
2431 ;;;
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2432 ;;; A typical use:
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2433 ;;; (interactive (term-get-source "Compile file: " prev-lisp-dir/file
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2434 ;;; '(lisp-mode) t))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2435
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2436 ;;; 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
2437 ;;; 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
2438 (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
2439 "Returns string around POINT that starts the current line or nil."
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2440 (save-excursion
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2441 (let* ((point (point))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2442 (bol (progn (beginning-of-line) (point)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2443 (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
2444 (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
2445 (and (search-backward "\"" bol t)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2446 (1+ (point)))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2447 (end (progn (goto-char point)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2448 (and (search-forward "\"" eol t)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2449 (1- (point))))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2450 (and start end
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2451 (buffer-substring start end)))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2452
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2453 (defun term-get-source (prompt prev-dir/file source-modes mustmatch-p)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2454 (let* ((def (term-source-default prev-dir/file source-modes))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2455 (stringfile (term-extract-string))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2456 (sfile-p (and stringfile
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2457 (condition-case ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2458 (file-exists-p stringfile)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2459 (error nil))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2460 (not (file-directory-p stringfile))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2461 (defdir (if sfile-p (file-name-directory stringfile)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2462 (car def)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2463 (deffile (if sfile-p (file-name-nondirectory stringfile)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2464 (cdr def)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2465 (ans (read-file-name (if deffile (format "%s(default %s) "
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2466 prompt deffile)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2467 prompt)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2468 defdir
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2469 (concat defdir deffile)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2470 mustmatch-p)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2471 (list (expand-file-name (substitute-in-file-name ans)))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2472
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2473 ;;; I am somewhat divided on this string-default feature. It seems
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2474 ;;; to violate the principle-of-least-astonishment, in that it makes
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2475 ;;; 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
2476 ;;; 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
2477 ;;; 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
2478 ;;; on this.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2479 ;;; -Olin
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2480
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2481
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2482 ;;; Simple process query facility.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2483 ;;; ===========================================================================
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2484 ;;; 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
2485 ;;; 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
2486 ;;; arglist for a Common Lisp function might send a "(arglist 'foo)" query
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2487 ;;; 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
2488 ;;;
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2489 ;;; This simple facility just sends strings to the inferior process and pops
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2490 ;;; 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
2491 ;;; 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
2492 ;;; 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
2493 ;;; 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
2494
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2495 ;;; 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
2496 ;;; 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
2497 (defun term-proc-query (proc str)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2498 (let* ((proc-buf (process-buffer proc))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2499 (proc-mark (process-mark proc)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2500 (display-buffer proc-buf)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2501 (set-buffer proc-buf) ; but it's not the selected *window*
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2502 (let ((proc-win (get-buffer-window proc-buf))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2503 (proc-pt (marker-position proc-mark)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2504 (term-send-string proc str) ; send the query
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2505 (accept-process-output proc) ; wait for some output
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2506 ;; 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
2507 ;; 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
2508 ;; I don't know why. Wizards invited to improve it.
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2509 (if (not (pos-visible-in-window-p proc-pt proc-win))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2510 (let ((opoint (window-point proc-win)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2511 (set-window-point proc-win proc-mark) (sit-for 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2512 (if (not (pos-visible-in-window-p opoint proc-win))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2513 (push-mark opoint)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2514 (set-window-point proc-win opoint)))))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2515
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2516 ;;; Returns the current column in the current screen line.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2517 ;;; Note: (current-column) yields column in buffer line.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2518
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2519 (defun term-horizontal-column ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2520 (- (term-current-column) (term-start-line-column)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2521
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2522 ;; Calls either vertical-motion or buffer-vertical-motion
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2523 (defmacro term-vertical-motion (count)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2524 (list 'funcall 'term-vertical-motion count))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2525
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2526 ;; An emulation of vertical-motion that is independent of having a window.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2527 ;; Instead, it uses the term-width variable as the logical window width.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2528
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2529 (defun buffer-vertical-motion (count)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2530 (cond ((= count 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2531 (move-to-column (* term-width (/ (current-column) term-width)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2532 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2533 ((> count 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2534 (let ((H)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2535 (todo (+ count (/ (current-column) term-width))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2536 (end-of-line)
13961
ff6ac63de609 (term-process-pager): Fix message spelling.
Karl Heuer <kwzh@gnu.org>
parents: 13337
diff changeset
2537 ;; The loop iterates over buffer lines;
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2538 ;; 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
2539 ;; the ceiling of dividing the buffer line width by term-width.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2540 (while (and (<= (setq H (max (/ (+ (current-column) term-width -1)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2541 term-width)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2542 1))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2543 todo)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2544 (not (eobp)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2545 (setq todo (- todo H))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2546 (forward-char) ;; Move past the ?\n
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2547 (end-of-line)) ;; and on to the end of the next line.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2548 (if (and (>= todo H) (> todo 0))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2549 (+ (- count todo) H -1) ;; Hit end of buffer.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2550 (move-to-column (* todo term-width))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2551 count)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2552 (t ;; (< count 0) ;; Similar algorithm, but for upward motion.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2553 (let ((H)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2554 (todo (- count)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2555 (while (and (<= (setq H (max (/ (+ (current-column) term-width -1)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2556 term-width)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2557 1))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2558 todo)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2559 (progn (beginning-of-line)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2560 (not (bobp))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2561 (setq todo (- todo H))
13961
ff6ac63de609 (term-process-pager): Fix message spelling.
Karl Heuer <kwzh@gnu.org>
parents: 13337
diff changeset
2562 (backward-char)) ;; Move to end of previous line.
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2563 (if (and (>= todo H) (> todo 0))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2564 (+ count todo (- 1 H)) ;; Hit beginning of buffer.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2565 (move-to-column (* (- H todo 1) term-width))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2566 count)))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2567
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2568 ;;; The term-start-line-column variable is used as a cache.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2569 (defun term-start-line-column ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2570 (cond (term-start-line-column)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2571 ((let ((save-pos (point)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2572 (term-vertical-motion 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2573 (setq term-start-line-column (current-column))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2574 (goto-char save-pos)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2575 term-start-line-column))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2576
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2577 ;;; Same as (current-column), but uses term-current-column as a cache.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2578 (defun term-current-column ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2579 (cond (term-current-column)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2580 ((setq term-current-column (current-column)))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2581
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2582 ;;; Move DELTA column right (or left if delta < 0).
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2583
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2584 (defun term-move-columns (delta)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2585 (setq term-current-column (+ (term-current-column) delta))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2586 (move-to-column term-current-column t))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2587
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2588 ;; Insert COUNT copies of CHAR in the default face.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2589 (defun term-insert-char (char count)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2590 (let ((old-point (point)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2591 (insert-char char count)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2592 (put-text-property old-point (point) 'face 'default)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2593
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2594 (defun term-current-row ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2595 (cond (term-current-row)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2596 ((setq term-current-row
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2597 (save-restriction
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2598 (save-excursion
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2599 (narrow-to-region term-home-marker (point-max))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2600 (- (term-vertical-motion -9999))))))))
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 (defun term-adjust-current-row-cache (delta)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2603 (if term-current-row
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2604 (setq term-current-row (+ term-current-row delta))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2605
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2606 (defun term-terminal-pos ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2607 (save-excursion ; save-restriction
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2608 (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
2609 x y)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2610 (term-vertical-motion 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2611 (setq x (- save-col (current-column)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2612 (setq y (term-vertical-motion term-height))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2613 (cons x y))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2614
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2615 ;;;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
2616 ;;;difference ;-) -mm
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2617
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2618 (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
2619 ;; 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
2620 (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
2621 ;; 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
2622 (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
2623 (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
2624 (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
2625 (argument
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2626 (save-match-data
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2627 (substring message
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2628 (+ start 8)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2629 (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
2630 (+ start 8)))))
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2631 ignore)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2632 ;; 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
2633 (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
2634
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2635 ;; 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
2636 (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
2637 (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
2638 ((= command-code ?h)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2639 (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
2640 ((= command-code ?u)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2641 (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
2642 ;; 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
2643 (t
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2644 (setq ignore t)))
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2645
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2646 ;; 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
2647 (if ignore
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2648 nil
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2649 (setq default-directory
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2650 (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
2651 (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
2652 (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
2653 (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
2654 (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
2655 (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
2656 (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
2657 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
2658
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2659 ;; 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
2660 ;; 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
2661 (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
2662 (progn
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2663 (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
2664 (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
2665 (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
2666 (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
2667 (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
2668 (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
2669 (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
2670 (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
2671 (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
2672 message)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2673
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2674
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2675 ;;; Terminal emulation
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2676 ;;; This is the standard process filter for term buffers.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2677 ;;; It emulates (most of the features of) a VT100/ANSI-style terminal.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2678
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2679 (defun term-emulate-terminal (proc str)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2680 (let* ((previous-buffer (current-buffer))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2681 (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
2682 (selected (selected-window))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2683 (str-length (length str)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2684 (unwind-protect
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2685 (progn
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2686 (set-buffer (process-buffer proc))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2687
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2688 ;;; 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
2689
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2690 (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
2691 (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
2692
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2693 (if (marker-buffer term-pending-delete-marker)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2694 (progn
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2695 ;; Delete text following term-pending-delete-marker.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2696 (delete-region term-pending-delete-marker (process-mark proc))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2697 (set-marker term-pending-delete-marker nil)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2698
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2699 (if (eq (window-buffer) (current-buffer))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2700 (progn
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2701 (setq term-vertical-motion (symbol-function 'vertical-motion))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2702 (term-check-size proc))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2703 (setq term-vertical-motion
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2704 (symbol-function 'buffer-vertical-motion)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2705
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2706 (setq save-marker (copy-marker (process-mark proc)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2707
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2708 (if (/= (point) (process-mark proc))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2709 (progn (setq save-point (point-marker))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2710 (goto-char (process-mark proc))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2711
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2712 (save-restriction
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2713 ;; If the buffer is in line mode, and there is a partial
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2714 ;; input line, save the line (by narrowing to leave it
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2715 ;; outside the restriction ) until we're done with output.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2716 (if (and (> (point-max) (process-mark proc))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2717 (term-in-line-mode))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2718 (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
2719
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2720 (if term-log-buffer
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2721 (princ str term-log-buffer))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2722 (cond ((eq term-terminal-state 4) ;; Have saved pending output.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2723 (setq str (concat term-terminal-parameter str))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2724 (setq term-terminal-parameter nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2725 (setq str-length (length str))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2726 (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
2727
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2728 (while (< i str-length)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2729 (setq char (aref str i))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2730 (cond ((< term-terminal-state 2)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2731 ;; Look for prefix of regular chars
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2732 (setq funny
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2733 (string-match "[\r\n\000\007\033\t\b\032\016\017]"
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2734 str i))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2735 (if (not funny) (setq funny str-length))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2736 (cond ((> funny i)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2737 (cond ((eq term-terminal-state 1)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2738 (term-move-columns 1)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2739 (setq term-terminal-state 0)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2740 (setq count (- funny i))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2741 (setq temp (- (+ (term-horizontal-column) count)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2742 term-width))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2743 (cond ((<= temp 0)) ;; All count chars fit in line.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2744 ((> count temp) ;; Some chars fit.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2745 ;; This iteration, handle only what fits.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2746 (setq count (- count temp))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2747 (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
2748 ((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
2749 term-scroll-with-delete))
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
2750 (> (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
2751 (term-adjust-current-row-cache 1)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2752 (setq count (min count term-width))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2753 (setq funny (+ count i))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2754 (setq term-start-line-column
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2755 term-current-column))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2756 (t ;; Doing PAGER processing.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2757 (setq count 0 funny i)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2758 (setq term-current-column nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2759 (setq term-start-line-column nil)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2760 (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
2761 ;; 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
2762 ;; 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
2763 (cond ((/= (point) (point-max))
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
2764 (if term-insert-mode
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
2765 ;; 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
2766 ;; 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
2767 ;; 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
2768 ;; 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
2769 (term-insert-spaces count))
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
2770 (term-move-columns count)
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
2771 (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
2772 (t (setq term-current-column (+ (term-current-column) count))))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2773 (insert (substring str i funny))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2774 (put-text-property old-point (point)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2775 'face term-current-face)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2776 ;; If the last char was written in last column,
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2777 ;; back up one column, but remember we did so.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2778 ;; Thus we emulate xterm/vt100-style line-wrapping.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2779 (cond ((eq temp 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2780 (term-move-columns -1)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2781 (setq term-terminal-state 1)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2782 (setq i (1- funny)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2783 ((and (setq term-terminal-state 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2784 (eq char ?\^I)) ; TAB
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2785 ;; FIXME: Does not handle line wrap!
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2786 (setq count (term-current-column))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2787 (setq count (+ count 8 (- (mod count 8))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2788 (if (< (move-to-column count nil) count)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2789 (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
2790 (setq term-current-column count))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2791 ((eq char ?\r)
12229
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
2792 ;; 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
2793 (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
2794 (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
2795 (= (point) (point-max))
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
2796 (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
2797 term-kill-echo-list
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
2798 term-scroll-with-delete)))
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
2799 (insert ?\n)
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
2800 (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
2801 (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
2802 (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
2803 (setq i temp))
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
2804 (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
2805 (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
2806 (setq term-current-column term-start-line-column))))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2807 ((eq char ?\n)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2808 (if (not (and term-kill-echo-list
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2809 (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
2810 (term-down 1 t)))
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
2811 ((eq char ?\b)
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
2812 (term-move-columns -1))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2813 ((eq char ?\033) ; Escape
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2814 (setq term-terminal-state 2))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2815 ((eq char 0)) ; NUL: Do nothing
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2816 ((eq char ?\016)) ; Shift Out - ignored
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2817 ((eq char ?\017)) ; Shift In - ignored
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2818 ((eq char ?\^G)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2819 (beep t)) ; Bell
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2820 ((eq char ?\032)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2821 (let ((end (string-match "\n" str i)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2822 (if end
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2823 (progn (funcall term-command-hook
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2824 (substring str (1+ i) (1- end)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2825 (setq i end))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2826 (setq term-terminal-parameter
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2827 (substring str i))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2828 (setq term-terminal-state 4)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2829 (setq i str-length))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2830 (t ; insert char FIXME: Should never happen
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2831 (term-move-columns 1)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2832 (backward-delete-char 1)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2833 (insert char))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2834 ((eq term-terminal-state 2) ; Seen Esc
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2835 (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
2836
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2837 ;;; 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
2838 ;;; 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
2839 ;;; 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
2840
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2841 (make-local-variable 'term-terminal-parameter)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2842 (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
2843 (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
2844 (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
2845 (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
2846 (make-local-variable 'term-terminal-more-parameters)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2847 (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
2848 (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
2849 (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
2850 (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
2851 (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
2852 (setq term-terminal-more-parameters 0)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2853 (setq term-terminal-state 3))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2854 ((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
2855 (term-handle-deferred-scroll)
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
2856 (term-down 1 t)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2857 (setq term-terminal-state 0))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2858 ((eq char ?M) ;; scroll reversed
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2859 (term-insert-lines 1)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2860 (setq term-terminal-state 0))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2861 ((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
2862 (term-handle-deferred-scroll)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2863 (setq term-saved-cursor
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2864 (cons (term-current-row)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2865 (term-horizontal-column)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2866 (setq term-terminal-state 0))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2867 ((eq char ?8) ;; Restore cursor
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2868 (if term-saved-cursor
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2869 (term-goto (car term-saved-cursor)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2870 (cdr term-saved-cursor)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2871 (setq term-terminal-state 0))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2872 ((setq term-terminal-state 0))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2873 ((eq term-terminal-state 3) ; Seen Esc [
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2874 (cond ((and (>= char ?0) (<= char ?9))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2875 (setq term-terminal-parameter
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2876 (+ (* 10 term-terminal-parameter) (- char ?0))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2877 ((eq char ?\073 ) ; ?;
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2878 ;;; 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
2879 (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
2880 (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
2881 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
2882 (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
2883 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
2884 (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
2885 term-terminal-previous-parameter)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2886 (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
2887 term-terminal-parameter)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2888 (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
2889 ((eq char ??)) ; Ignore ?
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2890 (t
10671
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
2891 (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
2892 (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
2893 (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
2894 (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
2895 (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
2896 (setq term-terminal-previous-parameter -1)
9509
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 (if (term-handling-pager)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2899 ;; Finish stuff to get ready to handle PAGER.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2900 (progn
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2901 (if (> (% (current-column) term-width) 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2902 (setq term-terminal-parameter
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2903 (substring str i))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2904 ;; We're at column 0. Goto end of buffer; to compensate,
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2905 ;; prepend a ?\r for later. This looks more consistent.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2906 (if (zerop i)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2907 (setq term-terminal-parameter
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2908 (concat "\r" (substring str i)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2909 (setq term-terminal-parameter (substring str (1- i)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2910 (aset term-terminal-parameter 0 ?\r))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2911 (goto-char (point-max)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2912 (setq term-terminal-state 4)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2913 (make-local-variable 'term-pager-old-filter)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2914 (setq term-pager-old-filter (process-filter proc))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2915 (set-process-filter proc term-pager-filter)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2916 (setq i str-length)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2917 (setq i (1+ i))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2918
12229
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
2919 (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
2920 (term-handle-deferred-scroll))
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
2921
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2922 (set-marker (process-mark proc) (point))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2923 (if save-point
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2924 (progn (goto-char save-point)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2925 (set-marker save-point nil)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2926
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2927 ;; Check for a pending filename-and-line number to display.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2928 ;; We do this before scrolling, because we might create a new window.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2929 (if (and term-pending-frame
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2930 (eq (window-buffer selected) (current-buffer)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2931 (progn (term-display-line (car term-pending-frame)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2932 (cdr term-pending-frame))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2933 (setq term-pending-frame nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2934 ;; We have created a new window, so check the window size.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2935 (term-check-size proc)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2936
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2937 ;; Scroll each window displaying the buffer but (by default)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2938 ;; only if the point matches the process-mark we started with.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2939 (setq win selected)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2940 (while (progn
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2941 (setq win (next-window win nil t))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2942 (if (eq (window-buffer win) (process-buffer proc))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2943 (let ((scroll term-scroll-to-bottom-on-output))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2944 (select-window win)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2945 (if (or (= (point) save-marker)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2946 (eq scroll t) (eq scroll 'all)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2947 ;; Maybe user wants point to jump to the end.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2948 (and (eq selected win)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2949 (or (eq scroll 'this) (not save-point)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2950 (and (eq scroll 'others)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2951 (not (eq selected win))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2952 (progn
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2953 (goto-char term-home-marker)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2954 (recenter 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2955 (goto-char (process-mark proc))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2956 (if (not (pos-visible-in-window-p (point) win))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2957 (recenter -1))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2958 ;; Optionally scroll so that the text
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2959 ;; ends at the bottom of the window.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2960 (if (and term-scroll-show-maximum-output
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2961 (>= (point) (process-mark proc)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2962 (save-excursion
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2963 (goto-char (point-max))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2964 (recenter -1)))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2965 (not (eq win selected))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2966
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2967 ;;; 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
2968 (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
2969 (save-excursion
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2970 (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
2971 (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
2972 (beginning-of-line)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2973 (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
2974 ;;;
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2975
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2976 (set-marker save-marker nil))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2977 ;; unwind-protect cleanup-forms follow:
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2978 (set-buffer previous-buffer)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2979 (select-window selected))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2980
12229
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
2981 (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
2982 (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
2983 (if (>= count 0)
12229
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
2984 (save-excursion
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
2985 (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
2986 (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
2987 (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
2988 (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
2989
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2990 ;;; 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
2991 ;;; 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
2992
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2993 (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
2994 (cond
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2995
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
2996 ;;; Bold
17814
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
2997 ((eq parameter 1)
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
2998 (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
2999
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3000 ;;; Underline
17814
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
3001 ((eq parameter 4)
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
3002 (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
3003
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3004 ;;; 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
3005 ;;; 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
3006 ((eq parameter 5)
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
3007 (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
3008
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3009 ;;; Reverse
17814
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
3010 ((eq parameter 7)
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
3011 (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
3012
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3013 ;;; Invisible
17814
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
3014 ((eq parameter 8)
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
3015 (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
3016
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
3017 ((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
3018 (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
3019
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
3020 ((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
3021 (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
3022
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3023 ;;; 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
3024 (t
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
3025 (setq term-current-face
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
3026 (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
3027 (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
3028 (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
3029 (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
3030 (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
3031 (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
3032 (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
3033 (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
3034
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3035 ; (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
3036 ; 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
3037 ; 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
3038 ; 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
3039 ; 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
3040 ; 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
3041 ; 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
3042 ; 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
3043
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3044
17814
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
3045 (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
3046 (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
3047 (progn
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
3048 (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
3049 (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
3050 (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
3051 '(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
3052 (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
3053 (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
3054 (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
3055 ;; 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
3056 (progn
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
3057 (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
3058 (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
3059 (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
3060 (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
3061 (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
3062 (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
3063 (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
3064 (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
3065 (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
3066 (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
3067 (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
3068 (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
3069 '(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
3070 (setq term-current-face
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
3071 (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
3072 (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
3073 ;; 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
3074 (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
3075 (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
3076 (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
3077 (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
3078 (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
3079 (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
3080 (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
3081 (setq term-current-face
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
3082 (append '(term-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
3083
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3084 ; (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
3085
17814
56a59138fa6c Don't create faces if make-face isn't defined.
Richard M. Stallman <rms@gnu.org>
parents: 17659
diff changeset
3086 (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
3087
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3088
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3089 ;;; 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
3090 ;;; i.e. we have previously seen Escape followed by ?[.
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3091
10671
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
3092 (defun term-handle-ansi-escape (proc char)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3093 (cond
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3094 ((eq char ?H) ; cursor motion
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3095 (if (<= term-terminal-parameter 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3096 (setq term-terminal-parameter 1))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3097 (if (<= term-terminal-previous-parameter 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3098 (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
3099 (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
3100 (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
3101 (if (> term-terminal-parameter term-width)
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
3102 (setq term-terminal-parameter term-width))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3103 (term-goto
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3104 (1- term-terminal-previous-parameter)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3105 (1- term-terminal-parameter)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3106 ;; \E[A - cursor up
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3107 ((eq char ?A)
12229
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
3108 (term-handle-deferred-scroll)
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
3109 (term-down (- (max 1 term-terminal-parameter)) t))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3110 ;; \E[B - cursor down
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3111 ((eq char ?B)
12229
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
3112 (term-down (max 1 term-terminal-parameter) t))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3113 ;; \E[C - cursor right
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3114 ((eq char ?C)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3115 (term-move-columns (max 1 term-terminal-parameter)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3116 ;; \E[D - cursor left
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3117 ((eq char ?D)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3118 (term-move-columns (- (max 1 term-terminal-parameter))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3119 ;; \E[J - clear to end of screen
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3120 ((eq char ?J)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3121 (term-erase-in-display term-terminal-parameter))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3122 ;; \E[K - clear to end of line
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3123 ((eq char ?K)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3124 (term-erase-in-line term-terminal-parameter))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3125 ;; \E[L - insert lines
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3126 ((eq char ?L)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3127 (term-insert-lines (max 1 term-terminal-parameter)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3128 ;; \E[M - delete lines
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3129 ((eq char ?M)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3130 (term-delete-lines (max 1 term-terminal-parameter)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3131 ;; \E[P - delete chars
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3132 ((eq char ?P)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3133 (term-delete-chars (max 1 term-terminal-parameter)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3134 ;; \E[@ - insert spaces
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3135 ((eq char ?@)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3136 (term-insert-spaces (max 1 term-terminal-parameter)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3137 ;; \E[?h - DEC Private Mode Set
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3138 ((eq char ?h)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3139 (cond ((eq term-terminal-parameter 4)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3140 (setq term-insert-mode t))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3141 ((eq term-terminal-parameter 47)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3142 (term-switch-to-alternate-sub-buffer t))))
10044
c840b3eb9015 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 9603
diff changeset
3143 ;; \E[?l - DEC Private Mode Reset
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3144 ((eq char ?l)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3145 (cond ((eq term-terminal-parameter 4)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3146 (setq term-insert-mode nil))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3147 ((eq term-terminal-parameter 47)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3148 (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
3149
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3150 ;;; Modified to allow ansi coloring -mm
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3151 ;; \E[m - Set/reset standard mode
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3152 ((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
3153 (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
3154 (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
3155 (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
3156 (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
3157 (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
3158 (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
3159 (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
3160 (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
3161 (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
3162
10671
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
3163 ;; \E[6n - Report cursor position
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
3164 ((eq char ?n)
12229
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
3165 (term-handle-deferred-scroll)
10671
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
3166 (process-send-string proc
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
3167 (format "\e[%s;%sR"
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
3168 (1+ (term-current-row))
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
3169 (1+ (term-horizontal-column)))))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3170 ;; \E[r - Set scrolling region
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3171 ((eq char ?r)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3172 (term-scroll-region
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3173 (1- term-terminal-previous-parameter)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3174 term-terminal-parameter))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3175 (t)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3176
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3177 (defun term-scroll-region (top bottom)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3178 "Set scrolling region.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3179 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
3180 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
3181 The top-most line is line 0."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3182 (setq term-scroll-start
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3183 (if (or (< top 0) (>= top term-height))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3184 0
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3185 top))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3186 (setq term-scroll-end
10671
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
3187 (if (or (<= bottom term-scroll-start) (> bottom term-height))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3188 term-height
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3189 bottom))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3190 (setq term-scroll-with-delete
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3191 (or (term-using-alternate-sub-buffer)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3192 (not (and (= term-scroll-start 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3193 (= term-scroll-end term-height))))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3194
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3195 (defun term-switch-to-alternate-sub-buffer (set)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3196 ;; 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
3197 ;; 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
3198 ;; 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
3199 (term-handle-deferred-scroll)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3200 (if (eq set (not (term-using-alternate-sub-buffer)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3201 (let ((row (term-current-row))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3202 (col (term-horizontal-column)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3203 (cond (set
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3204 (goto-char (point-max))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3205 (if (not (eq (preceding-char) ?\n))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3206 (term-insert-char ?\n 1))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3207 (setq term-scroll-with-delete t)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3208 (setq term-saved-home-marker (copy-marker term-home-marker))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3209 (set-marker term-home-marker (point)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3210 (t
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3211 (setq term-scroll-with-delete
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3212 (not (and (= term-scroll-start 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3213 (= term-scroll-end term-height))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3214 (set-marker term-home-marker term-saved-home-marker)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3215 (set-marker term-saved-home-marker nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3216 (setq term-saved-home-marker nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3217 (goto-char term-home-marker)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3218 (setq term-current-column nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3219 (setq term-current-row 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3220 (term-goto row col))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3221
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3222 ;; Default value for the symbol term-command-hook.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3223
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3224 (defun term-command-hook (string)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3225 (cond ((= (aref string 0) ?\032)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3226 ;; gdb (when invoked with -fullname) prints:
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3227 ;; \032\032FULLFILENAME:LINENUMBER:CHARPOS:BEG_OR_MIDDLE:PC\n
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3228 (let* ((first-colon (string-match ":" string 1))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3229 (second-colon
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3230 (string-match ":" string (1+ first-colon)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3231 (filename (substring string 1 first-colon))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3232 (fileline (string-to-int
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3233 (substring string (1+ first-colon) second-colon))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3234 (setq term-pending-frame (cons filename fileline))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3235 ((= (aref string 0) ?/)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3236 (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
3237 ;; 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
3238 ;; probably too big a security hole.
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
3239 ;; ((= (aref string 0) ?!)
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
3240 ;; (eval (car (read-from-string string 1))))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3241 (t)));; Otherwise ignore it
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3242
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3243 ;; 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
3244 ;; and that its line LINE is visible.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3245 ;; Put the overlay-arrow on the line LINE in that buffer.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3246 ;; This is mainly used by gdb.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3247
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3248 (defun term-display-line (true-file line)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3249 (term-display-buffer-line (find-file-noselect true-file) line))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3250
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3251 (defun term-display-buffer-line (buffer line)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3252 (let* ((window (display-buffer buffer t))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3253 (pos))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3254 (save-excursion
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3255 (set-buffer buffer)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3256 (save-restriction
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3257 (widen)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3258 (goto-line line)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3259 (setq pos (point))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3260 (setq overlay-arrow-string "=>")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3261 (or overlay-arrow-position
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3262 (setq overlay-arrow-position (make-marker)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3263 (set-marker overlay-arrow-position (point) (current-buffer)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3264 (cond ((or (< pos (point-min)) (> pos (point-max)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3265 (widen)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3266 (goto-char pos))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3267 (set-window-point window overlay-arrow-position)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3268
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3269 ;;; The buffer-local marker term-home-marker defines the "home position"
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3270 ;;; (in terms of cursor motion). However, we move the term-home-marker
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3271 ;;; "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
3272
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3273 (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
3274 (term-handle-deferred-scroll)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3275 (goto-char term-home-marker)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3276 (setq term-current-row 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3277 (setq term-current-column (current-column))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3278 (setq term-start-line-column term-current-column))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3279
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3280 (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
3281 (term-handle-deferred-scroll)
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
3282 (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
3283 ;; 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
3284 (term-vertical-motion 0)
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
3285 (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
3286 (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
3287 (t
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
3288 (term-goto-home)))
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
3289 (term-down row)
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
3290 (term-move-columns col))
9509
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 ; The page is full, so enter "pager" mode, and wait for input.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3293
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3294 (defun term-process-pager ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3295 (if (not term-pager-break-map)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3296 (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
3297 (i 0) tmp)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3298 ; (while (< i 128)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3299 ; (define-key map (make-string 1 i) 'term-send-raw)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3300 ; (setq i (1+ i)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3301 (define-key map "\e"
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3302 (lookup-key (current-global-map) "\e"))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3303 (define-key map "\C-x"
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3304 (lookup-key (current-global-map) "\C-x"))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3305 (define-key map "\C-u"
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3306 (lookup-key (current-global-map) "\C-u"))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3307 (define-key map " " 'term-pager-page)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3308 (define-key map "\r" 'term-pager-line)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3309 (define-key map "?" 'term-pager-help)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3310 (define-key map "h" 'term-pager-help)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3311 (define-key map "b" 'term-pager-back-page)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3312 (define-key map "\177" 'term-pager-back-line)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3313 (define-key map "q" 'term-pager-discard)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3314 (define-key map "D" 'term-pager-disable)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3315 (define-key map "<" 'term-pager-bob)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3316 (define-key map ">" 'term-pager-eob)
10515
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
3317
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
3318 ;; Add menu bar.
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
3319 (term-if-emacs19
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
3320 (term-ifnot-xemacs
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
3321 (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
3322 (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
3323 (setq tmp (make-sparse-keymap "More pages?"))
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
3324 (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
3325 (define-key tmp [disable]
13961
ff6ac63de609 (term-process-pager): Fix message spelling.
Karl Heuer <kwzh@gnu.org>
parents: 13337
diff changeset
3326 '("Disable paging" . term-fake-pager-disable))
10515
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
3327 (define-key tmp [discard]
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
3328 '("Discard remaining output" . term-pager-discard))
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
3329 (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
3330 (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
3331 (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
3332 (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
3333 (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
3334 (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
3335 (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
3336 ))
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
3337
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3338 (setq term-pager-break-map map)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3339 ; (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
3340 ; (stop-process process))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3341 (setq term-pager-old-local-map (current-local-map))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3342 (use-local-map term-pager-break-map)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3343 (make-local-variable 'term-old-mode-line-format)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3344 (setq term-old-mode-line-format mode-line-format)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3345 (setq mode-line-format
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3346 (list "-- **MORE** "
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3347 mode-line-buffer-identification
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3348 " [Type ? for help] "
10515
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
3349 "%-"))
11570
f210b0ee984a (term-update-mode-line, term-process-pager): Use force-mode-line-update.
Karl Heuer <kwzh@gnu.org>
parents: 11033
diff changeset
3350 (force-mode-line-update))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3351
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3352 (defun term-pager-line (lines)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3353 (interactive "p")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3354 (let* ((moved (vertical-motion (1+ lines)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3355 (deficit (- lines moved)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3356 (if (> moved lines)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3357 (backward-char))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3358 (cond ((<= deficit 0) ;; OK, had enough in the buffer for request.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3359 (recenter (1- term-height)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3360 ((term-pager-continue deficit)))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3361
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3362 (defun term-pager-page (arg)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3363 "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
3364 (interactive "p")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3365 (term-pager-line (* arg term-height)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3366
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3367 ; Pager mode command to go to beginning of buffer
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3368 (defun term-pager-bob ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3369 (interactive)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3370 (goto-char (point-min))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3371 (if (= (vertical-motion term-height) term-height)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3372 (backward-char))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3373 (recenter (1- term-height)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3374
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3375 ; pager mode command to go to end of buffer
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3376 (defun term-pager-eob ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3377 (interactive)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3378 (goto-char term-home-marker)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3379 (recenter 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3380 (goto-char (process-mark (get-buffer-process (current-buffer)))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3381
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3382 (defun term-pager-back-line (lines)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3383 (interactive "p")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3384 (vertical-motion (- 1 lines))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3385 (if (not (bobp))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3386 (backward-char)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3387 (beep)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3388 ;; Move cursor to end of window.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3389 (vertical-motion term-height)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3390 (backward-char))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3391 (recenter (1- term-height)))
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-back-page (arg)
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 (term-pager-back-line (* arg term-height)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3396
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3397 (defun term-pager-discard ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3398 (interactive)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3399 (setq term-terminal-parameter "")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3400 (interrupt-process nil t)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3401 (term-pager-continue term-height))
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 ; Disable pager processing.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3404 ; Only callable while in pager mode. (Contrast term-disable-pager.)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3405 (defun term-pager-disable ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3406 (interactive)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3407 (if (term-handling-pager)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3408 (term-pager-continue nil)
10671
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
3409 (setq term-pager-count nil))
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
3410 (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
3411
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3412 ; Enable pager processing.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3413 (defun term-pager-enable ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3414 (interactive)
10671
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
3415 (or (term-pager-enabled)
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
3416 (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
3417 (term-update-mode-line))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3418
10515
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
3419 (defun term-pager-toggle ()
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
3420 (interactive)
10671
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
3421 (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
3422
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
3423 (term-ifnot-xemacs
d32348ef2b69 (term-version): Increased to 0.94.
Richard M. Stallman <rms@gnu.org>
parents: 10044
diff changeset
3424 (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
3425 (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
3426 (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
3427 (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
3428 (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
3429 (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
3430
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3431 (defun term-pager-help ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3432 "Provide help on commands available in a terminal-emulator **MORE** break"
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3433 (interactive)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3434 (message "Terminal-emulator pager break help...")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3435 (sit-for 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3436 (with-electric-help
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3437 (function (lambda ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3438 (princ (substitute-command-keys
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3439 "\\<term-pager-break-map>\
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3440 Terminal-emulator MORE break.\n\
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3441 Type one of the following keys:\n\n\
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3442 \\[term-pager-page]\t\tMove forward one page.\n\
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3443 \\[term-pager-line]\t\tMove forward one line.\n\
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3444 \\[universal-argument] N \\[term-pager-page]\tMove N pages forward.\n\
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3445 \\[universal-argument] N \\[term-pager-line]\tMove N lines forward.\n\
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3446 \\[universal-argument] N \\[term-pager-back-line]\tMove N lines back.\n\
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3447 \\[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
3448 \\[term-pager-bob]\t\tMove to the beginning of the buffer.\n\
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3449 \\[term-pager-eob]\t\tMove to the end of the buffer.\n\
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3450 \\[term-pager-discard]\t\tKill pending output and kill process.\n\
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3451 \\[term-pager-disable]\t\tDisable PAGER handling.\n\n\
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3452 \\{term-pager-break-map}\n\
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3453 Any other key is passed through to the program
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3454 running under the terminal emulator and disables pager processing until
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3455 all pending output has been dealt with."))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3456 nil))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3457
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3458 (defun term-pager-continue (new-count)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3459 (let ((process (get-buffer-process (current-buffer))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3460 (use-local-map term-pager-old-local-map)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3461 (setq term-pager-old-local-map nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3462 (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
3463 (force-mode-line-update)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3464 (setq term-pager-count new-count)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3465 (set-process-filter process term-pager-old-filter)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3466 (funcall term-pager-old-filter process "")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3467 (continue-process process)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3468
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3469 ;; Make sure there are DOWN blank lines below the current one.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3470 ;; 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
3471
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3472 (defun term-handle-scroll (down)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3473 (let ((scroll-needed
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3474 (- (+ (term-current-row) down 1) term-scroll-end)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3475 (if (> scroll-needed 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3476 (let ((save-point (copy-marker (point))) (save-top))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3477 (goto-char term-home-marker)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3478 (cond (term-scroll-with-delete
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3479 ;; delete scroll-needed lines at term-scroll-start
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3480 (term-vertical-motion term-scroll-start)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3481 (setq save-top (point))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3482 (term-vertical-motion scroll-needed)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3483 (delete-region save-top (point))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3484 (goto-char save-point)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3485 (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
3486 (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
3487 (setq term-current-column nil)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3488 (term-insert-char ?\n scroll-needed))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3489 ((and (numberp term-pager-count)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3490 (< (setq term-pager-count (- term-pager-count down))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3491 0))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3492 (setq down 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3493 (term-process-pager))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3494 (t
12229
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
3495 (term-adjust-current-row-cache (- scroll-needed))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3496 (term-vertical-motion scroll-needed)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3497 (set-marker term-home-marker (point))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3498 (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
3499 (set-marker save-point nil))))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3500 down)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3501
12229
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
3502 (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
3503 "Move down DOWN screen lines vertically."
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3504 (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
3505 (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
3506 (setq down (term-handle-scroll down)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3507 (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
3508 (if (/= (point) (point-max))
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
3509 (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
3510 ;; 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
3511 (cond ((> down 0)
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
3512 (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
3513 (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
3514 (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
3515 (t
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
3516 (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
3517 (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
3518 (if start-column
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
3519 (term-move-columns start-column))))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3520
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3521 ;; Assuming point is at the beginning of a screen line,
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3522 ;; 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
3523 ;; FIXME: Probably should be called more than it is.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3524 (defun term-unwrap-line ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3525 (if (not (bolp)) (insert-before-markers ?\n)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3526
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3527 (defun term-erase-in-line (kind)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3528 (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
3529 (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
3530 (term-vertical-motion 0)
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
3531 (delete-region (point) saved-point)
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
3532 (term-insert-char ?\n cols)))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3533 (if (not (eq kind 1)) ;; erase right of point
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3534 (let ((saved-point (point))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3535 (wrapped (and (zerop (term-horizontal-column))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3536 (not (zerop (term-current-column))))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3537 (term-vertical-motion 1)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3538 (delete-region saved-point (point))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3539 ;; wrapped is true if we're at the beginning of screen line,
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3540 ;; but not a buffer line. If we delete the current screen line
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3541 ;; 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
3542 ;; 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
3543 ;; 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
3544 ;; current one. To avoid that, we make sure that current line
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3545 ;; contain a space, to force the previous line to continue to wrap.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3546 ;; 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
3547 ;; extra space when wrapped is false.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3548 (if wrapped
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3549 (insert ? ))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3550 (insert ?\n)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3551 (put-text-property saved-point (point) 'face 'default)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3552 (goto-char saved-point))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3553
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3554 (defun term-erase-in-display (kind)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3555 "Erases (that is blanks out) part of the window.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3556 If KIND is 0, erase from (point) to (point-max);
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3557 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
3558 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
3559 (term-handle-deferred-scroll)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3560 (cond ((eq term-terminal-parameter 0)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3561 (delete-region (point) (point-max))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3562 (term-unwrap-line))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3563 ((let ((row (term-current-row))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3564 (col (term-horizontal-column))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3565 (start-region term-home-marker)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3566 (end-region (if (eq kind 1) (point) (point-max))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3567 (delete-region start-region end-region)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3568 (term-unwrap-line)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3569 (if (eq kind 1)
10671
fe4d986bef9d Version 0.95. Numerous small fixes. See ChangeLog.
Per Bothner <bothner@cygnus.com>
parents: 10515
diff changeset
3570 (term-insert-char ?\n row))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3571 (setq term-current-column nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3572 (setq term-current-row nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3573 (term-goto row col)))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3574
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3575 (defun term-delete-chars (count)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3576 (let ((save-point (point)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3577 (term-vertical-motion 1)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3578 (term-unwrap-line)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3579 (goto-char save-point)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3580 (move-to-column (+ (term-current-column) count) t)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3581 (delete-region save-point (point))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3582
12229
697c01e75adc Various optimizations. The main one is to optimize for
Richard M. Stallman <rms@gnu.org>
parents: 11570
diff changeset
3583 ;;; 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
3584 ;;; 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
3585 ;;; 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
3586
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3587 (defun term-insert-spaces (count)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3588 (let ((save-point (point)) (save-eol))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3589 (term-vertical-motion 1)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3590 (if (bolp)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3591 (backward-char))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3592 (setq save-eol (point))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3593 (move-to-column (+ (term-start-line-column) (- term-width count)) t)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3594 (if (> save-eol (point))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3595 (delete-region (point) save-eol))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3596 (goto-char save-point)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3597 (term-insert-char ? count)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3598 (goto-char save-point)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3599
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3600 (defun term-delete-lines (lines)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3601 (let ((start (point))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3602 (save-current-column term-current-column)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3603 (save-start-line-column term-start-line-column)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3604 (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
3605 (term-down lines)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3606 (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
3607 (term-down (- term-scroll-end save-current-row lines))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3608 (term-insert-char ?\n lines)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3609 (setq term-current-column save-current-column)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3610 (setq term-start-line-column save-start-line-column)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3611 (setq term-current-row save-current-row)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3612 (goto-char start)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3613
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3614 (defun term-insert-lines (lines)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3615 (let ((start (point))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3616 (start-deleted)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3617 (save-current-column term-current-column)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3618 (save-start-line-column term-start-line-column)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3619 (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
3620 (term-down (- term-scroll-end save-current-row lines))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3621 (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
3622 (term-down lines)
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3623 (delete-region start-deleted (point))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3624 (goto-char start)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3625 (setq term-current-column save-current-column)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3626 (setq term-start-line-column save-start-line-column)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3627 (setq term-current-row save-current-row)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3628 (term-insert-char ?\n lines)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3629 (goto-char start)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3630
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3631 (defun term-set-output-log (name)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3632 "Record raw inferior process output in a buffer."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3633 (interactive (list (if term-log-buffer
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3634 nil
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3635 (read-buffer "Record output in buffer: "
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3636 (format "%s output-log"
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3637 (buffer-name (current-buffer)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3638 nil))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3639 (if (or (null name) (equal name ""))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3640 (progn (setq term-log-buffer nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3641 (message "Output logging off."))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3642 (if (get-buffer name)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3643 nil
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3644 (save-excursion
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3645 (set-buffer (get-buffer-create name))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3646 (fundamental-mode)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3647 (buffer-disable-undo (current-buffer))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3648 (erase-buffer)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3649 (setq term-log-buffer (get-buffer name))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3650 (message "Recording terminal emulator output into buffer \"%s\""
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3651 (buffer-name term-log-buffer))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3652
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3653 (defun term-stop-photo ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3654 "Discontinue raw inferior process logging."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3655 (interactive)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3656 (term-set-output-log nil))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3657
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3658 (defun term-show-maximum-output ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3659 "Put the end of the buffer at the bottom of the window."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3660 (interactive)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3661 (goto-char (point-max))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3662 (recenter -1))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3663
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3664 ;;; Do the user's customisation...
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3665
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3666 (defvar term-load-hook nil
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3667 "This hook is run when term is loaded in.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3668 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
3669
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3670 (run-hooks 'term-load-hook)
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
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3673 ;;; Filename/command/history completion in a buffer
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3674 ;;; ===========================================================================
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3675 ;;; Useful completion functions, courtesy of the Ergo group.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3676
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3677 ;;; Six commands:
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3678 ;;; term-dynamic-complete Complete or expand command, filename,
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3679 ;;; history at point.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3680 ;;; term-dynamic-complete-filename Complete filename at point.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3681 ;;; term-dynamic-list-filename-completions List completions in help buffer.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3682 ;;; term-replace-by-expanded-filename Expand and complete filename at point;
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3683 ;;; replace with expanded/completed name.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3684 ;;; term-dynamic-simple-complete Complete stub given candidates.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3685
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3686 ;;; 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
3687 ;;; available for people who want them. Shell-mode installs them:
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3688 ;;; (define-key shell-mode-map "\t" 'term-dynamic-complete)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3689 ;;; (define-key shell-mode-map "\M-?"
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3690 ;;; 'term-dynamic-list-filename-completions)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3691 ;;;
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3692 ;;; 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
3693 ;;; want them present in specific modes.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3694
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3695 (defvar term-completion-autolist nil
13961
ff6ac63de609 (term-process-pager): Fix message spelling.
Karl Heuer <kwzh@gnu.org>
parents: 13337
diff changeset
3696 "*If non-nil, automatically list possibilities on partial completion.
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3697 This mirrors the optional behavior of tcsh.")
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 (defvar term-completion-addsuffix t
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3700 "*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
3701 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
3702 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
3703 completion. This mirrors the optional behavior of tcsh.")
9509
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 (defvar term-completion-recexact nil
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3706 "*If non-nil, use shortest completion if characters cannot be added.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3707 This mirrors the optional behavior of tcsh.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3708
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3709 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
3710
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3711 (defvar term-completion-fignore nil
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3712 "*List of suffixes to be disregarded during file completion.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3713 This mirrors the optional behavior of bash and tcsh.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3714
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3715 Note that this applies to `term-dynamic-complete-filename' only.")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3716
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3717 (defvar term-file-name-prefix ""
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3718 "Prefix prepended to absolute file names taken from process input.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3719 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
3720 directory tracking functions.")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3721
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3722
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3723 (defun term-directory (directory)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3724 ;; Return expanded DIRECTORY, with `term-file-name-prefix' if absolute.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3725 (expand-file-name (if (file-name-absolute-p directory)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3726 (concat term-file-name-prefix directory)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3727 directory)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3728
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3729
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3730 (defun term-word (word-chars)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3731 "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
3732 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
3733 inside of a \"[...]\" (see `skip-chars-forward')."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3734 (save-excursion
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3735 (let ((limit (point))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3736 (word (concat "[" word-chars "]"))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3737 (non-word (concat "[^" word-chars "]")))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3738 (if (re-search-backward non-word nil 'move)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3739 (forward-char 1))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3740 ;; Anchor the search forwards.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3741 (if (or (eolp) (looking-at non-word))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3742 nil
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3743 (re-search-forward (concat word "+") limit)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3744 (buffer-substring (match-beginning 0) (match-end 0))))))
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
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3747 (defun term-match-partial-filename ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3748 "Return the filename at point, or nil if non is found.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3749 Environment variables are substituted. See `term-word'."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3750 (let ((filename (term-word "~/A-Za-z0-9+@:_.$#,={}-")))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3751 (and filename (substitute-in-file-name filename))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3752
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3753
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3754 (defun term-dynamic-complete ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3755 "Dynamically perform completion at point.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3756 Calls the functions in `term-dynamic-complete-functions' to perform
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3757 completion until a function returns non-nil, at which point completion is
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3758 assumed to have occurred."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3759 (interactive)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3760 (let ((functions term-dynamic-complete-functions))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3761 (while (and functions (null (funcall (car functions))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3762 (setq functions (cdr functions)))))
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
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3765 (defun term-dynamic-complete-filename ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3766 "Dynamically complete the filename at point.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3767 Completes if after a filename. See `term-match-partial-filename' and
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3768 `term-dynamic-complete-as-filename'.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3769 This function is similar to `term-replace-by-expanded-filename', except that
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3770 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
3771 adds completion characters to the end of the filename. A completions listing
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3772 may be shown in a help buffer if completion is ambiguous.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3773
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3774 Completion is dependent on the value of `term-completion-addsuffix',
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3775 `term-completion-recexact' and `term-completion-fignore', and the timing of
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3776 completions listing is dependent on the value of `term-completion-autolist'.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3777
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3778 Returns t if successful."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3779 (interactive)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3780 (if (term-match-partial-filename)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3781 (prog2 (or (eq (selected-window) (minibuffer-window))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3782 (message "Completing file name..."))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3783 (term-dynamic-complete-as-filename))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3784
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3785 (defun term-dynamic-complete-as-filename ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3786 "Dynamically complete at point as a filename.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3787 See `term-dynamic-complete-filename'. Returns t if successful."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3788 (let* ((completion-ignore-case nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3789 (completion-ignored-extensions term-completion-fignore)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3790 (success t)
17147
2824e1f84717 (term-completion-addsuffix): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents: 16848
diff changeset
3791 (dirsuffix (cond ((not term-completion-addsuffix) "")
2824e1f84717 (term-completion-addsuffix): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents: 16848
diff changeset
3792 ((not (consp term-completion-addsuffix)) "/")
2824e1f84717 (term-completion-addsuffix): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents: 16848
diff changeset
3793 (t (car term-completion-addsuffix))))
2824e1f84717 (term-completion-addsuffix): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents: 16848
diff changeset
3794 (filesuffix (cond ((not term-completion-addsuffix) "")
2824e1f84717 (term-completion-addsuffix): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents: 16848
diff changeset
3795 ((not (consp term-completion-addsuffix)) " ")
2824e1f84717 (term-completion-addsuffix): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents: 16848
diff changeset
3796 (t (cdr term-completion-addsuffix))))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3797 (filename (or (term-match-partial-filename) ""))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3798 (pathdir (file-name-directory filename))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3799 (pathnondir (file-name-nondirectory filename))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3800 (directory (if pathdir (term-directory pathdir) default-directory))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3801 (completion (file-name-completion pathnondir directory))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3802 (mini-flag (eq (selected-window) (minibuffer-window))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3803 (cond ((null completion)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3804 (message "No completions of %s" filename)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3805 (setq success nil))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3806 ((eq completion t) ; Means already completed "file".
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3807 (if term-completion-addsuffix (insert " "))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3808 (or mini-flag (message "Sole completion")))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3809 ((string-equal completion "") ; Means completion on "directory/".
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3810 (term-dynamic-list-filename-completions))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3811 (t ; Completion string returned.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3812 (let ((file (concat (file-name-as-directory directory) completion)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3813 (insert (substring (directory-file-name completion)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3814 (length pathnondir)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3815 (cond ((symbolp (file-name-completion completion directory))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3816 ;; We inserted a unique completion.
17147
2824e1f84717 (term-completion-addsuffix): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents: 16848
diff changeset
3817 (insert (if (file-directory-p file) dirsuffix filesuffix))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3818 (or mini-flag (message "Completed")))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3819 ((and term-completion-recexact term-completion-addsuffix
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3820 (string-equal pathnondir completion)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3821 (file-exists-p file))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3822 ;; 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
3823 (insert (if (file-directory-p file) dirsuffix filesuffix))
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3824 (or mini-flag (message "Completed shortest")))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3825 ((or term-completion-autolist
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3826 (string-equal pathnondir completion))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3827 ;; It's not unique, list possible completions.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3828 (term-dynamic-list-filename-completions))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3829 (t
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3830 (or mini-flag (message "Partially completed")))))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3831 success))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3832
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3833
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3834 (defun term-replace-by-expanded-filename ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3835 "Dynamically expand and complete the filename at point.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3836 Replace the filename with an expanded, canonicalised and completed replacement.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3837 \"Expanded\" means environment variables (e.g., $HOME) and `~'s are replaced
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3838 with the corresponding directories. \"Canonicalised\" means `..' and `.' are
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3839 removed, and the filename is made absolute instead of relative. For expansion
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3840 see `expand-file-name' and `substitute-in-file-name'. For completion see
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3841 `term-dynamic-complete-filename'."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3842 (interactive)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3843 (replace-match (expand-file-name (term-match-partial-filename)) t t)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3844 (term-dynamic-complete-filename))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3845
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3846
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3847 (defun term-dynamic-simple-complete (stub candidates)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3848 "Dynamically complete STUB from CANDIDATES list.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3849 This function inserts completion characters at point by completing STUB from
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3850 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
3851 if completion is ambiguous.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3852
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3853 Returns nil if no completion was inserted.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3854 Returns `sole' if completed with the only completion match.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3855 Returns `shortest' if completed with the shortest of the completion matches.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3856 Returns `partial' if completed as far as possible with the completion matches.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3857 Returns `listed' if a completion listing was shown.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3858
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3859 See also `term-dynamic-complete-filename'."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3860 (let* ((completion-ignore-case nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3861 (candidates (mapcar (function (lambda (x) (list x))) candidates))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3862 (completions (all-completions stub candidates)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3863 (cond ((null completions)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3864 (message "No completions of %s" stub)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3865 nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3866 ((= 1 (length completions)) ; Gotcha!
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3867 (let ((completion (car completions)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3868 (if (string-equal completion stub)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3869 (message "Sole completion")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3870 (insert (substring completion (length stub)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3871 (message "Completed"))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3872 (if term-completion-addsuffix (insert " "))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3873 'sole))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3874 (t ; There's no unique completion.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3875 (let ((completion (try-completion stub candidates)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3876 ;; Insert the longest substring.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3877 (insert (substring completion (length stub)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3878 (cond ((and term-completion-recexact term-completion-addsuffix
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3879 (string-equal stub completion)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3880 (member completion completions))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3881 ;; It's not unique, but user wants shortest match.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3882 (insert " ")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3883 (message "Completed shortest")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3884 'shortest)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3885 ((or term-completion-autolist
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3886 (string-equal stub completion))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3887 ;; It's not unique, list possible completions.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3888 (term-dynamic-list-completions completions)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3889 'listed)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3890 (t
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3891 (message "Partially completed")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3892 'partial)))))))
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
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3895 (defun term-dynamic-list-filename-completions ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3896 "List in help buffer possible completions of the filename at point."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3897 (interactive)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3898 (let* ((completion-ignore-case nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3899 (filename (or (term-match-partial-filename) ""))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3900 (pathdir (file-name-directory filename))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3901 (pathnondir (file-name-nondirectory filename))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3902 (directory (if pathdir (term-directory pathdir) default-directory))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3903 (completions (file-name-all-completions pathnondir directory)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3904 (if completions
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3905 (term-dynamic-list-completions completions)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3906 (message "No completions of %s" filename))))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3907
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3908
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3909 (defun term-dynamic-list-completions (completions)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3910 "List in help buffer sorted COMPLETIONS.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3911 Typing SPC flushes the help buffer."
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3912 (let ((conf (current-window-configuration)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3913 (with-output-to-temp-buffer "*Completions*"
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3914 (display-completion-list (sort completions 'string-lessp)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3915 (message "Hit space to flush")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3916 (let (key first)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3917 (if (save-excursion
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3918 (set-buffer (get-buffer "*Completions*"))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3919 (setq key (read-key-sequence nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3920 first (aref key 0))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3921 (and (consp first)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3922 (eq (window-buffer (posn-window (event-start first)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3923 (get-buffer "*Completions*"))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3924 (eq (key-binding key) 'mouse-choose-completion)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3925 ;; If the user does mouse-choose-completion with the mouse,
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3926 ;; execute the command, then delete the completion window.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3927 (progn
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3928 (mouse-choose-completion first)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3929 (set-window-configuration conf))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3930 (if (eq first ?\ )
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3931 (set-window-configuration conf)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3932 (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
3933
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3934 ;;; 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
3935 (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
3936 "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
3937 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
3938 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
3939 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
3940 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
3941 (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
3942 ;; 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
3943 ;; 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
3944 (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
3945 (save-excursion
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3946 (set-buffer buffer)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3947 (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
3948 (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
3949 buffer))
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3950
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3951 (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
3952 (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
3953 (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
3954
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3955 ;;;###autoload
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3956 (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
3957 "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
3958 (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
3959 (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
3960 (getenv "ESHELL")
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3961 (getenv "SHELL")
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3962 "/bin/sh"))))
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3963
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3964 ;; 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
3965 (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
3966 (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
3967 new-buffer-name
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3968 (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
3969 (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
3970 (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
3971 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
3972 "ansi-term")))
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3973
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3974 (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
3975
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3976 ;; 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
3977 ;; 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
3978 ;; 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
3979
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3980 (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
3981 (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
3982
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3983 (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
3984 (term-mode)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3985 (term-char-mode)
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3986
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3987 ;; 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
3988 ;; 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
3989 ;; .emacs ...
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3990
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3991 (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
3992
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3993 (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
3994
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3995
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3996 ;;; Converting process modes to use term mode
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3997 ;;; ===========================================================================
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3998 ;;; Renaming variables
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
3999 ;;; 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
4000 ;;; ones:
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4001 ;;; Local variables:
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4002 ;;; last-input-start term-last-input-start
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4003 ;;; last-input-end term-last-input-end
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4004 ;;; shell-prompt-pattern term-prompt-regexp
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4005 ;;; shell-set-directory-error-hook <no equivalent>
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4006 ;;; Miscellaneous:
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4007 ;;; shell-set-directory <unnecessary>
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4008 ;;; shell-mode-map term-mode-map
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4009 ;;; Commands:
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4010 ;;; shell-send-input term-send-input
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4011 ;;; shell-send-eof term-delchar-or-maybe-eof
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4012 ;;; kill-shell-input term-kill-input
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4013 ;;; interrupt-shell-subjob term-interrupt-subjob
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4014 ;;; stop-shell-subjob term-stop-subjob
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4015 ;;; quit-shell-subjob term-quit-subjob
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4016 ;;; kill-shell-subjob term-kill-subjob
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4017 ;;; kill-output-from-shell term-kill-output
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4018 ;;; show-output-from-shell term-show-output
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4019 ;;; copy-last-shell-input Use term-previous-input/term-next-input
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4020 ;;;
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4021 ;;; SHELL-SET-DIRECTORY is gone, its functionality taken over by
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4022 ;;; SHELL-DIRECTORY-TRACKER, the shell mode's term-input-filter-functions.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4023 ;;; Term mode does not provide functionality equivalent to
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4024 ;;; shell-set-directory-error-hook; it is gone.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4025 ;;;
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4026 ;;; term-last-input-start is provided for modes which want to munge
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4027 ;;; the buffer after input is sent, perhaps because the inferior
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4028 ;;; insists on echoing the input. The LAST-INPUT-START variable in
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4029 ;;; the old shell package was used to implement a history mechanism,
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4030 ;;; but you should think twice before using term-last-input-start
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4031 ;;; 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
4032 ;;;
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4033 ;;; 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
4034 ;;; *not* create the term-mode local variables in your foo-mode function.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4035 ;;; 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
4036 ;;; necessary term-specific local variables. Then create the
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4037 ;;; 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
4038 ;;; 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
4039 ;;; (term-{prompt-regexp, input-filter, input-filter-functions,
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4040 ;;; 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
4041 ;;; 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
4042 ;;; 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
4043 ;;; is typical:
17283
fcb47395bde7 Added a lot of new faces, they all start with
Richard M. Stallman <rms@gnu.org>
parents: 17147
diff changeset
4044 ;;;
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4045 ;;; (defvar shell-mode-map '())
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4046 ;;; (cond ((not shell-mode-map)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4047 ;;; (setq shell-mode-map (copy-keymap term-mode-map))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4048 ;;; (define-key shell-mode-map "\C-c\C-f" 'shell-forward-command)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4049 ;;; (define-key shell-mode-map "\C-c\C-b" 'shell-backward-command)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4050 ;;; (define-key shell-mode-map "\t" 'term-dynamic-complete)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4051 ;;; (define-key shell-mode-map "\M-?"
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4052 ;;; 'term-dynamic-list-filename-completions)))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4053 ;;;
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4054 ;;; (defun shell-mode ()
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4055 ;;; (interactive)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4056 ;;; (term-mode)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4057 ;;; (setq term-prompt-regexp shell-prompt-pattern)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4058 ;;; (setq major-mode 'shell-mode)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4059 ;;; (setq mode-name "Shell")
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4060 ;;; (use-local-map shell-mode-map)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4061 ;;; (make-local-variable 'shell-directory-stack)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4062 ;;; (setq shell-directory-stack nil)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4063 ;;; (add-hook 'term-input-filter-functions 'shell-directory-tracker)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4064 ;;; (run-hooks 'shell-mode-hook))
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4065 ;;;
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 ;;; 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
4068 ;;;
9509
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4069 ;;; For modes that use term-mode, term-dynamic-complete-functions is the
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4070 ;;; hook to add completion functions to. Functions on this list should return
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4071 ;;; non-nil if completion occurs (i.e., further completion should not occur).
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4072 ;;; 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
4073 ;;; completion job.
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4074
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4075 (provide 'term)
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4076
d4e74a66a357 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4077 ;;; term.el ends here