Mercurial > emacs
annotate src/term.c @ 112135:6d81f1e1ce53
Use __builtin_unwind_init in the MSDOS build.
msdos/sed2v2.inp (HAVE___BUILTIN_UNWIND_INIT): Define.
author | Eli Zaretskii <eliz@gnu.org> |
---|---|
date | Fri, 07 Jan 2011 12:43:57 +0200 |
parents | b9616a1b568d |
children | 417b1e4d63cd 7df2e30d72ec |
rev | line source |
---|---|
37959
b53edc686faf
(tty_cursor_hidden): New variable.
Gerd Moellmann <gerd@gnu.org>
parents:
37499
diff
changeset
|
1 /* Terminal control module for terminals described by TERMCAP |
64770
a0d1312ede66
Update years in copyright notice; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
64084
diff
changeset
|
2 Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1998, 2000, 2001, |
106815 | 3 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 |
79759 | 4 Free Software Foundation, Inc. |
253 | 5 |
6 This file is part of GNU Emacs. | |
7 | |
94963
8971ddf55736
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
93984
diff
changeset
|
8 GNU Emacs is free software: you can redistribute it and/or modify |
253 | 9 it under the terms of the GNU General Public License as published by |
94963
8971ddf55736
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
93984
diff
changeset
|
10 the Free Software Foundation, either version 3 of the License, or |
8971ddf55736
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
93984
diff
changeset
|
11 (at your option) any later version. |
253 | 12 |
13 GNU Emacs is distributed in the hope that it will be useful, | |
14 but WITHOUT ANY WARRANTY; without even the implied warranty of | |
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
16 GNU General Public License for more details. | |
17 | |
18 You should have received a copy of the GNU General Public License | |
94963
8971ddf55736
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
93984
diff
changeset
|
19 along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ |
253 | 20 |
37959
b53edc686faf
(tty_cursor_hidden): New variable.
Gerd Moellmann <gerd@gnu.org>
parents:
37499
diff
changeset
|
21 /* New redisplay, TTY faces by Gerd Moellmann <gerd@gnu.org>. */ |
253 | 22 |
7900
60795e826dad
Put stdio.h after config.h.
Richard M. Stallman <rms@gnu.org>
parents:
7649
diff
changeset
|
23 #include <config.h> |
253 | 24 #include <stdio.h> |
25 #include <ctype.h> | |
83498
f0987e2f27e2
Clean up tty device handling. Change name of controlling tty from nil to "/dev/tty".
Karoly Lorentey <lorentey@elte.hu>
parents:
83468
diff
changeset
|
26 #include <errno.h> |
53226
dd3018b4785b
Implemented multiple tty support.
Karoly Lorentey <lorentey@elte.hu>
parents:
53225
diff
changeset
|
27 #include <sys/file.h> |
83644 | 28 |
81817
e6ed0991129c
Include unistd.h only if HAVE_UNISTD_H.
Richard M. Stallman <rms@gnu.org>
parents:
81811
diff
changeset
|
29 #ifdef HAVE_UNISTD_H |
81811
c10410a3aa36
Include unistd.h for ttyname, used in handle_one_term_event.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
81308
diff
changeset
|
30 #include <unistd.h> |
81817
e6ed0991129c
Include unistd.h only if HAVE_UNISTD_H.
Richard M. Stallman <rms@gnu.org>
parents:
81811
diff
changeset
|
31 #endif |
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39914
diff
changeset
|
32 |
83086
347ce3d5d79c
Fix dropping of the controlling tty on Solaris (Dan Nicolaescu).
Karoly Lorentey <lorentey@elte.hu>
parents:
83082
diff
changeset
|
33 #include <signal.h> |
86288
145903731829
* term.c: Include stdarg.h.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
85614
diff
changeset
|
34 #include <stdarg.h> |
105669
68dd71358159
* alloc.c: Do not define struct catchtag.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
105661
diff
changeset
|
35 #include <setjmp.h> |
83032
b8237c556f0e
Fix the case when emacsclient is run on Emacs's controlling tty.
Karoly Lorentey <lorentey@elte.hu>
parents:
83027
diff
changeset
|
36 |
53229
33c3c7c16e13
lib-src/emacsclient.c: Implemented --here option (open a new Emacs tty). Needs more work.
Karoly Lorentey <lorentey@elte.hu>
parents:
53227
diff
changeset
|
37 #include "lisp.h" |
253 | 38 #include "termchar.h" |
39 #include "termopts.h" | |
88391
1953d0d56cd7
Include "buffer.h" and "character.h".
Kenichi Handa <handa@m17n.org>
parents:
43073
diff
changeset
|
40 #include "buffer.h" |
1953d0d56cd7
Include "buffer.h" and "character.h".
Kenichi Handa <handa@m17n.org>
parents:
43073
diff
changeset
|
41 #include "character.h" |
17046
84b0e9794a87
Include charset.h and coding.h.
Karl Heuer <kwzh@gnu.org>
parents:
16894
diff
changeset
|
42 #include "charset.h" |
84b0e9794a87
Include charset.h and coding.h.
Karl Heuer <kwzh@gnu.org>
parents:
16894
diff
changeset
|
43 #include "coding.h" |
90638 | 44 #include "composite.h" |
31102
6a0caa788013
Include keyboard.h before frame.h.
Andrew Innes <andrewi@gnu.org>
parents:
30848
diff
changeset
|
45 #include "keyboard.h" |
765 | 46 #include "frame.h" |
253 | 47 #include "disptab.h" |
48 #include "termhooks.h" | |
21514 | 49 #include "dispextern.h" |
25002 | 50 #include "window.h" |
39697
0b986bb45526
Include keymap.h.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
39682
diff
changeset
|
51 #include "keymap.h" |
76627
c53e7d075f1a
Include blockinput.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
75348
diff
changeset
|
52 #include "blockinput.h" |
83086
347ce3d5d79c
Fix dropping of the controlling tty on Solaris (Dan Nicolaescu).
Karoly Lorentey <lorentey@elte.hu>
parents:
83082
diff
changeset
|
53 #include "syssignal.h" |
347ce3d5d79c
Fix dropping of the controlling tty on Solaris (Dan Nicolaescu).
Karoly Lorentey <lorentey@elte.hu>
parents:
83082
diff
changeset
|
54 #include "systty.h" |
81308
16181a4d64bf
Include intervals.h to declare Fget_text_property.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
81127
diff
changeset
|
55 #include "intervals.h" |
97658 | 56 #ifdef MSDOS |
57 #include "msdos.h" | |
58 static int been_here = -1; | |
59 #endif | |
25002 | 60 |
33672
a94852aef620
Don't try to include termcap.h; see comment there.
Gerd Moellmann <gerd@gnu.org>
parents:
33006
diff
changeset
|
61 /* For now, don't try to include termcap.h. On some systems, |
a94852aef620
Don't try to include termcap.h; see comment there.
Gerd Moellmann <gerd@gnu.org>
parents:
33006
diff
changeset
|
62 configure finds a non-standard termcap.h that the main build |
a94852aef620
Don't try to include termcap.h; see comment there.
Gerd Moellmann <gerd@gnu.org>
parents:
33006
diff
changeset
|
63 won't find. */ |
109100
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108235
diff
changeset
|
64 extern void tputs (const char *, int, int (*)(int)); |
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108235
diff
changeset
|
65 extern int tgetent (char *, const char *); |
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108235
diff
changeset
|
66 extern int tgetflag (char *id); |
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108235
diff
changeset
|
67 extern int tgetnum (char *id); |
25727
46fe79182b54
(OUTPUT_IF, OUTPUT1_IF): Use do-while.
Gerd Moellmann <gerd@gnu.org>
parents:
25675
diff
changeset
|
68 |
111689
b9616a1b568d
Move extern declarations from term.c to lisp.h.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
111651
diff
changeset
|
69 char *tparam (char *, char *, int, int, ...); |
b9616a1b568d
Move extern declarations from term.c to lisp.h.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
111651
diff
changeset
|
70 |
b9616a1b568d
Move extern declarations from term.c to lisp.h.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
111651
diff
changeset
|
71 extern char *tgetstr (char *, char **); |
b9616a1b568d
Move extern declarations from term.c to lisp.h.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
111651
diff
changeset
|
72 |
21827
87c7f4bd99da
Include cm.h after dispextern.h to avoid name conflicts
Geoff Voelker <voelker@cs.washington.edu>
parents:
21624
diff
changeset
|
73 #include "cm.h" |
21514 | 74 #ifdef HAVE_X_WINDOWS |
75 #include "xterm.h" | |
76 #endif | |
8898 | 77 |
53226
dd3018b4785b
Implemented multiple tty support.
Karoly Lorentey <lorentey@elte.hu>
parents:
53225
diff
changeset
|
78 #ifndef O_RDWR |
dd3018b4785b
Implemented multiple tty support.
Karoly Lorentey <lorentey@elte.hu>
parents:
53225
diff
changeset
|
79 #define O_RDWR 2 |
dd3018b4785b
Implemented multiple tty support.
Karoly Lorentey <lorentey@elte.hu>
parents:
53225
diff
changeset
|
80 #endif |
dd3018b4785b
Implemented multiple tty support.
Karoly Lorentey <lorentey@elte.hu>
parents:
53225
diff
changeset
|
81 |
83032
b8237c556f0e
Fix the case when emacsclient is run on Emacs's controlling tty.
Karoly Lorentey <lorentey@elte.hu>
parents:
83027
diff
changeset
|
82 #ifndef O_NOCTTY |
b8237c556f0e
Fix the case when emacsclient is run on Emacs's controlling tty.
Karoly Lorentey <lorentey@elte.hu>
parents:
83027
diff
changeset
|
83 #define O_NOCTTY 0 |
b8237c556f0e
Fix the case when emacsclient is run on Emacs's controlling tty.
Karoly Lorentey <lorentey@elte.hu>
parents:
83027
diff
changeset
|
84 #endif |
b8237c556f0e
Fix the case when emacsclient is run on Emacs's controlling tty.
Karoly Lorentey <lorentey@elte.hu>
parents:
83027
diff
changeset
|
85 |
84779
67e430e38471
(DEV_TTY): New macro. Provide a definition for MS-Windows.
Eli Zaretskii <eliz@gnu.org>
parents:
84769
diff
changeset
|
86 /* The name of the default console device. */ |
67e430e38471
(DEV_TTY): New macro. Provide a definition for MS-Windows.
Eli Zaretskii <eliz@gnu.org>
parents:
84769
diff
changeset
|
87 #ifdef WINDOWSNT |
67e430e38471
(DEV_TTY): New macro. Provide a definition for MS-Windows.
Eli Zaretskii <eliz@gnu.org>
parents:
84769
diff
changeset
|
88 #define DEV_TTY "CONOUT$" |
67e430e38471
(DEV_TTY): New macro. Provide a definition for MS-Windows.
Eli Zaretskii <eliz@gnu.org>
parents:
84769
diff
changeset
|
89 #else |
67e430e38471
(DEV_TTY): New macro. Provide a definition for MS-Windows.
Eli Zaretskii <eliz@gnu.org>
parents:
84769
diff
changeset
|
90 #define DEV_TTY "/dev/tty" |
67e430e38471
(DEV_TTY): New macro. Provide a definition for MS-Windows.
Eli Zaretskii <eliz@gnu.org>
parents:
84769
diff
changeset
|
91 #endif |
67e430e38471
(DEV_TTY): New macro. Provide a definition for MS-Windows.
Eli Zaretskii <eliz@gnu.org>
parents:
84769
diff
changeset
|
92 |
109100
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108235
diff
changeset
|
93 static void tty_set_scroll_region (struct frame *f, int start, int stop); |
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108235
diff
changeset
|
94 static void turn_on_face (struct frame *, int face_id); |
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108235
diff
changeset
|
95 static void turn_off_face (struct frame *, int face_id); |
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108235
diff
changeset
|
96 static void tty_show_cursor (struct tty_display_info *); |
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108235
diff
changeset
|
97 static void tty_hide_cursor (struct tty_display_info *); |
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108235
diff
changeset
|
98 static void tty_background_highlight (struct tty_display_info *tty); |
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108235
diff
changeset
|
99 static void clear_tty_hooks (struct terminal *terminal); |
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108235
diff
changeset
|
100 static void set_tty_hooks (struct terminal *terminal); |
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108235
diff
changeset
|
101 static void dissociate_if_controlling_tty (int fd); |
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108235
diff
changeset
|
102 static void delete_tty (struct terminal *); |
109375
3e07e13fe30a
Convert maybe_fatal to standard C.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
109179
diff
changeset
|
103 static void maybe_fatal (int must_succeed, struct terminal *terminal, |
3e07e13fe30a
Convert maybe_fatal to standard C.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
109179
diff
changeset
|
104 const char *str1, const char *str2, ...) NO_RETURN; |
3e07e13fe30a
Convert maybe_fatal to standard C.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
109179
diff
changeset
|
105 static void vfatal (const char *str, va_list ap) NO_RETURN; |
3e07e13fe30a
Convert maybe_fatal to standard C.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
109179
diff
changeset
|
106 |
25002 | 107 |
53232
22aaf1e5fbe6
Full support for multiple terminal I/O (with some rough edges).
Karoly Lorentey <lorentey@elte.hu>
parents:
53229
diff
changeset
|
108 #define OUTPUT(tty, a) \ |
22aaf1e5fbe6
Full support for multiple terminal I/O (with some rough edges).
Karoly Lorentey <lorentey@elte.hu>
parents:
53229
diff
changeset
|
109 emacs_tputs ((tty), a, \ |
22aaf1e5fbe6
Full support for multiple terminal I/O (with some rough edges).
Karoly Lorentey <lorentey@elte.hu>
parents:
53229
diff
changeset
|
110 (int) (FRAME_LINES (XFRAME (selected_frame)) \ |
22aaf1e5fbe6
Full support for multiple terminal I/O (with some rough edges).
Karoly Lorentey <lorentey@elte.hu>
parents:
53229
diff
changeset
|
111 - curY (tty)), \ |
22aaf1e5fbe6
Full support for multiple terminal I/O (with some rough edges).
Karoly Lorentey <lorentey@elte.hu>
parents:
53229
diff
changeset
|
112 cmputc) |
22aaf1e5fbe6
Full support for multiple terminal I/O (with some rough edges).
Karoly Lorentey <lorentey@elte.hu>
parents:
53229
diff
changeset
|
113 |
53226
dd3018b4785b
Implemented multiple tty support.
Karoly Lorentey <lorentey@elte.hu>
parents:
53225
diff
changeset
|
114 #define OUTPUT1(tty, a) emacs_tputs ((tty), a, 1, cmputc) |
dd3018b4785b
Implemented multiple tty support.
Karoly Lorentey <lorentey@elte.hu>
parents:
53225
diff
changeset
|
115 #define OUTPUTL(tty, a, lines) emacs_tputs ((tty), a, lines, cmputc) |
dd3018b4785b
Implemented multiple tty support.
Karoly Lorentey <lorentey@elte.hu>
parents:
53225
diff
changeset
|
116 |
dd3018b4785b
Implemented multiple tty support.
Karoly Lorentey <lorentey@elte.hu>
parents:
53225
diff
changeset
|
117 #define OUTPUT_IF(tty, a) \ |
53232
22aaf1e5fbe6
Full support for multiple terminal I/O (with some rough edges).
Karoly Lorentey <lorentey@elte.hu>
parents:
53229
diff
changeset
|
118 do { \ |
22aaf1e5fbe6
Full support for multiple terminal I/O (with some rough edges).
Karoly Lorentey <lorentey@elte.hu>
parents:
53229
diff
changeset
|
119 if (a) \ |
22aaf1e5fbe6
Full support for multiple terminal I/O (with some rough edges).
Karoly Lorentey <lorentey@elte.hu>
parents:
53229
diff
changeset
|
120 emacs_tputs ((tty), a, \ |
22aaf1e5fbe6
Full support for multiple terminal I/O (with some rough edges).
Karoly Lorentey <lorentey@elte.hu>
parents:
53229
diff
changeset
|
121 (int) (FRAME_LINES (XFRAME (selected_frame)) \ |
22aaf1e5fbe6
Full support for multiple terminal I/O (with some rough edges).
Karoly Lorentey <lorentey@elte.hu>
parents:
53229
diff
changeset
|
122 - curY (tty) ), \ |
22aaf1e5fbe6
Full support for multiple terminal I/O (with some rough edges).
Karoly Lorentey <lorentey@elte.hu>
parents:
53229
diff
changeset
|
123 cmputc); \ |
22aaf1e5fbe6
Full support for multiple terminal I/O (with some rough edges).
Karoly Lorentey <lorentey@elte.hu>
parents:
53229
diff
changeset
|
124 } while (0) |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
46559
diff
changeset
|
125 |
53226
dd3018b4785b
Implemented multiple tty support.
Karoly Lorentey <lorentey@elte.hu>
parents:
53225
diff
changeset
|
126 #define OUTPUT1_IF(tty, a) do { if (a) emacs_tputs ((tty), a, 1, cmputc); } while (0) |
15974
61249a8fe735
(Vring_bell_function): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
15094
diff
changeset
|
127 |
67935
52bbc53dbce1
(visible_cursor): New boolean var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66238
diff
changeset
|
128 /* If true, use "vs", otherwise use "ve" to make the cursor visible. */ |
52bbc53dbce1
(visible_cursor): New boolean var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66238
diff
changeset
|
129 |
52bbc53dbce1
(visible_cursor): New boolean var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66238
diff
changeset
|
130 static int visible_cursor; |
52bbc53dbce1
(visible_cursor): New boolean var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66238
diff
changeset
|
131 |
54428
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
132 /* Display space properties */ |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
133 |
83065
a871be7b26a5
Implemented suspending of emacsclient frames.
Karoly Lorentey <lorentey@elte.hu>
parents:
83050
diff
changeset
|
134 /* Functions to call after suspending a tty. */ |
83891
dab32bc3edc8
* server.el (server-start, server-unload-hook): Undo previous
Dan Nicolaescu <dann@ics.uci.edu>
parents:
83889
diff
changeset
|
135 Lisp_Object Vsuspend_tty_functions; |
83065
a871be7b26a5
Implemented suspending of emacsclient frames.
Karoly Lorentey <lorentey@elte.hu>
parents:
83050
diff
changeset
|
136 |
a871be7b26a5
Implemented suspending of emacsclient frames.
Karoly Lorentey <lorentey@elte.hu>
parents:
83050
diff
changeset
|
137 /* Functions to call after resuming a tty. */ |
83891
dab32bc3edc8
* server.el (server-start, server-unload-hook): Undo previous
Dan Nicolaescu <dann@ics.uci.edu>
parents:
83889
diff
changeset
|
138 Lisp_Object Vresume_tty_functions; |
83065
a871be7b26a5
Implemented suspending of emacsclient frames.
Karoly Lorentey <lorentey@elte.hu>
parents:
83050
diff
changeset
|
139 |
83004
7900111db01c
Converted display hooks to be display-local. Plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
82995
diff
changeset
|
140 /* Chain of all tty device parameters. */ |
82989
f3845715a5f6
Separate frame-local, tty-dependent parameters from tty-local parameters.
Karoly Lorentey <lorentey@elte.hu>
parents:
82988
diff
changeset
|
141 struct tty_display_info *tty_list; |
253 | 142 |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
143 /* Nonzero means no need to redraw the entire frame on resuming a |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
144 suspended Emacs. This is useful on terminals with multiple |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
145 pages, where one page is used for Emacs and another for all |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
146 else. */ |
253 | 147 int no_redraw_on_reenter; |
148 | |
28465
113efc964095
(TN_no_color_video): New variable.
Gerd Moellmann <gerd@gnu.org>
parents:
28200
diff
changeset
|
149 /* Meaning of bits in no_color_video. Each bit set means that the |
113efc964095
(TN_no_color_video): New variable.
Gerd Moellmann <gerd@gnu.org>
parents:
28200
diff
changeset
|
150 corresponding attribute cannot be combined with colors. */ |
113efc964095
(TN_no_color_video): New variable.
Gerd Moellmann <gerd@gnu.org>
parents:
28200
diff
changeset
|
151 |
113efc964095
(TN_no_color_video): New variable.
Gerd Moellmann <gerd@gnu.org>
parents:
28200
diff
changeset
|
152 enum no_color_bit |
113efc964095
(TN_no_color_video): New variable.
Gerd Moellmann <gerd@gnu.org>
parents:
28200
diff
changeset
|
153 { |
113efc964095
(TN_no_color_video): New variable.
Gerd Moellmann <gerd@gnu.org>
parents:
28200
diff
changeset
|
154 NC_STANDOUT = 1 << 0, |
113efc964095
(TN_no_color_video): New variable.
Gerd Moellmann <gerd@gnu.org>
parents:
28200
diff
changeset
|
155 NC_UNDERLINE = 1 << 1, |
113efc964095
(TN_no_color_video): New variable.
Gerd Moellmann <gerd@gnu.org>
parents:
28200
diff
changeset
|
156 NC_REVERSE = 1 << 2, |
113efc964095
(TN_no_color_video): New variable.
Gerd Moellmann <gerd@gnu.org>
parents:
28200
diff
changeset
|
157 NC_BLINK = 1 << 3, |
113efc964095
(TN_no_color_video): New variable.
Gerd Moellmann <gerd@gnu.org>
parents:
28200
diff
changeset
|
158 NC_DIM = 1 << 4, |
113efc964095
(TN_no_color_video): New variable.
Gerd Moellmann <gerd@gnu.org>
parents:
28200
diff
changeset
|
159 NC_BOLD = 1 << 5, |
113efc964095
(TN_no_color_video): New variable.
Gerd Moellmann <gerd@gnu.org>
parents:
28200
diff
changeset
|
160 NC_INVIS = 1 << 6, |
113efc964095
(TN_no_color_video): New variable.
Gerd Moellmann <gerd@gnu.org>
parents:
28200
diff
changeset
|
161 NC_PROTECT = 1 << 7, |
113efc964095
(TN_no_color_video): New variable.
Gerd Moellmann <gerd@gnu.org>
parents:
28200
diff
changeset
|
162 NC_ALT_CHARSET = 1 << 8 |
113efc964095
(TN_no_color_video): New variable.
Gerd Moellmann <gerd@gnu.org>
parents:
28200
diff
changeset
|
163 }; |
113efc964095
(TN_no_color_video): New variable.
Gerd Moellmann <gerd@gnu.org>
parents:
28200
diff
changeset
|
164 |
253 | 165 /* internal state */ |
166 | |
10771
d564078d10c6
(calculate_costs): Update max_frame_height, max_frame_width.
Richard M. Stallman <rms@gnu.org>
parents:
10481
diff
changeset
|
167 /* The largest frame width in any call to calculate_costs. */ |
25002 | 168 |
51212
332134065648
Make (some) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50227
diff
changeset
|
169 int max_frame_cols; |
25002 | 170 |
10771
d564078d10c6
(calculate_costs): Update max_frame_height, max_frame_width.
Richard M. Stallman <rms@gnu.org>
parents:
10481
diff
changeset
|
171 /* The largest frame height in any call to calculate_costs. */ |
25002 | 172 |
51212
332134065648
Make (some) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50227
diff
changeset
|
173 int max_frame_lines; |
10771
d564078d10c6
(calculate_costs): Update max_frame_height, max_frame_width.
Richard M. Stallman <rms@gnu.org>
parents:
10481
diff
changeset
|
174 |
83032
b8237c556f0e
Fix the case when emacsclient is run on Emacs's controlling tty.
Karoly Lorentey <lorentey@elte.hu>
parents:
83027
diff
changeset
|
175 /* Non-zero if we have dropped our controlling tty and therefore |
b8237c556f0e
Fix the case when emacsclient is run on Emacs's controlling tty.
Karoly Lorentey <lorentey@elte.hu>
parents:
83027
diff
changeset
|
176 should not open a frame on stdout. */ |
b8237c556f0e
Fix the case when emacsclient is run on Emacs's controlling tty.
Karoly Lorentey <lorentey@elte.hu>
parents:
83027
diff
changeset
|
177 static int no_controlling_tty; |
253 | 178 |
6752
f9236145bad7
(system_uses_terminfo): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
6652
diff
changeset
|
179 /* Provided for lisp packages. */ |
25002 | 180 |
6752
f9236145bad7
(system_uses_terminfo): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
6652
diff
changeset
|
181 static int system_uses_terminfo; |
f9236145bad7
(system_uses_terminfo): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
6652
diff
changeset
|
182 |
253 | 183 |
9797
05d9072c5a38
(term_init) [WINDOWSNT]: Do some Windows-specific
Richard M. Stallman <rms@gnu.org>
parents:
9658
diff
changeset
|
184 |
80994
62b6aa7f8c37
Use HAVE_GPM instead of HAVE_GPM_H.
Nick Roberts <nickrob@snap.net.nz>
parents:
80979
diff
changeset
|
185 #ifdef HAVE_GPM |
80979
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
186 #include <sys/fcntl.h> |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
187 |
84768
53194ec05789
* termhooks.h (term_gpm): Delete. Use gpm_tty's NULLness instead.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
84692
diff
changeset
|
188 /* The device for which we have enabled gpm support (or NULL). */ |
53194ec05789
* termhooks.h (term_gpm): Delete. Use gpm_tty's NULLness instead.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
84692
diff
changeset
|
189 struct tty_display_info *gpm_tty = NULL; |
83622 | 190 |
111343
f168d8610334
Reflect mouse-highlight redesign in term.c
Eli Zaretskii <eliz@gnu.org>
parents:
110688
diff
changeset
|
191 /* Last recorded mouse coordinates. */ |
80979
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
192 static int last_mouse_x, last_mouse_y; |
80994
62b6aa7f8c37
Use HAVE_GPM instead of HAVE_GPM_H.
Nick Roberts <nickrob@snap.net.nz>
parents:
80979
diff
changeset
|
193 #endif /* HAVE_GPM */ |
80979
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
194 |
83025
c66ebcc29777
Removed %T in mode-line-format. Trivial documentation changes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83021
diff
changeset
|
195 /* Ring the bell on a tty. */ |
c66ebcc29777
Removed %T in mode-line-format. Trivial documentation changes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83021
diff
changeset
|
196 |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
197 static void |
83100
4970ad4995f5
Eliminated updating_frame.
Karoly Lorentey <lorentey@elte.hu>
parents:
83095
diff
changeset
|
198 tty_ring_bell (struct frame *f) |
253 | 199 { |
83008
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
200 struct tty_display_info *tty = FRAME_TTY (f); |
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
201 |
83167
69ebc75cb461
Implemented display ids for multiple emacsclients on the same tty. Plus assorted bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83161
diff
changeset
|
202 if (tty->output) |
15974
61249a8fe735
(Vring_bell_function): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
15094
diff
changeset
|
203 { |
83167
69ebc75cb461
Implemented display ids for multiple emacsclients on the same tty. Plus assorted bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83161
diff
changeset
|
204 OUTPUT (tty, (tty->TS_visible_bell && visible_bell |
69ebc75cb461
Implemented display ids for multiple emacsclients on the same tty. Plus assorted bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83161
diff
changeset
|
205 ? tty->TS_visible_bell |
69ebc75cb461
Implemented display ids for multiple emacsclients on the same tty. Plus assorted bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83161
diff
changeset
|
206 : tty->TS_bell)); |
69ebc75cb461
Implemented display ids for multiple emacsclients on the same tty. Plus assorted bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83161
diff
changeset
|
207 fflush (tty->output); |
15974
61249a8fe735
(Vring_bell_function): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
15094
diff
changeset
|
208 } |
253 | 209 } |
210 | |
83025
c66ebcc29777
Removed %T in mode-line-format. Trivial documentation changes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83021
diff
changeset
|
211 /* Set up termcap modes for Emacs. */ |
253 | 212 |
21514 | 213 void |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
214 tty_set_terminal_modes (struct terminal *terminal) |
253 | 215 { |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
216 struct tty_display_info *tty = terminal->display_info.tty; |
92281
4bf10a5a835d
(encode_terminal_code, produce_special_glyphs): Likewise.
Kim F. Storm <storm@cua.dk>
parents:
92237
diff
changeset
|
217 |
83065
a871be7b26a5
Implemented suspending of emacsclient frames.
Karoly Lorentey <lorentey@elte.hu>
parents:
83050
diff
changeset
|
218 if (tty->output) |
253 | 219 { |
83353
532e0a9335a9
Merged in changes from CVS trunk. Plus added lisp/term tweaks.
Karoly Lorentey <lorentey@elte.hu>
diff
changeset
|
220 if (tty->TS_termcap_modes) |
532e0a9335a9
Merged in changes from CVS trunk. Plus added lisp/term tweaks.
Karoly Lorentey <lorentey@elte.hu>
diff
changeset
|
221 OUTPUT (tty, tty->TS_termcap_modes); |
64773
aebbf7125281
(set_terminal_modes): If no TS_termcap_modes string,
Richard M. Stallman <rms@gnu.org>
parents:
64770
diff
changeset
|
222 else |
83353
532e0a9335a9
Merged in changes from CVS trunk. Plus added lisp/term tweaks.
Karoly Lorentey <lorentey@elte.hu>
diff
changeset
|
223 { |
532e0a9335a9
Merged in changes from CVS trunk. Plus added lisp/term tweaks.
Karoly Lorentey <lorentey@elte.hu>
diff
changeset
|
224 /* Output enough newlines to scroll all the old screen contents |
532e0a9335a9
Merged in changes from CVS trunk. Plus added lisp/term tweaks.
Karoly Lorentey <lorentey@elte.hu>
diff
changeset
|
225 off the screen, so it won't be overwritten and lost. */ |
532e0a9335a9
Merged in changes from CVS trunk. Plus added lisp/term tweaks.
Karoly Lorentey <lorentey@elte.hu>
diff
changeset
|
226 int i; |
83382
7a3090aca393
Fix hardcoded stdout usage in term.c. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83370
diff
changeset
|
227 current_tty = tty; |
83353
532e0a9335a9
Merged in changes from CVS trunk. Plus added lisp/term tweaks.
Karoly Lorentey <lorentey@elte.hu>
diff
changeset
|
228 for (i = 0; i < FRAME_LINES (XFRAME (selected_frame)); i++) |
83382
7a3090aca393
Fix hardcoded stdout usage in term.c. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83370
diff
changeset
|
229 cmputc ('\n'); |
83353
532e0a9335a9
Merged in changes from CVS trunk. Plus added lisp/term tweaks.
Karoly Lorentey <lorentey@elte.hu>
diff
changeset
|
230 } |
532e0a9335a9
Merged in changes from CVS trunk. Plus added lisp/term tweaks.
Karoly Lorentey <lorentey@elte.hu>
diff
changeset
|
231 |
83450
c69d44922688
Merged from miles@gnu.org--gnu-2005 (patch 682)
Karoly Lorentey <lorentey@elte.hu>
diff
changeset
|
232 OUTPUT_IF (tty, visible_cursor ? tty->TS_cursor_visible : tty->TS_cursor_normal); |
83065
a871be7b26a5
Implemented suspending of emacsclient frames.
Karoly Lorentey <lorentey@elte.hu>
parents:
83050
diff
changeset
|
233 OUTPUT_IF (tty, tty->TS_keypad_mode); |
a871be7b26a5
Implemented suspending of emacsclient frames.
Karoly Lorentey <lorentey@elte.hu>
parents:
83050
diff
changeset
|
234 losecursor (tty); |
83330
233c9974025b
Fix the original cause of the "arrow keys don't work on screen" bug.
Karoly Lorentey <lorentey@elte.hu>
parents:
83323
diff
changeset
|
235 fflush (tty->output); |
253 | 236 } |
237 } | |
238 | |
83025
c66ebcc29777
Removed %T in mode-line-format. Trivial documentation changes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83021
diff
changeset
|
239 /* Reset termcap modes before exiting Emacs. */ |
253 | 240 |
21514 | 241 void |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
242 tty_reset_terminal_modes (struct terminal *terminal) |
253 | 243 { |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
244 struct tty_display_info *tty = terminal->display_info.tty; |
83065
a871be7b26a5
Implemented suspending of emacsclient frames.
Karoly Lorentey <lorentey@elte.hu>
parents:
83050
diff
changeset
|
245 |
a871be7b26a5
Implemented suspending of emacsclient frames.
Karoly Lorentey <lorentey@elte.hu>
parents:
83050
diff
changeset
|
246 if (tty->output) |
253 | 247 { |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
248 tty_turn_off_highlight (tty); |
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
249 tty_turn_off_insert (tty); |
83065
a871be7b26a5
Implemented suspending of emacsclient frames.
Karoly Lorentey <lorentey@elte.hu>
parents:
83050
diff
changeset
|
250 OUTPUT_IF (tty, tty->TS_end_keypad_mode); |
a871be7b26a5
Implemented suspending of emacsclient frames.
Karoly Lorentey <lorentey@elte.hu>
parents:
83050
diff
changeset
|
251 OUTPUT_IF (tty, tty->TS_cursor_normal); |
a871be7b26a5
Implemented suspending of emacsclient frames.
Karoly Lorentey <lorentey@elte.hu>
parents:
83050
diff
changeset
|
252 OUTPUT_IF (tty, tty->TS_end_termcap_modes); |
a871be7b26a5
Implemented suspending of emacsclient frames.
Karoly Lorentey <lorentey@elte.hu>
parents:
83050
diff
changeset
|
253 OUTPUT_IF (tty, tty->TS_orig_pair); |
37959
b53edc686faf
(tty_cursor_hidden): New variable.
Gerd Moellmann <gerd@gnu.org>
parents:
37499
diff
changeset
|
254 /* Output raw CR so kernel can track the cursor hpos. */ |
83065
a871be7b26a5
Implemented suspending of emacsclient frames.
Karoly Lorentey <lorentey@elte.hu>
parents:
83050
diff
changeset
|
255 current_tty = tty; |
37959
b53edc686faf
(tty_cursor_hidden): New variable.
Gerd Moellmann <gerd@gnu.org>
parents:
37499
diff
changeset
|
256 cmputc ('\r'); |
83330
233c9974025b
Fix the original cause of the "arrow keys don't work on screen" bug.
Karoly Lorentey <lorentey@elte.hu>
parents:
83323
diff
changeset
|
257 fflush (tty->output); |
253 | 258 } |
259 } | |
260 | |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
261 /* Flag the end of a display update on a termcap terminal. */ |
83025
c66ebcc29777
Removed %T in mode-line-format. Trivial documentation changes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83021
diff
changeset
|
262 |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
263 static void |
83008
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
264 tty_update_end (struct frame *f) |
253 | 265 { |
83008
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
266 struct tty_display_info *tty = FRAME_TTY (f); |
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
267 |
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
268 if (!XWINDOW (selected_window)->cursor_off_p) |
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
269 tty_show_cursor (tty); |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
270 tty_turn_off_insert (tty); |
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
271 tty_background_highlight (tty); |
253 | 272 } |
273 | |
83025
c66ebcc29777
Removed %T in mode-line-format. Trivial documentation changes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83021
diff
changeset
|
274 /* The implementation of set_terminal_window for termcap frames. */ |
c66ebcc29777
Removed %T in mode-line-format. Trivial documentation changes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83021
diff
changeset
|
275 |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
276 static void |
83100
4970ad4995f5
Eliminated updating_frame.
Karoly Lorentey <lorentey@elte.hu>
parents:
83095
diff
changeset
|
277 tty_set_terminal_window (struct frame *f, int size) |
83008
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
278 { |
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
279 struct tty_display_info *tty = FRAME_TTY (f); |
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
280 |
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
281 tty->specified_window = size ? size : FRAME_LINES (f); |
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
282 if (FRAME_SCROLL_REGION_OK (f)) |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
283 tty_set_scroll_region (f, 0, tty->specified_window); |
253 | 284 } |
285 | |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
286 static void |
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
287 tty_set_scroll_region (struct frame *f, int start, int stop) |
253 | 288 { |
289 char *buf; | |
82989
f3845715a5f6
Separate frame-local, tty-dependent parameters from tty-local parameters.
Karoly Lorentey <lorentey@elte.hu>
parents:
82988
diff
changeset
|
290 struct tty_display_info *tty = FRAME_TTY (f); |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
46559
diff
changeset
|
291 |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
292 if (tty->TS_set_scroll_region) |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
293 buf = tparam (tty->TS_set_scroll_region, 0, 0, start, stop - 1); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
294 else if (tty->TS_set_scroll_region_1) |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
295 buf = tparam (tty->TS_set_scroll_region_1, 0, 0, |
53227
1595c5e1e9bb
Updating_frame vs. selected_frame in term.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
53226
diff
changeset
|
296 FRAME_LINES (f), start, |
1595c5e1e9bb
Updating_frame vs. selected_frame in term.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
53226
diff
changeset
|
297 FRAME_LINES (f) - stop, |
1595c5e1e9bb
Updating_frame vs. selected_frame in term.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
53226
diff
changeset
|
298 FRAME_LINES (f)); |
253 | 299 else |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
300 buf = tparam (tty->TS_set_window, 0, 0, start, 0, stop, FRAME_COLS (f)); |
53227
1595c5e1e9bb
Updating_frame vs. selected_frame in term.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
53226
diff
changeset
|
301 |
53232
22aaf1e5fbe6
Full support for multiple terminal I/O (with some rough edges).
Karoly Lorentey <lorentey@elte.hu>
parents:
53229
diff
changeset
|
302 OUTPUT (tty, buf); |
2439
b6c62e4abf59
Put interrupt input blocking in a separate file from xterm.h.
Jim Blandy <jimb@redhat.com>
parents:
2243
diff
changeset
|
303 xfree (buf); |
53232
22aaf1e5fbe6
Full support for multiple terminal I/O (with some rough edges).
Karoly Lorentey <lorentey@elte.hu>
parents:
53229
diff
changeset
|
304 losecursor (tty); |
253 | 305 } |
37959
b53edc686faf
(tty_cursor_hidden): New variable.
Gerd Moellmann <gerd@gnu.org>
parents:
37499
diff
changeset
|
306 |
253 | 307 |
37959
b53edc686faf
(tty_cursor_hidden): New variable.
Gerd Moellmann <gerd@gnu.org>
parents:
37499
diff
changeset
|
308 static void |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
309 tty_turn_on_insert (struct tty_display_info *tty) |
253 | 310 { |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
311 if (!tty->insert_mode) |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
312 OUTPUT (tty, tty->TS_insert_mode); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
313 tty->insert_mode = 1; |
253 | 314 } |
315 | |
21514 | 316 void |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
317 tty_turn_off_insert (struct tty_display_info *tty) |
253 | 318 { |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
319 if (tty->insert_mode) |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
320 OUTPUT (tty, tty->TS_end_insert_mode); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
321 tty->insert_mode = 0; |
253 | 322 } |
323 | |
40086
050b19294988
(TN_standout_width, TF_xs, TN_magic_cookie_glitch_ul): Variables removed.
Miles Bader <miles@gnu.org>
parents:
40081
diff
changeset
|
324 /* Handle highlighting. */ |
253 | 325 |
21514 | 326 void |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
327 tty_turn_off_highlight (struct tty_display_info *tty) |
253 | 328 { |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
329 if (tty->standout_mode) |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
330 OUTPUT_IF (tty, tty->TS_end_standout_mode); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
331 tty->standout_mode = 0; |
253 | 332 } |
333 | |
37959
b53edc686faf
(tty_cursor_hidden): New variable.
Gerd Moellmann <gerd@gnu.org>
parents:
37499
diff
changeset
|
334 static void |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
335 tty_turn_on_highlight (struct tty_display_info *tty) |
253 | 336 { |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
337 if (!tty->standout_mode) |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
338 OUTPUT_IF (tty, tty->TS_standout_mode); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
339 tty->standout_mode = 1; |
253 | 340 } |
341 | |
37477
6a7ab4d2c7b3
(toggle_highlight): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
35448
diff
changeset
|
342 static void |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
343 tty_toggle_highlight (struct tty_display_info *tty) |
37477
6a7ab4d2c7b3
(toggle_highlight): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
35448
diff
changeset
|
344 { |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
345 if (tty->standout_mode) |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
346 tty_turn_off_highlight (tty); |
37477
6a7ab4d2c7b3
(toggle_highlight): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
35448
diff
changeset
|
347 else |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
348 tty_turn_on_highlight (tty); |
37477
6a7ab4d2c7b3
(toggle_highlight): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
35448
diff
changeset
|
349 } |
6a7ab4d2c7b3
(toggle_highlight): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
35448
diff
changeset
|
350 |
25002 | 351 |
352 /* Make cursor invisible. */ | |
353 | |
354 static void | |
82989
f3845715a5f6
Separate frame-local, tty-dependent parameters from tty-local parameters.
Karoly Lorentey <lorentey@elte.hu>
parents:
82988
diff
changeset
|
355 tty_hide_cursor (struct tty_display_info *tty) |
25002 | 356 { |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
357 if (tty->cursor_hidden == 0) |
37959
b53edc686faf
(tty_cursor_hidden): New variable.
Gerd Moellmann <gerd@gnu.org>
parents:
37499
diff
changeset
|
358 { |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
359 tty->cursor_hidden = 1; |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
360 OUTPUT_IF (tty, tty->TS_cursor_invisible); |
37959
b53edc686faf
(tty_cursor_hidden): New variable.
Gerd Moellmann <gerd@gnu.org>
parents:
37499
diff
changeset
|
361 } |
25002 | 362 } |
363 | |
364 | |
365 /* Ensure that cursor is visible. */ | |
366 | |
367 static void | |
82989
f3845715a5f6
Separate frame-local, tty-dependent parameters from tty-local parameters.
Karoly Lorentey <lorentey@elte.hu>
parents:
82988
diff
changeset
|
368 tty_show_cursor (struct tty_display_info *tty) |
25002 | 369 { |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
370 if (tty->cursor_hidden) |
37959
b53edc686faf
(tty_cursor_hidden): New variable.
Gerd Moellmann <gerd@gnu.org>
parents:
37499
diff
changeset
|
371 { |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
372 tty->cursor_hidden = 0; |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
373 OUTPUT_IF (tty, tty->TS_cursor_normal); |
67935
52bbc53dbce1
(visible_cursor): New boolean var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66238
diff
changeset
|
374 if (visible_cursor) |
83450
c69d44922688
Merged from miles@gnu.org--gnu-2005 (patch 682)
Karoly Lorentey <lorentey@elte.hu>
diff
changeset
|
375 OUTPUT_IF (tty, tty->TS_cursor_visible); |
37959
b53edc686faf
(tty_cursor_hidden): New variable.
Gerd Moellmann <gerd@gnu.org>
parents:
37499
diff
changeset
|
376 } |
25002 | 377 } |
378 | |
379 | |
253 | 380 /* Set standout mode to the state it should be in for |
381 empty space inside windows. What this is, | |
382 depends on the user option inverse-video. */ | |
383 | |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
384 static void |
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
385 tty_background_highlight (struct tty_display_info *tty) |
253 | 386 { |
387 if (inverse_video) | |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
388 tty_turn_on_highlight (tty); |
253 | 389 else |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
390 tty_turn_off_highlight (tty); |
253 | 391 } |
392 | |
393 /* Set standout mode to the mode specified for the text to be output. */ | |
394 | |
21514 | 395 static void |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
396 tty_highlight_if_desired (struct tty_display_info *tty) |
253 | 397 { |
40081
07d7dbf18784
(reassert_line_highlight_hook, change_line_highlight_hook): Variables removed.
Miles Bader <miles@gnu.org>
parents:
39988
diff
changeset
|
398 if (inverse_video) |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
399 tty_turn_on_highlight (tty); |
40081
07d7dbf18784
(reassert_line_highlight_hook, change_line_highlight_hook): Variables removed.
Miles Bader <miles@gnu.org>
parents:
39988
diff
changeset
|
400 else |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
401 tty_turn_off_highlight (tty); |
253 | 402 } |
403 | |
404 | |
25002 | 405 /* Move cursor to row/column position VPOS/HPOS. HPOS/VPOS are |
406 frame-relative coordinates. */ | |
253 | 407 |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
408 static void |
83100
4970ad4995f5
Eliminated updating_frame.
Karoly Lorentey <lorentey@elte.hu>
parents:
83095
diff
changeset
|
409 tty_cursor_to (struct frame *f, int vpos, int hpos) |
253 | 410 { |
83008
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
411 struct tty_display_info *tty = FRAME_TTY (f); |
253 | 412 |
12071
f85f23c50344
(cursor_to, clear_to_end_of_line_raw):
Karl Heuer <kwzh@gnu.org>
parents:
11530
diff
changeset
|
413 /* Detect the case where we are called from reset_sys_modes |
f85f23c50344
(cursor_to, clear_to_end_of_line_raw):
Karl Heuer <kwzh@gnu.org>
parents:
11530
diff
changeset
|
414 and the costs have never been calculated. Do nothing. */ |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
415 if (! tty->costs_set) |
12071
f85f23c50344
(cursor_to, clear_to_end_of_line_raw):
Karl Heuer <kwzh@gnu.org>
parents:
11530
diff
changeset
|
416 return; |
f85f23c50344
(cursor_to, clear_to_end_of_line_raw):
Karl Heuer <kwzh@gnu.org>
parents:
11530
diff
changeset
|
417 |
53232
22aaf1e5fbe6
Full support for multiple terminal I/O (with some rough edges).
Karoly Lorentey <lorentey@elte.hu>
parents:
53229
diff
changeset
|
418 if (curY (tty) == vpos |
22aaf1e5fbe6
Full support for multiple terminal I/O (with some rough edges).
Karoly Lorentey <lorentey@elte.hu>
parents:
53229
diff
changeset
|
419 && curX (tty) == hpos) |
253 | 420 return; |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
421 if (!tty->TF_standout_motion) |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
422 tty_background_highlight (tty); |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
423 if (!tty->TF_insmode_motion) |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
424 tty_turn_off_insert (tty); |
53232
22aaf1e5fbe6
Full support for multiple terminal I/O (with some rough edges).
Karoly Lorentey <lorentey@elte.hu>
parents:
53229
diff
changeset
|
425 cmgoto (tty, vpos, hpos); |
253 | 426 } |
427 | |
428 /* Similar but don't take any account of the wasted characters. */ | |
429 | |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
430 static void |
83100
4970ad4995f5
Eliminated updating_frame.
Karoly Lorentey <lorentey@elte.hu>
parents:
83095
diff
changeset
|
431 tty_raw_cursor_to (struct frame *f, int row, int col) |
253 | 432 { |
83008
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
433 struct tty_display_info *tty = FRAME_TTY (f); |
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
434 |
53232
22aaf1e5fbe6
Full support for multiple terminal I/O (with some rough edges).
Karoly Lorentey <lorentey@elte.hu>
parents:
53229
diff
changeset
|
435 if (curY (tty) == row |
22aaf1e5fbe6
Full support for multiple terminal I/O (with some rough edges).
Karoly Lorentey <lorentey@elte.hu>
parents:
53229
diff
changeset
|
436 && curX (tty) == col) |
253 | 437 return; |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
438 if (!tty->TF_standout_motion) |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
439 tty_background_highlight (tty); |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
440 if (!tty->TF_insmode_motion) |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
441 tty_turn_off_insert (tty); |
53232
22aaf1e5fbe6
Full support for multiple terminal I/O (with some rough edges).
Karoly Lorentey <lorentey@elte.hu>
parents:
53229
diff
changeset
|
442 cmgoto (tty, row, col); |
253 | 443 } |
444 | |
445 /* Erase operations */ | |
446 | |
83025
c66ebcc29777
Removed %T in mode-line-format. Trivial documentation changes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83021
diff
changeset
|
447 /* Clear from cursor to end of frame on a termcap device. */ |
c66ebcc29777
Removed %T in mode-line-format. Trivial documentation changes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83021
diff
changeset
|
448 |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
449 static void |
83100
4970ad4995f5
Eliminated updating_frame.
Karoly Lorentey <lorentey@elte.hu>
parents:
83095
diff
changeset
|
450 tty_clear_to_end (struct frame *f) |
253 | 451 { |
452 register int i; | |
83008
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
453 struct tty_display_info *tty = FRAME_TTY (f); |
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
454 |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
455 if (tty->TS_clr_to_bottom) |
253 | 456 { |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
457 tty_background_highlight (tty); |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
458 OUTPUT (tty, tty->TS_clr_to_bottom); |
253 | 459 } |
460 else | |
461 { | |
53232
22aaf1e5fbe6
Full support for multiple terminal I/O (with some rough edges).
Karoly Lorentey <lorentey@elte.hu>
parents:
53229
diff
changeset
|
462 for (i = curY (tty); i < FRAME_LINES (f); i++) |
253 | 463 { |
83100
4970ad4995f5
Eliminated updating_frame.
Karoly Lorentey <lorentey@elte.hu>
parents:
83095
diff
changeset
|
464 cursor_to (f, i, 0); |
4970ad4995f5
Eliminated updating_frame.
Karoly Lorentey <lorentey@elte.hu>
parents:
83095
diff
changeset
|
465 clear_end_of_line (f, FRAME_COLS (f)); |
253 | 466 } |
467 } | |
468 } | |
469 | |
83025
c66ebcc29777
Removed %T in mode-line-format. Trivial documentation changes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83021
diff
changeset
|
470 /* Clear an entire termcap frame. */ |
c66ebcc29777
Removed %T in mode-line-format. Trivial documentation changes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83021
diff
changeset
|
471 |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
472 static void |
83100
4970ad4995f5
Eliminated updating_frame.
Karoly Lorentey <lorentey@elte.hu>
parents:
83095
diff
changeset
|
473 tty_clear_frame (struct frame *f) |
253 | 474 { |
83008
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
475 struct tty_display_info *tty = FRAME_TTY (f); |
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
476 |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
477 if (tty->TS_clr_frame) |
253 | 478 { |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
479 tty_background_highlight (tty); |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
480 OUTPUT (tty, tty->TS_clr_frame); |
53232
22aaf1e5fbe6
Full support for multiple terminal I/O (with some rough edges).
Karoly Lorentey <lorentey@elte.hu>
parents:
53229
diff
changeset
|
481 cmat (tty, 0, 0); |
253 | 482 } |
483 else | |
484 { | |
83100
4970ad4995f5
Eliminated updating_frame.
Karoly Lorentey <lorentey@elte.hu>
parents:
83095
diff
changeset
|
485 cursor_to (f, 0, 0); |
4970ad4995f5
Eliminated updating_frame.
Karoly Lorentey <lorentey@elte.hu>
parents:
83095
diff
changeset
|
486 clear_to_end (f); |
253 | 487 } |
488 } | |
489 | |
83025
c66ebcc29777
Removed %T in mode-line-format. Trivial documentation changes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83021
diff
changeset
|
490 /* An implementation of clear_end_of_line for termcap frames. |
253 | 491 |
492 Note that the cursor may be moved, on terminals lacking a `ce' string. */ | |
493 | |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
494 static void |
83100
4970ad4995f5
Eliminated updating_frame.
Karoly Lorentey <lorentey@elte.hu>
parents:
83095
diff
changeset
|
495 tty_clear_end_of_line (struct frame *f, int first_unused_hpos) |
253 | 496 { |
497 register int i; | |
83008
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
498 struct tty_display_info *tty = FRAME_TTY (f); |
253 | 499 |
12071
f85f23c50344
(cursor_to, clear_to_end_of_line_raw):
Karl Heuer <kwzh@gnu.org>
parents:
11530
diff
changeset
|
500 /* Detect the case where we are called from reset_sys_modes |
f85f23c50344
(cursor_to, clear_to_end_of_line_raw):
Karl Heuer <kwzh@gnu.org>
parents:
11530
diff
changeset
|
501 and the costs have never been calculated. Do nothing. */ |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
502 if (! tty->costs_set) |
12071
f85f23c50344
(cursor_to, clear_to_end_of_line_raw):
Karl Heuer <kwzh@gnu.org>
parents:
11530
diff
changeset
|
503 return; |
f85f23c50344
(cursor_to, clear_to_end_of_line_raw):
Karl Heuer <kwzh@gnu.org>
parents:
11530
diff
changeset
|
504 |
53232
22aaf1e5fbe6
Full support for multiple terminal I/O (with some rough edges).
Karoly Lorentey <lorentey@elte.hu>
parents:
53229
diff
changeset
|
505 if (curX (tty) >= first_unused_hpos) |
253 | 506 return; |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
507 tty_background_highlight (tty); |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
508 if (tty->TS_clr_line) |
253 | 509 { |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
510 OUTPUT1 (tty, tty->TS_clr_line); |
253 | 511 } |
512 else | |
513 { /* have to do it the hard way */ | |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
514 tty_turn_off_insert (tty); |
253 | 515 |
25002 | 516 /* Do not write in last row last col with Auto-wrap on. */ |
53232
22aaf1e5fbe6
Full support for multiple terminal I/O (with some rough edges).
Karoly Lorentey <lorentey@elte.hu>
parents:
53229
diff
changeset
|
517 if (AutoWrap (tty) |
53341 | 518 && curY (tty) == FrameRows (tty) - 1 |
519 && first_unused_hpos == FrameCols (tty)) | |
253 | 520 first_unused_hpos--; |
521 | |
53232
22aaf1e5fbe6
Full support for multiple terminal I/O (with some rough edges).
Karoly Lorentey <lorentey@elte.hu>
parents:
53229
diff
changeset
|
522 for (i = curX (tty); i < first_unused_hpos; i++) |
253 | 523 { |
83065
a871be7b26a5
Implemented suspending of emacsclient frames.
Karoly Lorentey <lorentey@elte.hu>
parents:
83050
diff
changeset
|
524 if (tty->termscript) |
a871be7b26a5
Implemented suspending of emacsclient frames.
Karoly Lorentey <lorentey@elte.hu>
parents:
83050
diff
changeset
|
525 fputc (' ', tty->termscript); |
a871be7b26a5
Implemented suspending of emacsclient frames.
Karoly Lorentey <lorentey@elte.hu>
parents:
83050
diff
changeset
|
526 fputc (' ', tty->output); |
253 | 527 } |
53232
22aaf1e5fbe6
Full support for multiple terminal I/O (with some rough edges).
Karoly Lorentey <lorentey@elte.hu>
parents:
53229
diff
changeset
|
528 cmplus (tty, first_unused_hpos - curX (tty)); |
253 | 529 } |
530 } | |
531 | |
90059
9b0bfaaaec9c
Sync to the change in HEAD on 2004-11-30.
Kenichi Handa <handa@m17n.org>
parents:
90054
diff
changeset
|
532 /* Buffers to store the source and result of code conversion for terminal. */ |
9b0bfaaaec9c
Sync to the change in HEAD on 2004-11-30.
Kenichi Handa <handa@m17n.org>
parents:
90054
diff
changeset
|
533 static unsigned char *encode_terminal_src; |
9b0bfaaaec9c
Sync to the change in HEAD on 2004-11-30.
Kenichi Handa <handa@m17n.org>
parents:
90054
diff
changeset
|
534 static unsigned char *encode_terminal_dst; |
9b0bfaaaec9c
Sync to the change in HEAD on 2004-11-30.
Kenichi Handa <handa@m17n.org>
parents:
90054
diff
changeset
|
535 /* Allocated sizes of the above buffers. */ |
9b0bfaaaec9c
Sync to the change in HEAD on 2004-11-30.
Kenichi Handa <handa@m17n.org>
parents:
90054
diff
changeset
|
536 static int encode_terminal_src_size; |
9b0bfaaaec9c
Sync to the change in HEAD on 2004-11-30.
Kenichi Handa <handa@m17n.org>
parents:
90054
diff
changeset
|
537 static int encode_terminal_dst_size; |
58638
67bea14002c3
(encode_terminal_buf, encode_terminal_bufsize): New
Kenichi Handa <handa@m17n.org>
parents:
54428
diff
changeset
|
538 |
67bea14002c3
(encode_terminal_buf, encode_terminal_bufsize): New
Kenichi Handa <handa@m17n.org>
parents:
54428
diff
changeset
|
539 /* Encode SRC_LEN glyphs starting at SRC to terminal output codes. |
67bea14002c3
(encode_terminal_buf, encode_terminal_bufsize): New
Kenichi Handa <handa@m17n.org>
parents:
54428
diff
changeset
|
540 Set CODING->produced to the byte-length of the resulting byte |
67bea14002c3
(encode_terminal_buf, encode_terminal_bufsize): New
Kenichi Handa <handa@m17n.org>
parents:
54428
diff
changeset
|
541 sequence, and return a pointer to that byte sequence. */ |
67bea14002c3
(encode_terminal_buf, encode_terminal_bufsize): New
Kenichi Handa <handa@m17n.org>
parents:
54428
diff
changeset
|
542 |
58701
24c51e9d8586
(encode_terminal_code): Don't make it "static".
Kenichi Handa <handa@m17n.org>
parents:
58638
diff
changeset
|
543 unsigned char * |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109108
diff
changeset
|
544 encode_terminal_code (struct glyph *src, int src_len, struct coding_system *coding) |
17046
84b0e9794a87
Include charset.h and coding.h.
Karl Heuer <kwzh@gnu.org>
parents:
16894
diff
changeset
|
545 { |
66238
d3f5aa0f18c4
(encode_terminal_code): Remove unused var src_start.
Kim F. Storm <storm@cua.dk>
parents:
65795
diff
changeset
|
546 struct glyph *src_end = src + src_len; |
58638
67bea14002c3
(encode_terminal_buf, encode_terminal_bufsize): New
Kenichi Handa <handa@m17n.org>
parents:
54428
diff
changeset
|
547 unsigned char *buf; |
67bea14002c3
(encode_terminal_buf, encode_terminal_bufsize): New
Kenichi Handa <handa@m17n.org>
parents:
54428
diff
changeset
|
548 int nchars, nbytes, required; |
17046
84b0e9794a87
Include charset.h and coding.h.
Karl Heuer <kwzh@gnu.org>
parents:
16894
diff
changeset
|
549 register int tlen = GLYPH_TABLE_LENGTH; |
84b0e9794a87
Include charset.h and coding.h.
Karl Heuer <kwzh@gnu.org>
parents:
16894
diff
changeset
|
550 register Lisp_Object *tbase = GLYPH_TABLE_BASE; |
90059
9b0bfaaaec9c
Sync to the change in HEAD on 2004-11-30.
Kenichi Handa <handa@m17n.org>
parents:
90054
diff
changeset
|
551 Lisp_Object charset_list; |
58638
67bea14002c3
(encode_terminal_buf, encode_terminal_bufsize): New
Kenichi Handa <handa@m17n.org>
parents:
54428
diff
changeset
|
552 |
67bea14002c3
(encode_terminal_buf, encode_terminal_bufsize): New
Kenichi Handa <handa@m17n.org>
parents:
54428
diff
changeset
|
553 /* Allocate sufficient size of buffer to store all characters in |
67bea14002c3
(encode_terminal_buf, encode_terminal_bufsize): New
Kenichi Handa <handa@m17n.org>
parents:
54428
diff
changeset
|
554 multibyte-form. But, it may be enlarged on demand if |
90638 | 555 Vglyph_table contains a string or a composite glyph is |
556 encountered. */ | |
58638
67bea14002c3
(encode_terminal_buf, encode_terminal_bufsize): New
Kenichi Handa <handa@m17n.org>
parents:
54428
diff
changeset
|
557 required = MAX_MULTIBYTE_LENGTH * src_len; |
90059
9b0bfaaaec9c
Sync to the change in HEAD on 2004-11-30.
Kenichi Handa <handa@m17n.org>
parents:
90054
diff
changeset
|
558 if (encode_terminal_src_size < required) |
58638
67bea14002c3
(encode_terminal_buf, encode_terminal_bufsize): New
Kenichi Handa <handa@m17n.org>
parents:
54428
diff
changeset
|
559 { |
100276
8f4457a692c5
(encode_terminal_code): Free any previous memory blocks
Chong Yidong <cyd@stupidchicken.com>
parents:
98367
diff
changeset
|
560 if (encode_terminal_src) |
8f4457a692c5
(encode_terminal_code): Free any previous memory blocks
Chong Yidong <cyd@stupidchicken.com>
parents:
98367
diff
changeset
|
561 encode_terminal_src = xrealloc (encode_terminal_src, required); |
8f4457a692c5
(encode_terminal_code): Free any previous memory blocks
Chong Yidong <cyd@stupidchicken.com>
parents:
98367
diff
changeset
|
562 else |
90059
9b0bfaaaec9c
Sync to the change in HEAD on 2004-11-30.
Kenichi Handa <handa@m17n.org>
parents:
90054
diff
changeset
|
563 encode_terminal_src = xmalloc (required); |
9b0bfaaaec9c
Sync to the change in HEAD on 2004-11-30.
Kenichi Handa <handa@m17n.org>
parents:
90054
diff
changeset
|
564 encode_terminal_src_size = required; |
58638
67bea14002c3
(encode_terminal_buf, encode_terminal_bufsize): New
Kenichi Handa <handa@m17n.org>
parents:
54428
diff
changeset
|
565 } |
67bea14002c3
(encode_terminal_buf, encode_terminal_bufsize): New
Kenichi Handa <handa@m17n.org>
parents:
54428
diff
changeset
|
566 |
90059
9b0bfaaaec9c
Sync to the change in HEAD on 2004-11-30.
Kenichi Handa <handa@m17n.org>
parents:
90054
diff
changeset
|
567 charset_list = coding_charset_list (coding); |
9b0bfaaaec9c
Sync to the change in HEAD on 2004-11-30.
Kenichi Handa <handa@m17n.org>
parents:
90054
diff
changeset
|
568 |
9b0bfaaaec9c
Sync to the change in HEAD on 2004-11-30.
Kenichi Handa <handa@m17n.org>
parents:
90054
diff
changeset
|
569 buf = encode_terminal_src; |
58638
67bea14002c3
(encode_terminal_buf, encode_terminal_bufsize): New
Kenichi Handa <handa@m17n.org>
parents:
54428
diff
changeset
|
570 nchars = 0; |
17046
84b0e9794a87
Include charset.h and coding.h.
Karl Heuer <kwzh@gnu.org>
parents:
16894
diff
changeset
|
571 while (src < src_end) |
84b0e9794a87
Include charset.h and coding.h.
Karl Heuer <kwzh@gnu.org>
parents:
16894
diff
changeset
|
572 { |
90638 | 573 if (src->type == COMPOSITE_GLYPH) |
574 { | |
97830
62a07e57ef40
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
97720
diff
changeset
|
575 struct composition *cmp; |
62a07e57ef40
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
97720
diff
changeset
|
576 Lisp_Object gstring; |
90638 | 577 int i; |
578 | |
579 nbytes = buf - encode_terminal_src; | |
97830
62a07e57ef40
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
97720
diff
changeset
|
580 if (src->u.cmp.automatic) |
62a07e57ef40
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
97720
diff
changeset
|
581 { |
62a07e57ef40
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
97720
diff
changeset
|
582 gstring = composition_gstring_from_id (src->u.cmp.id); |
110598
ee58b36ab139
Remove restriction on the number of glyphs in one composition.
Kenichi Handa <handa@m17n.org>
parents:
110357
diff
changeset
|
583 required = src->slice.cmp.to + 1 - src->slice.cmp.from; |
97830
62a07e57ef40
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
97720
diff
changeset
|
584 } |
62a07e57ef40
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
97720
diff
changeset
|
585 else |
62a07e57ef40
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
97720
diff
changeset
|
586 { |
62a07e57ef40
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
97720
diff
changeset
|
587 cmp = composition_table[src->u.cmp.id]; |
62a07e57ef40
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
97720
diff
changeset
|
588 required = MAX_MULTIBYTE_LENGTH * cmp->glyph_len; |
62a07e57ef40
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
97720
diff
changeset
|
589 } |
90638 | 590 |
591 if (encode_terminal_src_size < nbytes + required) | |
592 { | |
593 encode_terminal_src_size = nbytes + required; | |
594 encode_terminal_src = xrealloc (encode_terminal_src, | |
595 encode_terminal_src_size); | |
596 buf = encode_terminal_src + nbytes; | |
597 } | |
598 | |
97830
62a07e57ef40
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
97720
diff
changeset
|
599 if (src->u.cmp.automatic) |
110598
ee58b36ab139
Remove restriction on the number of glyphs in one composition.
Kenichi Handa <handa@m17n.org>
parents:
110357
diff
changeset
|
600 for (i = src->slice.cmp.from; i <= src->slice.cmp.to; i++) |
97830
62a07e57ef40
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
97720
diff
changeset
|
601 { |
62a07e57ef40
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
97720
diff
changeset
|
602 Lisp_Object g = LGSTRING_GLYPH (gstring, i); |
62a07e57ef40
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
97720
diff
changeset
|
603 int c = LGLYPH_CHAR (g); |
62a07e57ef40
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
97720
diff
changeset
|
604 |
62a07e57ef40
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
97720
diff
changeset
|
605 if (! char_charset (c, charset_list, NULL)) |
101774
d4f9e4244d5a
(encode_terminal_code): Fix handling of composition.
Kenichi Handa <handa@m17n.org>
parents:
101690
diff
changeset
|
606 c = '?'; |
97830
62a07e57ef40
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
97720
diff
changeset
|
607 buf += CHAR_STRING (c, buf); |
62a07e57ef40
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
97720
diff
changeset
|
608 nchars++; |
62a07e57ef40
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
97720
diff
changeset
|
609 } |
62a07e57ef40
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
97720
diff
changeset
|
610 else |
62a07e57ef40
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
97720
diff
changeset
|
611 for (i = 0; i < cmp->glyph_len; i++) |
62a07e57ef40
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
97720
diff
changeset
|
612 { |
62a07e57ef40
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
97720
diff
changeset
|
613 int c = COMPOSITION_GLYPH (cmp, i); |
62a07e57ef40
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
97720
diff
changeset
|
614 |
101774
d4f9e4244d5a
(encode_terminal_code): Fix handling of composition.
Kenichi Handa <handa@m17n.org>
parents:
101690
diff
changeset
|
615 if (c == '\t') |
d4f9e4244d5a
(encode_terminal_code): Fix handling of composition.
Kenichi Handa <handa@m17n.org>
parents:
101690
diff
changeset
|
616 continue; |
d4f9e4244d5a
(encode_terminal_code): Fix handling of composition.
Kenichi Handa <handa@m17n.org>
parents:
101690
diff
changeset
|
617 if (char_charset (c, charset_list, NULL)) |
d4f9e4244d5a
(encode_terminal_code): Fix handling of composition.
Kenichi Handa <handa@m17n.org>
parents:
101690
diff
changeset
|
618 { |
d4f9e4244d5a
(encode_terminal_code): Fix handling of composition.
Kenichi Handa <handa@m17n.org>
parents:
101690
diff
changeset
|
619 if (CHAR_WIDTH (c) == 0 |
d4f9e4244d5a
(encode_terminal_code): Fix handling of composition.
Kenichi Handa <handa@m17n.org>
parents:
101690
diff
changeset
|
620 && i > 0 && COMPOSITION_GLYPH (cmp, i - 1) == '\t') |
d4f9e4244d5a
(encode_terminal_code): Fix handling of composition.
Kenichi Handa <handa@m17n.org>
parents:
101690
diff
changeset
|
621 /* Should be left-padded */ |
d4f9e4244d5a
(encode_terminal_code): Fix handling of composition.
Kenichi Handa <handa@m17n.org>
parents:
101690
diff
changeset
|
622 { |
d4f9e4244d5a
(encode_terminal_code): Fix handling of composition.
Kenichi Handa <handa@m17n.org>
parents:
101690
diff
changeset
|
623 buf += CHAR_STRING (' ', buf); |
d4f9e4244d5a
(encode_terminal_code): Fix handling of composition.
Kenichi Handa <handa@m17n.org>
parents:
101690
diff
changeset
|
624 nchars++; |
d4f9e4244d5a
(encode_terminal_code): Fix handling of composition.
Kenichi Handa <handa@m17n.org>
parents:
101690
diff
changeset
|
625 } |
d4f9e4244d5a
(encode_terminal_code): Fix handling of composition.
Kenichi Handa <handa@m17n.org>
parents:
101690
diff
changeset
|
626 } |
d4f9e4244d5a
(encode_terminal_code): Fix handling of composition.
Kenichi Handa <handa@m17n.org>
parents:
101690
diff
changeset
|
627 else |
d4f9e4244d5a
(encode_terminal_code): Fix handling of composition.
Kenichi Handa <handa@m17n.org>
parents:
101690
diff
changeset
|
628 c = '?'; |
97830
62a07e57ef40
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
97720
diff
changeset
|
629 buf += CHAR_STRING (c, buf); |
62a07e57ef40
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
97720
diff
changeset
|
630 nchars++; |
62a07e57ef40
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
97720
diff
changeset
|
631 } |
90638 | 632 } |
17046
84b0e9794a87
Include charset.h and coding.h.
Karl Heuer <kwzh@gnu.org>
parents:
16894
diff
changeset
|
633 /* We must skip glyphs to be padded for a wide character. */ |
90638 | 634 else if (! CHAR_GLYPH_PADDING_P (*src)) |
17046
84b0e9794a87
Include charset.h and coding.h.
Karl Heuer <kwzh@gnu.org>
parents:
16894
diff
changeset
|
635 { |
92281
4bf10a5a835d
(encode_terminal_code, produce_special_glyphs): Likewise.
Kim F. Storm <storm@cua.dk>
parents:
92237
diff
changeset
|
636 GLYPH g; |
90059
9b0bfaaaec9c
Sync to the change in HEAD on 2004-11-30.
Kenichi Handa <handa@m17n.org>
parents:
90054
diff
changeset
|
637 int c; |
9b0bfaaaec9c
Sync to the change in HEAD on 2004-11-30.
Kenichi Handa <handa@m17n.org>
parents:
90054
diff
changeset
|
638 Lisp_Object string; |
9b0bfaaaec9c
Sync to the change in HEAD on 2004-11-30.
Kenichi Handa <handa@m17n.org>
parents:
90054
diff
changeset
|
639 |
9b0bfaaaec9c
Sync to the change in HEAD on 2004-11-30.
Kenichi Handa <handa@m17n.org>
parents:
90054
diff
changeset
|
640 string = Qnil; |
92281
4bf10a5a835d
(encode_terminal_code, produce_special_glyphs): Likewise.
Kim F. Storm <storm@cua.dk>
parents:
92237
diff
changeset
|
641 SET_GLYPH_FROM_CHAR_GLYPH (g, src[0]); |
4bf10a5a835d
(encode_terminal_code, produce_special_glyphs): Likewise.
Kim F. Storm <storm@cua.dk>
parents:
92237
diff
changeset
|
642 |
4bf10a5a835d
(encode_terminal_code, produce_special_glyphs): Likewise.
Kim F. Storm <storm@cua.dk>
parents:
92237
diff
changeset
|
643 if (GLYPH_INVALID_P (g) || GLYPH_SIMPLE_P (tbase, tlen, g)) |
17046
84b0e9794a87
Include charset.h and coding.h.
Karl Heuer <kwzh@gnu.org>
parents:
16894
diff
changeset
|
644 { |
98367
758774f72111
(encode_terminal_code): Fix a typo in a comment.
Eli Zaretskii <eliz@gnu.org>
parents:
98155
diff
changeset
|
645 /* This glyph doesn't have an entry in Vglyph_table. */ |
90059
9b0bfaaaec9c
Sync to the change in HEAD on 2004-11-30.
Kenichi Handa <handa@m17n.org>
parents:
90054
diff
changeset
|
646 c = src->u.ch; |
26871
aaf45e665b14
(encode_terminal_code): Delete codes for a composite
Kenichi Handa <handa@m17n.org>
parents:
26425
diff
changeset
|
647 } |
17046
84b0e9794a87
Include charset.h and coding.h.
Karl Heuer <kwzh@gnu.org>
parents:
16894
diff
changeset
|
648 else |
19035 | 649 { |
26999
5d0057e6170e
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
26902
diff
changeset
|
650 /* This glyph has an entry in Vglyph_table, |
5d0057e6170e
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
26902
diff
changeset
|
651 so process any alias before testing for simpleness. */ |
5d0057e6170e
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
26902
diff
changeset
|
652 GLYPH_FOLLOW_ALIASES (tbase, tlen, g); |
5d0057e6170e
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
26902
diff
changeset
|
653 |
5d0057e6170e
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
26902
diff
changeset
|
654 if (GLYPH_SIMPLE_P (tbase, tlen, g)) |
89563
d193de460ec1
(terminal_encode_buffer, terminal_encode_buf_size): New
Kenichi Handa <handa@m17n.org>
parents:
89483
diff
changeset
|
655 /* We set the multi-byte form of a character in G |
d193de460ec1
(terminal_encode_buffer, terminal_encode_buf_size): New
Kenichi Handa <handa@m17n.org>
parents:
89483
diff
changeset
|
656 (that should be an ASCII character) at WORKBUF. */ |
92281
4bf10a5a835d
(encode_terminal_code, produce_special_glyphs): Likewise.
Kim F. Storm <storm@cua.dk>
parents:
92237
diff
changeset
|
657 c = GLYPH_CHAR (g); |
26999
5d0057e6170e
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
26902
diff
changeset
|
658 else |
89563
d193de460ec1
(terminal_encode_buffer, terminal_encode_buf_size): New
Kenichi Handa <handa@m17n.org>
parents:
89483
diff
changeset
|
659 /* We have a string in Vglyph_table. */ |
92281
4bf10a5a835d
(encode_terminal_code, produce_special_glyphs): Likewise.
Kim F. Storm <storm@cua.dk>
parents:
92237
diff
changeset
|
660 string = tbase[GLYPH_CHAR (g)]; |
19035 | 661 } |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
46559
diff
changeset
|
662 |
89563
d193de460ec1
(terminal_encode_buffer, terminal_encode_buf_size): New
Kenichi Handa <handa@m17n.org>
parents:
89483
diff
changeset
|
663 if (NILP (string)) |
d193de460ec1
(terminal_encode_buffer, terminal_encode_buf_size): New
Kenichi Handa <handa@m17n.org>
parents:
89483
diff
changeset
|
664 { |
90638 | 665 nbytes = buf - encode_terminal_src; |
666 if (encode_terminal_src_size < nbytes + MAX_MULTIBYTE_LENGTH) | |
26999
5d0057e6170e
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
26902
diff
changeset
|
667 { |
90638 | 668 encode_terminal_src_size = nbytes + MAX_MULTIBYTE_LENGTH; |
669 encode_terminal_src = xrealloc (encode_terminal_src, | |
670 encode_terminal_src_size); | |
671 buf = encode_terminal_src + nbytes; | |
672 } | |
110131
cca2a663ef92
Fix handling of 8-bit characters in a display table.
Kenichi Handa <handa@m17n.org>
parents:
110128
diff
changeset
|
673 if (CHAR_BYTE8_P (c) |
cca2a663ef92
Fix handling of 8-bit characters in a display table.
Kenichi Handa <handa@m17n.org>
parents:
110128
diff
changeset
|
674 || char_charset (c, charset_list, NULL)) |
26999
5d0057e6170e
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
26902
diff
changeset
|
675 { |
89566
86c0ff434620
(encode_terminal_code): Don't handle glyph-table. Check
Kenichi Handa <handa@m17n.org>
parents:
89563
diff
changeset
|
676 /* Store the multibyte form of C at BUF. */ |
86c0ff434620
(encode_terminal_code): Don't handle glyph-table. Check
Kenichi Handa <handa@m17n.org>
parents:
89563
diff
changeset
|
677 buf += CHAR_STRING (c, buf); |
58638
67bea14002c3
(encode_terminal_buf, encode_terminal_bufsize): New
Kenichi Handa <handa@m17n.org>
parents:
54428
diff
changeset
|
678 nchars++; |
26999
5d0057e6170e
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
26902
diff
changeset
|
679 } |
5d0057e6170e
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
26902
diff
changeset
|
680 else |
5d0057e6170e
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
26902
diff
changeset
|
681 { |
90059
9b0bfaaaec9c
Sync to the change in HEAD on 2004-11-30.
Kenichi Handa <handa@m17n.org>
parents:
90054
diff
changeset
|
682 /* C is not encodable. */ |
9b0bfaaaec9c
Sync to the change in HEAD on 2004-11-30.
Kenichi Handa <handa@m17n.org>
parents:
90054
diff
changeset
|
683 *buf++ = '?'; |
9b0bfaaaec9c
Sync to the change in HEAD on 2004-11-30.
Kenichi Handa <handa@m17n.org>
parents:
90054
diff
changeset
|
684 nchars++; |
9b0bfaaaec9c
Sync to the change in HEAD on 2004-11-30.
Kenichi Handa <handa@m17n.org>
parents:
90054
diff
changeset
|
685 while (src + 1 < src_end && CHAR_GLYPH_PADDING_P (src[1])) |
58638
67bea14002c3
(encode_terminal_buf, encode_terminal_bufsize): New
Kenichi Handa <handa@m17n.org>
parents:
54428
diff
changeset
|
686 { |
90059
9b0bfaaaec9c
Sync to the change in HEAD on 2004-11-30.
Kenichi Handa <handa@m17n.org>
parents:
90054
diff
changeset
|
687 *buf++ = '?'; |
9b0bfaaaec9c
Sync to the change in HEAD on 2004-11-30.
Kenichi Handa <handa@m17n.org>
parents:
90054
diff
changeset
|
688 nchars++; |
9b0bfaaaec9c
Sync to the change in HEAD on 2004-11-30.
Kenichi Handa <handa@m17n.org>
parents:
90054
diff
changeset
|
689 src++; |
58638
67bea14002c3
(encode_terminal_buf, encode_terminal_bufsize): New
Kenichi Handa <handa@m17n.org>
parents:
54428
diff
changeset
|
690 } |
26999
5d0057e6170e
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
26902
diff
changeset
|
691 } |
19035 | 692 } |
89563
d193de460ec1
(terminal_encode_buffer, terminal_encode_buf_size): New
Kenichi Handa <handa@m17n.org>
parents:
89483
diff
changeset
|
693 else |
23338
0a2b76b09162
(encode_terminal_code): Handle raw 8-bit codes correctly.
Kenichi Handa <handa@m17n.org>
parents:
23066
diff
changeset
|
694 { |
109559
4325622babca
Remove declarations and unused variables.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
109516
diff
changeset
|
695 unsigned char *p = SDATA (string); |
90059
9b0bfaaaec9c
Sync to the change in HEAD on 2004-11-30.
Kenichi Handa <handa@m17n.org>
parents:
90054
diff
changeset
|
696 |
9b0bfaaaec9c
Sync to the change in HEAD on 2004-11-30.
Kenichi Handa <handa@m17n.org>
parents:
90054
diff
changeset
|
697 if (! STRING_MULTIBYTE (string)) |
9b0bfaaaec9c
Sync to the change in HEAD on 2004-11-30.
Kenichi Handa <handa@m17n.org>
parents:
90054
diff
changeset
|
698 string = string_to_multibyte (string); |
9b0bfaaaec9c
Sync to the change in HEAD on 2004-11-30.
Kenichi Handa <handa@m17n.org>
parents:
90054
diff
changeset
|
699 nbytes = buf - encode_terminal_src; |
90072
cb67264d6096
Revision: miles@gnu.org--gnu-2005/emacs--unicode--0--patch-2
Miles Bader <miles@gnu.org>
diff
changeset
|
700 if (encode_terminal_src_size < nbytes + SBYTES (string)) |
89563
d193de460ec1
(terminal_encode_buffer, terminal_encode_buf_size): New
Kenichi Handa <handa@m17n.org>
parents:
89483
diff
changeset
|
701 { |
90059
9b0bfaaaec9c
Sync to the change in HEAD on 2004-11-30.
Kenichi Handa <handa@m17n.org>
parents:
90054
diff
changeset
|
702 encode_terminal_src_size = nbytes + SBYTES (string); |
9b0bfaaaec9c
Sync to the change in HEAD on 2004-11-30.
Kenichi Handa <handa@m17n.org>
parents:
90054
diff
changeset
|
703 encode_terminal_src = xrealloc (encode_terminal_src, |
9b0bfaaaec9c
Sync to the change in HEAD on 2004-11-30.
Kenichi Handa <handa@m17n.org>
parents:
90054
diff
changeset
|
704 encode_terminal_src_size); |
9b0bfaaaec9c
Sync to the change in HEAD on 2004-11-30.
Kenichi Handa <handa@m17n.org>
parents:
90054
diff
changeset
|
705 buf = encode_terminal_src + nbytes; |
89563
d193de460ec1
(terminal_encode_buffer, terminal_encode_buf_size): New
Kenichi Handa <handa@m17n.org>
parents:
89483
diff
changeset
|
706 } |
109165
750db9f3e6d8
Replace bcopy, bzero, bcmp by memcpy, memmove, memset, memcmp
Andreas Schwab <schwab@linux-m68k.org>
parents:
109144
diff
changeset
|
707 memcpy (buf, SDATA (string), SBYTES (string)); |
90059
9b0bfaaaec9c
Sync to the change in HEAD on 2004-11-30.
Kenichi Handa <handa@m17n.org>
parents:
90054
diff
changeset
|
708 buf += SBYTES (string); |
9b0bfaaaec9c
Sync to the change in HEAD on 2004-11-30.
Kenichi Handa <handa@m17n.org>
parents:
90054
diff
changeset
|
709 nchars += SCHARS (string); |
23338
0a2b76b09162
(encode_terminal_code): Handle raw 8-bit codes correctly.
Kenichi Handa <handa@m17n.org>
parents:
23066
diff
changeset
|
710 } |
17046
84b0e9794a87
Include charset.h and coding.h.
Karl Heuer <kwzh@gnu.org>
parents:
16894
diff
changeset
|
711 } |
84b0e9794a87
Include charset.h and coding.h.
Karl Heuer <kwzh@gnu.org>
parents:
16894
diff
changeset
|
712 src++; |
84b0e9794a87
Include charset.h and coding.h.
Karl Heuer <kwzh@gnu.org>
parents:
16894
diff
changeset
|
713 } |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
46559
diff
changeset
|
714 |
90059
9b0bfaaaec9c
Sync to the change in HEAD on 2004-11-30.
Kenichi Handa <handa@m17n.org>
parents:
90054
diff
changeset
|
715 if (nchars == 0) |
58638
67bea14002c3
(encode_terminal_buf, encode_terminal_bufsize): New
Kenichi Handa <handa@m17n.org>
parents:
54428
diff
changeset
|
716 { |
90059
9b0bfaaaec9c
Sync to the change in HEAD on 2004-11-30.
Kenichi Handa <handa@m17n.org>
parents:
90054
diff
changeset
|
717 coding->produced = 0; |
9b0bfaaaec9c
Sync to the change in HEAD on 2004-11-30.
Kenichi Handa <handa@m17n.org>
parents:
90054
diff
changeset
|
718 return NULL; |
58638
67bea14002c3
(encode_terminal_buf, encode_terminal_bufsize): New
Kenichi Handa <handa@m17n.org>
parents:
54428
diff
changeset
|
719 } |
90059
9b0bfaaaec9c
Sync to the change in HEAD on 2004-11-30.
Kenichi Handa <handa@m17n.org>
parents:
90054
diff
changeset
|
720 |
9b0bfaaaec9c
Sync to the change in HEAD on 2004-11-30.
Kenichi Handa <handa@m17n.org>
parents:
90054
diff
changeset
|
721 nbytes = buf - encode_terminal_src; |
9b0bfaaaec9c
Sync to the change in HEAD on 2004-11-30.
Kenichi Handa <handa@m17n.org>
parents:
90054
diff
changeset
|
722 coding->source = encode_terminal_src; |
9b0bfaaaec9c
Sync to the change in HEAD on 2004-11-30.
Kenichi Handa <handa@m17n.org>
parents:
90054
diff
changeset
|
723 if (encode_terminal_dst_size == 0) |
58638
67bea14002c3
(encode_terminal_buf, encode_terminal_bufsize): New
Kenichi Handa <handa@m17n.org>
parents:
54428
diff
changeset
|
724 { |
90059
9b0bfaaaec9c
Sync to the change in HEAD on 2004-11-30.
Kenichi Handa <handa@m17n.org>
parents:
90054
diff
changeset
|
725 encode_terminal_dst_size = encode_terminal_src_size; |
100276
8f4457a692c5
(encode_terminal_code): Free any previous memory blocks
Chong Yidong <cyd@stupidchicken.com>
parents:
98367
diff
changeset
|
726 if (encode_terminal_dst) |
8f4457a692c5
(encode_terminal_code): Free any previous memory blocks
Chong Yidong <cyd@stupidchicken.com>
parents:
98367
diff
changeset
|
727 encode_terminal_dst = xrealloc (encode_terminal_dst, |
8f4457a692c5
(encode_terminal_code): Free any previous memory blocks
Chong Yidong <cyd@stupidchicken.com>
parents:
98367
diff
changeset
|
728 encode_terminal_dst_size); |
8f4457a692c5
(encode_terminal_code): Free any previous memory blocks
Chong Yidong <cyd@stupidchicken.com>
parents:
98367
diff
changeset
|
729 else |
8f4457a692c5
(encode_terminal_code): Free any previous memory blocks
Chong Yidong <cyd@stupidchicken.com>
parents:
98367
diff
changeset
|
730 encode_terminal_dst = xmalloc (encode_terminal_dst_size); |
58638
67bea14002c3
(encode_terminal_buf, encode_terminal_bufsize): New
Kenichi Handa <handa@m17n.org>
parents:
54428
diff
changeset
|
731 } |
90059
9b0bfaaaec9c
Sync to the change in HEAD on 2004-11-30.
Kenichi Handa <handa@m17n.org>
parents:
90054
diff
changeset
|
732 coding->destination = encode_terminal_dst; |
9b0bfaaaec9c
Sync to the change in HEAD on 2004-11-30.
Kenichi Handa <handa@m17n.org>
parents:
90054
diff
changeset
|
733 coding->dst_bytes = encode_terminal_dst_size; |
9b0bfaaaec9c
Sync to the change in HEAD on 2004-11-30.
Kenichi Handa <handa@m17n.org>
parents:
90054
diff
changeset
|
734 encode_coding_object (coding, Qnil, 0, 0, nchars, nbytes, Qnil); |
89566
86c0ff434620
(encode_terminal_code): Don't handle glyph-table. Check
Kenichi Handa <handa@m17n.org>
parents:
89563
diff
changeset
|
735 /* coding->destination may have been reallocated. */ |
90059
9b0bfaaaec9c
Sync to the change in HEAD on 2004-11-30.
Kenichi Handa <handa@m17n.org>
parents:
90054
diff
changeset
|
736 encode_terminal_dst = coding->destination; |
9b0bfaaaec9c
Sync to the change in HEAD on 2004-11-30.
Kenichi Handa <handa@m17n.org>
parents:
90054
diff
changeset
|
737 encode_terminal_dst_size = coding->dst_bytes; |
9b0bfaaaec9c
Sync to the change in HEAD on 2004-11-30.
Kenichi Handa <handa@m17n.org>
parents:
90054
diff
changeset
|
738 |
9b0bfaaaec9c
Sync to the change in HEAD on 2004-11-30.
Kenichi Handa <handa@m17n.org>
parents:
90054
diff
changeset
|
739 return (encode_terminal_dst); |
17046
84b0e9794a87
Include charset.h and coding.h.
Karl Heuer <kwzh@gnu.org>
parents:
16894
diff
changeset
|
740 } |
84b0e9794a87
Include charset.h and coding.h.
Karl Heuer <kwzh@gnu.org>
parents:
16894
diff
changeset
|
741 |
253 | 742 |
91041 | 743 |
83025
c66ebcc29777
Removed %T in mode-line-format. Trivial documentation changes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83021
diff
changeset
|
744 /* An implementation of write_glyphs for termcap frames. */ |
c66ebcc29777
Removed %T in mode-line-format. Trivial documentation changes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83021
diff
changeset
|
745 |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
746 static void |
83100
4970ad4995f5
Eliminated updating_frame.
Karoly Lorentey <lorentey@elte.hu>
parents:
83095
diff
changeset
|
747 tty_write_glyphs (struct frame *f, struct glyph *string, int len) |
253 | 748 { |
58638
67bea14002c3
(encode_terminal_buf, encode_terminal_bufsize): New
Kenichi Handa <handa@m17n.org>
parents:
54428
diff
changeset
|
749 unsigned char *conversion_buffer; |
67bea14002c3
(encode_terminal_buf, encode_terminal_bufsize): New
Kenichi Handa <handa@m17n.org>
parents:
54428
diff
changeset
|
750 struct coding_system *coding; |
253 | 751 |
83008
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
752 struct tty_display_info *tty = FRAME_TTY (f); |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
753 |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
754 tty_turn_off_insert (tty); |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
755 tty_hide_cursor (tty); |
253 | 756 |
25002 | 757 /* Don't dare write in last column of bottom line, if Auto-Wrap, |
765 | 758 since that would scroll the whole frame on some terminals. */ |
253 | 759 |
53232
22aaf1e5fbe6
Full support for multiple terminal I/O (with some rough edges).
Karoly Lorentey <lorentey@elte.hu>
parents:
53229
diff
changeset
|
760 if (AutoWrap (tty) |
22aaf1e5fbe6
Full support for multiple terminal I/O (with some rough edges).
Karoly Lorentey <lorentey@elte.hu>
parents:
53229
diff
changeset
|
761 && curY (tty) + 1 == FRAME_LINES (f) |
22aaf1e5fbe6
Full support for multiple terminal I/O (with some rough edges).
Karoly Lorentey <lorentey@elte.hu>
parents:
53229
diff
changeset
|
762 && (curX (tty) + len) == FRAME_COLS (f)) |
253 | 763 len --; |
17046
84b0e9794a87
Include charset.h and coding.h.
Karl Heuer <kwzh@gnu.org>
parents:
16894
diff
changeset
|
764 if (len <= 0) |
84b0e9794a87
Include charset.h and coding.h.
Karl Heuer <kwzh@gnu.org>
parents:
16894
diff
changeset
|
765 return; |
253 | 766 |
53232
22aaf1e5fbe6
Full support for multiple terminal I/O (with some rough edges).
Karoly Lorentey <lorentey@elte.hu>
parents:
53229
diff
changeset
|
767 cmplus (tty, len); |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
46559
diff
changeset
|
768 |
58638
67bea14002c3
(encode_terminal_buf, encode_terminal_bufsize): New
Kenichi Handa <handa@m17n.org>
parents:
54428
diff
changeset
|
769 /* If terminal_coding does any conversion, use it, otherwise use |
67bea14002c3
(encode_terminal_buf, encode_terminal_bufsize): New
Kenichi Handa <handa@m17n.org>
parents:
54428
diff
changeset
|
770 safe_terminal_coding. We can't use CODING_REQUIRE_ENCODING here |
67bea14002c3
(encode_terminal_buf, encode_terminal_bufsize): New
Kenichi Handa <handa@m17n.org>
parents:
54428
diff
changeset
|
771 because it always return 1 if the member src_multibyte is 1. */ |
83231 | 772 coding = (FRAME_TERMINAL_CODING (f)->common_flags & CODING_REQUIRE_ENCODING_MASK |
773 ? FRAME_TERMINAL_CODING (f) : &safe_terminal_coding); | |
20711
9ab8e061c0bf
(encode_terminal_code): Adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
20223
diff
changeset
|
774 /* The mode bit CODING_MODE_LAST_BLOCK should be set to 1 only at |
9ab8e061c0bf
(encode_terminal_code): Adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
20223
diff
changeset
|
775 the tail. */ |
58638
67bea14002c3
(encode_terminal_buf, encode_terminal_bufsize): New
Kenichi Handa <handa@m17n.org>
parents:
54428
diff
changeset
|
776 coding->mode &= ~CODING_MODE_LAST_BLOCK; |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
46559
diff
changeset
|
777 |
17046
84b0e9794a87
Include charset.h and coding.h.
Karl Heuer <kwzh@gnu.org>
parents:
16894
diff
changeset
|
778 while (len > 0) |
253 | 779 { |
25002 | 780 /* Identify a run of glyphs with the same face. */ |
26999
5d0057e6170e
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
26902
diff
changeset
|
781 int face_id = string->face_id; |
25002 | 782 int n; |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
46559
diff
changeset
|
783 |
25002 | 784 for (n = 1; n < len; ++n) |
26999
5d0057e6170e
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
26902
diff
changeset
|
785 if (string[n].face_id != face_id) |
25002 | 786 break; |
787 | |
788 /* Turn appearance modes of the face of the run on. */ | |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
789 tty_highlight_if_desired (tty); |
25002 | 790 turn_on_face (f, face_id); |
791 | |
58638
67bea14002c3
(encode_terminal_buf, encode_terminal_bufsize): New
Kenichi Handa <handa@m17n.org>
parents:
54428
diff
changeset
|
792 if (n == len) |
67bea14002c3
(encode_terminal_buf, encode_terminal_bufsize): New
Kenichi Handa <handa@m17n.org>
parents:
54428
diff
changeset
|
793 /* This is the last run. */ |
67bea14002c3
(encode_terminal_buf, encode_terminal_bufsize): New
Kenichi Handa <handa@m17n.org>
parents:
54428
diff
changeset
|
794 coding->mode |= CODING_MODE_LAST_BLOCK; |
67bea14002c3
(encode_terminal_buf, encode_terminal_bufsize): New
Kenichi Handa <handa@m17n.org>
parents:
54428
diff
changeset
|
795 conversion_buffer = encode_terminal_code (string, n, coding); |
67bea14002c3
(encode_terminal_buf, encode_terminal_bufsize): New
Kenichi Handa <handa@m17n.org>
parents:
54428
diff
changeset
|
796 if (coding->produced > 0) |
253 | 797 { |
76627
c53e7d075f1a
Include blockinput.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
75348
diff
changeset
|
798 BLOCK_INPUT; |
83231 | 799 fwrite (conversion_buffer, 1, coding->produced, tty->output); |
800 if (ferror (tty->output)) | |
801 clearerr (tty->output); | |
802 if (tty->termscript) | |
803 fwrite (conversion_buffer, 1, coding->produced, tty->termscript); | |
76627
c53e7d075f1a
Include blockinput.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
75348
diff
changeset
|
804 UNBLOCK_INPUT; |
253 | 805 } |
58638
67bea14002c3
(encode_terminal_buf, encode_terminal_bufsize): New
Kenichi Handa <handa@m17n.org>
parents:
54428
diff
changeset
|
806 len -= n; |
67bea14002c3
(encode_terminal_buf, encode_terminal_bufsize): New
Kenichi Handa <handa@m17n.org>
parents:
54428
diff
changeset
|
807 string += n; |
25002 | 808 |
809 /* Turn appearance modes off. */ | |
810 turn_off_face (f, face_id); | |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
811 tty_turn_off_highlight (tty); |
17046
84b0e9794a87
Include charset.h and coding.h.
Karl Heuer <kwzh@gnu.org>
parents:
16894
diff
changeset
|
812 } |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
46559
diff
changeset
|
813 |
53232
22aaf1e5fbe6
Full support for multiple terminal I/O (with some rough edges).
Karoly Lorentey <lorentey@elte.hu>
parents:
53229
diff
changeset
|
814 cmcheckmagic (tty); |
253 | 815 } |
816 | |
84981
a35153116cd0
(term_clear_mouse_face, term_mouse_highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
84969
diff
changeset
|
817 #ifdef HAVE_GPM /* Only used by GPM code. */ |
a35153116cd0
(term_clear_mouse_face, term_mouse_highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
84969
diff
changeset
|
818 |
83622 | 819 static void |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109108
diff
changeset
|
820 tty_write_glyphs_with_face (register struct frame *f, register struct glyph *string, |
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109108
diff
changeset
|
821 register int len, register int face_id) |
80979
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
822 { |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
823 unsigned char *conversion_buffer; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
824 struct coding_system *coding; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
825 |
83622 | 826 struct tty_display_info *tty = FRAME_TTY (f); |
827 | |
828 tty_turn_off_insert (tty); | |
829 tty_hide_cursor (tty); | |
80979
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
830 |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
831 /* Don't dare write in last column of bottom line, if Auto-Wrap, |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
832 since that would scroll the whole frame on some terminals. */ |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
833 |
83622 | 834 if (AutoWrap (tty) |
835 && curY (tty) + 1 == FRAME_LINES (f) | |
836 && (curX (tty) + len) == FRAME_COLS (f)) | |
80979
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
837 len --; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
838 if (len <= 0) |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
839 return; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
840 |
83622 | 841 cmplus (tty, len); |
80979
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
842 |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
843 /* If terminal_coding does any conversion, use it, otherwise use |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
844 safe_terminal_coding. We can't use CODING_REQUIRE_ENCODING here |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
845 because it always return 1 if the member src_multibyte is 1. */ |
83622 | 846 coding = (FRAME_TERMINAL_CODING (f)->common_flags & CODING_REQUIRE_ENCODING_MASK |
847 ? FRAME_TERMINAL_CODING (f) : &safe_terminal_coding); | |
80979
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
848 /* The mode bit CODING_MODE_LAST_BLOCK should be set to 1 only at |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
849 the tail. */ |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
850 coding->mode &= ~CODING_MODE_LAST_BLOCK; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
851 |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
852 /* Turn appearance modes of the face. */ |
83622 | 853 tty_highlight_if_desired (tty); |
80979
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
854 turn_on_face (f, face_id); |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
855 |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
856 coding->mode |= CODING_MODE_LAST_BLOCK; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
857 conversion_buffer = encode_terminal_code (string, len, coding); |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
858 if (coding->produced > 0) |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
859 { |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
860 BLOCK_INPUT; |
83622 | 861 fwrite (conversion_buffer, 1, coding->produced, tty->output); |
862 if (ferror (tty->output)) | |
863 clearerr (tty->output); | |
864 if (tty->termscript) | |
865 fwrite (conversion_buffer, 1, coding->produced, tty->termscript); | |
80979
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
866 UNBLOCK_INPUT; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
867 } |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
868 |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
869 /* Turn appearance modes off. */ |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
870 turn_off_face (f, face_id); |
83622 | 871 tty_turn_off_highlight (tty); |
872 | |
873 cmcheckmagic (tty); | |
80979
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
874 } |
84981
a35153116cd0
(term_clear_mouse_face, term_mouse_highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
84969
diff
changeset
|
875 #endif |
83622 | 876 |
83025
c66ebcc29777
Removed %T in mode-line-format. Trivial documentation changes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83021
diff
changeset
|
877 /* An implementation of insert_glyphs for termcap frames. */ |
c66ebcc29777
Removed %T in mode-line-format. Trivial documentation changes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83021
diff
changeset
|
878 |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
879 static void |
83100
4970ad4995f5
Eliminated updating_frame.
Karoly Lorentey <lorentey@elte.hu>
parents:
83095
diff
changeset
|
880 tty_insert_glyphs (struct frame *f, struct glyph *start, int len) |
253 | 881 { |
882 char *buf; | |
31829
43566b0aec59
Avoid some more compiler warnings.
Gerd Moellmann <gerd@gnu.org>
parents:
31102
diff
changeset
|
883 struct glyph *glyph = NULL; |
58638
67bea14002c3
(encode_terminal_buf, encode_terminal_bufsize): New
Kenichi Handa <handa@m17n.org>
parents:
54428
diff
changeset
|
884 unsigned char *conversion_buffer; |
67bea14002c3
(encode_terminal_buf, encode_terminal_bufsize): New
Kenichi Handa <handa@m17n.org>
parents:
54428
diff
changeset
|
885 unsigned char space[1]; |
67bea14002c3
(encode_terminal_buf, encode_terminal_bufsize): New
Kenichi Handa <handa@m17n.org>
parents:
54428
diff
changeset
|
886 struct coding_system *coding; |
253 | 887 |
83008
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
888 struct tty_display_info *tty = FRAME_TTY (f); |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
889 |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
890 if (tty->TS_ins_multi_chars) |
253 | 891 { |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
892 buf = tparam (tty->TS_ins_multi_chars, 0, 0, len); |
53232
22aaf1e5fbe6
Full support for multiple terminal I/O (with some rough edges).
Karoly Lorentey <lorentey@elte.hu>
parents:
53229
diff
changeset
|
893 OUTPUT1 (tty, buf); |
2439
b6c62e4abf59
Put interrupt input blocking in a separate file from xterm.h.
Jim Blandy <jimb@redhat.com>
parents:
2243
diff
changeset
|
894 xfree (buf); |
253 | 895 if (start) |
83100
4970ad4995f5
Eliminated updating_frame.
Karoly Lorentey <lorentey@elte.hu>
parents:
83095
diff
changeset
|
896 write_glyphs (f, start, len); |
253 | 897 return; |
898 } | |
25002 | 899 |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
900 tty_turn_on_insert (tty); |
53232
22aaf1e5fbe6
Full support for multiple terminal I/O (with some rough edges).
Karoly Lorentey <lorentey@elte.hu>
parents:
53229
diff
changeset
|
901 cmplus (tty, len); |
58638
67bea14002c3
(encode_terminal_buf, encode_terminal_bufsize): New
Kenichi Handa <handa@m17n.org>
parents:
54428
diff
changeset
|
902 |
67bea14002c3
(encode_terminal_buf, encode_terminal_bufsize): New
Kenichi Handa <handa@m17n.org>
parents:
54428
diff
changeset
|
903 if (! start) |
67bea14002c3
(encode_terminal_buf, encode_terminal_bufsize): New
Kenichi Handa <handa@m17n.org>
parents:
54428
diff
changeset
|
904 space[0] = SPACEGLYPH; |
67bea14002c3
(encode_terminal_buf, encode_terminal_bufsize): New
Kenichi Handa <handa@m17n.org>
parents:
54428
diff
changeset
|
905 |
67bea14002c3
(encode_terminal_buf, encode_terminal_bufsize): New
Kenichi Handa <handa@m17n.org>
parents:
54428
diff
changeset
|
906 /* If terminal_coding does any conversion, use it, otherwise use |
67bea14002c3
(encode_terminal_buf, encode_terminal_bufsize): New
Kenichi Handa <handa@m17n.org>
parents:
54428
diff
changeset
|
907 safe_terminal_coding. We can't use CODING_REQUIRE_ENCODING here |
67bea14002c3
(encode_terminal_buf, encode_terminal_bufsize): New
Kenichi Handa <handa@m17n.org>
parents:
54428
diff
changeset
|
908 because it always return 1 if the member src_multibyte is 1. */ |
83231 | 909 coding = (FRAME_TERMINAL_CODING (f)->common_flags & CODING_REQUIRE_ENCODING_MASK |
910 ? FRAME_TERMINAL_CODING (f) : &safe_terminal_coding); | |
58638
67bea14002c3
(encode_terminal_buf, encode_terminal_bufsize): New
Kenichi Handa <handa@m17n.org>
parents:
54428
diff
changeset
|
911 /* The mode bit CODING_MODE_LAST_BLOCK should be set to 1 only at |
67bea14002c3
(encode_terminal_buf, encode_terminal_bufsize): New
Kenichi Handa <handa@m17n.org>
parents:
54428
diff
changeset
|
912 the tail. */ |
67bea14002c3
(encode_terminal_buf, encode_terminal_bufsize): New
Kenichi Handa <handa@m17n.org>
parents:
54428
diff
changeset
|
913 coding->mode &= ~CODING_MODE_LAST_BLOCK; |
67bea14002c3
(encode_terminal_buf, encode_terminal_bufsize): New
Kenichi Handa <handa@m17n.org>
parents:
54428
diff
changeset
|
914 |
17191
36caec9c2e52
(insert_glyphs): Fix a bug which turns up when
Kenichi Handa <handa@m17n.org>
parents:
17180
diff
changeset
|
915 while (len-- > 0) |
253 | 916 { |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
917 OUTPUT1_IF (tty, tty->TS_ins_char); |
253 | 918 if (!start) |
26999
5d0057e6170e
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
26902
diff
changeset
|
919 { |
58638
67bea14002c3
(encode_terminal_buf, encode_terminal_bufsize): New
Kenichi Handa <handa@m17n.org>
parents:
54428
diff
changeset
|
920 conversion_buffer = space; |
67bea14002c3
(encode_terminal_buf, encode_terminal_bufsize): New
Kenichi Handa <handa@m17n.org>
parents:
54428
diff
changeset
|
921 coding->produced = 1; |
26999
5d0057e6170e
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
26902
diff
changeset
|
922 } |
253 | 923 else |
17046
84b0e9794a87
Include charset.h and coding.h.
Karl Heuer <kwzh@gnu.org>
parents:
16894
diff
changeset
|
924 { |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
925 tty_highlight_if_desired (tty); |
26999
5d0057e6170e
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
26902
diff
changeset
|
926 turn_on_face (f, start->face_id); |
27085
59913a531d4e
(insert_glyphs): Pass glyph, not &glyph, to
Eli Zaretskii <eliz@gnu.org>
parents:
26999
diff
changeset
|
927 glyph = start; |
25002 | 928 ++start; |
17046
84b0e9794a87
Include charset.h and coding.h.
Karl Heuer <kwzh@gnu.org>
parents:
16894
diff
changeset
|
929 /* We must open sufficient space for a character which |
84b0e9794a87
Include charset.h and coding.h.
Karl Heuer <kwzh@gnu.org>
parents:
16894
diff
changeset
|
930 occupies more than one column. */ |
25002 | 931 while (len && CHAR_GLYPH_PADDING_P (*start)) |
17046
84b0e9794a87
Include charset.h and coding.h.
Karl Heuer <kwzh@gnu.org>
parents:
16894
diff
changeset
|
932 { |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
933 OUTPUT1_IF (tty, tty->TS_ins_char); |
17046
84b0e9794a87
Include charset.h and coding.h.
Karl Heuer <kwzh@gnu.org>
parents:
16894
diff
changeset
|
934 start++, len--; |
84b0e9794a87
Include charset.h and coding.h.
Karl Heuer <kwzh@gnu.org>
parents:
16894
diff
changeset
|
935 } |
26999
5d0057e6170e
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
26902
diff
changeset
|
936 |
5d0057e6170e
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
26902
diff
changeset
|
937 if (len <= 0) |
5d0057e6170e
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
26902
diff
changeset
|
938 /* This is the last glyph. */ |
58638
67bea14002c3
(encode_terminal_buf, encode_terminal_bufsize): New
Kenichi Handa <handa@m17n.org>
parents:
54428
diff
changeset
|
939 coding->mode |= CODING_MODE_LAST_BLOCK; |
67bea14002c3
(encode_terminal_buf, encode_terminal_bufsize): New
Kenichi Handa <handa@m17n.org>
parents:
54428
diff
changeset
|
940 |
83231 | 941 conversion_buffer = encode_terminal_code (glyph, 1, coding); |
17046
84b0e9794a87
Include charset.h and coding.h.
Karl Heuer <kwzh@gnu.org>
parents:
16894
diff
changeset
|
942 } |
253 | 943 |
58638
67bea14002c3
(encode_terminal_buf, encode_terminal_bufsize): New
Kenichi Handa <handa@m17n.org>
parents:
54428
diff
changeset
|
944 if (coding->produced > 0) |
253 | 945 { |
76627
c53e7d075f1a
Include blockinput.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
75348
diff
changeset
|
946 BLOCK_INPUT; |
83231 | 947 fwrite (conversion_buffer, 1, coding->produced, tty->output); |
83065
a871be7b26a5
Implemented suspending of emacsclient frames.
Karoly Lorentey <lorentey@elte.hu>
parents:
83050
diff
changeset
|
948 if (ferror (tty->output)) |
a871be7b26a5
Implemented suspending of emacsclient frames.
Karoly Lorentey <lorentey@elte.hu>
parents:
83050
diff
changeset
|
949 clearerr (tty->output); |
a871be7b26a5
Implemented suspending of emacsclient frames.
Karoly Lorentey <lorentey@elte.hu>
parents:
83050
diff
changeset
|
950 if (tty->termscript) |
83231 | 951 fwrite (conversion_buffer, 1, coding->produced, tty->termscript); |
76627
c53e7d075f1a
Include blockinput.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
75348
diff
changeset
|
952 UNBLOCK_INPUT; |
253 | 953 } |
954 | |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
955 OUTPUT1_IF (tty, tty->TS_pad_inserted_char); |
26999
5d0057e6170e
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
26902
diff
changeset
|
956 if (start) |
30848
fc80dcfc32cd
(write_glyphs): Also turn off inverse video after turning
Gerd Moellmann <gerd@gnu.org>
parents:
30836
diff
changeset
|
957 { |
fc80dcfc32cd
(write_glyphs): Also turn off inverse video after turning
Gerd Moellmann <gerd@gnu.org>
parents:
30836
diff
changeset
|
958 turn_off_face (f, glyph->face_id); |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
959 tty_turn_off_highlight (tty); |
30848
fc80dcfc32cd
(write_glyphs): Also turn off inverse video after turning
Gerd Moellmann <gerd@gnu.org>
parents:
30836
diff
changeset
|
960 } |
10439
1fcbeb4410f6
(write_glyphs, insert_glyphs): Call checkmagic.
Karl Heuer <kwzh@gnu.org>
parents:
10332
diff
changeset
|
961 } |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
46559
diff
changeset
|
962 |
53232
22aaf1e5fbe6
Full support for multiple terminal I/O (with some rough edges).
Karoly Lorentey <lorentey@elte.hu>
parents:
53229
diff
changeset
|
963 cmcheckmagic (tty); |
253 | 964 } |
965 | |
83025
c66ebcc29777
Removed %T in mode-line-format. Trivial documentation changes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83021
diff
changeset
|
966 /* An implementation of delete_glyphs for termcap frames. */ |
c66ebcc29777
Removed %T in mode-line-format. Trivial documentation changes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83021
diff
changeset
|
967 |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
968 static void |
83100
4970ad4995f5
Eliminated updating_frame.
Karoly Lorentey <lorentey@elte.hu>
parents:
83095
diff
changeset
|
969 tty_delete_glyphs (struct frame *f, int n) |
253 | 970 { |
971 char *buf; | |
972 register int i; | |
973 | |
83008
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
974 struct tty_display_info *tty = FRAME_TTY (f); |
53232
22aaf1e5fbe6
Full support for multiple terminal I/O (with some rough edges).
Karoly Lorentey <lorentey@elte.hu>
parents:
53229
diff
changeset
|
975 |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
976 if (tty->delete_in_insert_mode) |
253 | 977 { |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
978 tty_turn_on_insert (tty); |
253 | 979 } |
980 else | |
981 { | |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
982 tty_turn_off_insert (tty); |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
983 OUTPUT_IF (tty, tty->TS_delete_mode); |
253 | 984 } |
985 | |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
986 if (tty->TS_del_multi_chars) |
253 | 987 { |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
988 buf = tparam (tty->TS_del_multi_chars, 0, 0, n); |
53232
22aaf1e5fbe6
Full support for multiple terminal I/O (with some rough edges).
Karoly Lorentey <lorentey@elte.hu>
parents:
53229
diff
changeset
|
989 OUTPUT1 (tty, buf); |
2439
b6c62e4abf59
Put interrupt input blocking in a separate file from xterm.h.
Jim Blandy <jimb@redhat.com>
parents:
2243
diff
changeset
|
990 xfree (buf); |
253 | 991 } |
992 else | |
993 for (i = 0; i < n; i++) | |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
994 OUTPUT1 (tty, tty->TS_del_char); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
995 if (!tty->delete_in_insert_mode) |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
996 OUTPUT_IF (tty, tty->TS_end_delete_mode); |
253 | 997 } |
998 | |
83025
c66ebcc29777
Removed %T in mode-line-format. Trivial documentation changes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83021
diff
changeset
|
999 /* An implementation of ins_del_lines for termcap frames. */ |
c66ebcc29777
Removed %T in mode-line-format. Trivial documentation changes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83021
diff
changeset
|
1000 |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
1001 static void |
83100
4970ad4995f5
Eliminated updating_frame.
Karoly Lorentey <lorentey@elte.hu>
parents:
83095
diff
changeset
|
1002 tty_ins_del_lines (struct frame *f, int vpos, int n) |
253 | 1003 { |
83008
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
1004 struct tty_display_info *tty = FRAME_TTY (f); |
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
1005 char *multi = n > 0 ? tty->TS_ins_multi_lines : tty->TS_del_multi_lines; |
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
1006 char *single = n > 0 ? tty->TS_ins_line : tty->TS_del_line; |
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
1007 char *scroll = n > 0 ? tty->TS_rev_scroll : tty->TS_fwd_scroll; |
253 | 1008 |
1009 register int i = n > 0 ? n : -n; | |
1010 register char *buf; | |
1011 | |
1012 /* If the lines below the insertion are being pushed | |
1013 into the end of the window, this is the same as clearing; | |
1014 and we know the lines are already clear, since the matching | |
1015 deletion has already been done. So can ignore this. */ | |
1016 /* If the lines below the deletion are blank lines coming | |
1017 out of the end of the window, don't bother, | |
1018 as there will be a matching inslines later that will flush them. */ | |
83008
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
1019 if (FRAME_SCROLL_REGION_OK (f) |
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
1020 && vpos + i >= tty->specified_window) |
253 | 1021 return; |
83008
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
1022 if (!FRAME_MEMORY_BELOW_FRAME (f) |
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
1023 && vpos + i >= FRAME_LINES (f)) |
253 | 1024 return; |
92281
4bf10a5a835d
(encode_terminal_code, produce_special_glyphs): Likewise.
Kim F. Storm <storm@cua.dk>
parents:
92237
diff
changeset
|
1025 |
253 | 1026 if (multi) |
1027 { | |
83102
a330cf2446ad
Fix segfault in term.c (reported by lukhas@free.fr).
Karoly Lorentey <lorentey@elte.hu>
parents:
83100
diff
changeset
|
1028 raw_cursor_to (f, vpos, 0); |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
1029 tty_background_highlight (tty); |
253 | 1030 buf = tparam (multi, 0, 0, i); |
83008
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
1031 OUTPUT (tty, buf); |
2439
b6c62e4abf59
Put interrupt input blocking in a separate file from xterm.h.
Jim Blandy <jimb@redhat.com>
parents:
2243
diff
changeset
|
1032 xfree (buf); |
253 | 1033 } |
1034 else if (single) | |
1035 { | |
83102
a330cf2446ad
Fix segfault in term.c (reported by lukhas@free.fr).
Karoly Lorentey <lorentey@elte.hu>
parents:
83100
diff
changeset
|
1036 raw_cursor_to (f, vpos, 0); |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
1037 tty_background_highlight (tty); |
253 | 1038 while (--i >= 0) |
83008
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
1039 OUTPUT (tty, single); |
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
1040 if (tty->TF_teleray) |
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
1041 curX (tty) = 0; |
253 | 1042 } |
1043 else | |
1044 { | |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
1045 tty_set_scroll_region (f, vpos, tty->specified_window); |
253 | 1046 if (n < 0) |
83102
a330cf2446ad
Fix segfault in term.c (reported by lukhas@free.fr).
Karoly Lorentey <lorentey@elte.hu>
parents:
83100
diff
changeset
|
1047 raw_cursor_to (f, tty->specified_window - 1, 0); |
253 | 1048 else |
83102
a330cf2446ad
Fix segfault in term.c (reported by lukhas@free.fr).
Karoly Lorentey <lorentey@elte.hu>
parents:
83100
diff
changeset
|
1049 raw_cursor_to (f, vpos, 0); |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
1050 tty_background_highlight (tty); |
253 | 1051 while (--i >= 0) |
83008
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
1052 OUTPUTL (tty, scroll, tty->specified_window - vpos); |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
1053 tty_set_scroll_region (f, 0, tty->specified_window); |
253 | 1054 } |
92281
4bf10a5a835d
(encode_terminal_code, produce_special_glyphs): Likewise.
Kim F. Storm <storm@cua.dk>
parents:
92237
diff
changeset
|
1055 |
83008
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
1056 if (!FRAME_SCROLL_REGION_OK (f) |
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
1057 && FRAME_MEMORY_BELOW_FRAME (f) |
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
1058 && n < 0) |
253 | 1059 { |
83100
4970ad4995f5
Eliminated updating_frame.
Karoly Lorentey <lorentey@elte.hu>
parents:
83095
diff
changeset
|
1060 cursor_to (f, FRAME_LINES (f) + n, 0); |
4970ad4995f5
Eliminated updating_frame.
Karoly Lorentey <lorentey@elte.hu>
parents:
83095
diff
changeset
|
1061 clear_to_end (f); |
253 | 1062 } |
1063 } | |
1064 | |
1065 /* Compute cost of sending "str", in characters, | |
1066 not counting any line-dependent padding. */ | |
1067 | |
1068 int | |
109726
64732fa6188a
Use const char* instead of char*.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
109664
diff
changeset
|
1069 string_cost (const char *str) |
253 | 1070 { |
1071 cost = 0; | |
1072 if (str) | |
1073 tputs (str, 0, evalcost); | |
1074 return cost; | |
1075 } | |
1076 | |
1077 /* Compute cost of sending "str", in characters, | |
1078 counting any line-dependent padding at one line. */ | |
1079 | |
1080 static int | |
109726
64732fa6188a
Use const char* instead of char*.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
109664
diff
changeset
|
1081 string_cost_one_line (const char *str) |
253 | 1082 { |
1083 cost = 0; | |
1084 if (str) | |
1085 tputs (str, 1, evalcost); | |
1086 return cost; | |
1087 } | |
1088 | |
1089 /* Compute per line amount of line-dependent padding, | |
1090 in tenths of characters. */ | |
1091 | |
1092 int | |
109726
64732fa6188a
Use const char* instead of char*.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
109664
diff
changeset
|
1093 per_line_cost (const char *str) |
253 | 1094 { |
1095 cost = 0; | |
1096 if (str) | |
1097 tputs (str, 0, evalcost); | |
1098 cost = - cost; | |
1099 if (str) | |
1100 tputs (str, 10, evalcost); | |
1101 return cost; | |
1102 } | |
1103 | |
1104 /* char_ins_del_cost[n] is cost of inserting N characters. | |
10771
d564078d10c6
(calculate_costs): Update max_frame_height, max_frame_width.
Richard M. Stallman <rms@gnu.org>
parents:
10481
diff
changeset
|
1105 char_ins_del_cost[-n] is cost of deleting N characters. |
51212
332134065648
Make (some) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50227
diff
changeset
|
1106 The length of this vector is based on max_frame_cols. */ |
253 | 1107 |
1108 int *char_ins_del_vector; | |
1109 | |
51212
332134065648
Make (some) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50227
diff
changeset
|
1110 #define char_ins_del_cost(f) (&char_ins_del_vector[FRAME_COLS ((f))]) |
253 | 1111 |
1112 /* ARGSUSED */ | |
1113 static void | |
83102
a330cf2446ad
Fix segfault in term.c (reported by lukhas@free.fr).
Karoly Lorentey <lorentey@elte.hu>
parents:
83100
diff
changeset
|
1114 calculate_ins_del_char_costs (struct frame *f) |
253 | 1115 { |
82989
f3845715a5f6
Separate frame-local, tty-dependent parameters from tty-local parameters.
Karoly Lorentey <lorentey@elte.hu>
parents:
82988
diff
changeset
|
1116 struct tty_display_info *tty = FRAME_TTY (f); |
253 | 1117 int ins_startup_cost, del_startup_cost; |
1118 int ins_cost_per_char, del_cost_per_char; | |
1119 register int i; | |
1120 register int *p; | |
1121 | |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
1122 if (tty->TS_ins_multi_chars) |
253 | 1123 { |
1124 ins_cost_per_char = 0; | |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
1125 ins_startup_cost = string_cost_one_line (tty->TS_ins_multi_chars); |
253 | 1126 } |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
1127 else if (tty->TS_ins_char || tty->TS_pad_inserted_char |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
1128 || (tty->TS_insert_mode && tty->TS_end_insert_mode)) |
253 | 1129 { |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
1130 ins_startup_cost = (30 * (string_cost (tty->TS_insert_mode) |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
1131 + string_cost (tty->TS_end_insert_mode))) / 100; |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
1132 ins_cost_per_char = (string_cost_one_line (tty->TS_ins_char) |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
1133 + string_cost_one_line (tty->TS_pad_inserted_char)); |
253 | 1134 } |
1135 else | |
1136 { | |
1137 ins_startup_cost = 9999; | |
1138 ins_cost_per_char = 0; | |
1139 } | |
1140 | |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
1141 if (tty->TS_del_multi_chars) |
253 | 1142 { |
1143 del_cost_per_char = 0; | |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
1144 del_startup_cost = string_cost_one_line (tty->TS_del_multi_chars); |
253 | 1145 } |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
1146 else if (tty->TS_del_char) |
253 | 1147 { |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
1148 del_startup_cost = (string_cost (tty->TS_delete_mode) |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
1149 + string_cost (tty->TS_end_delete_mode)); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
1150 if (tty->delete_in_insert_mode) |
253 | 1151 del_startup_cost /= 2; |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
1152 del_cost_per_char = string_cost_one_line (tty->TS_del_char); |
253 | 1153 } |
1154 else | |
1155 { | |
1156 del_startup_cost = 9999; | |
1157 del_cost_per_char = 0; | |
1158 } | |
1159 | |
1160 /* Delete costs are at negative offsets */ | |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
1161 p = &char_ins_del_cost (f)[0]; |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
1162 for (i = FRAME_COLS (f); --i >= 0;) |
253 | 1163 *--p = (del_startup_cost += del_cost_per_char); |
1164 | |
1165 /* Doing nothing is free */ | |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
1166 p = &char_ins_del_cost (f)[0]; |
253 | 1167 *p++ = 0; |
1168 | |
1169 /* Insert costs are at positive offsets */ | |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
1170 for (i = FRAME_COLS (f); --i >= 0;) |
253 | 1171 *p++ = (ins_startup_cost += ins_cost_per_char); |
1172 } | |
1173 | |
21514 | 1174 void |
83102
a330cf2446ad
Fix segfault in term.c (reported by lukhas@free.fr).
Karoly Lorentey <lorentey@elte.hu>
parents:
83100
diff
changeset
|
1175 calculate_costs (struct frame *frame) |
253 | 1176 { |
10121
3f9f77a9488d
(calculate_costs): Set FRAME_COST_BAUD_RATE.
Richard M. Stallman <rms@gnu.org>
parents:
9797
diff
changeset
|
1177 FRAME_COST_BAUD_RATE (frame) = baud_rate; |
253 | 1178 |
53226
dd3018b4785b
Implemented multiple tty support.
Karoly Lorentey <lorentey@elte.hu>
parents:
53225
diff
changeset
|
1179 if (FRAME_TERMCAP_P (frame)) |
82990
2ecd1f669db9
Fixed X support, preliminary support for X-tty combo sessions.
Karoly Lorentey <lorentey@elte.hu>
parents:
82989
diff
changeset
|
1180 { |
2ecd1f669db9
Fixed X support, preliminary support for X-tty combo sessions.
Karoly Lorentey <lorentey@elte.hu>
parents:
82989
diff
changeset
|
1181 struct tty_display_info *tty = FRAME_TTY (frame); |
2ecd1f669db9
Fixed X support, preliminary support for X-tty combo sessions.
Karoly Lorentey <lorentey@elte.hu>
parents:
82989
diff
changeset
|
1182 register char *f = (tty->TS_set_scroll_region |
2ecd1f669db9
Fixed X support, preliminary support for X-tty combo sessions.
Karoly Lorentey <lorentey@elte.hu>
parents:
82989
diff
changeset
|
1183 ? tty->TS_set_scroll_region |
2ecd1f669db9
Fixed X support, preliminary support for X-tty combo sessions.
Karoly Lorentey <lorentey@elte.hu>
parents:
82989
diff
changeset
|
1184 : tty->TS_set_scroll_region_1); |
2ecd1f669db9
Fixed X support, preliminary support for X-tty combo sessions.
Karoly Lorentey <lorentey@elte.hu>
parents:
82989
diff
changeset
|
1185 |
2ecd1f669db9
Fixed X support, preliminary support for X-tty combo sessions.
Karoly Lorentey <lorentey@elte.hu>
parents:
82989
diff
changeset
|
1186 FRAME_SCROLL_REGION_COST (frame) = string_cost (f); |
2ecd1f669db9
Fixed X support, preliminary support for X-tty combo sessions.
Karoly Lorentey <lorentey@elte.hu>
parents:
82989
diff
changeset
|
1187 |
2ecd1f669db9
Fixed X support, preliminary support for X-tty combo sessions.
Karoly Lorentey <lorentey@elte.hu>
parents:
82989
diff
changeset
|
1188 tty->costs_set = 1; |
2ecd1f669db9
Fixed X support, preliminary support for X-tty combo sessions.
Karoly Lorentey <lorentey@elte.hu>
parents:
82989
diff
changeset
|
1189 |
2ecd1f669db9
Fixed X support, preliminary support for X-tty combo sessions.
Karoly Lorentey <lorentey@elte.hu>
parents:
82989
diff
changeset
|
1190 /* These variables are only used for terminal stuff. They are |
2ecd1f669db9
Fixed X support, preliminary support for X-tty combo sessions.
Karoly Lorentey <lorentey@elte.hu>
parents:
82989
diff
changeset
|
1191 allocated once for the terminal frame of X-windows emacs, but not |
2ecd1f669db9
Fixed X support, preliminary support for X-tty combo sessions.
Karoly Lorentey <lorentey@elte.hu>
parents:
82989
diff
changeset
|
1192 used afterwards. |
2ecd1f669db9
Fixed X support, preliminary support for X-tty combo sessions.
Karoly Lorentey <lorentey@elte.hu>
parents:
82989
diff
changeset
|
1193 |
2ecd1f669db9
Fixed X support, preliminary support for X-tty combo sessions.
Karoly Lorentey <lorentey@elte.hu>
parents:
82989
diff
changeset
|
1194 char_ins_del_vector (i.e., char_ins_del_cost) isn't used because |
2ecd1f669db9
Fixed X support, preliminary support for X-tty combo sessions.
Karoly Lorentey <lorentey@elte.hu>
parents:
82989
diff
changeset
|
1195 X turns off char_ins_del_ok. */ |
2ecd1f669db9
Fixed X support, preliminary support for X-tty combo sessions.
Karoly Lorentey <lorentey@elte.hu>
parents:
82989
diff
changeset
|
1196 |
2ecd1f669db9
Fixed X support, preliminary support for X-tty combo sessions.
Karoly Lorentey <lorentey@elte.hu>
parents:
82989
diff
changeset
|
1197 max_frame_lines = max (max_frame_lines, FRAME_LINES (frame)); |
2ecd1f669db9
Fixed X support, preliminary support for X-tty combo sessions.
Karoly Lorentey <lorentey@elte.hu>
parents:
82989
diff
changeset
|
1198 max_frame_cols = max (max_frame_cols, FRAME_COLS (frame)); |
2ecd1f669db9
Fixed X support, preliminary support for X-tty combo sessions.
Karoly Lorentey <lorentey@elte.hu>
parents:
82989
diff
changeset
|
1199 |
2ecd1f669db9
Fixed X support, preliminary support for X-tty combo sessions.
Karoly Lorentey <lorentey@elte.hu>
parents:
82989
diff
changeset
|
1200 if (char_ins_del_vector != 0) |
2ecd1f669db9
Fixed X support, preliminary support for X-tty combo sessions.
Karoly Lorentey <lorentey@elte.hu>
parents:
82989
diff
changeset
|
1201 char_ins_del_vector |
2ecd1f669db9
Fixed X support, preliminary support for X-tty combo sessions.
Karoly Lorentey <lorentey@elte.hu>
parents:
82989
diff
changeset
|
1202 = (int *) xrealloc (char_ins_del_vector, |
2ecd1f669db9
Fixed X support, preliminary support for X-tty combo sessions.
Karoly Lorentey <lorentey@elte.hu>
parents:
82989
diff
changeset
|
1203 (sizeof (int) |
2ecd1f669db9
Fixed X support, preliminary support for X-tty combo sessions.
Karoly Lorentey <lorentey@elte.hu>
parents:
82989
diff
changeset
|
1204 + 2 * max_frame_cols * sizeof (int))); |
2ecd1f669db9
Fixed X support, preliminary support for X-tty combo sessions.
Karoly Lorentey <lorentey@elte.hu>
parents:
82989
diff
changeset
|
1205 else |
2ecd1f669db9
Fixed X support, preliminary support for X-tty combo sessions.
Karoly Lorentey <lorentey@elte.hu>
parents:
82989
diff
changeset
|
1206 char_ins_del_vector |
2ecd1f669db9
Fixed X support, preliminary support for X-tty combo sessions.
Karoly Lorentey <lorentey@elte.hu>
parents:
82989
diff
changeset
|
1207 = (int *) xmalloc (sizeof (int) |
2ecd1f669db9
Fixed X support, preliminary support for X-tty combo sessions.
Karoly Lorentey <lorentey@elte.hu>
parents:
82989
diff
changeset
|
1208 + 2 * max_frame_cols * sizeof (int)); |
2ecd1f669db9
Fixed X support, preliminary support for X-tty combo sessions.
Karoly Lorentey <lorentey@elte.hu>
parents:
82989
diff
changeset
|
1209 |
109165
750db9f3e6d8
Replace bcopy, bzero, bcmp by memcpy, memmove, memset, memcmp
Andreas Schwab <schwab@linux-m68k.org>
parents:
109144
diff
changeset
|
1210 memset (char_ins_del_vector, 0, |
750db9f3e6d8
Replace bcopy, bzero, bcmp by memcpy, memmove, memset, memcmp
Andreas Schwab <schwab@linux-m68k.org>
parents:
109144
diff
changeset
|
1211 (sizeof (int) + 2 * max_frame_cols * sizeof (int))); |
82990
2ecd1f669db9
Fixed X support, preliminary support for X-tty combo sessions.
Karoly Lorentey <lorentey@elte.hu>
parents:
82989
diff
changeset
|
1212 |
2ecd1f669db9
Fixed X support, preliminary support for X-tty combo sessions.
Karoly Lorentey <lorentey@elte.hu>
parents:
82989
diff
changeset
|
1213 |
2ecd1f669db9
Fixed X support, preliminary support for X-tty combo sessions.
Karoly Lorentey <lorentey@elte.hu>
parents:
82989
diff
changeset
|
1214 if (f && (!tty->TS_ins_line && !tty->TS_del_line)) |
2ecd1f669db9
Fixed X support, preliminary support for X-tty combo sessions.
Karoly Lorentey <lorentey@elte.hu>
parents:
82989
diff
changeset
|
1215 do_line_insertion_deletion_costs (frame, |
2ecd1f669db9
Fixed X support, preliminary support for X-tty combo sessions.
Karoly Lorentey <lorentey@elte.hu>
parents:
82989
diff
changeset
|
1216 tty->TS_rev_scroll, tty->TS_ins_multi_lines, |
2ecd1f669db9
Fixed X support, preliminary support for X-tty combo sessions.
Karoly Lorentey <lorentey@elte.hu>
parents:
82989
diff
changeset
|
1217 tty->TS_fwd_scroll, tty->TS_del_multi_lines, |
2ecd1f669db9
Fixed X support, preliminary support for X-tty combo sessions.
Karoly Lorentey <lorentey@elte.hu>
parents:
82989
diff
changeset
|
1218 f, f, 1); |
2ecd1f669db9
Fixed X support, preliminary support for X-tty combo sessions.
Karoly Lorentey <lorentey@elte.hu>
parents:
82989
diff
changeset
|
1219 else |
2ecd1f669db9
Fixed X support, preliminary support for X-tty combo sessions.
Karoly Lorentey <lorentey@elte.hu>
parents:
82989
diff
changeset
|
1220 do_line_insertion_deletion_costs (frame, |
2ecd1f669db9
Fixed X support, preliminary support for X-tty combo sessions.
Karoly Lorentey <lorentey@elte.hu>
parents:
82989
diff
changeset
|
1221 tty->TS_ins_line, tty->TS_ins_multi_lines, |
2ecd1f669db9
Fixed X support, preliminary support for X-tty combo sessions.
Karoly Lorentey <lorentey@elte.hu>
parents:
82989
diff
changeset
|
1222 tty->TS_del_line, tty->TS_del_multi_lines, |
2ecd1f669db9
Fixed X support, preliminary support for X-tty combo sessions.
Karoly Lorentey <lorentey@elte.hu>
parents:
82989
diff
changeset
|
1223 0, 0, 1); |
2ecd1f669db9
Fixed X support, preliminary support for X-tty combo sessions.
Karoly Lorentey <lorentey@elte.hu>
parents:
82989
diff
changeset
|
1224 |
2ecd1f669db9
Fixed X support, preliminary support for X-tty combo sessions.
Karoly Lorentey <lorentey@elte.hu>
parents:
82989
diff
changeset
|
1225 calculate_ins_del_char_costs (frame); |
2ecd1f669db9
Fixed X support, preliminary support for X-tty combo sessions.
Karoly Lorentey <lorentey@elte.hu>
parents:
82989
diff
changeset
|
1226 |
2ecd1f669db9
Fixed X support, preliminary support for X-tty combo sessions.
Karoly Lorentey <lorentey@elte.hu>
parents:
82989
diff
changeset
|
1227 /* Don't use TS_repeat if its padding is worse than sending the chars */ |
2ecd1f669db9
Fixed X support, preliminary support for X-tty combo sessions.
Karoly Lorentey <lorentey@elte.hu>
parents:
82989
diff
changeset
|
1228 if (tty->TS_repeat && per_line_cost (tty->TS_repeat) * baud_rate < 9000) |
2ecd1f669db9
Fixed X support, preliminary support for X-tty combo sessions.
Karoly Lorentey <lorentey@elte.hu>
parents:
82989
diff
changeset
|
1229 tty->RPov = string_cost (tty->TS_repeat); |
2ecd1f669db9
Fixed X support, preliminary support for X-tty combo sessions.
Karoly Lorentey <lorentey@elte.hu>
parents:
82989
diff
changeset
|
1230 else |
2ecd1f669db9
Fixed X support, preliminary support for X-tty combo sessions.
Karoly Lorentey <lorentey@elte.hu>
parents:
82989
diff
changeset
|
1231 tty->RPov = FRAME_COLS (frame) * 2; |
2ecd1f669db9
Fixed X support, preliminary support for X-tty combo sessions.
Karoly Lorentey <lorentey@elte.hu>
parents:
82989
diff
changeset
|
1232 |
2ecd1f669db9
Fixed X support, preliminary support for X-tty combo sessions.
Karoly Lorentey <lorentey@elte.hu>
parents:
82989
diff
changeset
|
1233 cmcostinit (FRAME_TTY (frame)); /* set up cursor motion costs */ |
2ecd1f669db9
Fixed X support, preliminary support for X-tty combo sessions.
Karoly Lorentey <lorentey@elte.hu>
parents:
82989
diff
changeset
|
1234 } |
253 | 1235 } |
1236 | |
1015
58c373be762c
* term.c (term_get_fkeys): Some systems define `static' to be the
Jim Blandy <jimb@redhat.com>
parents:
969
diff
changeset
|
1237 struct fkey_table { |
58c373be762c
* term.c (term_get_fkeys): Some systems define `static' to be the
Jim Blandy <jimb@redhat.com>
parents:
969
diff
changeset
|
1238 char *cap, *name; |
58c373be762c
* term.c (term_get_fkeys): Some systems define `static' to be the
Jim Blandy <jimb@redhat.com>
parents:
969
diff
changeset
|
1239 }; |
58c373be762c
* term.c (term_get_fkeys): Some systems define `static' to be the
Jim Blandy <jimb@redhat.com>
parents:
969
diff
changeset
|
1240 |
2137
8e4d2d1e7c66
Added lots more cookies to fkey_table[], and code to do even more.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1994
diff
changeset
|
1241 /* Termcap capability names that correspond directly to X keysyms. |
8e4d2d1e7c66
Added lots more cookies to fkey_table[], and code to do even more.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1994
diff
changeset
|
1242 Some of these (marked "terminfo") aren't supplied by old-style |
8e4d2d1e7c66
Added lots more cookies to fkey_table[], and code to do even more.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1994
diff
changeset
|
1243 (Berkeley) termcap entries. They're listed in X keysym order; |
8e4d2d1e7c66
Added lots more cookies to fkey_table[], and code to do even more.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1994
diff
changeset
|
1244 except we put the keypad keys first, so that if they clash with |
8e4d2d1e7c66
Added lots more cookies to fkey_table[], and code to do even more.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1994
diff
changeset
|
1245 other keys (as on the IBM PC keyboard) they get overridden. |
8e4d2d1e7c66
Added lots more cookies to fkey_table[], and code to do even more.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1994
diff
changeset
|
1246 */ |
8e4d2d1e7c66
Added lots more cookies to fkey_table[], and code to do even more.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1994
diff
changeset
|
1247 |
109664
b6bdd59e60ff
Use const for some arrays and functions.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
109653
diff
changeset
|
1248 static const struct fkey_table keys[] = |
25002 | 1249 { |
42122
706558f91b28
(keys): Add missing braces around initializer.
Pavel Janík <Pavel@Janik.cz>
parents:
40086
diff
changeset
|
1250 {"kh", "home"}, /* termcap */ |
706558f91b28
(keys): Add missing braces around initializer.
Pavel Janík <Pavel@Janik.cz>
parents:
40086
diff
changeset
|
1251 {"kl", "left"}, /* termcap */ |
706558f91b28
(keys): Add missing braces around initializer.
Pavel Janík <Pavel@Janik.cz>
parents:
40086
diff
changeset
|
1252 {"ku", "up"}, /* termcap */ |
706558f91b28
(keys): Add missing braces around initializer.
Pavel Janík <Pavel@Janik.cz>
parents:
40086
diff
changeset
|
1253 {"kr", "right"}, /* termcap */ |
706558f91b28
(keys): Add missing braces around initializer.
Pavel Janík <Pavel@Janik.cz>
parents:
40086
diff
changeset
|
1254 {"kd", "down"}, /* termcap */ |
706558f91b28
(keys): Add missing braces around initializer.
Pavel Janík <Pavel@Janik.cz>
parents:
40086
diff
changeset
|
1255 {"%8", "prior"}, /* terminfo */ |
706558f91b28
(keys): Add missing braces around initializer.
Pavel Janík <Pavel@Janik.cz>
parents:
40086
diff
changeset
|
1256 {"%5", "next"}, /* terminfo */ |
706558f91b28
(keys): Add missing braces around initializer.
Pavel Janík <Pavel@Janik.cz>
parents:
40086
diff
changeset
|
1257 {"@7", "end"}, /* terminfo */ |
706558f91b28
(keys): Add missing braces around initializer.
Pavel Janík <Pavel@Janik.cz>
parents:
40086
diff
changeset
|
1258 {"@1", "begin"}, /* terminfo */ |
706558f91b28
(keys): Add missing braces around initializer.
Pavel Janík <Pavel@Janik.cz>
parents:
40086
diff
changeset
|
1259 {"*6", "select"}, /* terminfo */ |
706558f91b28
(keys): Add missing braces around initializer.
Pavel Janík <Pavel@Janik.cz>
parents:
40086
diff
changeset
|
1260 {"%9", "print"}, /* terminfo */ |
706558f91b28
(keys): Add missing braces around initializer.
Pavel Janík <Pavel@Janik.cz>
parents:
40086
diff
changeset
|
1261 {"@4", "execute"}, /* terminfo --- actually the `command' key */ |
2137
8e4d2d1e7c66
Added lots more cookies to fkey_table[], and code to do even more.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1994
diff
changeset
|
1262 /* |
8e4d2d1e7c66
Added lots more cookies to fkey_table[], and code to do even more.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1994
diff
changeset
|
1263 * "insert" --- see below |
8e4d2d1e7c66
Added lots more cookies to fkey_table[], and code to do even more.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1994
diff
changeset
|
1264 */ |
42122
706558f91b28
(keys): Add missing braces around initializer.
Pavel Janík <Pavel@Janik.cz>
parents:
40086
diff
changeset
|
1265 {"&8", "undo"}, /* terminfo */ |
706558f91b28
(keys): Add missing braces around initializer.
Pavel Janík <Pavel@Janik.cz>
parents:
40086
diff
changeset
|
1266 {"%0", "redo"}, /* terminfo */ |
706558f91b28
(keys): Add missing braces around initializer.
Pavel Janík <Pavel@Janik.cz>
parents:
40086
diff
changeset
|
1267 {"%7", "menu"}, /* terminfo --- actually the `options' key */ |
706558f91b28
(keys): Add missing braces around initializer.
Pavel Janík <Pavel@Janik.cz>
parents:
40086
diff
changeset
|
1268 {"@0", "find"}, /* terminfo */ |
706558f91b28
(keys): Add missing braces around initializer.
Pavel Janík <Pavel@Janik.cz>
parents:
40086
diff
changeset
|
1269 {"@2", "cancel"}, /* terminfo */ |
706558f91b28
(keys): Add missing braces around initializer.
Pavel Janík <Pavel@Janik.cz>
parents:
40086
diff
changeset
|
1270 {"%1", "help"}, /* terminfo */ |
2137
8e4d2d1e7c66
Added lots more cookies to fkey_table[], and code to do even more.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1994
diff
changeset
|
1271 /* |
8e4d2d1e7c66
Added lots more cookies to fkey_table[], and code to do even more.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1994
diff
changeset
|
1272 * "break" goes here, but can't be reliably intercepted with termcap |
8e4d2d1e7c66
Added lots more cookies to fkey_table[], and code to do even more.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1994
diff
changeset
|
1273 */ |
42122
706558f91b28
(keys): Add missing braces around initializer.
Pavel Janík <Pavel@Janik.cz>
parents:
40086
diff
changeset
|
1274 {"&4", "reset"}, /* terminfo --- actually `restart' */ |
2137
8e4d2d1e7c66
Added lots more cookies to fkey_table[], and code to do even more.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1994
diff
changeset
|
1275 /* |
8e4d2d1e7c66
Added lots more cookies to fkey_table[], and code to do even more.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1994
diff
changeset
|
1276 * "system" and "user" --- no termcaps |
8e4d2d1e7c66
Added lots more cookies to fkey_table[], and code to do even more.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1994
diff
changeset
|
1277 */ |
42122
706558f91b28
(keys): Add missing braces around initializer.
Pavel Janík <Pavel@Janik.cz>
parents:
40086
diff
changeset
|
1278 {"kE", "clearline"}, /* terminfo */ |
706558f91b28
(keys): Add missing braces around initializer.
Pavel Janík <Pavel@Janik.cz>
parents:
40086
diff
changeset
|
1279 {"kA", "insertline"}, /* terminfo */ |
706558f91b28
(keys): Add missing braces around initializer.
Pavel Janík <Pavel@Janik.cz>
parents:
40086
diff
changeset
|
1280 {"kL", "deleteline"}, /* terminfo */ |
706558f91b28
(keys): Add missing braces around initializer.
Pavel Janík <Pavel@Janik.cz>
parents:
40086
diff
changeset
|
1281 {"kI", "insertchar"}, /* terminfo */ |
706558f91b28
(keys): Add missing braces around initializer.
Pavel Janík <Pavel@Janik.cz>
parents:
40086
diff
changeset
|
1282 {"kD", "deletechar"}, /* terminfo */ |
706558f91b28
(keys): Add missing braces around initializer.
Pavel Janík <Pavel@Janik.cz>
parents:
40086
diff
changeset
|
1283 {"kB", "backtab"}, /* terminfo */ |
2137
8e4d2d1e7c66
Added lots more cookies to fkey_table[], and code to do even more.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1994
diff
changeset
|
1284 /* |
8e4d2d1e7c66
Added lots more cookies to fkey_table[], and code to do even more.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1994
diff
changeset
|
1285 * "kp_backtab", "kp-space", "kp-tab" --- no termcaps |
8e4d2d1e7c66
Added lots more cookies to fkey_table[], and code to do even more.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1994
diff
changeset
|
1286 */ |
42122
706558f91b28
(keys): Add missing braces around initializer.
Pavel Janík <Pavel@Janik.cz>
parents:
40086
diff
changeset
|
1287 {"@8", "kp-enter"}, /* terminfo */ |
2137
8e4d2d1e7c66
Added lots more cookies to fkey_table[], and code to do even more.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1994
diff
changeset
|
1288 /* |
8e4d2d1e7c66
Added lots more cookies to fkey_table[], and code to do even more.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1994
diff
changeset
|
1289 * "kp-f1", "kp-f2", "kp-f3" "kp-f4", |
8e4d2d1e7c66
Added lots more cookies to fkey_table[], and code to do even more.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1994
diff
changeset
|
1290 * "kp-multiply", "kp-add", "kp-separator", |
8e4d2d1e7c66
Added lots more cookies to fkey_table[], and code to do even more.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1994
diff
changeset
|
1291 * "kp-subtract", "kp-decimal", "kp-divide", "kp-0"; |
8e4d2d1e7c66
Added lots more cookies to fkey_table[], and code to do even more.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1994
diff
changeset
|
1292 * --- no termcaps for any of these. |
8e4d2d1e7c66
Added lots more cookies to fkey_table[], and code to do even more.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1994
diff
changeset
|
1293 */ |
42122
706558f91b28
(keys): Add missing braces around initializer.
Pavel Janík <Pavel@Janik.cz>
parents:
40086
diff
changeset
|
1294 {"K4", "kp-1"}, /* terminfo */ |
2137
8e4d2d1e7c66
Added lots more cookies to fkey_table[], and code to do even more.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1994
diff
changeset
|
1295 /* |
8e4d2d1e7c66
Added lots more cookies to fkey_table[], and code to do even more.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1994
diff
changeset
|
1296 * "kp-2" --- no termcap |
8e4d2d1e7c66
Added lots more cookies to fkey_table[], and code to do even more.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1994
diff
changeset
|
1297 */ |
42122
706558f91b28
(keys): Add missing braces around initializer.
Pavel Janík <Pavel@Janik.cz>
parents:
40086
diff
changeset
|
1298 {"K5", "kp-3"}, /* terminfo */ |
2137
8e4d2d1e7c66
Added lots more cookies to fkey_table[], and code to do even more.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1994
diff
changeset
|
1299 /* |
8e4d2d1e7c66
Added lots more cookies to fkey_table[], and code to do even more.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1994
diff
changeset
|
1300 * "kp-4" --- no termcap |
8e4d2d1e7c66
Added lots more cookies to fkey_table[], and code to do even more.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1994
diff
changeset
|
1301 */ |
42122
706558f91b28
(keys): Add missing braces around initializer.
Pavel Janík <Pavel@Janik.cz>
parents:
40086
diff
changeset
|
1302 {"K2", "kp-5"}, /* terminfo */ |
2137
8e4d2d1e7c66
Added lots more cookies to fkey_table[], and code to do even more.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1994
diff
changeset
|
1303 /* |
8e4d2d1e7c66
Added lots more cookies to fkey_table[], and code to do even more.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1994
diff
changeset
|
1304 * "kp-6" --- no termcap |
8e4d2d1e7c66
Added lots more cookies to fkey_table[], and code to do even more.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1994
diff
changeset
|
1305 */ |
42122
706558f91b28
(keys): Add missing braces around initializer.
Pavel Janík <Pavel@Janik.cz>
parents:
40086
diff
changeset
|
1306 {"K1", "kp-7"}, /* terminfo */ |
2137
8e4d2d1e7c66
Added lots more cookies to fkey_table[], and code to do even more.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1994
diff
changeset
|
1307 /* |
8e4d2d1e7c66
Added lots more cookies to fkey_table[], and code to do even more.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1994
diff
changeset
|
1308 * "kp-8" --- no termcap |
8e4d2d1e7c66
Added lots more cookies to fkey_table[], and code to do even more.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1994
diff
changeset
|
1309 */ |
42122
706558f91b28
(keys): Add missing braces around initializer.
Pavel Janík <Pavel@Janik.cz>
parents:
40086
diff
changeset
|
1310 {"K3", "kp-9"}, /* terminfo */ |
2137
8e4d2d1e7c66
Added lots more cookies to fkey_table[], and code to do even more.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1994
diff
changeset
|
1311 /* |
8e4d2d1e7c66
Added lots more cookies to fkey_table[], and code to do even more.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1994
diff
changeset
|
1312 * "kp-equal" --- no termcap |
8e4d2d1e7c66
Added lots more cookies to fkey_table[], and code to do even more.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1994
diff
changeset
|
1313 */ |
42122
706558f91b28
(keys): Add missing braces around initializer.
Pavel Janík <Pavel@Janik.cz>
parents:
40086
diff
changeset
|
1314 {"k1", "f1"}, |
706558f91b28
(keys): Add missing braces around initializer.
Pavel Janík <Pavel@Janik.cz>
parents:
40086
diff
changeset
|
1315 {"k2", "f2"}, |
706558f91b28
(keys): Add missing braces around initializer.
Pavel Janík <Pavel@Janik.cz>
parents:
40086
diff
changeset
|
1316 {"k3", "f3"}, |
706558f91b28
(keys): Add missing braces around initializer.
Pavel Janík <Pavel@Janik.cz>
parents:
40086
diff
changeset
|
1317 {"k4", "f4"}, |
706558f91b28
(keys): Add missing braces around initializer.
Pavel Janík <Pavel@Janik.cz>
parents:
40086
diff
changeset
|
1318 {"k5", "f5"}, |
706558f91b28
(keys): Add missing braces around initializer.
Pavel Janík <Pavel@Janik.cz>
parents:
40086
diff
changeset
|
1319 {"k6", "f6"}, |
706558f91b28
(keys): Add missing braces around initializer.
Pavel Janík <Pavel@Janik.cz>
parents:
40086
diff
changeset
|
1320 {"k7", "f7"}, |
706558f91b28
(keys): Add missing braces around initializer.
Pavel Janík <Pavel@Janik.cz>
parents:
40086
diff
changeset
|
1321 {"k8", "f8"}, |
61591
b015e12637bc
(struct keys): Add support for shifted keys.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
59382
diff
changeset
|
1322 {"k9", "f9"}, |
b015e12637bc
(struct keys): Add support for shifted keys.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
59382
diff
changeset
|
1323 |
b015e12637bc
(struct keys): Add support for shifted keys.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
59382
diff
changeset
|
1324 {"&0", "S-cancel"}, /*shifted cancel key*/ |
b015e12637bc
(struct keys): Add support for shifted keys.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
59382
diff
changeset
|
1325 {"&9", "S-begin"}, /*shifted begin key*/ |
b015e12637bc
(struct keys): Add support for shifted keys.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
59382
diff
changeset
|
1326 {"*0", "S-find"}, /*shifted find key*/ |
b015e12637bc
(struct keys): Add support for shifted keys.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
59382
diff
changeset
|
1327 {"*1", "S-execute"}, /*shifted execute? actually shifted command key*/ |
b015e12637bc
(struct keys): Add support for shifted keys.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
59382
diff
changeset
|
1328 {"*4", "S-delete"}, /*shifted delete-character key*/ |
b015e12637bc
(struct keys): Add support for shifted keys.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
59382
diff
changeset
|
1329 {"*7", "S-end"}, /*shifted end key*/ |
b015e12637bc
(struct keys): Add support for shifted keys.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
59382
diff
changeset
|
1330 {"*8", "S-clearline"}, /*shifted clear-to end-of-line key*/ |
b015e12637bc
(struct keys): Add support for shifted keys.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
59382
diff
changeset
|
1331 {"#1", "S-help"}, /*shifted help key*/ |
b015e12637bc
(struct keys): Add support for shifted keys.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
59382
diff
changeset
|
1332 {"#2", "S-home"}, /*shifted home key*/ |
b015e12637bc
(struct keys): Add support for shifted keys.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
59382
diff
changeset
|
1333 {"#3", "S-insert"}, /*shifted insert-character key*/ |
b015e12637bc
(struct keys): Add support for shifted keys.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
59382
diff
changeset
|
1334 {"#4", "S-left"}, /*shifted left-arrow key*/ |
b015e12637bc
(struct keys): Add support for shifted keys.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
59382
diff
changeset
|
1335 {"%d", "S-menu"}, /*shifted menu? actually shifted options key*/ |
b015e12637bc
(struct keys): Add support for shifted keys.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
59382
diff
changeset
|
1336 {"%c", "S-next"}, /*shifted next key*/ |
b015e12637bc
(struct keys): Add support for shifted keys.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
59382
diff
changeset
|
1337 {"%e", "S-prior"}, /*shifted previous key*/ |
b015e12637bc
(struct keys): Add support for shifted keys.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
59382
diff
changeset
|
1338 {"%f", "S-print"}, /*shifted print key*/ |
b015e12637bc
(struct keys): Add support for shifted keys.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
59382
diff
changeset
|
1339 {"%g", "S-redo"}, /*shifted redo key*/ |
b015e12637bc
(struct keys): Add support for shifted keys.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
59382
diff
changeset
|
1340 {"%i", "S-right"}, /*shifted right-arrow key*/ |
b015e12637bc
(struct keys): Add support for shifted keys.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
59382
diff
changeset
|
1341 {"!3", "S-undo"} /*shifted undo key*/ |
1015
58c373be762c
* term.c (term_get_fkeys): Some systems define `static' to be the
Jim Blandy <jimb@redhat.com>
parents:
969
diff
changeset
|
1342 }; |
58c373be762c
* term.c (term_get_fkeys): Some systems define `static' to be the
Jim Blandy <jimb@redhat.com>
parents:
969
diff
changeset
|
1343 |
109516
68ca98ae70fb
Make building under stricter warning flags somewhat cleaner.
Juanma Barranquero <lekktu@gmail.com>
parents:
109376
diff
changeset
|
1344 #ifndef DOS_NT |
83317
e235da12dd03
Make sure the terminfo function key sequences are set up in the correct function-key-map.
Karoly Lorentey <lorentey@elte.hu>
parents:
83315
diff
changeset
|
1345 static char **term_get_fkeys_address; |
e235da12dd03
Make sure the terminfo function key sequences are set up in the correct function-key-map.
Karoly Lorentey <lorentey@elte.hu>
parents:
83315
diff
changeset
|
1346 static KBOARD *term_get_fkeys_kboard; |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109108
diff
changeset
|
1347 static Lisp_Object term_get_fkeys_1 (void); |
4543
929e4c850e76
(term_get_fkeys_define_1, term_get_fkeys_define): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
4499
diff
changeset
|
1348 |
85106
fd282fb888de
Add new `input-decode-map' keymap and use it for temrinal
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
84981
diff
changeset
|
1349 /* Find the escape codes sent by the function keys for Vinput_decode_map. |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
46559
diff
changeset
|
1350 This function scans the termcap function key sequence entries, and |
85106
fd282fb888de
Add new `input-decode-map' keymap and use it for temrinal
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
84981
diff
changeset
|
1351 adds entries to Vinput_decode_map for each function key it finds. */ |
2137
8e4d2d1e7c66
Added lots more cookies to fkey_table[], and code to do even more.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1994
diff
changeset
|
1352 |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
1353 static void |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109108
diff
changeset
|
1354 term_get_fkeys (char **address, KBOARD *kboard) |
533 | 1355 { |
6248
0e4319197d29
(term_get_fkeys_data): Variable removed.
Roland McGrath <roland@gnu.org>
parents:
5933
diff
changeset
|
1356 /* We run the body of the function (term_get_fkeys_1) and ignore all Lisp |
0e4319197d29
(term_get_fkeys_data): Variable removed.
Roland McGrath <roland@gnu.org>
parents:
5933
diff
changeset
|
1357 errors during the call. The only errors should be from Fdefine_key |
0e4319197d29
(term_get_fkeys_data): Variable removed.
Roland McGrath <roland@gnu.org>
parents:
5933
diff
changeset
|
1358 when given a key sequence containing an invalid prefix key. If the |
0e4319197d29
(term_get_fkeys_data): Variable removed.
Roland McGrath <roland@gnu.org>
parents:
5933
diff
changeset
|
1359 termcap defines function keys which use a prefix that is already bound |
0e4319197d29
(term_get_fkeys_data): Variable removed.
Roland McGrath <roland@gnu.org>
parents:
5933
diff
changeset
|
1360 to a command by the default bindings, we should silently ignore that |
0e4319197d29
(term_get_fkeys_data): Variable removed.
Roland McGrath <roland@gnu.org>
parents:
5933
diff
changeset
|
1361 function key specification, rather than giving the user an error and |
0e4319197d29
(term_get_fkeys_data): Variable removed.
Roland McGrath <roland@gnu.org>
parents:
5933
diff
changeset
|
1362 refusing to run at all on such a terminal. */ |
0e4319197d29
(term_get_fkeys_data): Variable removed.
Roland McGrath <roland@gnu.org>
parents:
5933
diff
changeset
|
1363 |
83317
e235da12dd03
Make sure the terminfo function key sequences are set up in the correct function-key-map.
Karoly Lorentey <lorentey@elte.hu>
parents:
83315
diff
changeset
|
1364 term_get_fkeys_address = address; |
e235da12dd03
Make sure the terminfo function key sequences are set up in the correct function-key-map.
Karoly Lorentey <lorentey@elte.hu>
parents:
83315
diff
changeset
|
1365 term_get_fkeys_kboard = kboard; |
6248
0e4319197d29
(term_get_fkeys_data): Variable removed.
Roland McGrath <roland@gnu.org>
parents:
5933
diff
changeset
|
1366 internal_condition_case (term_get_fkeys_1, Qerror, Fidentity); |
0e4319197d29
(term_get_fkeys_data): Variable removed.
Roland McGrath <roland@gnu.org>
parents:
5933
diff
changeset
|
1367 } |
0e4319197d29
(term_get_fkeys_data): Variable removed.
Roland McGrath <roland@gnu.org>
parents:
5933
diff
changeset
|
1368 |
0e4319197d29
(term_get_fkeys_data): Variable removed.
Roland McGrath <roland@gnu.org>
parents:
5933
diff
changeset
|
1369 static Lisp_Object |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109108
diff
changeset
|
1370 term_get_fkeys_1 (void) |
6248
0e4319197d29
(term_get_fkeys_data): Variable removed.
Roland McGrath <roland@gnu.org>
parents:
5933
diff
changeset
|
1371 { |
533 | 1372 int i; |
1373 | |
83317
e235da12dd03
Make sure the terminfo function key sequences are set up in the correct function-key-map.
Karoly Lorentey <lorentey@elte.hu>
parents:
83315
diff
changeset
|
1374 char **address = term_get_fkeys_address; |
e235da12dd03
Make sure the terminfo function key sequences are set up in the correct function-key-map.
Karoly Lorentey <lorentey@elte.hu>
parents:
83315
diff
changeset
|
1375 KBOARD *kboard = term_get_fkeys_kboard; |
92281
4bf10a5a835d
(encode_terminal_code, produce_special_glyphs): Likewise.
Kim F. Storm <storm@cua.dk>
parents:
92237
diff
changeset
|
1376 |
3359
ef29e2a4fc46
(term_get_fkeys): If not initialized, init Vfunction_key_map.
Richard M. Stallman <rms@gnu.org>
parents:
2961
diff
changeset
|
1377 /* This can happen if CANNOT_DUMP or with strange options. */ |
85106
fd282fb888de
Add new `input-decode-map' keymap and use it for temrinal
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
84981
diff
changeset
|
1378 if (!KEYMAPP (kboard->Vinput_decode_map)) |
fd282fb888de
Add new `input-decode-map' keymap and use it for temrinal
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
84981
diff
changeset
|
1379 kboard->Vinput_decode_map = Fmake_sparse_keymap (Qnil); |
3359
ef29e2a4fc46
(term_get_fkeys): If not initialized, init Vfunction_key_map.
Richard M. Stallman <rms@gnu.org>
parents:
2961
diff
changeset
|
1380 |
533 | 1381 for (i = 0; i < (sizeof (keys)/sizeof (keys[0])); i++) |
1382 { | |
1383 char *sequence = tgetstr (keys[i].cap, address); | |
1384 if (sequence) | |
85106
fd282fb888de
Add new `input-decode-map' keymap and use it for temrinal
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
84981
diff
changeset
|
1385 Fdefine_key (kboard->Vinput_decode_map, build_string (sequence), |
6248
0e4319197d29
(term_get_fkeys_data): Variable removed.
Roland McGrath <roland@gnu.org>
parents:
5933
diff
changeset
|
1386 Fmake_vector (make_number (1), |
0e4319197d29
(term_get_fkeys_data): Variable removed.
Roland McGrath <roland@gnu.org>
parents:
5933
diff
changeset
|
1387 intern (keys[i].name))); |
533 | 1388 } |
1015
58c373be762c
* term.c (term_get_fkeys): Some systems define `static' to be the
Jim Blandy <jimb@redhat.com>
parents:
969
diff
changeset
|
1389 |
58c373be762c
* term.c (term_get_fkeys): Some systems define `static' to be the
Jim Blandy <jimb@redhat.com>
parents:
969
diff
changeset
|
1390 /* The uses of the "k0" capability are inconsistent; sometimes it |
58c373be762c
* term.c (term_get_fkeys): Some systems define `static' to be the
Jim Blandy <jimb@redhat.com>
parents:
969
diff
changeset
|
1391 describes F10, whereas othertimes it describes F0 and "k;" describes F10. |
3591
507f64624555
Apply typo patches from Paul Eggert.
Jim Blandy <jimb@redhat.com>
parents:
3489
diff
changeset
|
1392 We will attempt to politely accommodate both systems by testing for |
1015
58c373be762c
* term.c (term_get_fkeys): Some systems define `static' to be the
Jim Blandy <jimb@redhat.com>
parents:
969
diff
changeset
|
1393 "k;", and if it is present, assuming that "k0" denotes F0, otherwise F10. |
58c373be762c
* term.c (term_get_fkeys): Some systems define `static' to be the
Jim Blandy <jimb@redhat.com>
parents:
969
diff
changeset
|
1394 */ |
58c373be762c
* term.c (term_get_fkeys): Some systems define `static' to be the
Jim Blandy <jimb@redhat.com>
parents:
969
diff
changeset
|
1395 { |
58c373be762c
* term.c (term_get_fkeys): Some systems define `static' to be the
Jim Blandy <jimb@redhat.com>
parents:
969
diff
changeset
|
1396 char *k_semi = tgetstr ("k;", address); |
58c373be762c
* term.c (term_get_fkeys): Some systems define `static' to be the
Jim Blandy <jimb@redhat.com>
parents:
969
diff
changeset
|
1397 char *k0 = tgetstr ("k0", address); |
58c373be762c
* term.c (term_get_fkeys): Some systems define `static' to be the
Jim Blandy <jimb@redhat.com>
parents:
969
diff
changeset
|
1398 char *k0_name = "f10"; |
58c373be762c
* term.c (term_get_fkeys): Some systems define `static' to be the
Jim Blandy <jimb@redhat.com>
parents:
969
diff
changeset
|
1399 |
58c373be762c
* term.c (term_get_fkeys): Some systems define `static' to be the
Jim Blandy <jimb@redhat.com>
parents:
969
diff
changeset
|
1400 if (k_semi) |
58c373be762c
* term.c (term_get_fkeys): Some systems define `static' to be the
Jim Blandy <jimb@redhat.com>
parents:
969
diff
changeset
|
1401 { |
43073
c9baf4b00820
(term_get_fkeys_1): If `k0' and `k;' are both specified and
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
42959
diff
changeset
|
1402 if (k0) |
c9baf4b00820
(term_get_fkeys_1): If `k0' and `k;' are both specified and
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
42959
diff
changeset
|
1403 /* Define f0 first, so that f10 takes precedence in case the |
c9baf4b00820
(term_get_fkeys_1): If `k0' and `k;' are both specified and
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
42959
diff
changeset
|
1404 key sequences happens to be the same. */ |
85106
fd282fb888de
Add new `input-decode-map' keymap and use it for temrinal
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
84981
diff
changeset
|
1405 Fdefine_key (kboard->Vinput_decode_map, build_string (k0), |
43073
c9baf4b00820
(term_get_fkeys_1): If `k0' and `k;' are both specified and
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
42959
diff
changeset
|
1406 Fmake_vector (make_number (1), intern ("f0"))); |
85106
fd282fb888de
Add new `input-decode-map' keymap and use it for temrinal
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
84981
diff
changeset
|
1407 Fdefine_key (kboard->Vinput_decode_map, build_string (k_semi), |
6248
0e4319197d29
(term_get_fkeys_data): Variable removed.
Roland McGrath <roland@gnu.org>
parents:
5933
diff
changeset
|
1408 Fmake_vector (make_number (1), intern ("f10"))); |
1015
58c373be762c
* term.c (term_get_fkeys): Some systems define `static' to be the
Jim Blandy <jimb@redhat.com>
parents:
969
diff
changeset
|
1409 } |
43073
c9baf4b00820
(term_get_fkeys_1): If `k0' and `k;' are both specified and
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
42959
diff
changeset
|
1410 else if (k0) |
85106
fd282fb888de
Add new `input-decode-map' keymap and use it for temrinal
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
84981
diff
changeset
|
1411 Fdefine_key (kboard->Vinput_decode_map, build_string (k0), |
6248
0e4319197d29
(term_get_fkeys_data): Variable removed.
Roland McGrath <roland@gnu.org>
parents:
5933
diff
changeset
|
1412 Fmake_vector (make_number (1), intern (k0_name))); |
1015
58c373be762c
* term.c (term_get_fkeys): Some systems define `static' to be the
Jim Blandy <jimb@redhat.com>
parents:
969
diff
changeset
|
1413 } |
2137
8e4d2d1e7c66
Added lots more cookies to fkey_table[], and code to do even more.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1994
diff
changeset
|
1414 |
8e4d2d1e7c66
Added lots more cookies to fkey_table[], and code to do even more.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1994
diff
changeset
|
1415 /* Set up cookies for numbered function keys above f10. */ |
8e4d2d1e7c66
Added lots more cookies to fkey_table[], and code to do even more.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1994
diff
changeset
|
1416 { |
8e4d2d1e7c66
Added lots more cookies to fkey_table[], and code to do even more.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1994
diff
changeset
|
1417 char fcap[3], fkey[4]; |
8e4d2d1e7c66
Added lots more cookies to fkey_table[], and code to do even more.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1994
diff
changeset
|
1418 |
3489
5c2b4797aab2
(term_get_fkeys): Use correct names for F10 and up.
Richard M. Stallman <rms@gnu.org>
parents:
3359
diff
changeset
|
1419 fcap[0] = 'F'; fcap[2] = '\0'; |
2137
8e4d2d1e7c66
Added lots more cookies to fkey_table[], and code to do even more.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1994
diff
changeset
|
1420 for (i = 11; i < 64; i++) |
8e4d2d1e7c66
Added lots more cookies to fkey_table[], and code to do even more.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1994
diff
changeset
|
1421 { |
8e4d2d1e7c66
Added lots more cookies to fkey_table[], and code to do even more.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1994
diff
changeset
|
1422 if (i <= 19) |
8e4d2d1e7c66
Added lots more cookies to fkey_table[], and code to do even more.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1994
diff
changeset
|
1423 fcap[1] = '1' + i - 11; |
8e4d2d1e7c66
Added lots more cookies to fkey_table[], and code to do even more.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1994
diff
changeset
|
1424 else if (i <= 45) |
10481
24756aef26e3
(term_get_fkeys_1): Bug fix for function key above f19.
Richard M. Stallman <rms@gnu.org>
parents:
10439
diff
changeset
|
1425 fcap[1] = 'A' + i - 20; |
2137
8e4d2d1e7c66
Added lots more cookies to fkey_table[], and code to do even more.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1994
diff
changeset
|
1426 else |
10481
24756aef26e3
(term_get_fkeys_1): Bug fix for function key above f19.
Richard M. Stallman <rms@gnu.org>
parents:
10439
diff
changeset
|
1427 fcap[1] = 'a' + i - 46; |
2137
8e4d2d1e7c66
Added lots more cookies to fkey_table[], and code to do even more.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1994
diff
changeset
|
1428 |
3489
5c2b4797aab2
(term_get_fkeys): Use correct names for F10 and up.
Richard M. Stallman <rms@gnu.org>
parents:
3359
diff
changeset
|
1429 { |
5c2b4797aab2
(term_get_fkeys): Use correct names for F10 and up.
Richard M. Stallman <rms@gnu.org>
parents:
3359
diff
changeset
|
1430 char *sequence = tgetstr (fcap, address); |
5c2b4797aab2
(term_get_fkeys): Use correct names for F10 and up.
Richard M. Stallman <rms@gnu.org>
parents:
3359
diff
changeset
|
1431 if (sequence) |
5c2b4797aab2
(term_get_fkeys): Use correct names for F10 and up.
Richard M. Stallman <rms@gnu.org>
parents:
3359
diff
changeset
|
1432 { |
4543
929e4c850e76
(term_get_fkeys_define_1, term_get_fkeys_define): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
4499
diff
changeset
|
1433 sprintf (fkey, "f%d", i); |
85106
fd282fb888de
Add new `input-decode-map' keymap and use it for temrinal
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
84981
diff
changeset
|
1434 Fdefine_key (kboard->Vinput_decode_map, build_string (sequence), |
6248
0e4319197d29
(term_get_fkeys_data): Variable removed.
Roland McGrath <roland@gnu.org>
parents:
5933
diff
changeset
|
1435 Fmake_vector (make_number (1), |
0e4319197d29
(term_get_fkeys_data): Variable removed.
Roland McGrath <roland@gnu.org>
parents:
5933
diff
changeset
|
1436 intern (fkey))); |
3489
5c2b4797aab2
(term_get_fkeys): Use correct names for F10 and up.
Richard M. Stallman <rms@gnu.org>
parents:
3359
diff
changeset
|
1437 } |
5c2b4797aab2
(term_get_fkeys): Use correct names for F10 and up.
Richard M. Stallman <rms@gnu.org>
parents:
3359
diff
changeset
|
1438 } |
2137
8e4d2d1e7c66
Added lots more cookies to fkey_table[], and code to do even more.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1994
diff
changeset
|
1439 } |
8e4d2d1e7c66
Added lots more cookies to fkey_table[], and code to do even more.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1994
diff
changeset
|
1440 } |
8e4d2d1e7c66
Added lots more cookies to fkey_table[], and code to do even more.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1994
diff
changeset
|
1441 |
8e4d2d1e7c66
Added lots more cookies to fkey_table[], and code to do even more.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1994
diff
changeset
|
1442 /* |
8e4d2d1e7c66
Added lots more cookies to fkey_table[], and code to do even more.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1994
diff
changeset
|
1443 * Various mappings to try and get a better fit. |
8e4d2d1e7c66
Added lots more cookies to fkey_table[], and code to do even more.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1994
diff
changeset
|
1444 */ |
8e4d2d1e7c66
Added lots more cookies to fkey_table[], and code to do even more.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1994
diff
changeset
|
1445 { |
3489
5c2b4797aab2
(term_get_fkeys): Use correct names for F10 and up.
Richard M. Stallman <rms@gnu.org>
parents:
3359
diff
changeset
|
1446 #define CONDITIONAL_REASSIGN(cap1, cap2, sym) \ |
5c2b4797aab2
(term_get_fkeys): Use correct names for F10 and up.
Richard M. Stallman <rms@gnu.org>
parents:
3359
diff
changeset
|
1447 if (!tgetstr (cap1, address)) \ |
5c2b4797aab2
(term_get_fkeys): Use correct names for F10 and up.
Richard M. Stallman <rms@gnu.org>
parents:
3359
diff
changeset
|
1448 { \ |
5c2b4797aab2
(term_get_fkeys): Use correct names for F10 and up.
Richard M. Stallman <rms@gnu.org>
parents:
3359
diff
changeset
|
1449 char *sequence = tgetstr (cap2, address); \ |
83317
e235da12dd03
Make sure the terminfo function key sequences are set up in the correct function-key-map.
Karoly Lorentey <lorentey@elte.hu>
parents:
83315
diff
changeset
|
1450 if (sequence) \ |
85106
fd282fb888de
Add new `input-decode-map' keymap and use it for temrinal
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
84981
diff
changeset
|
1451 Fdefine_key (kboard->Vinput_decode_map, build_string (sequence), \ |
83317
e235da12dd03
Make sure the terminfo function key sequences are set up in the correct function-key-map.
Karoly Lorentey <lorentey@elte.hu>
parents:
83315
diff
changeset
|
1452 Fmake_vector (make_number (1), \ |
e235da12dd03
Make sure the terminfo function key sequences are set up in the correct function-key-map.
Karoly Lorentey <lorentey@elte.hu>
parents:
83315
diff
changeset
|
1453 intern (sym))); \ |
3489
5c2b4797aab2
(term_get_fkeys): Use correct names for F10 and up.
Richard M. Stallman <rms@gnu.org>
parents:
3359
diff
changeset
|
1454 } |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
46559
diff
changeset
|
1455 |
2137
8e4d2d1e7c66
Added lots more cookies to fkey_table[], and code to do even more.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1994
diff
changeset
|
1456 /* if there's no key_next keycap, map key_npage to `next' keysym */ |
2243
23228edebc59
Fix spacing conventions.
Richard M. Stallman <rms@gnu.org>
parents:
2239
diff
changeset
|
1457 CONDITIONAL_REASSIGN ("%5", "kN", "next"); |
2137
8e4d2d1e7c66
Added lots more cookies to fkey_table[], and code to do even more.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1994
diff
changeset
|
1458 /* if there's no key_prev keycap, map key_ppage to `previous' keysym */ |
3706
5a563b062c0d
(term_get_fkeys): Use `prior', not `previous', for %8/kP.
Richard M. Stallman <rms@gnu.org>
parents:
3591
diff
changeset
|
1459 CONDITIONAL_REASSIGN ("%8", "kP", "prior"); |
2137
8e4d2d1e7c66
Added lots more cookies to fkey_table[], and code to do even more.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1994
diff
changeset
|
1460 /* if there's no key_dc keycap, map key_ic to `insert' keysym */ |
2243
23228edebc59
Fix spacing conventions.
Richard M. Stallman <rms@gnu.org>
parents:
2239
diff
changeset
|
1461 CONDITIONAL_REASSIGN ("kD", "kI", "insert"); |
19385
8f58b5d12021
(term_get_fkeys_1): Use kH as alternate for move-to-last-line.
Richard M. Stallman <rms@gnu.org>
parents:
19277
diff
changeset
|
1462 /* if there's no key_end keycap, map key_ll to 'end' keysym */ |
8f58b5d12021
(term_get_fkeys_1): Use kH as alternate for move-to-last-line.
Richard M. Stallman <rms@gnu.org>
parents:
19277
diff
changeset
|
1463 CONDITIONAL_REASSIGN ("@7", "kH", "end"); |
9524
f42e5fd15f6f
(term_get_fkeys_1): Workaround for IBM's dialect of terminfo.
Karl Heuer <kwzh@gnu.org>
parents:
8898
diff
changeset
|
1464 |
f42e5fd15f6f
(term_get_fkeys_1): Workaround for IBM's dialect of terminfo.
Karl Heuer <kwzh@gnu.org>
parents:
8898
diff
changeset
|
1465 /* IBM has their own non-standard dialect of terminfo. |
f42e5fd15f6f
(term_get_fkeys_1): Workaround for IBM's dialect of terminfo.
Karl Heuer <kwzh@gnu.org>
parents:
8898
diff
changeset
|
1466 If the standard name isn't found, try the IBM name. */ |
f42e5fd15f6f
(term_get_fkeys_1): Workaround for IBM's dialect of terminfo.
Karl Heuer <kwzh@gnu.org>
parents:
8898
diff
changeset
|
1467 CONDITIONAL_REASSIGN ("kB", "KO", "backtab"); |
f42e5fd15f6f
(term_get_fkeys_1): Workaround for IBM's dialect of terminfo.
Karl Heuer <kwzh@gnu.org>
parents:
8898
diff
changeset
|
1468 CONDITIONAL_REASSIGN ("@4", "kJ", "execute"); /* actually "action" */ |
f42e5fd15f6f
(term_get_fkeys_1): Workaround for IBM's dialect of terminfo.
Karl Heuer <kwzh@gnu.org>
parents:
8898
diff
changeset
|
1469 CONDITIONAL_REASSIGN ("@4", "kc", "execute"); /* actually "command" */ |
f42e5fd15f6f
(term_get_fkeys_1): Workaround for IBM's dialect of terminfo.
Karl Heuer <kwzh@gnu.org>
parents:
8898
diff
changeset
|
1470 CONDITIONAL_REASSIGN ("%7", "ki", "menu"); |
f42e5fd15f6f
(term_get_fkeys_1): Workaround for IBM's dialect of terminfo.
Karl Heuer <kwzh@gnu.org>
parents:
8898
diff
changeset
|
1471 CONDITIONAL_REASSIGN ("@7", "kw", "end"); |
f42e5fd15f6f
(term_get_fkeys_1): Workaround for IBM's dialect of terminfo.
Karl Heuer <kwzh@gnu.org>
parents:
8898
diff
changeset
|
1472 CONDITIONAL_REASSIGN ("F1", "k<", "f11"); |
f42e5fd15f6f
(term_get_fkeys_1): Workaround for IBM's dialect of terminfo.
Karl Heuer <kwzh@gnu.org>
parents:
8898
diff
changeset
|
1473 CONDITIONAL_REASSIGN ("F2", "k>", "f12"); |
f42e5fd15f6f
(term_get_fkeys_1): Workaround for IBM's dialect of terminfo.
Karl Heuer <kwzh@gnu.org>
parents:
8898
diff
changeset
|
1474 CONDITIONAL_REASSIGN ("%1", "kq", "help"); |
f42e5fd15f6f
(term_get_fkeys_1): Workaround for IBM's dialect of terminfo.
Karl Heuer <kwzh@gnu.org>
parents:
8898
diff
changeset
|
1475 CONDITIONAL_REASSIGN ("*6", "kU", "select"); |
2224
49bda4cf498c
Supply second arg for tgetstr() calls.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2179
diff
changeset
|
1476 #undef CONDITIONAL_REASSIGN |
2137
8e4d2d1e7c66
Added lots more cookies to fkey_table[], and code to do even more.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
1994
diff
changeset
|
1477 } |
25002 | 1478 |
1479 return Qnil; | |
533 | 1480 } |
109516
68ca98ae70fb
Make building under stricter warning flags somewhat cleaner.
Juanma Barranquero <lekktu@gmail.com>
parents:
109376
diff
changeset
|
1481 #endif /* not DOS_NT */ |
533 | 1482 |
1483 | |
25002 | 1484 /*********************************************************************** |
1485 Character Display Information | |
1486 ***********************************************************************/ | |
109100
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108235
diff
changeset
|
1487 static void append_glyph (struct it *); |
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108235
diff
changeset
|
1488 static void produce_stretch_glyph (struct it *); |
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108235
diff
changeset
|
1489 static void append_composite_glyph (struct it *); |
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108235
diff
changeset
|
1490 static void produce_composite_glyph (struct it *); |
111237
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1491 static void append_glyphless_glyph (struct it *, int, char *); |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1492 static void produce_glyphless_glyph (struct it *, int, Lisp_Object); |
25002 | 1493 |
1494 /* Append glyphs to IT's glyph_row. Called from produce_glyphs for | |
68661
4e22dd401a52
(append_glyph): Refer to it->char_to_display instead of
Kenichi Handa <handa@m17n.org>
parents:
68651
diff
changeset
|
1495 terminal frames if IT->glyph_row != NULL. IT->char_to_display is |
4e22dd401a52
(append_glyph): Refer to it->char_to_display instead of
Kenichi Handa <handa@m17n.org>
parents:
68651
diff
changeset
|
1496 the character for which to produce glyphs; IT->face_id contains the |
4e22dd401a52
(append_glyph): Refer to it->char_to_display instead of
Kenichi Handa <handa@m17n.org>
parents:
68651
diff
changeset
|
1497 character's face. Padding glyphs are appended if IT->c has a |
4e22dd401a52
(append_glyph): Refer to it->char_to_display instead of
Kenichi Handa <handa@m17n.org>
parents:
68651
diff
changeset
|
1498 IT->pixel_width > 1. */ |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
46559
diff
changeset
|
1499 |
25002 | 1500 static void |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109108
diff
changeset
|
1501 append_glyph (struct it *it) |
25002 | 1502 { |
1503 struct glyph *glyph, *end; | |
1504 int i; | |
1505 | |
1506 xassert (it->glyph_row); | |
1507 glyph = (it->glyph_row->glyphs[it->area] | |
1508 + it->glyph_row->used[it->area]); | |
1509 end = it->glyph_row->glyphs[1 + it->area]; | |
1510 | |
107598
4bad2c6338cc
Retrospective commit from 2009-10-17.
Eli Zaretskii <eliz@gnu.org>
parents:
106244
diff
changeset
|
1511 /* If the glyph row is reversed, we need to prepend the glyph rather |
4bad2c6338cc
Retrospective commit from 2009-10-17.
Eli Zaretskii <eliz@gnu.org>
parents:
106244
diff
changeset
|
1512 than append it. */ |
4bad2c6338cc
Retrospective commit from 2009-10-17.
Eli Zaretskii <eliz@gnu.org>
parents:
106244
diff
changeset
|
1513 if (it->glyph_row->reversed_p && it->area == TEXT_AREA) |
4bad2c6338cc
Retrospective commit from 2009-10-17.
Eli Zaretskii <eliz@gnu.org>
parents:
106244
diff
changeset
|
1514 { |
4bad2c6338cc
Retrospective commit from 2009-10-17.
Eli Zaretskii <eliz@gnu.org>
parents:
106244
diff
changeset
|
1515 struct glyph *g; |
4bad2c6338cc
Retrospective commit from 2009-10-17.
Eli Zaretskii <eliz@gnu.org>
parents:
106244
diff
changeset
|
1516 int move_by = it->pixel_width; |
4bad2c6338cc
Retrospective commit from 2009-10-17.
Eli Zaretskii <eliz@gnu.org>
parents:
106244
diff
changeset
|
1517 |
4bad2c6338cc
Retrospective commit from 2009-10-17.
Eli Zaretskii <eliz@gnu.org>
parents:
106244
diff
changeset
|
1518 /* Make room for the new glyphs. */ |
4bad2c6338cc
Retrospective commit from 2009-10-17.
Eli Zaretskii <eliz@gnu.org>
parents:
106244
diff
changeset
|
1519 if (move_by > end - glyph) /* don't overstep end of this area */ |
4bad2c6338cc
Retrospective commit from 2009-10-17.
Eli Zaretskii <eliz@gnu.org>
parents:
106244
diff
changeset
|
1520 move_by = end - glyph; |
4bad2c6338cc
Retrospective commit from 2009-10-17.
Eli Zaretskii <eliz@gnu.org>
parents:
106244
diff
changeset
|
1521 for (g = glyph - 1; g >= it->glyph_row->glyphs[it->area]; g--) |
4bad2c6338cc
Retrospective commit from 2009-10-17.
Eli Zaretskii <eliz@gnu.org>
parents:
106244
diff
changeset
|
1522 g[move_by] = *g; |
4bad2c6338cc
Retrospective commit from 2009-10-17.
Eli Zaretskii <eliz@gnu.org>
parents:
106244
diff
changeset
|
1523 glyph = it->glyph_row->glyphs[it->area]; |
4bad2c6338cc
Retrospective commit from 2009-10-17.
Eli Zaretskii <eliz@gnu.org>
parents:
106244
diff
changeset
|
1524 end = glyph + move_by; |
4bad2c6338cc
Retrospective commit from 2009-10-17.
Eli Zaretskii <eliz@gnu.org>
parents:
106244
diff
changeset
|
1525 } |
4bad2c6338cc
Retrospective commit from 2009-10-17.
Eli Zaretskii <eliz@gnu.org>
parents:
106244
diff
changeset
|
1526 |
4bad2c6338cc
Retrospective commit from 2009-10-17.
Eli Zaretskii <eliz@gnu.org>
parents:
106244
diff
changeset
|
1527 /* BIDI Note: we put the glyphs of a "multi-pixel" character left to |
4bad2c6338cc
Retrospective commit from 2009-10-17.
Eli Zaretskii <eliz@gnu.org>
parents:
106244
diff
changeset
|
1528 right, even in the REVERSED_P case, since (a) all of its u.ch are |
4bad2c6338cc
Retrospective commit from 2009-10-17.
Eli Zaretskii <eliz@gnu.org>
parents:
106244
diff
changeset
|
1529 identical, and (b) the PADDING_P flag needs to be set for the |
4bad2c6338cc
Retrospective commit from 2009-10-17.
Eli Zaretskii <eliz@gnu.org>
parents:
106244
diff
changeset
|
1530 leftmost one, because we write to the terminal left-to-right. */ |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
46559
diff
changeset
|
1531 for (i = 0; |
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
46559
diff
changeset
|
1532 i < it->pixel_width && glyph < end; |
25002 | 1533 ++i) |
1534 { | |
1535 glyph->type = CHAR_GLYPH; | |
29462
3306af2e4f3d
(append_glyph): Revert change of 2000-06-06.
Gerd Moellmann <gerd@gnu.org>
parents:
29448
diff
changeset
|
1536 glyph->pixel_width = 1; |
68661
4e22dd401a52
(append_glyph): Refer to it->char_to_display instead of
Kenichi Handa <handa@m17n.org>
parents:
68651
diff
changeset
|
1537 glyph->u.ch = it->char_to_display; |
26999
5d0057e6170e
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
26902
diff
changeset
|
1538 glyph->face_id = it->face_id; |
5d0057e6170e
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
26902
diff
changeset
|
1539 glyph->padding_p = i > 0; |
25002 | 1540 glyph->charpos = CHARPOS (it->position); |
1541 glyph->object = it->object; | |
107598
4bad2c6338cc
Retrospective commit from 2009-10-17.
Eli Zaretskii <eliz@gnu.org>
parents:
106244
diff
changeset
|
1542 if (it->bidi_p) |
4bad2c6338cc
Retrospective commit from 2009-10-17.
Eli Zaretskii <eliz@gnu.org>
parents:
106244
diff
changeset
|
1543 { |
4bad2c6338cc
Retrospective commit from 2009-10-17.
Eli Zaretskii <eliz@gnu.org>
parents:
106244
diff
changeset
|
1544 glyph->resolved_level = it->bidi_it.resolved_level; |
107606
297c59e52ecf
Retrospective commit from 2009-12-26.
Eli Zaretskii <eliz@gnu.org>
parents:
107598
diff
changeset
|
1545 if ((it->bidi_it.type & 7) != it->bidi_it.type) |
297c59e52ecf
Retrospective commit from 2009-12-26.
Eli Zaretskii <eliz@gnu.org>
parents:
107598
diff
changeset
|
1546 abort (); |
107598
4bad2c6338cc
Retrospective commit from 2009-10-17.
Eli Zaretskii <eliz@gnu.org>
parents:
106244
diff
changeset
|
1547 glyph->bidi_type = it->bidi_it.type; |
4bad2c6338cc
Retrospective commit from 2009-10-17.
Eli Zaretskii <eliz@gnu.org>
parents:
106244
diff
changeset
|
1548 } |
107606
297c59e52ecf
Retrospective commit from 2009-12-26.
Eli Zaretskii <eliz@gnu.org>
parents:
107598
diff
changeset
|
1549 else |
297c59e52ecf
Retrospective commit from 2009-12-26.
Eli Zaretskii <eliz@gnu.org>
parents:
107598
diff
changeset
|
1550 { |
297c59e52ecf
Retrospective commit from 2009-12-26.
Eli Zaretskii <eliz@gnu.org>
parents:
107598
diff
changeset
|
1551 glyph->resolved_level = 0; |
297c59e52ecf
Retrospective commit from 2009-12-26.
Eli Zaretskii <eliz@gnu.org>
parents:
107598
diff
changeset
|
1552 glyph->bidi_type = UNKNOWN_BT; |
297c59e52ecf
Retrospective commit from 2009-12-26.
Eli Zaretskii <eliz@gnu.org>
parents:
107598
diff
changeset
|
1553 } |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
46559
diff
changeset
|
1554 |
25002 | 1555 ++it->glyph_row->used[it->area]; |
1556 ++glyph; | |
1557 } | |
1558 } | |
1559 | |
44372 | 1560 /* Produce glyphs for the display element described by IT. *IT |
1561 specifies what we want to produce a glyph for (character, image, ...), | |
1562 and where in the glyph matrix we currently are (glyph row and hpos). | |
1563 produce_glyphs fills in output fields of *IT with information such as the | |
1564 pixel width and height of a character, and maybe output actual glyphs at | |
107198
f32d789c9aab
term.c, dispextern.h: Fix stale comments.
Eli Zaretskii <eliz@gnu.org>
parents:
107191
diff
changeset
|
1565 the same time if IT->glyph_row is non-null. For an overview, see |
f32d789c9aab
term.c, dispextern.h: Fix stale comments.
Eli Zaretskii <eliz@gnu.org>
parents:
107191
diff
changeset
|
1566 the explanation in dispextern.h, before the definition of the |
f32d789c9aab
term.c, dispextern.h: Fix stale comments.
Eli Zaretskii <eliz@gnu.org>
parents:
107191
diff
changeset
|
1567 display_element_type enumeration. |
44372 | 1568 |
1569 produce_glyphs also stores the result of glyph width, ascent | |
1570 etc. computations in *IT. | |
1571 | |
1572 IT->glyph_row may be null, in which case produce_glyphs does not | |
1573 actually fill in the glyphs. This is used in the move_* functions | |
1574 in xdisp.c for text width and height computations. | |
1575 | |
1576 Callers usually don't call produce_glyphs directly; | |
1577 instead they use the macro PRODUCE_GLYPHS. */ | |
25002 | 1578 |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
46559
diff
changeset
|
1579 void |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109108
diff
changeset
|
1580 produce_glyphs (struct it *it) |
25002 | 1581 { |
1582 /* If a hook is installed, let it do the work. */ | |
90638 | 1583 |
1584 /* Nothing but characters are supported on terminal frames. */ | |
25002 | 1585 xassert (it->what == IT_CHARACTER |
26871
aaf45e665b14
(encode_terminal_code): Delete codes for a composite
Kenichi Handa <handa@m17n.org>
parents:
26425
diff
changeset
|
1586 || it->what == IT_COMPOSITION |
25002 | 1587 || it->what == IT_STRETCH); |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
46559
diff
changeset
|
1588 |
54428
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1589 if (it->what == IT_STRETCH) |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1590 { |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1591 produce_stretch_glyph (it); |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1592 goto done; |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1593 } |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1594 |
90638 | 1595 if (it->what == IT_COMPOSITION) |
1596 { | |
1597 produce_composite_glyph (it); | |
1598 goto done; | |
1599 } | |
25002 | 1600 |
111237
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1601 if (it->what == IT_GLYPHLESS) |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1602 { |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1603 produce_glyphless_glyph (it, 0, Qnil); |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1604 goto done; |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1605 } |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1606 |
110131
cca2a663ef92
Fix handling of 8-bit characters in a display table.
Kenichi Handa <handa@m17n.org>
parents:
110128
diff
changeset
|
1607 if (it->char_to_display >= 040 && it->char_to_display < 0177) |
25002 | 1608 { |
1609 it->pixel_width = it->nglyphs = 1; | |
1610 if (it->glyph_row) | |
1611 append_glyph (it); | |
1612 } | |
110131
cca2a663ef92
Fix handling of 8-bit characters in a display table.
Kenichi Handa <handa@m17n.org>
parents:
110128
diff
changeset
|
1613 else if (it->char_to_display == '\n') |
25002 | 1614 it->pixel_width = it->nglyphs = 0; |
110131
cca2a663ef92
Fix handling of 8-bit characters in a display table.
Kenichi Handa <handa@m17n.org>
parents:
110128
diff
changeset
|
1615 else if (it->char_to_display == '\t') |
25002 | 1616 { |
28685
b4310b6f3b5e
(produce_glyphs): Remove reference to struct it's prompt_width.
Gerd Moellmann <gerd@gnu.org>
parents:
28507
diff
changeset
|
1617 int absolute_x = (it->current_x |
25002 | 1618 + it->continuation_lines_width); |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
46559
diff
changeset
|
1619 int next_tab_x |
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
46559
diff
changeset
|
1620 = (((1 + absolute_x + it->tab_width - 1) |
25002 | 1621 / it->tab_width) |
1622 * it->tab_width); | |
1623 int nspaces; | |
1624 | |
1625 /* If part of the TAB has been displayed on the previous line | |
1626 which is continued now, continuation_lines_width will have | |
1627 been incremented already by the part that fitted on the | |
1628 continued line. So, we will get the right number of spaces | |
1629 here. */ | |
1630 nspaces = next_tab_x - absolute_x; | |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
46559
diff
changeset
|
1631 |
25002 | 1632 if (it->glyph_row) |
1633 { | |
1634 int n = nspaces; | |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
46559
diff
changeset
|
1635 |
68661
4e22dd401a52
(append_glyph): Refer to it->char_to_display instead of
Kenichi Handa <handa@m17n.org>
parents:
68651
diff
changeset
|
1636 it->char_to_display = ' '; |
25002 | 1637 it->pixel_width = it->len = 1; |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
46559
diff
changeset
|
1638 |
25002 | 1639 while (n--) |
1640 append_glyph (it); | |
1641 } | |
1642 | |
1643 it->pixel_width = nspaces; | |
1644 it->nglyphs = nspaces; | |
1645 } | |
110131
cca2a663ef92
Fix handling of 8-bit characters in a display table.
Kenichi Handa <handa@m17n.org>
parents:
110128
diff
changeset
|
1646 else if (CHAR_BYTE8_P (it->char_to_display)) |
29262
b7059c9f98ac
(produce_glyphs): Don't treat eight-bit-* charsets as multibyte.
Eli Zaretskii <eliz@gnu.org>
parents:
29097
diff
changeset
|
1647 { |
110131
cca2a663ef92
Fix handling of 8-bit characters in a display table.
Kenichi Handa <handa@m17n.org>
parents:
110128
diff
changeset
|
1648 /* Coming here means that we must send the raw 8-bit byte as is |
cca2a663ef92
Fix handling of 8-bit characters in a display table.
Kenichi Handa <handa@m17n.org>
parents:
110128
diff
changeset
|
1649 to the terminal. Although there's no way to know how many |
cca2a663ef92
Fix handling of 8-bit characters in a display table.
Kenichi Handa <handa@m17n.org>
parents:
110128
diff
changeset
|
1650 columns it occupies on a screen, it is a good assumption that |
cca2a663ef92
Fix handling of 8-bit characters in a display table.
Kenichi Handa <handa@m17n.org>
parents:
110128
diff
changeset
|
1651 a single byte code has 1-column width. */ |
cca2a663ef92
Fix handling of 8-bit characters in a display table.
Kenichi Handa <handa@m17n.org>
parents:
110128
diff
changeset
|
1652 it->pixel_width = it->nglyphs = 1; |
cca2a663ef92
Fix handling of 8-bit characters in a display table.
Kenichi Handa <handa@m17n.org>
parents:
110128
diff
changeset
|
1653 if (it->glyph_row) |
cca2a663ef92
Fix handling of 8-bit characters in a display table.
Kenichi Handa <handa@m17n.org>
parents:
110128
diff
changeset
|
1654 append_glyph (it); |
29262
b7059c9f98ac
(produce_glyphs): Don't treat eight-bit-* charsets as multibyte.
Eli Zaretskii <eliz@gnu.org>
parents:
29097
diff
changeset
|
1655 } |
25002 | 1656 else |
1657 { | |
111237
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1658 Lisp_Object charset_list = FRAME_TERMINAL (it->f)->charset_list; |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1659 |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1660 if (char_charset (it->char_to_display, charset_list, NULL)) |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1661 { |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1662 it->pixel_width = CHAR_WIDTH (it->char_to_display); |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1663 it->nglyphs = it->pixel_width; |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1664 if (it->glyph_row) |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1665 append_glyph (it); |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1666 } |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1667 else |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1668 { |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1669 Lisp_Object acronym = lookup_glyphless_char_display (-1, it); |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1670 |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1671 xassert (it->what == IT_GLYPHLESS); |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1672 produce_glyphless_glyph (it, 1, acronym); |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1673 } |
25002 | 1674 } |
1675 | |
54428
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1676 done: |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
46559
diff
changeset
|
1677 /* Advance current_x by the pixel width as a convenience for |
25002 | 1678 the caller. */ |
1679 if (it->area == TEXT_AREA) | |
1680 it->current_x += it->pixel_width; | |
25187
39feb68ed3c7
(produce_glyphs): Set iterator's physical height
Gerd Moellmann <gerd@gnu.org>
parents:
25002
diff
changeset
|
1681 it->ascent = it->max_ascent = it->phys_ascent = it->max_phys_ascent = 0; |
39feb68ed3c7
(produce_glyphs): Set iterator's physical height
Gerd Moellmann <gerd@gnu.org>
parents:
25002
diff
changeset
|
1682 it->descent = it->max_descent = it->phys_descent = it->max_phys_descent = 1; |
25002 | 1683 } |
1684 | |
1685 | |
54428
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1686 /* Produce a stretch glyph for iterator IT. IT->object is the value |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1687 of the glyph property displayed. The value must be a list |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1688 `(space KEYWORD VALUE ...)' with the following KEYWORD/VALUE pairs |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1689 being recognized: |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1690 |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1691 1. `:width WIDTH' specifies that the space should be WIDTH * |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1692 canonical char width wide. WIDTH may be an integer or floating |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1693 point number. |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1694 |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1695 2. `:align-to HPOS' specifies that the space should be wide enough |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1696 to reach HPOS, a value in canonical character units. */ |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1697 |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1698 static void |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109108
diff
changeset
|
1699 produce_stretch_glyph (struct it *it) |
54428
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1700 { |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1701 /* (space :width WIDTH ...) */ |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1702 Lisp_Object prop, plist; |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1703 int width = 0, align_to = -1; |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1704 int zero_width_ok_p = 0; |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1705 double tem; |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1706 |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1707 /* List should start with `space'. */ |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1708 xassert (CONSP (it->object) && EQ (XCAR (it->object), Qspace)); |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1709 plist = XCDR (it->object); |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1710 |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1711 /* Compute the width of the stretch. */ |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1712 if ((prop = Fplist_get (plist, QCwidth), !NILP (prop)) |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1713 && calc_pixel_width_or_height (&tem, it, prop, 0, 1, 0)) |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1714 { |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1715 /* Absolute width `:width WIDTH' specified and valid. */ |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1716 zero_width_ok_p = 1; |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1717 width = (int)(tem + 0.5); |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1718 } |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1719 else if ((prop = Fplist_get (plist, QCalign_to), !NILP (prop)) |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1720 && calc_pixel_width_or_height (&tem, it, prop, 0, 1, &align_to)) |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1721 { |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1722 if (it->glyph_row == NULL || !it->glyph_row->mode_line_p) |
66238
d3f5aa0f18c4
(encode_terminal_code): Remove unused var src_start.
Kim F. Storm <storm@cua.dk>
parents:
65795
diff
changeset
|
1723 align_to = (align_to < 0 |
54428
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1724 ? 0 |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1725 : align_to - window_box_left_offset (it->w, TEXT_AREA)); |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1726 else if (align_to < 0) |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1727 align_to = window_box_left_offset (it->w, TEXT_AREA); |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1728 width = max (0, (int)(tem + 0.5) + align_to - it->current_x); |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1729 zero_width_ok_p = 1; |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1730 } |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1731 else |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1732 /* Nothing specified -> width defaults to canonical char width. */ |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1733 width = FRAME_COLUMN_WIDTH (it->f); |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1734 |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1735 if (width <= 0 && (width < 0 || !zero_width_ok_p)) |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1736 width = 1; |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1737 |
102831
1f0beb33697b
* term.c (produce_stretch_glyph): Reduce width of stretch glyphs
Chong Yidong <cyd@stupidchicken.com>
parents:
102744
diff
changeset
|
1738 if (width > 0 && it->line_wrap != TRUNCATE |
1f0beb33697b
* term.c (produce_stretch_glyph): Reduce width of stretch glyphs
Chong Yidong <cyd@stupidchicken.com>
parents:
102744
diff
changeset
|
1739 && it->current_x + width > it->last_visible_x) |
1f0beb33697b
* term.c (produce_stretch_glyph): Reduce width of stretch glyphs
Chong Yidong <cyd@stupidchicken.com>
parents:
102744
diff
changeset
|
1740 width = it->last_visible_x - it->current_x - 1; |
1f0beb33697b
* term.c (produce_stretch_glyph): Reduce width of stretch glyphs
Chong Yidong <cyd@stupidchicken.com>
parents:
102744
diff
changeset
|
1741 |
54428
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1742 if (width > 0 && it->glyph_row) |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1743 { |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1744 Lisp_Object o_object = it->object; |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1745 Lisp_Object object = it->stack[it->sp - 1].string; |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1746 int n = width; |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1747 |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1748 if (!STRINGP (object)) |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1749 object = it->w->buffer; |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1750 it->object = object; |
68661
4e22dd401a52
(append_glyph): Refer to it->char_to_display instead of
Kenichi Handa <handa@m17n.org>
parents:
68651
diff
changeset
|
1751 it->char_to_display = ' '; |
54428
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1752 it->pixel_width = it->len = 1; |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1753 while (n--) |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1754 append_glyph (it); |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1755 it->object = o_object; |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1756 } |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1757 it->pixel_width = width; |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1758 it->nglyphs = width; |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1759 } |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1760 |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1761 |
90638 | 1762 /* Append glyphs to IT's glyph_row for the composition IT->cmp_id. |
1763 Called from produce_composite_glyph for terminal frames if | |
1764 IT->glyph_row != NULL. IT->face_id contains the character's | |
1765 face. */ | |
1766 | |
1767 static void | |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109108
diff
changeset
|
1768 append_composite_glyph (struct it *it) |
90638 | 1769 { |
1770 struct glyph *glyph; | |
1771 | |
1772 xassert (it->glyph_row); | |
1773 glyph = it->glyph_row->glyphs[it->area] + it->glyph_row->used[it->area]; | |
1774 if (glyph < it->glyph_row->glyphs[1 + it->area]) | |
1775 { | |
107996
8ef8b6523597
Fix R2L paragraph display on TTY.
Eli Zaretskii <eliz@gnu.org>
parents:
107994
diff
changeset
|
1776 /* If the glyph row is reversed, we need to prepend the glyph |
8ef8b6523597
Fix R2L paragraph display on TTY.
Eli Zaretskii <eliz@gnu.org>
parents:
107994
diff
changeset
|
1777 rather than append it. */ |
8ef8b6523597
Fix R2L paragraph display on TTY.
Eli Zaretskii <eliz@gnu.org>
parents:
107994
diff
changeset
|
1778 if (it->glyph_row->reversed_p && it->area == TEXT_AREA) |
8ef8b6523597
Fix R2L paragraph display on TTY.
Eli Zaretskii <eliz@gnu.org>
parents:
107994
diff
changeset
|
1779 { |
8ef8b6523597
Fix R2L paragraph display on TTY.
Eli Zaretskii <eliz@gnu.org>
parents:
107994
diff
changeset
|
1780 struct glyph *g; |
8ef8b6523597
Fix R2L paragraph display on TTY.
Eli Zaretskii <eliz@gnu.org>
parents:
107994
diff
changeset
|
1781 |
8ef8b6523597
Fix R2L paragraph display on TTY.
Eli Zaretskii <eliz@gnu.org>
parents:
107994
diff
changeset
|
1782 /* Make room for the new glyph. */ |
8ef8b6523597
Fix R2L paragraph display on TTY.
Eli Zaretskii <eliz@gnu.org>
parents:
107994
diff
changeset
|
1783 for (g = glyph - 1; g >= it->glyph_row->glyphs[it->area]; g--) |
8ef8b6523597
Fix R2L paragraph display on TTY.
Eli Zaretskii <eliz@gnu.org>
parents:
107994
diff
changeset
|
1784 g[1] = *g; |
8ef8b6523597
Fix R2L paragraph display on TTY.
Eli Zaretskii <eliz@gnu.org>
parents:
107994
diff
changeset
|
1785 glyph = it->glyph_row->glyphs[it->area]; |
8ef8b6523597
Fix R2L paragraph display on TTY.
Eli Zaretskii <eliz@gnu.org>
parents:
107994
diff
changeset
|
1786 } |
90638 | 1787 glyph->type = COMPOSITE_GLYPH; |
1788 glyph->pixel_width = it->pixel_width; | |
97830
62a07e57ef40
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
97720
diff
changeset
|
1789 glyph->u.cmp.id = it->cmp_it.id; |
62a07e57ef40
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
97720
diff
changeset
|
1790 if (it->cmp_it.ch < 0) |
62a07e57ef40
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
97720
diff
changeset
|
1791 { |
62a07e57ef40
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
97720
diff
changeset
|
1792 glyph->u.cmp.automatic = 0; |
62a07e57ef40
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
97720
diff
changeset
|
1793 glyph->u.cmp.id = it->cmp_it.id; |
62a07e57ef40
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
97720
diff
changeset
|
1794 } |
62a07e57ef40
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
97720
diff
changeset
|
1795 else |
62a07e57ef40
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
97720
diff
changeset
|
1796 { |
62a07e57ef40
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
97720
diff
changeset
|
1797 glyph->u.cmp.automatic = 1; |
62a07e57ef40
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
97720
diff
changeset
|
1798 glyph->u.cmp.id = it->cmp_it.id; |
110598
ee58b36ab139
Remove restriction on the number of glyphs in one composition.
Kenichi Handa <handa@m17n.org>
parents:
110357
diff
changeset
|
1799 glyph->slice.cmp.from = it->cmp_it.from; |
ee58b36ab139
Remove restriction on the number of glyphs in one composition.
Kenichi Handa <handa@m17n.org>
parents:
110357
diff
changeset
|
1800 glyph->slice.cmp.to = it->cmp_it.to - 1; |
97830
62a07e57ef40
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
97720
diff
changeset
|
1801 } |
62a07e57ef40
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
97720
diff
changeset
|
1802 |
90638 | 1803 glyph->face_id = it->face_id; |
1804 glyph->padding_p = 0; | |
1805 glyph->charpos = CHARPOS (it->position); | |
1806 glyph->object = it->object; | |
107996
8ef8b6523597
Fix R2L paragraph display on TTY.
Eli Zaretskii <eliz@gnu.org>
parents:
107994
diff
changeset
|
1807 if (it->bidi_p) |
8ef8b6523597
Fix R2L paragraph display on TTY.
Eli Zaretskii <eliz@gnu.org>
parents:
107994
diff
changeset
|
1808 { |
8ef8b6523597
Fix R2L paragraph display on TTY.
Eli Zaretskii <eliz@gnu.org>
parents:
107994
diff
changeset
|
1809 glyph->resolved_level = it->bidi_it.resolved_level; |
8ef8b6523597
Fix R2L paragraph display on TTY.
Eli Zaretskii <eliz@gnu.org>
parents:
107994
diff
changeset
|
1810 if ((it->bidi_it.type & 7) != it->bidi_it.type) |
8ef8b6523597
Fix R2L paragraph display on TTY.
Eli Zaretskii <eliz@gnu.org>
parents:
107994
diff
changeset
|
1811 abort (); |
8ef8b6523597
Fix R2L paragraph display on TTY.
Eli Zaretskii <eliz@gnu.org>
parents:
107994
diff
changeset
|
1812 glyph->bidi_type = it->bidi_it.type; |
8ef8b6523597
Fix R2L paragraph display on TTY.
Eli Zaretskii <eliz@gnu.org>
parents:
107994
diff
changeset
|
1813 } |
8ef8b6523597
Fix R2L paragraph display on TTY.
Eli Zaretskii <eliz@gnu.org>
parents:
107994
diff
changeset
|
1814 else |
8ef8b6523597
Fix R2L paragraph display on TTY.
Eli Zaretskii <eliz@gnu.org>
parents:
107994
diff
changeset
|
1815 { |
8ef8b6523597
Fix R2L paragraph display on TTY.
Eli Zaretskii <eliz@gnu.org>
parents:
107994
diff
changeset
|
1816 glyph->resolved_level = 0; |
8ef8b6523597
Fix R2L paragraph display on TTY.
Eli Zaretskii <eliz@gnu.org>
parents:
107994
diff
changeset
|
1817 glyph->bidi_type = UNKNOWN_BT; |
8ef8b6523597
Fix R2L paragraph display on TTY.
Eli Zaretskii <eliz@gnu.org>
parents:
107994
diff
changeset
|
1818 } |
90638 | 1819 |
1820 ++it->glyph_row->used[it->area]; | |
1821 ++glyph; | |
1822 } | |
1823 } | |
1824 | |
1825 | |
1826 /* Produce a composite glyph for iterator IT. IT->cmp_id is the ID of | |
1827 the composition. We simply produces components of the composition | |
105426
d0a6d64c3cfc
Fix typos in comments.
Juanma Barranquero <lekktu@gmail.com>
parents:
103711
diff
changeset
|
1828 assuming that the terminal has a capability to layout/render it |
d0a6d64c3cfc
Fix typos in comments.
Juanma Barranquero <lekktu@gmail.com>
parents:
103711
diff
changeset
|
1829 correctly. */ |
90638 | 1830 |
1831 static void | |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109108
diff
changeset
|
1832 produce_composite_glyph (struct it *it) |
90638 | 1833 { |
97830
62a07e57ef40
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
97720
diff
changeset
|
1834 if (it->cmp_it.ch < 0) |
62a07e57ef40
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
97720
diff
changeset
|
1835 { |
62a07e57ef40
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
97720
diff
changeset
|
1836 struct composition *cmp = composition_table[it->cmp_it.id]; |
62a07e57ef40
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
97720
diff
changeset
|
1837 |
101774
d4f9e4244d5a
(encode_terminal_code): Fix handling of composition.
Kenichi Handa <handa@m17n.org>
parents:
101690
diff
changeset
|
1838 it->pixel_width = cmp->width; |
97830
62a07e57ef40
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
97720
diff
changeset
|
1839 } |
62a07e57ef40
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
97720
diff
changeset
|
1840 else |
62a07e57ef40
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
97720
diff
changeset
|
1841 { |
62a07e57ef40
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
97720
diff
changeset
|
1842 Lisp_Object gstring = composition_gstring_from_id (it->cmp_it.id); |
62a07e57ef40
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
97720
diff
changeset
|
1843 |
62a07e57ef40
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
97720
diff
changeset
|
1844 it->pixel_width = composition_gstring_width (gstring, it->cmp_it.from, |
62a07e57ef40
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
97720
diff
changeset
|
1845 it->cmp_it.to, NULL); |
62a07e57ef40
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
97720
diff
changeset
|
1846 } |
90638 | 1847 it->nglyphs = 1; |
1848 if (it->glyph_row) | |
1849 append_composite_glyph (it); | |
1850 } | |
1851 | |
1852 | |
111237
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1853 /* Append a glyph for a glyphless character to IT->glyph_row. FACE_ID |
111526
5c986eef8f0d
Fix and document display of glyphless characters.
Eli Zaretskii <eliz@gnu.org>
parents:
111413
diff
changeset
|
1854 is a face ID to be used for the glyph. What is actually appended |
5c986eef8f0d
Fix and document display of glyphless characters.
Eli Zaretskii <eliz@gnu.org>
parents:
111413
diff
changeset
|
1855 are glyphs of type CHAR_GLYPH whose characters are in STR (which |
5c986eef8f0d
Fix and document display of glyphless characters.
Eli Zaretskii <eliz@gnu.org>
parents:
111413
diff
changeset
|
1856 comes from it->nglyphs bytes). */ |
111237
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1857 |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1858 static void |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1859 append_glyphless_glyph (struct it *it, int face_id, char *str) |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1860 { |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1861 struct glyph *glyph, *end; |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1862 int i; |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1863 |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1864 xassert (it->glyph_row); |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1865 glyph = it->glyph_row->glyphs[it->area] + it->glyph_row->used[it->area]; |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1866 end = it->glyph_row->glyphs[1 + it->area]; |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1867 |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1868 /* If the glyph row is reversed, we need to prepend the glyph rather |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1869 than append it. */ |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1870 if (it->glyph_row->reversed_p && it->area == TEXT_AREA) |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1871 { |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1872 struct glyph *g; |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1873 int move_by = it->pixel_width; |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1874 |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1875 /* Make room for the new glyphs. */ |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1876 if (move_by > end - glyph) /* don't overstep end of this area */ |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1877 move_by = end - glyph; |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1878 for (g = glyph - 1; g >= it->glyph_row->glyphs[it->area]; g--) |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1879 g[move_by] = *g; |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1880 glyph = it->glyph_row->glyphs[it->area]; |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1881 end = glyph + move_by; |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1882 } |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1883 |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1884 if (glyph >= end) |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1885 return; |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1886 glyph->type = CHAR_GLYPH; |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1887 glyph->pixel_width = 1; |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1888 glyph->face_id = face_id; |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1889 glyph->padding_p = 0; |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1890 glyph->charpos = CHARPOS (it->position); |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1891 glyph->object = it->object; |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1892 if (it->bidi_p) |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1893 { |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1894 glyph->resolved_level = it->bidi_it.resolved_level; |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1895 if ((it->bidi_it.type & 7) != it->bidi_it.type) |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1896 abort (); |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1897 glyph->bidi_type = it->bidi_it.type; |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1898 } |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1899 else |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1900 { |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1901 glyph->resolved_level = 0; |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1902 glyph->bidi_type = UNKNOWN_BT; |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1903 } |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1904 |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1905 /* BIDI Note: we put the glyphs of characters left to right, even in |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1906 the REVERSED_P case because we write to the terminal |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1907 left-to-right. */ |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1908 for (i = 0; i < it->nglyphs && glyph < end; ++i) |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1909 { |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1910 if (i > 0) |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1911 glyph[0] = glyph[-1]; |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1912 glyph->u.ch = str[i]; |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1913 ++it->glyph_row->used[it->area]; |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1914 ++glyph; |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1915 } |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1916 } |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1917 |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1918 /* Produce glyphs for a glyphless character for iterator IT. |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1919 IT->glyphless_method specifies which method to use for displaying |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1920 the character. See the description of enum |
111526
5c986eef8f0d
Fix and document display of glyphless characters.
Eli Zaretskii <eliz@gnu.org>
parents:
111413
diff
changeset
|
1921 glyphless_display_method in dispextern.h for the details. |
111237
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1922 |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1923 FOR_NO_FONT is nonzero if and only if this is for a character that |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1924 is not supproted by the coding system of the terminal. ACRONYM, if |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1925 non-nil, is an acronym string for the character. |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1926 |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1927 The glyphs actually produced are of type CHAR_GLYPH. */ |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1928 |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1929 static void |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1930 produce_glyphless_glyph (struct it *it, int for_no_font, Lisp_Object acronym) |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1931 { |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1932 int face_id; |
111526
5c986eef8f0d
Fix and document display of glyphless characters.
Eli Zaretskii <eliz@gnu.org>
parents:
111413
diff
changeset
|
1933 int len; |
111651
dbffbd2b89b9
Use \uNNNN, \UNNNNNN, or \xNNNNNN for hex-code display on a TTY.
Eli Zaretskii <eliz@gnu.org>
parents:
111544
diff
changeset
|
1934 char buf[9], *str = " "; |
111237
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1935 |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1936 /* Get a face ID for the glyph by utilizing a cache (the same way as |
111526
5c986eef8f0d
Fix and document display of glyphless characters.
Eli Zaretskii <eliz@gnu.org>
parents:
111413
diff
changeset
|
1937 done for `escape-glyph' in get_next_display_element). */ |
111237
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1938 if (it->f == last_glyphless_glyph_frame |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1939 && it->face_id == last_glyphless_glyph_face_id) |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1940 { |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1941 face_id = last_glyphless_glyph_merged_face_id; |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1942 } |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1943 else |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1944 { |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1945 /* Merge the `glyphless-char' face into the current face. */ |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1946 face_id = merge_faces (it->f, Qglyphless_char, 0, it->face_id); |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1947 last_glyphless_glyph_frame = it->f; |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1948 last_glyphless_glyph_face_id = it->face_id; |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1949 last_glyphless_glyph_merged_face_id = face_id; |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1950 } |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1951 |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1952 if (it->glyphless_method == GLYPHLESS_DISPLAY_THIN_SPACE) |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1953 { |
111526
5c986eef8f0d
Fix and document display of glyphless characters.
Eli Zaretskii <eliz@gnu.org>
parents:
111413
diff
changeset
|
1954 /* As there's no way to produce a thin space, we produce a space |
5c986eef8f0d
Fix and document display of glyphless characters.
Eli Zaretskii <eliz@gnu.org>
parents:
111413
diff
changeset
|
1955 of canonical width. */ |
111237
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1956 len = 1; |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1957 } |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1958 else if (it->glyphless_method == GLYPHLESS_DISPLAY_EMPTY_BOX) |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1959 { |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1960 len = CHAR_WIDTH (it->c); |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1961 if (len == 0) |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1962 len = 1; |
111526
5c986eef8f0d
Fix and document display of glyphless characters.
Eli Zaretskii <eliz@gnu.org>
parents:
111413
diff
changeset
|
1963 else if (len > 4) |
111237
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1964 len = 4; |
111526
5c986eef8f0d
Fix and document display of glyphless characters.
Eli Zaretskii <eliz@gnu.org>
parents:
111413
diff
changeset
|
1965 sprintf (buf, "[%.*s]", len, str); |
5c986eef8f0d
Fix and document display of glyphless characters.
Eli Zaretskii <eliz@gnu.org>
parents:
111413
diff
changeset
|
1966 len += 2; |
5c986eef8f0d
Fix and document display of glyphless characters.
Eli Zaretskii <eliz@gnu.org>
parents:
111413
diff
changeset
|
1967 str = buf; |
111237
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1968 } |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1969 else |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1970 { |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1971 if (it->glyphless_method == GLYPHLESS_DISPLAY_ACRONYM) |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1972 { |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1973 if (! STRINGP (acronym) && CHAR_TABLE_P (Vglyphless_char_display)) |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1974 acronym = CHAR_TABLE_REF (Vglyphless_char_display, it->c); |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1975 buf[0] = '['; |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1976 str = STRINGP (acronym) ? (char *) SDATA (acronym) : ""; |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1977 for (len = 0; len < 6 && str[len] && ASCII_BYTE_P (str[len]); len++) |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1978 buf[1 + len] = str[len]; |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1979 buf[1 + len] = ']'; |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1980 len += 2; |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1981 } |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1982 else |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1983 { |
111526
5c986eef8f0d
Fix and document display of glyphless characters.
Eli Zaretskii <eliz@gnu.org>
parents:
111413
diff
changeset
|
1984 xassert (it->glyphless_method == GLYPHLESS_DISPLAY_HEX_CODE); |
111651
dbffbd2b89b9
Use \uNNNN, \UNNNNNN, or \xNNNNNN for hex-code display on a TTY.
Eli Zaretskii <eliz@gnu.org>
parents:
111544
diff
changeset
|
1985 len = (it->c < 0x10000 ? sprintf (buf, "\\u%04X", it->c) |
dbffbd2b89b9
Use \uNNNN, \UNNNNNN, or \xNNNNNN for hex-code display on a TTY.
Eli Zaretskii <eliz@gnu.org>
parents:
111544
diff
changeset
|
1986 : it->c <= MAX_UNICODE_CHAR ? sprintf (buf, "\\U%06X", it->c) |
dbffbd2b89b9
Use \uNNNN, \UNNNNNN, or \xNNNNNN for hex-code display on a TTY.
Eli Zaretskii <eliz@gnu.org>
parents:
111544
diff
changeset
|
1987 : sprintf (buf, "\\x%06X", it->c)); |
111237
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1988 } |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1989 str = buf; |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1990 } |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1991 |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1992 it->pixel_width = len; |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1993 it->nglyphs = len; |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1994 if (len > 0 && it->glyph_row) |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1995 append_glyphless_glyph (it, face_id, str); |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1996 } |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1997 |
6788b08ca420
Handle glyphless characters on tty.
Kenichi Handa <handa@m17n.org>
parents:
110688
diff
changeset
|
1998 |
25002 | 1999 /* Get information about special display element WHAT in an |
2000 environment described by IT. WHAT is one of IT_TRUNCATION or | |
2001 IT_CONTINUATION. Maybe produce glyphs for WHAT if IT has a | |
2002 non-null glyph_row member. This function ensures that fields like | |
2003 face_id, c, len of IT are left untouched. */ | |
2004 | |
2005 void | |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109108
diff
changeset
|
2006 produce_special_glyphs (struct it *it, enum display_element_type what) |
25002 | 2007 { |
2008 struct it temp_it; | |
92281
4bf10a5a835d
(encode_terminal_code, produce_special_glyphs): Likewise.
Kim F. Storm <storm@cua.dk>
parents:
92237
diff
changeset
|
2009 Lisp_Object gc; |
63549
bda22724fc82
(produce_special_glyphs): Use spec_glyph_lookup_face.
Richard M. Stallman <rms@gnu.org>
parents:
61591
diff
changeset
|
2010 GLYPH glyph; |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
46559
diff
changeset
|
2011 |
25002 | 2012 temp_it = *it; |
2013 temp_it.dp = NULL; | |
2014 temp_it.what = IT_CHARACTER; | |
2015 temp_it.len = 1; | |
28507
b6f06a755c7d
make_number/XINT/XUINT conversions; EQ/== fixes; ==Qnil -> NILP
Ken Raeburn <raeburn@raeburn.org>
parents:
28465
diff
changeset
|
2016 temp_it.object = make_number (0); |
109165
750db9f3e6d8
Replace bcopy, bzero, bcmp by memcpy, memmove, memset, memcmp
Andreas Schwab <schwab@linux-m68k.org>
parents:
109144
diff
changeset
|
2017 memset (&temp_it.current, 0, sizeof temp_it.current); |
25002 | 2018 |
2019 if (what == IT_CONTINUATION) | |
2020 { | |
107994
5dc04900cbd7
Mirror continuation indicators for R2L lines; fix face extension on TTY.
Eli Zaretskii <eliz@gnu.org>
parents:
107640
diff
changeset
|
2021 /* Continuation glyph. For R2L lines, we mirror it by hand. */ |
5dc04900cbd7
Mirror continuation indicators for R2L lines; fix face extension on TTY.
Eli Zaretskii <eliz@gnu.org>
parents:
107640
diff
changeset
|
2022 if (it->bidi_it.paragraph_dir == R2L) |
5dc04900cbd7
Mirror continuation indicators for R2L lines; fix face extension on TTY.
Eli Zaretskii <eliz@gnu.org>
parents:
107640
diff
changeset
|
2023 SET_GLYPH_FROM_CHAR (glyph, '/'); |
5dc04900cbd7
Mirror continuation indicators for R2L lines; fix face extension on TTY.
Eli Zaretskii <eliz@gnu.org>
parents:
107640
diff
changeset
|
2024 else |
5dc04900cbd7
Mirror continuation indicators for R2L lines; fix face extension on TTY.
Eli Zaretskii <eliz@gnu.org>
parents:
107640
diff
changeset
|
2025 SET_GLYPH_FROM_CHAR (glyph, '\\'); |
25002 | 2026 if (it->dp |
92281
4bf10a5a835d
(encode_terminal_code, produce_special_glyphs): Likewise.
Kim F. Storm <storm@cua.dk>
parents:
92237
diff
changeset
|
2027 && (gc = DISP_CONTINUE_GLYPH (it->dp), GLYPH_CODE_P (gc)) |
4bf10a5a835d
(encode_terminal_code, produce_special_glyphs): Likewise.
Kim F. Storm <storm@cua.dk>
parents:
92237
diff
changeset
|
2028 && GLYPH_CODE_CHAR_VALID_P (gc)) |
25002 | 2029 { |
107994
5dc04900cbd7
Mirror continuation indicators for R2L lines; fix face extension on TTY.
Eli Zaretskii <eliz@gnu.org>
parents:
107640
diff
changeset
|
2030 /* FIXME: Should we mirror GC for R2L lines? */ |
92281
4bf10a5a835d
(encode_terminal_code, produce_special_glyphs): Likewise.
Kim F. Storm <storm@cua.dk>
parents:
92237
diff
changeset
|
2031 SET_GLYPH_FROM_GLYPH_CODE (glyph, gc); |
4bf10a5a835d
(encode_terminal_code, produce_special_glyphs): Likewise.
Kim F. Storm <storm@cua.dk>
parents:
92237
diff
changeset
|
2032 spec_glyph_lookup_face (XWINDOW (it->window), &glyph); |
25002 | 2033 } |
2034 } | |
2035 else if (what == IT_TRUNCATION) | |
2036 { | |
2037 /* Truncation glyph. */ | |
92281
4bf10a5a835d
(encode_terminal_code, produce_special_glyphs): Likewise.
Kim F. Storm <storm@cua.dk>
parents:
92237
diff
changeset
|
2038 SET_GLYPH_FROM_CHAR (glyph, '$'); |
25002 | 2039 if (it->dp |
92281
4bf10a5a835d
(encode_terminal_code, produce_special_glyphs): Likewise.
Kim F. Storm <storm@cua.dk>
parents:
92237
diff
changeset
|
2040 && (gc = DISP_TRUNC_GLYPH (it->dp), GLYPH_CODE_P (gc)) |
4bf10a5a835d
(encode_terminal_code, produce_special_glyphs): Likewise.
Kim F. Storm <storm@cua.dk>
parents:
92237
diff
changeset
|
2041 && GLYPH_CODE_CHAR_VALID_P (gc)) |
25002 | 2042 { |
107994
5dc04900cbd7
Mirror continuation indicators for R2L lines; fix face extension on TTY.
Eli Zaretskii <eliz@gnu.org>
parents:
107640
diff
changeset
|
2043 /* FIXME: Should we mirror GC for R2L lines? */ |
92281
4bf10a5a835d
(encode_terminal_code, produce_special_glyphs): Likewise.
Kim F. Storm <storm@cua.dk>
parents:
92237
diff
changeset
|
2044 SET_GLYPH_FROM_GLYPH_CODE (glyph, gc); |
4bf10a5a835d
(encode_terminal_code, produce_special_glyphs): Likewise.
Kim F. Storm <storm@cua.dk>
parents:
92237
diff
changeset
|
2045 spec_glyph_lookup_face (XWINDOW (it->window), &glyph); |
25002 | 2046 } |
2047 } | |
2048 else | |
2049 abort (); | |
63549
bda22724fc82
(produce_special_glyphs): Use spec_glyph_lookup_face.
Richard M. Stallman <rms@gnu.org>
parents:
61591
diff
changeset
|
2050 |
110131
cca2a663ef92
Fix handling of 8-bit characters in a display table.
Kenichi Handa <handa@m17n.org>
parents:
110128
diff
changeset
|
2051 temp_it.c = temp_it.char_to_display = GLYPH_CHAR (glyph); |
92281
4bf10a5a835d
(encode_terminal_code, produce_special_glyphs): Likewise.
Kim F. Storm <storm@cua.dk>
parents:
92237
diff
changeset
|
2052 temp_it.face_id = GLYPH_FACE (glyph); |
63549
bda22724fc82
(produce_special_glyphs): Use spec_glyph_lookup_face.
Richard M. Stallman <rms@gnu.org>
parents:
61591
diff
changeset
|
2053 temp_it.len = CHAR_BYTES (temp_it.c); |
bda22724fc82
(produce_special_glyphs): Use spec_glyph_lookup_face.
Richard M. Stallman <rms@gnu.org>
parents:
61591
diff
changeset
|
2054 |
bda22724fc82
(produce_special_glyphs): Use spec_glyph_lookup_face.
Richard M. Stallman <rms@gnu.org>
parents:
61591
diff
changeset
|
2055 produce_glyphs (&temp_it); |
bda22724fc82
(produce_special_glyphs): Use spec_glyph_lookup_face.
Richard M. Stallman <rms@gnu.org>
parents:
61591
diff
changeset
|
2056 it->pixel_width = temp_it.pixel_width; |
bda22724fc82
(produce_special_glyphs): Use spec_glyph_lookup_face.
Richard M. Stallman <rms@gnu.org>
parents:
61591
diff
changeset
|
2057 it->nglyphs = temp_it.pixel_width; |
25002 | 2058 } |
2059 | |
2060 | |
2061 | |
2062 /*********************************************************************** | |
2063 Faces | |
2064 ***********************************************************************/ | |
2065 | |
28465
113efc964095
(TN_no_color_video): New variable.
Gerd Moellmann <gerd@gnu.org>
parents:
28200
diff
changeset
|
2066 /* Value is non-zero if attribute ATTR may be used. ATTR should be |
113efc964095
(TN_no_color_video): New variable.
Gerd Moellmann <gerd@gnu.org>
parents:
28200
diff
changeset
|
2067 one of the enumerators from enum no_color_bit, or a bit set built |
113efc964095
(TN_no_color_video): New variable.
Gerd Moellmann <gerd@gnu.org>
parents:
28200
diff
changeset
|
2068 from them. Some display attributes may not be used together with |
113efc964095
(TN_no_color_video): New variable.
Gerd Moellmann <gerd@gnu.org>
parents:
28200
diff
changeset
|
2069 color; the termcap capability `NC' specifies which ones. */ |
113efc964095
(TN_no_color_video): New variable.
Gerd Moellmann <gerd@gnu.org>
parents:
28200
diff
changeset
|
2070 |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
2071 #define MAY_USE_WITH_COLORS_P(tty, ATTR) \ |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
2072 (tty->TN_max_colors > 0 \ |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
2073 ? (tty->TN_no_color_video & (ATTR)) == 0 \ |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
2074 : 1) |
25002 | 2075 |
63549
bda22724fc82
(produce_special_glyphs): Use spec_glyph_lookup_face.
Richard M. Stallman <rms@gnu.org>
parents:
61591
diff
changeset
|
2076 /* Turn appearances of face FACE_ID on tty frame F on. |
bda22724fc82
(produce_special_glyphs): Use spec_glyph_lookup_face.
Richard M. Stallman <rms@gnu.org>
parents:
61591
diff
changeset
|
2077 FACE_ID is a realized face ID number, in the face cache. */ |
25002 | 2078 |
2079 static void | |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109108
diff
changeset
|
2080 turn_on_face (struct frame *f, int face_id) |
25002 | 2081 { |
2082 struct face *face = FACE_FROM_ID (f, face_id); | |
37477
6a7ab4d2c7b3
(toggle_highlight): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
35448
diff
changeset
|
2083 long fg = face->foreground; |
6a7ab4d2c7b3
(toggle_highlight): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
35448
diff
changeset
|
2084 long bg = face->background; |
82989
f3845715a5f6
Separate frame-local, tty-dependent parameters from tty-local parameters.
Karoly Lorentey <lorentey@elte.hu>
parents:
82988
diff
changeset
|
2085 struct tty_display_info *tty = FRAME_TTY (f); |
25002 | 2086 |
37477
6a7ab4d2c7b3
(toggle_highlight): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
35448
diff
changeset
|
2087 /* Do this first because TS_end_standout_mode may be the same |
6a7ab4d2c7b3
(toggle_highlight): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
35448
diff
changeset
|
2088 as TS_exit_attribute_mode, which turns all appearances off. */ |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
2089 if (MAY_USE_WITH_COLORS_P (tty, NC_REVERSE)) |
37477
6a7ab4d2c7b3
(toggle_highlight): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
35448
diff
changeset
|
2090 { |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
2091 if (tty->TN_max_colors > 0) |
37477
6a7ab4d2c7b3
(toggle_highlight): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
35448
diff
changeset
|
2092 { |
6a7ab4d2c7b3
(toggle_highlight): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
35448
diff
changeset
|
2093 if (fg >= 0 && bg >= 0) |
6a7ab4d2c7b3
(toggle_highlight): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
35448
diff
changeset
|
2094 { |
6a7ab4d2c7b3
(toggle_highlight): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
35448
diff
changeset
|
2095 /* If the terminal supports colors, we can set them |
6a7ab4d2c7b3
(toggle_highlight): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
35448
diff
changeset
|
2096 below without using reverse video. The face's fg |
6a7ab4d2c7b3
(toggle_highlight): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
35448
diff
changeset
|
2097 and bg colors are set as they should appear on |
6a7ab4d2c7b3
(toggle_highlight): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
35448
diff
changeset
|
2098 the screen, i.e. they take the inverse-video'ness |
6a7ab4d2c7b3
(toggle_highlight): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
35448
diff
changeset
|
2099 of the face already into account. */ |
6a7ab4d2c7b3
(toggle_highlight): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
35448
diff
changeset
|
2100 } |
6a7ab4d2c7b3
(toggle_highlight): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
35448
diff
changeset
|
2101 else if (inverse_video) |
6a7ab4d2c7b3
(toggle_highlight): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
35448
diff
changeset
|
2102 { |
6a7ab4d2c7b3
(toggle_highlight): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
35448
diff
changeset
|
2103 if (fg == FACE_TTY_DEFAULT_FG_COLOR |
6a7ab4d2c7b3
(toggle_highlight): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
35448
diff
changeset
|
2104 || bg == FACE_TTY_DEFAULT_BG_COLOR) |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2105 tty_toggle_highlight (tty); |
37477
6a7ab4d2c7b3
(toggle_highlight): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
35448
diff
changeset
|
2106 } |
6a7ab4d2c7b3
(toggle_highlight): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
35448
diff
changeset
|
2107 else |
6a7ab4d2c7b3
(toggle_highlight): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
35448
diff
changeset
|
2108 { |
6a7ab4d2c7b3
(toggle_highlight): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
35448
diff
changeset
|
2109 if (fg == FACE_TTY_DEFAULT_BG_COLOR |
6a7ab4d2c7b3
(toggle_highlight): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
35448
diff
changeset
|
2110 || bg == FACE_TTY_DEFAULT_FG_COLOR) |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2111 tty_toggle_highlight (tty); |
37477
6a7ab4d2c7b3
(toggle_highlight): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
35448
diff
changeset
|
2112 } |
6a7ab4d2c7b3
(toggle_highlight): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
35448
diff
changeset
|
2113 } |
6a7ab4d2c7b3
(toggle_highlight): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
35448
diff
changeset
|
2114 else |
6a7ab4d2c7b3
(toggle_highlight): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
35448
diff
changeset
|
2115 { |
6a7ab4d2c7b3
(toggle_highlight): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
35448
diff
changeset
|
2116 /* If we can't display colors, use reverse video |
6a7ab4d2c7b3
(toggle_highlight): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
35448
diff
changeset
|
2117 if the face specifies that. */ |
37499
b8ff92361366
(turn_on_face): Fix reverse video handling on terminals
Gerd Moellmann <gerd@gnu.org>
parents:
37477
diff
changeset
|
2118 if (inverse_video) |
b8ff92361366
(turn_on_face): Fix reverse video handling on terminals
Gerd Moellmann <gerd@gnu.org>
parents:
37477
diff
changeset
|
2119 { |
b8ff92361366
(turn_on_face): Fix reverse video handling on terminals
Gerd Moellmann <gerd@gnu.org>
parents:
37477
diff
changeset
|
2120 if (fg == FACE_TTY_DEFAULT_FG_COLOR |
b8ff92361366
(turn_on_face): Fix reverse video handling on terminals
Gerd Moellmann <gerd@gnu.org>
parents:
37477
diff
changeset
|
2121 || bg == FACE_TTY_DEFAULT_BG_COLOR) |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2122 tty_toggle_highlight (tty); |
37499
b8ff92361366
(turn_on_face): Fix reverse video handling on terminals
Gerd Moellmann <gerd@gnu.org>
parents:
37477
diff
changeset
|
2123 } |
b8ff92361366
(turn_on_face): Fix reverse video handling on terminals
Gerd Moellmann <gerd@gnu.org>
parents:
37477
diff
changeset
|
2124 else |
b8ff92361366
(turn_on_face): Fix reverse video handling on terminals
Gerd Moellmann <gerd@gnu.org>
parents:
37477
diff
changeset
|
2125 { |
b8ff92361366
(turn_on_face): Fix reverse video handling on terminals
Gerd Moellmann <gerd@gnu.org>
parents:
37477
diff
changeset
|
2126 if (fg == FACE_TTY_DEFAULT_BG_COLOR |
b8ff92361366
(turn_on_face): Fix reverse video handling on terminals
Gerd Moellmann <gerd@gnu.org>
parents:
37477
diff
changeset
|
2127 || bg == FACE_TTY_DEFAULT_FG_COLOR) |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2128 tty_toggle_highlight (tty); |
37499
b8ff92361366
(turn_on_face): Fix reverse video handling on terminals
Gerd Moellmann <gerd@gnu.org>
parents:
37477
diff
changeset
|
2129 } |
37477
6a7ab4d2c7b3
(toggle_highlight): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
35448
diff
changeset
|
2130 } |
6a7ab4d2c7b3
(toggle_highlight): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
35448
diff
changeset
|
2131 } |
25002 | 2132 |
103605
d6ac90c70d24
* term.c (turn_on_face): Allow simultaneously bold and dim
Chong Yidong <cyd@stupidchicken.com>
parents:
103114
diff
changeset
|
2133 if (face->tty_bold_p && MAY_USE_WITH_COLORS_P (tty, NC_BOLD)) |
d6ac90c70d24
* term.c (turn_on_face): Allow simultaneously bold and dim
Chong Yidong <cyd@stupidchicken.com>
parents:
103114
diff
changeset
|
2134 OUTPUT1_IF (tty, tty->TS_enter_bold_mode); |
d6ac90c70d24
* term.c (turn_on_face): Allow simultaneously bold and dim
Chong Yidong <cyd@stupidchicken.com>
parents:
103114
diff
changeset
|
2135 |
d6ac90c70d24
* term.c (turn_on_face): Allow simultaneously bold and dim
Chong Yidong <cyd@stupidchicken.com>
parents:
103114
diff
changeset
|
2136 if (face->tty_dim_p && MAY_USE_WITH_COLORS_P (tty, NC_DIM)) |
d6ac90c70d24
* term.c (turn_on_face): Allow simultaneously bold and dim
Chong Yidong <cyd@stupidchicken.com>
parents:
103114
diff
changeset
|
2137 OUTPUT1_IF (tty, tty->TS_enter_dim_mode); |
25002 | 2138 |
2139 /* Alternate charset and blinking not yet used. */ | |
28465
113efc964095
(TN_no_color_video): New variable.
Gerd Moellmann <gerd@gnu.org>
parents:
28200
diff
changeset
|
2140 if (face->tty_alt_charset_p |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
2141 && MAY_USE_WITH_COLORS_P (tty, NC_ALT_CHARSET)) |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
2142 OUTPUT1_IF (tty, tty->TS_enter_alt_charset_mode); |
25002 | 2143 |
28465
113efc964095
(TN_no_color_video): New variable.
Gerd Moellmann <gerd@gnu.org>
parents:
28200
diff
changeset
|
2144 if (face->tty_blinking_p |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
2145 && MAY_USE_WITH_COLORS_P (tty, NC_BLINK)) |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
2146 OUTPUT1_IF (tty, tty->TS_enter_blink_mode); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
2147 |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
2148 if (face->tty_underline_p && MAY_USE_WITH_COLORS_P (tty, NC_UNDERLINE)) |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
2149 OUTPUT1_IF (tty, tty->TS_enter_underline_mode); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
2150 |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
2151 if (tty->TN_max_colors > 0) |
25002 | 2152 { |
65072
462eb3df5c58
(turn_on_face): Check for TS_set_foreground and
Juri Linkov <juri@jurta.org>
parents:
64773
diff
changeset
|
2153 char *ts, *p; |
462eb3df5c58
(turn_on_face): Check for TS_set_foreground and
Juri Linkov <juri@jurta.org>
parents:
64773
diff
changeset
|
2154 |
83353
532e0a9335a9
Merged in changes from CVS trunk. Plus added lisp/term tweaks.
Karoly Lorentey <lorentey@elte.hu>
diff
changeset
|
2155 ts = tty->standout_mode ? tty->TS_set_background : tty->TS_set_foreground; |
65072
462eb3df5c58
(turn_on_face): Check for TS_set_foreground and
Juri Linkov <juri@jurta.org>
parents:
64773
diff
changeset
|
2156 if (fg >= 0 && ts) |
25002 | 2157 { |
83353
532e0a9335a9
Merged in changes from CVS trunk. Plus added lisp/term tweaks.
Karoly Lorentey <lorentey@elte.hu>
diff
changeset
|
2158 p = tparam (ts, NULL, 0, (int) fg); |
53232
22aaf1e5fbe6
Full support for multiple terminal I/O (with some rough edges).
Karoly Lorentey <lorentey@elte.hu>
parents:
53229
diff
changeset
|
2159 OUTPUT (tty, p); |
25002 | 2160 xfree (p); |
2161 } | |
2162 | |
83353
532e0a9335a9
Merged in changes from CVS trunk. Plus added lisp/term tweaks.
Karoly Lorentey <lorentey@elte.hu>
diff
changeset
|
2163 ts = tty->standout_mode ? tty->TS_set_foreground : tty->TS_set_background; |
65072
462eb3df5c58
(turn_on_face): Check for TS_set_foreground and
Juri Linkov <juri@jurta.org>
parents:
64773
diff
changeset
|
2164 if (bg >= 0 && ts) |
25002 | 2165 { |
83353
532e0a9335a9
Merged in changes from CVS trunk. Plus added lisp/term tweaks.
Karoly Lorentey <lorentey@elte.hu>
diff
changeset
|
2166 p = tparam (ts, NULL, 0, (int) bg); |
53232
22aaf1e5fbe6
Full support for multiple terminal I/O (with some rough edges).
Karoly Lorentey <lorentey@elte.hu>
parents:
53229
diff
changeset
|
2167 OUTPUT (tty, p); |
25002 | 2168 xfree (p); |
2169 } | |
2170 } | |
2171 } | |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
46559
diff
changeset
|
2172 |
25002 | 2173 |
2174 /* Turn off appearances of face FACE_ID on tty frame F. */ | |
2175 | |
2176 static void | |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109108
diff
changeset
|
2177 turn_off_face (struct frame *f, int face_id) |
25002 | 2178 { |
2179 struct face *face = FACE_FROM_ID (f, face_id); | |
82989
f3845715a5f6
Separate frame-local, tty-dependent parameters from tty-local parameters.
Karoly Lorentey <lorentey@elte.hu>
parents:
82988
diff
changeset
|
2180 struct tty_display_info *tty = FRAME_TTY (f); |
25002 | 2181 |
2182 xassert (face != NULL); | |
2183 | |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
2184 if (tty->TS_exit_attribute_mode) |
25002 | 2185 { |
2186 /* Capability "me" will turn off appearance modes double-bright, | |
2187 half-bright, reverse-video, standout, underline. It may or | |
2188 may not turn off alt-char-mode. */ | |
2189 if (face->tty_bold_p | |
2190 || face->tty_dim_p | |
2191 || face->tty_reverse_p | |
2192 || face->tty_alt_charset_p | |
2193 || face->tty_blinking_p | |
2194 || face->tty_underline_p) | |
30848
fc80dcfc32cd
(write_glyphs): Also turn off inverse video after turning
Gerd Moellmann <gerd@gnu.org>
parents:
30836
diff
changeset
|
2195 { |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
2196 OUTPUT1_IF (tty, tty->TS_exit_attribute_mode); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
2197 if (strcmp (tty->TS_exit_attribute_mode, tty->TS_end_standout_mode) == 0) |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
2198 tty->standout_mode = 0; |
30848
fc80dcfc32cd
(write_glyphs): Also turn off inverse video after turning
Gerd Moellmann <gerd@gnu.org>
parents:
30836
diff
changeset
|
2199 } |
25002 | 2200 |
2201 if (face->tty_alt_charset_p) | |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
2202 OUTPUT_IF (tty, tty->TS_exit_alt_charset_mode); |
25002 | 2203 } |
2204 else | |
2205 { | |
2206 /* If we don't have "me" we can only have those appearances | |
2207 that have exit sequences defined. */ | |
2208 if (face->tty_alt_charset_p) | |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
2209 OUTPUT_IF (tty, tty->TS_exit_alt_charset_mode); |
25002 | 2210 |
40086
050b19294988
(TN_standout_width, TF_xs, TN_magic_cookie_glitch_ul): Variables removed.
Miles Bader <miles@gnu.org>
parents:
40081
diff
changeset
|
2211 if (face->tty_underline_p) |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
2212 OUTPUT_IF (tty, tty->TS_exit_underline_mode); |
25002 | 2213 } |
2214 | |
2215 /* Switch back to default colors. */ | |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
2216 if (tty->TN_max_colors > 0 |
26902
264b83a3a688
Changes for separate unspecified foreground and background colors
Eli Zaretskii <eliz@gnu.org>
parents:
26871
diff
changeset
|
2217 && ((face->foreground != FACE_TTY_DEFAULT_COLOR |
264b83a3a688
Changes for separate unspecified foreground and background colors
Eli Zaretskii <eliz@gnu.org>
parents:
26871
diff
changeset
|
2218 && face->foreground != FACE_TTY_DEFAULT_FG_COLOR) |
264b83a3a688
Changes for separate unspecified foreground and background colors
Eli Zaretskii <eliz@gnu.org>
parents:
26871
diff
changeset
|
2219 || (face->background != FACE_TTY_DEFAULT_COLOR |
264b83a3a688
Changes for separate unspecified foreground and background colors
Eli Zaretskii <eliz@gnu.org>
parents:
26871
diff
changeset
|
2220 && face->background != FACE_TTY_DEFAULT_BG_COLOR))) |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
2221 OUTPUT1_IF (tty, tty->TS_orig_pair); |
25002 | 2222 } |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
46559
diff
changeset
|
2223 |
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
46559
diff
changeset
|
2224 |
45522
1513f6afe56f
(tty_capable_p): New function.
Miles Bader <miles@gnu.org>
parents:
44890
diff
changeset
|
2225 /* Return non-zero if the terminal on frame F supports all of the |
1513f6afe56f
(tty_capable_p): New function.
Miles Bader <miles@gnu.org>
parents:
44890
diff
changeset
|
2226 capabilities in CAPS simultaneously, with foreground and background |
1513f6afe56f
(tty_capable_p): New function.
Miles Bader <miles@gnu.org>
parents:
44890
diff
changeset
|
2227 colors FG and BG. */ |
1513f6afe56f
(tty_capable_p): New function.
Miles Bader <miles@gnu.org>
parents:
44890
diff
changeset
|
2228 |
45548 | 2229 int |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109108
diff
changeset
|
2230 tty_capable_p (struct tty_display_info *tty, unsigned int caps, |
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109108
diff
changeset
|
2231 unsigned long fg, unsigned long bg) |
45522
1513f6afe56f
(tty_capable_p): New function.
Miles Bader <miles@gnu.org>
parents:
44890
diff
changeset
|
2232 { |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
2233 #define TTY_CAPABLE_P_TRY(tty, cap, TS, NC_bit) \ |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
2234 if ((caps & (cap)) && (!(TS) || !MAY_USE_WITH_COLORS_P(tty, NC_bit))) \ |
45522
1513f6afe56f
(tty_capable_p): New function.
Miles Bader <miles@gnu.org>
parents:
44890
diff
changeset
|
2235 return 0; |
1513f6afe56f
(tty_capable_p): New function.
Miles Bader <miles@gnu.org>
parents:
44890
diff
changeset
|
2236 |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
2237 TTY_CAPABLE_P_TRY (tty, TTY_CAP_INVERSE, tty->TS_standout_mode, NC_REVERSE); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
2238 TTY_CAPABLE_P_TRY (tty, TTY_CAP_UNDERLINE, tty->TS_enter_underline_mode, NC_UNDERLINE); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
2239 TTY_CAPABLE_P_TRY (tty, TTY_CAP_BOLD, tty->TS_enter_bold_mode, NC_BOLD); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
2240 TTY_CAPABLE_P_TRY (tty, TTY_CAP_DIM, tty->TS_enter_dim_mode, NC_DIM); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
2241 TTY_CAPABLE_P_TRY (tty, TTY_CAP_BLINK, tty->TS_enter_blink_mode, NC_BLINK); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
2242 TTY_CAPABLE_P_TRY (tty, TTY_CAP_ALT_CHARSET, tty->TS_enter_alt_charset_mode, NC_ALT_CHARSET); |
45522
1513f6afe56f
(tty_capable_p): New function.
Miles Bader <miles@gnu.org>
parents:
44890
diff
changeset
|
2243 |
1513f6afe56f
(tty_capable_p): New function.
Miles Bader <miles@gnu.org>
parents:
44890
diff
changeset
|
2244 /* We can do it! */ |
1513f6afe56f
(tty_capable_p): New function.
Miles Bader <miles@gnu.org>
parents:
44890
diff
changeset
|
2245 return 1; |
1513f6afe56f
(tty_capable_p): New function.
Miles Bader <miles@gnu.org>
parents:
44890
diff
changeset
|
2246 } |
1513f6afe56f
(tty_capable_p): New function.
Miles Bader <miles@gnu.org>
parents:
44890
diff
changeset
|
2247 |
25002 | 2248 /* Return non-zero if the terminal is capable to display colors. */ |
2249 | |
2250 DEFUN ("tty-display-color-p", Ftty_display_color_p, Stty_display_color_p, | |
27087
8de2d17323c2
(Ftty_display_color_p): Accept an optional argument FRAME.
Eli Zaretskii <eliz@gnu.org>
parents:
27085
diff
changeset
|
2251 0, 1, 0, |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
2252 doc: /* Return non-nil if the tty device TERMINAL can display colors. |
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
2253 |
103047
997f1f1cac08
* term.c (Ftty_display_color_p, Ftty_display_color_cells)
Chong Yidong <cyd@stupidchicken.com>
parents:
102831
diff
changeset
|
2254 TERMINAL can be a terminal object, a frame, or nil (meaning the |
997f1f1cac08
* term.c (Ftty_display_color_p, Ftty_display_color_cells)
Chong Yidong <cyd@stupidchicken.com>
parents:
102831
diff
changeset
|
2255 selected frame's terminal). This function always returns nil if |
997f1f1cac08
* term.c (Ftty_display_color_p, Ftty_display_color_cells)
Chong Yidong <cyd@stupidchicken.com>
parents:
102831
diff
changeset
|
2256 TERMINAL does not refer to a text-only terminal. */) |
109179
8cfee7d2955f
Convert DEFUNs to standard C.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
109165
diff
changeset
|
2257 (Lisp_Object terminal) |
25002 | 2258 { |
83512
5d328dadd0f4
Make `tty-display-color-p' follow its doc string. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83502
diff
changeset
|
2259 struct terminal *t = get_tty_terminal (terminal, 0); |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
2260 if (!t) |
83004
7900111db01c
Converted display hooks to be display-local. Plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
82995
diff
changeset
|
2261 return Qnil; |
83008
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
2262 else |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
2263 return t->display_info.tty->TN_max_colors > 0 ? Qt : Qnil; |
25002 | 2264 } |
2265 | |
42954
e514d4931d6f
(Ftty_display_color_cells): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
42808
diff
changeset
|
2266 /* Return the number of supported colors. */ |
e514d4931d6f
(Ftty_display_color_cells): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
42808
diff
changeset
|
2267 DEFUN ("tty-display-color-cells", Ftty_display_color_cells, |
e514d4931d6f
(Ftty_display_color_cells): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
42808
diff
changeset
|
2268 Stty_display_color_cells, 0, 1, 0, |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
2269 doc: /* Return the number of colors supported by the tty device TERMINAL. |
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
2270 |
103047
997f1f1cac08
* term.c (Ftty_display_color_p, Ftty_display_color_cells)
Chong Yidong <cyd@stupidchicken.com>
parents:
102831
diff
changeset
|
2271 TERMINAL can be a terminal object, a frame, or nil (meaning the |
997f1f1cac08
* term.c (Ftty_display_color_p, Ftty_display_color_cells)
Chong Yidong <cyd@stupidchicken.com>
parents:
102831
diff
changeset
|
2272 selected frame's terminal). This function always returns 0 if |
997f1f1cac08
* term.c (Ftty_display_color_p, Ftty_display_color_cells)
Chong Yidong <cyd@stupidchicken.com>
parents:
102831
diff
changeset
|
2273 TERMINAL does not refer to a text-only terminal. */) |
109179
8cfee7d2955f
Convert DEFUNs to standard C.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
109165
diff
changeset
|
2274 (Lisp_Object terminal) |
42954
e514d4931d6f
(Ftty_display_color_cells): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
42808
diff
changeset
|
2275 { |
83512
5d328dadd0f4
Make `tty-display-color-p' follow its doc string. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83502
diff
changeset
|
2276 struct terminal *t = get_tty_terminal (terminal, 0); |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
2277 if (!t) |
83161
8d62eda26760
Fix byte-compile errors during bootstrap. (Reported by Juraj Kubelka.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83158
diff
changeset
|
2278 return make_number (0); |
83008
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
2279 else |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
2280 return make_number (t->display_info.tty->TN_max_colors); |
42954
e514d4931d6f
(Ftty_display_color_cells): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
42808
diff
changeset
|
2281 } |
e514d4931d6f
(Ftty_display_color_cells): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
42808
diff
changeset
|
2282 |
97658 | 2283 #ifndef DOS_NT |
25002 | 2284 |
78566
a23949b99eb1
Tweak previous change (don't init statics).
Glenn Morris <rgm@gnu.org>
parents:
78563
diff
changeset
|
2285 /* Declare here rather than in the function, as in the rest of Emacs, |
a23949b99eb1
Tweak previous change (don't init statics).
Glenn Morris <rgm@gnu.org>
parents:
78563
diff
changeset
|
2286 to work around an HPUX compiler bug (?). See |
78562 | 2287 http://lists.gnu.org/archive/html/emacs-devel/2007-08/msg00410.html */ |
78566
a23949b99eb1
Tweak previous change (don't init statics).
Glenn Morris <rgm@gnu.org>
parents:
78563
diff
changeset
|
2288 static int default_max_colors; |
a23949b99eb1
Tweak previous change (don't init statics).
Glenn Morris <rgm@gnu.org>
parents:
78563
diff
changeset
|
2289 static int default_max_pairs; |
a23949b99eb1
Tweak previous change (don't init statics).
Glenn Morris <rgm@gnu.org>
parents:
78563
diff
changeset
|
2290 static int default_no_color_video; |
a23949b99eb1
Tweak previous change (don't init statics).
Glenn Morris <rgm@gnu.org>
parents:
78563
diff
changeset
|
2291 static char *default_orig_pair; |
a23949b99eb1
Tweak previous change (don't init statics).
Glenn Morris <rgm@gnu.org>
parents:
78563
diff
changeset
|
2292 static char *default_set_foreground; |
a23949b99eb1
Tweak previous change (don't init statics).
Glenn Morris <rgm@gnu.org>
parents:
78563
diff
changeset
|
2293 static char *default_set_background; |
78560
44134c35ea57
Philippe Waroquiers <philippe.waroquiers at eurocontrol.int>
Glenn Morris <rgm@gnu.org>
parents:
78260
diff
changeset
|
2294 |
42742
73fcf65b58d3
(tty_default_color_capabilities, tty_setup_colors)
Eli Zaretskii <eliz@gnu.org>
parents:
42122
diff
changeset
|
2295 /* Save or restore the default color-related capabilities of this |
73fcf65b58d3
(tty_default_color_capabilities, tty_setup_colors)
Eli Zaretskii <eliz@gnu.org>
parents:
42122
diff
changeset
|
2296 terminal. */ |
73fcf65b58d3
(tty_default_color_capabilities, tty_setup_colors)
Eli Zaretskii <eliz@gnu.org>
parents:
42122
diff
changeset
|
2297 static void |
82989
f3845715a5f6
Separate frame-local, tty-dependent parameters from tty-local parameters.
Karoly Lorentey <lorentey@elte.hu>
parents:
82988
diff
changeset
|
2298 tty_default_color_capabilities (struct tty_display_info *tty, int save) |
42742
73fcf65b58d3
(tty_default_color_capabilities, tty_setup_colors)
Eli Zaretskii <eliz@gnu.org>
parents:
42122
diff
changeset
|
2299 { |
73fcf65b58d3
(tty_default_color_capabilities, tty_setup_colors)
Eli Zaretskii <eliz@gnu.org>
parents:
42122
diff
changeset
|
2300 |
73fcf65b58d3
(tty_default_color_capabilities, tty_setup_colors)
Eli Zaretskii <eliz@gnu.org>
parents:
42122
diff
changeset
|
2301 if (save) |
73fcf65b58d3
(tty_default_color_capabilities, tty_setup_colors)
Eli Zaretskii <eliz@gnu.org>
parents:
42122
diff
changeset
|
2302 { |
95481
4390d64d3328
Make "xfree (NULL)" a no-op; remove useless if-before-xfree.
Jim Meyering <jim@meyering.net>
parents:
94963
diff
changeset
|
2303 xfree (default_orig_pair); |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
2304 default_orig_pair = tty->TS_orig_pair ? xstrdup (tty->TS_orig_pair) : NULL; |
42742
73fcf65b58d3
(tty_default_color_capabilities, tty_setup_colors)
Eli Zaretskii <eliz@gnu.org>
parents:
42122
diff
changeset
|
2305 |
95481
4390d64d3328
Make "xfree (NULL)" a no-op; remove useless if-before-xfree.
Jim Meyering <jim@meyering.net>
parents:
94963
diff
changeset
|
2306 xfree (default_set_foreground); |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
2307 default_set_foreground = tty->TS_set_foreground ? xstrdup (tty->TS_set_foreground) |
42742
73fcf65b58d3
(tty_default_color_capabilities, tty_setup_colors)
Eli Zaretskii <eliz@gnu.org>
parents:
42122
diff
changeset
|
2308 : NULL; |
73fcf65b58d3
(tty_default_color_capabilities, tty_setup_colors)
Eli Zaretskii <eliz@gnu.org>
parents:
42122
diff
changeset
|
2309 |
95481
4390d64d3328
Make "xfree (NULL)" a no-op; remove useless if-before-xfree.
Jim Meyering <jim@meyering.net>
parents:
94963
diff
changeset
|
2310 xfree (default_set_background); |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
2311 default_set_background = tty->TS_set_background ? xstrdup (tty->TS_set_background) |
42742
73fcf65b58d3
(tty_default_color_capabilities, tty_setup_colors)
Eli Zaretskii <eliz@gnu.org>
parents:
42122
diff
changeset
|
2312 : NULL; |
73fcf65b58d3
(tty_default_color_capabilities, tty_setup_colors)
Eli Zaretskii <eliz@gnu.org>
parents:
42122
diff
changeset
|
2313 |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
2314 default_max_colors = tty->TN_max_colors; |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
2315 default_max_pairs = tty->TN_max_pairs; |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
2316 default_no_color_video = tty->TN_no_color_video; |
42742
73fcf65b58d3
(tty_default_color_capabilities, tty_setup_colors)
Eli Zaretskii <eliz@gnu.org>
parents:
42122
diff
changeset
|
2317 } |
73fcf65b58d3
(tty_default_color_capabilities, tty_setup_colors)
Eli Zaretskii <eliz@gnu.org>
parents:
42122
diff
changeset
|
2318 else |
73fcf65b58d3
(tty_default_color_capabilities, tty_setup_colors)
Eli Zaretskii <eliz@gnu.org>
parents:
42122
diff
changeset
|
2319 { |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
2320 tty->TS_orig_pair = default_orig_pair; |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
2321 tty->TS_set_foreground = default_set_foreground; |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
2322 tty->TS_set_background = default_set_background; |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
2323 tty->TN_max_colors = default_max_colors; |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
2324 tty->TN_max_pairs = default_max_pairs; |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
2325 tty->TN_no_color_video = default_no_color_video; |
42742
73fcf65b58d3
(tty_default_color_capabilities, tty_setup_colors)
Eli Zaretskii <eliz@gnu.org>
parents:
42122
diff
changeset
|
2326 } |
73fcf65b58d3
(tty_default_color_capabilities, tty_setup_colors)
Eli Zaretskii <eliz@gnu.org>
parents:
42122
diff
changeset
|
2327 } |
73fcf65b58d3
(tty_default_color_capabilities, tty_setup_colors)
Eli Zaretskii <eliz@gnu.org>
parents:
42122
diff
changeset
|
2328 |
73fcf65b58d3
(tty_default_color_capabilities, tty_setup_colors)
Eli Zaretskii <eliz@gnu.org>
parents:
42122
diff
changeset
|
2329 /* Setup one of the standard tty color schemes according to MODE. |
73fcf65b58d3
(tty_default_color_capabilities, tty_setup_colors)
Eli Zaretskii <eliz@gnu.org>
parents:
42122
diff
changeset
|
2330 MODE's value is generally the number of colors which we want to |
73fcf65b58d3
(tty_default_color_capabilities, tty_setup_colors)
Eli Zaretskii <eliz@gnu.org>
parents:
42122
diff
changeset
|
2331 support; zero means set up for the default capabilities, the ones |
83341
76e51706154e
Rename term_init to init_tty.
Karoly Lorentey <lorentey@elte.hu>
parents:
83338
diff
changeset
|
2332 we saw at init_tty time; -1 means turn off color support. */ |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2333 static void |
82989
f3845715a5f6
Separate frame-local, tty-dependent parameters from tty-local parameters.
Karoly Lorentey <lorentey@elte.hu>
parents:
82988
diff
changeset
|
2334 tty_setup_colors (struct tty_display_info *tty, int mode) |
42742
73fcf65b58d3
(tty_default_color_capabilities, tty_setup_colors)
Eli Zaretskii <eliz@gnu.org>
parents:
42122
diff
changeset
|
2335 { |
52652
31a3a92c1a03
(tty_setup_colors): Treat any negative argument as -1.
Eli Zaretskii <eliz@gnu.org>
parents:
52579
diff
changeset
|
2336 /* Canonicalize all negative values of MODE. */ |
31a3a92c1a03
(tty_setup_colors): Treat any negative argument as -1.
Eli Zaretskii <eliz@gnu.org>
parents:
52579
diff
changeset
|
2337 if (mode < -1) |
31a3a92c1a03
(tty_setup_colors): Treat any negative argument as -1.
Eli Zaretskii <eliz@gnu.org>
parents:
52579
diff
changeset
|
2338 mode = -1; |
31a3a92c1a03
(tty_setup_colors): Treat any negative argument as -1.
Eli Zaretskii <eliz@gnu.org>
parents:
52579
diff
changeset
|
2339 |
42742
73fcf65b58d3
(tty_default_color_capabilities, tty_setup_colors)
Eli Zaretskii <eliz@gnu.org>
parents:
42122
diff
changeset
|
2340 switch (mode) |
73fcf65b58d3
(tty_default_color_capabilities, tty_setup_colors)
Eli Zaretskii <eliz@gnu.org>
parents:
42122
diff
changeset
|
2341 { |
73fcf65b58d3
(tty_default_color_capabilities, tty_setup_colors)
Eli Zaretskii <eliz@gnu.org>
parents:
42122
diff
changeset
|
2342 case -1: /* no colors at all */ |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
2343 tty->TN_max_colors = 0; |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
2344 tty->TN_max_pairs = 0; |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
2345 tty->TN_no_color_video = 0; |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
2346 tty->TS_set_foreground = tty->TS_set_background = tty->TS_orig_pair = NULL; |
42742
73fcf65b58d3
(tty_default_color_capabilities, tty_setup_colors)
Eli Zaretskii <eliz@gnu.org>
parents:
42122
diff
changeset
|
2347 break; |
73fcf65b58d3
(tty_default_color_capabilities, tty_setup_colors)
Eli Zaretskii <eliz@gnu.org>
parents:
42122
diff
changeset
|
2348 case 0: /* default colors, if any */ |
73fcf65b58d3
(tty_default_color_capabilities, tty_setup_colors)
Eli Zaretskii <eliz@gnu.org>
parents:
42122
diff
changeset
|
2349 default: |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
2350 tty_default_color_capabilities (tty, 0); |
42742
73fcf65b58d3
(tty_default_color_capabilities, tty_setup_colors)
Eli Zaretskii <eliz@gnu.org>
parents:
42122
diff
changeset
|
2351 break; |
73fcf65b58d3
(tty_default_color_capabilities, tty_setup_colors)
Eli Zaretskii <eliz@gnu.org>
parents:
42122
diff
changeset
|
2352 case 8: /* 8 standard ANSI colors */ |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
2353 tty->TS_orig_pair = "\033[0m"; |
42742
73fcf65b58d3
(tty_default_color_capabilities, tty_setup_colors)
Eli Zaretskii <eliz@gnu.org>
parents:
42122
diff
changeset
|
2354 #ifdef TERMINFO |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
2355 tty->TS_set_foreground = "\033[3%p1%dm"; |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
2356 tty->TS_set_background = "\033[4%p1%dm"; |
42742
73fcf65b58d3
(tty_default_color_capabilities, tty_setup_colors)
Eli Zaretskii <eliz@gnu.org>
parents:
42122
diff
changeset
|
2357 #else |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
2358 tty->TS_set_foreground = "\033[3%dm"; |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
2359 tty->TS_set_background = "\033[4%dm"; |
42742
73fcf65b58d3
(tty_default_color_capabilities, tty_setup_colors)
Eli Zaretskii <eliz@gnu.org>
parents:
42122
diff
changeset
|
2360 #endif |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
2361 tty->TN_max_colors = 8; |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
2362 tty->TN_max_pairs = 64; |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
2363 tty->TN_no_color_video = 0; |
42742
73fcf65b58d3
(tty_default_color_capabilities, tty_setup_colors)
Eli Zaretskii <eliz@gnu.org>
parents:
42122
diff
changeset
|
2364 break; |
73fcf65b58d3
(tty_default_color_capabilities, tty_setup_colors)
Eli Zaretskii <eliz@gnu.org>
parents:
42122
diff
changeset
|
2365 } |
73fcf65b58d3
(tty_default_color_capabilities, tty_setup_colors)
Eli Zaretskii <eliz@gnu.org>
parents:
42122
diff
changeset
|
2366 } |
73fcf65b58d3
(tty_default_color_capabilities, tty_setup_colors)
Eli Zaretskii <eliz@gnu.org>
parents:
42122
diff
changeset
|
2367 |
73fcf65b58d3
(tty_default_color_capabilities, tty_setup_colors)
Eli Zaretskii <eliz@gnu.org>
parents:
42122
diff
changeset
|
2368 void |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109108
diff
changeset
|
2369 set_tty_color_mode (struct tty_display_info *tty, struct frame *f) |
42742
73fcf65b58d3
(tty_default_color_capabilities, tty_setup_colors)
Eli Zaretskii <eliz@gnu.org>
parents:
42122
diff
changeset
|
2370 { |
107984
bef5d1738c0b
Make variable forwarding explicit rather the using special values.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
107847
diff
changeset
|
2371 Lisp_Object tem, val; |
93883
722fdbc7a012
* xdisp.c (redisplay_internal): Reset tty's color_mode when switching
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
92281
diff
changeset
|
2372 Lisp_Object color_mode; |
722fdbc7a012
* xdisp.c (redisplay_internal): Reset tty's color_mode when switching
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
92281
diff
changeset
|
2373 int mode; |
722fdbc7a012
* xdisp.c (redisplay_internal): Reset tty's color_mode when switching
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
92281
diff
changeset
|
2374 Lisp_Object tty_color_mode_alist |
722fdbc7a012
* xdisp.c (redisplay_internal): Reset tty's color_mode when switching
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
92281
diff
changeset
|
2375 = Fintern_soft (build_string ("tty-color-mode-alist"), Qnil); |
722fdbc7a012
* xdisp.c (redisplay_internal): Reset tty's color_mode when switching
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
92281
diff
changeset
|
2376 |
93984
ddcecf318c8a
(set_tty_color_mode): Left over typo.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
93883
diff
changeset
|
2377 tem = assq_no_quit (Qtty_color_mode, f->param_alist); |
93883
722fdbc7a012
* xdisp.c (redisplay_internal): Reset tty's color_mode when switching
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
92281
diff
changeset
|
2378 val = CONSP (tem) ? XCDR (tem) : Qnil; |
42742
73fcf65b58d3
(tty_default_color_capabilities, tty_setup_colors)
Eli Zaretskii <eliz@gnu.org>
parents:
42122
diff
changeset
|
2379 |
52579
611336925095
(set_tty_color_mode): Use INTEGERP to test whether a
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
2380 if (INTEGERP (val)) |
42742
73fcf65b58d3
(tty_default_color_capabilities, tty_setup_colors)
Eli Zaretskii <eliz@gnu.org>
parents:
42122
diff
changeset
|
2381 color_mode = val; |
107984
bef5d1738c0b
Make variable forwarding explicit rather the using special values.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
107847
diff
changeset
|
2382 else if (SYMBOLP (tty_color_mode_alist)) |
42742
73fcf65b58d3
(tty_default_color_capabilities, tty_setup_colors)
Eli Zaretskii <eliz@gnu.org>
parents:
42122
diff
changeset
|
2383 { |
107984
bef5d1738c0b
Make variable forwarding explicit rather the using special values.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
107847
diff
changeset
|
2384 tem = Fassq (val, Fsymbol_value (tty_color_mode_alist)); |
93883
722fdbc7a012
* xdisp.c (redisplay_internal): Reset tty's color_mode when switching
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
92281
diff
changeset
|
2385 color_mode = CONSP (tem) ? XCDR (tem) : Qnil; |
42742
73fcf65b58d3
(tty_default_color_capabilities, tty_setup_colors)
Eli Zaretskii <eliz@gnu.org>
parents:
42122
diff
changeset
|
2386 } |
107984
bef5d1738c0b
Make variable forwarding explicit rather the using special values.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
107847
diff
changeset
|
2387 else |
bef5d1738c0b
Make variable forwarding explicit rather the using special values.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
107847
diff
changeset
|
2388 color_mode = Qnil; |
52681
2036a4307b6c
(set_tty_color_mode): Calculate current_mode_spec regardless of value of VAL.
Richard M. Stallman <rms@gnu.org>
parents:
52652
diff
changeset
|
2389 |
93883
722fdbc7a012
* xdisp.c (redisplay_internal): Reset tty's color_mode when switching
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
92281
diff
changeset
|
2390 mode = INTEGERP (color_mode) ? XINT (color_mode) : 0; |
722fdbc7a012
* xdisp.c (redisplay_internal): Reset tty's color_mode when switching
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
92281
diff
changeset
|
2391 |
722fdbc7a012
* xdisp.c (redisplay_internal): Reset tty's color_mode when switching
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
92281
diff
changeset
|
2392 if (mode != tty->previous_color_mode) |
42742
73fcf65b58d3
(tty_default_color_capabilities, tty_setup_colors)
Eli Zaretskii <eliz@gnu.org>
parents:
42122
diff
changeset
|
2393 { |
93883
722fdbc7a012
* xdisp.c (redisplay_internal): Reset tty's color_mode when switching
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
92281
diff
changeset
|
2394 Lisp_Object funsym = intern ("tty-set-up-initial-frame-faces"); |
722fdbc7a012
* xdisp.c (redisplay_internal): Reset tty's color_mode when switching
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
92281
diff
changeset
|
2395 tty->previous_color_mode = mode; |
722fdbc7a012
* xdisp.c (redisplay_internal): Reset tty's color_mode when switching
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
92281
diff
changeset
|
2396 tty_setup_colors (tty , mode); |
722fdbc7a012
* xdisp.c (redisplay_internal): Reset tty's color_mode when switching
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
92281
diff
changeset
|
2397 /* This recomputes all the faces given the new color definitions. */ |
722fdbc7a012
* xdisp.c (redisplay_internal): Reset tty's color_mode when switching
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
92281
diff
changeset
|
2398 safe_call (1, &funsym); |
42742
73fcf65b58d3
(tty_default_color_capabilities, tty_setup_colors)
Eli Zaretskii <eliz@gnu.org>
parents:
42122
diff
changeset
|
2399 } |
73fcf65b58d3
(tty_default_color_capabilities, tty_setup_colors)
Eli Zaretskii <eliz@gnu.org>
parents:
42122
diff
changeset
|
2400 } |
73fcf65b58d3
(tty_default_color_capabilities, tty_setup_colors)
Eli Zaretskii <eliz@gnu.org>
parents:
42122
diff
changeset
|
2401 |
97658 | 2402 #endif /* !DOS_NT */ |
25002 | 2403 |
2404 | |
53226
dd3018b4785b
Implemented multiple tty support.
Karoly Lorentey <lorentey@elte.hu>
parents:
53225
diff
changeset
|
2405 |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
2406 /* Return the tty display object specified by TERMINAL. */ |
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
2407 |
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
2408 struct terminal * |
83512
5d328dadd0f4
Make `tty-display-color-p' follow its doc string. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83502
diff
changeset
|
2409 get_tty_terminal (Lisp_Object terminal, int throw) |
83167
69ebc75cb461
Implemented display ids for multiple emacsclients on the same tty. Plus assorted bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83161
diff
changeset
|
2410 { |
83512
5d328dadd0f4
Make `tty-display-color-p' follow its doc string. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83502
diff
changeset
|
2411 struct terminal *t = get_terminal (terminal, throw); |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
2412 |
97658 | 2413 if (t && t->type != output_termcap && t->type != output_msdos_raw) |
83512
5d328dadd0f4
Make `tty-display-color-p' follow its doc string. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83502
diff
changeset
|
2414 { |
5d328dadd0f4
Make `tty-display-color-p' follow its doc string. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83502
diff
changeset
|
2415 if (throw) |
5d328dadd0f4
Make `tty-display-color-p' follow its doc string. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83502
diff
changeset
|
2416 error ("Device %d is not a termcap terminal device", t->id); |
5d328dadd0f4
Make `tty-display-color-p' follow its doc string. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83502
diff
changeset
|
2417 else |
5d328dadd0f4
Make `tty-display-color-p' follow its doc string. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83502
diff
changeset
|
2418 return NULL; |
5d328dadd0f4
Make `tty-display-color-p' follow its doc string. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83502
diff
changeset
|
2419 } |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
2420 |
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
2421 return t; |
83167
69ebc75cb461
Implemented display ids for multiple emacsclients on the same tty. Plus assorted bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83161
diff
changeset
|
2422 } |
69ebc75cb461
Implemented display ids for multiple emacsclients on the same tty. Plus assorted bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83161
diff
changeset
|
2423 |
83525
b2e7507b55c6
Fix C-x 5 2 on the controlling tty; fix some possible crash conditions and a memory leak.
Karoly Lorentey <lorentey@elte.hu>
parents:
83522
diff
changeset
|
2424 /* Return an active termcap device that uses the tty device with the |
b2e7507b55c6
Fix C-x 5 2 on the controlling tty; fix some possible crash conditions and a memory leak.
Karoly Lorentey <lorentey@elte.hu>
parents:
83522
diff
changeset
|
2425 given name. |
83167
69ebc75cb461
Implemented display ids for multiple emacsclients on the same tty. Plus assorted bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83161
diff
changeset
|
2426 |
83342
9216636c02fc
Rename `struct display' to `struct device'. Update function, parameter and variable names accordingly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83341
diff
changeset
|
2427 This function ignores suspended devices. |
83025
c66ebcc29777
Removed %T in mode-line-format. Trivial documentation changes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83021
diff
changeset
|
2428 |
c66ebcc29777
Removed %T in mode-line-format. Trivial documentation changes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83021
diff
changeset
|
2429 Returns NULL if the named terminal device is not opened. */ |
92281
4bf10a5a835d
(encode_terminal_code, produce_special_glyphs): Likewise.
Kim F. Storm <storm@cua.dk>
parents:
92237
diff
changeset
|
2430 |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
2431 struct terminal * |
109726
64732fa6188a
Use const char* instead of char*.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
109664
diff
changeset
|
2432 get_named_tty (const char *name) |
53226
dd3018b4785b
Implemented multiple tty support.
Karoly Lorentey <lorentey@elte.hu>
parents:
53225
diff
changeset
|
2433 { |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
2434 struct terminal *t; |
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
2435 |
83525
b2e7507b55c6
Fix C-x 5 2 on the controlling tty; fix some possible crash conditions and a memory leak.
Karoly Lorentey <lorentey@elte.hu>
parents:
83522
diff
changeset
|
2436 if (!name) |
b2e7507b55c6
Fix C-x 5 2 on the controlling tty; fix some possible crash conditions and a memory leak.
Karoly Lorentey <lorentey@elte.hu>
parents:
83522
diff
changeset
|
2437 abort (); |
b2e7507b55c6
Fix C-x 5 2 on the controlling tty; fix some possible crash conditions and a memory leak.
Karoly Lorentey <lorentey@elte.hu>
parents:
83522
diff
changeset
|
2438 |
b2e7507b55c6
Fix C-x 5 2 on the controlling tty; fix some possible crash conditions and a memory leak.
Karoly Lorentey <lorentey@elte.hu>
parents:
83522
diff
changeset
|
2439 for (t = terminal_list; t; t = t->next_terminal) |
b2e7507b55c6
Fix C-x 5 2 on the controlling tty; fix some possible crash conditions and a memory leak.
Karoly Lorentey <lorentey@elte.hu>
parents:
83522
diff
changeset
|
2440 { |
97720
b2594691f8f2
(get_named_tty): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents:
97658
diff
changeset
|
2441 if ((t->type == output_termcap || t->type == output_msdos_raw) |
83525
b2e7507b55c6
Fix C-x 5 2 on the controlling tty; fix some possible crash conditions and a memory leak.
Karoly Lorentey <lorentey@elte.hu>
parents:
83522
diff
changeset
|
2442 && !strcmp (t->display_info.tty->name, name) |
b2e7507b55c6
Fix C-x 5 2 on the controlling tty; fix some possible crash conditions and a memory leak.
Karoly Lorentey <lorentey@elte.hu>
parents:
83522
diff
changeset
|
2443 && TERMINAL_ACTIVE_P (t)) |
b2e7507b55c6
Fix C-x 5 2 on the controlling tty; fix some possible crash conditions and a memory leak.
Karoly Lorentey <lorentey@elte.hu>
parents:
83522
diff
changeset
|
2444 return t; |
b2e7507b55c6
Fix C-x 5 2 on the controlling tty; fix some possible crash conditions and a memory leak.
Karoly Lorentey <lorentey@elte.hu>
parents:
83522
diff
changeset
|
2445 } |
53226
dd3018b4785b
Implemented multiple tty support.
Karoly Lorentey <lorentey@elte.hu>
parents:
53225
diff
changeset
|
2446 |
dd3018b4785b
Implemented multiple tty support.
Karoly Lorentey <lorentey@elte.hu>
parents:
53225
diff
changeset
|
2447 return 0; |
dd3018b4785b
Implemented multiple tty support.
Karoly Lorentey <lorentey@elte.hu>
parents:
53225
diff
changeset
|
2448 } |
dd3018b4785b
Implemented multiple tty support.
Karoly Lorentey <lorentey@elte.hu>
parents:
53225
diff
changeset
|
2449 |
dd3018b4785b
Implemented multiple tty support.
Karoly Lorentey <lorentey@elte.hu>
parents:
53225
diff
changeset
|
2450 |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
2451 DEFUN ("tty-type", Ftty_type, Stty_type, 0, 1, 0, |
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
2452 doc: /* Return the type of the tty device that TERMINAL uses. |
83525
b2e7507b55c6
Fix C-x 5 2 on the controlling tty; fix some possible crash conditions and a memory leak.
Karoly Lorentey <lorentey@elte.hu>
parents:
83522
diff
changeset
|
2453 Returns nil if TERMINAL is not on a tty device. |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
2454 |
103047
997f1f1cac08
* term.c (Ftty_display_color_p, Ftty_display_color_cells)
Chong Yidong <cyd@stupidchicken.com>
parents:
102831
diff
changeset
|
2455 TERMINAL can be a terminal object, a frame, or nil (meaning the |
997f1f1cac08
* term.c (Ftty_display_color_p, Ftty_display_color_cells)
Chong Yidong <cyd@stupidchicken.com>
parents:
102831
diff
changeset
|
2456 selected frame's terminal). */) |
109179
8cfee7d2955f
Convert DEFUNs to standard C.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
109165
diff
changeset
|
2457 (Lisp_Object terminal) |
82988
f82e3a6f5ccb
A few more bugfixes and new features.
Karoly Lorentey <lorentey@elte.hu>
parents:
82987
diff
changeset
|
2458 { |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
2459 struct terminal *t = get_terminal (terminal, 1); |
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
2460 |
97658 | 2461 if (t->type != output_termcap && t->type != output_msdos_raw) |
83525
b2e7507b55c6
Fix C-x 5 2 on the controlling tty; fix some possible crash conditions and a memory leak.
Karoly Lorentey <lorentey@elte.hu>
parents:
83522
diff
changeset
|
2462 return Qnil; |
b2e7507b55c6
Fix C-x 5 2 on the controlling tty; fix some possible crash conditions and a memory leak.
Karoly Lorentey <lorentey@elte.hu>
parents:
83522
diff
changeset
|
2463 |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
2464 if (t->display_info.tty->type) |
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
2465 return build_string (t->display_info.tty->type); |
82988
f82e3a6f5ccb
A few more bugfixes and new features.
Karoly Lorentey <lorentey@elte.hu>
parents:
82987
diff
changeset
|
2466 else |
f82e3a6f5ccb
A few more bugfixes and new features.
Karoly Lorentey <lorentey@elte.hu>
parents:
82987
diff
changeset
|
2467 return Qnil; |
f82e3a6f5ccb
A few more bugfixes and new features.
Karoly Lorentey <lorentey@elte.hu>
parents:
82987
diff
changeset
|
2468 } |
f82e3a6f5ccb
A few more bugfixes and new features.
Karoly Lorentey <lorentey@elte.hu>
parents:
82987
diff
changeset
|
2469 |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
2470 DEFUN ("controlling-tty-p", Fcontrolling_tty_p, Scontrolling_tty_p, 0, 1, 0, |
97658 | 2471 doc: /* Return non-nil if TERMINAL is the controlling tty of the Emacs process. |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
2472 |
103047
997f1f1cac08
* term.c (Ftty_display_color_p, Ftty_display_color_cells)
Chong Yidong <cyd@stupidchicken.com>
parents:
102831
diff
changeset
|
2473 TERMINAL can be a terminal object, a frame, or nil (meaning the |
997f1f1cac08
* term.c (Ftty_display_color_p, Ftty_display_color_cells)
Chong Yidong <cyd@stupidchicken.com>
parents:
102831
diff
changeset
|
2474 selected frame's terminal). This function always returns nil if |
997f1f1cac08
* term.c (Ftty_display_color_p, Ftty_display_color_cells)
Chong Yidong <cyd@stupidchicken.com>
parents:
102831
diff
changeset
|
2475 TERMINAL is not on a tty device. */) |
109179
8cfee7d2955f
Convert DEFUNs to standard C.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
109165
diff
changeset
|
2476 (Lisp_Object terminal) |
83173
6b4b299e2cd5
Fix suspend-frame on the controlling tty (reported by Dan Nicolaescu).
Karoly Lorentey <lorentey@elte.hu>
parents:
83168
diff
changeset
|
2477 { |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
2478 struct terminal *t = get_terminal (terminal, 1); |
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
2479 |
97658 | 2480 if ((t->type != output_termcap && t->type != output_msdos_raw) |
2481 || strcmp (t->display_info.tty->name, DEV_TTY) != 0) | |
83173
6b4b299e2cd5
Fix suspend-frame on the controlling tty (reported by Dan Nicolaescu).
Karoly Lorentey <lorentey@elte.hu>
parents:
83168
diff
changeset
|
2482 return Qnil; |
6b4b299e2cd5
Fix suspend-frame on the controlling tty (reported by Dan Nicolaescu).
Karoly Lorentey <lorentey@elte.hu>
parents:
83168
diff
changeset
|
2483 else |
6b4b299e2cd5
Fix suspend-frame on the controlling tty (reported by Dan Nicolaescu).
Karoly Lorentey <lorentey@elte.hu>
parents:
83168
diff
changeset
|
2484 return Qt; |
6b4b299e2cd5
Fix suspend-frame on the controlling tty (reported by Dan Nicolaescu).
Karoly Lorentey <lorentey@elte.hu>
parents:
83168
diff
changeset
|
2485 } |
6b4b299e2cd5
Fix suspend-frame on the controlling tty (reported by Dan Nicolaescu).
Karoly Lorentey <lorentey@elte.hu>
parents:
83168
diff
changeset
|
2486 |
83311
c016d82bf02b
Merged from miles@gnu.org--gnu-2005 (patch 423-434)
Karoly Lorentey <lorentey@elte.hu>
diff
changeset
|
2487 DEFUN ("tty-no-underline", Ftty_no_underline, Stty_no_underline, 0, 1, 0, |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
2488 doc: /* Declare that the tty used by TERMINAL does not handle underlining. |
83311
c016d82bf02b
Merged from miles@gnu.org--gnu-2005 (patch 423-434)
Karoly Lorentey <lorentey@elte.hu>
diff
changeset
|
2489 This is used to override the terminfo data, for certain terminals that |
c016d82bf02b
Merged from miles@gnu.org--gnu-2005 (patch 423-434)
Karoly Lorentey <lorentey@elte.hu>
diff
changeset
|
2490 do not really do underlining, but say that they do. This function has |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
2491 no effect if used on a non-tty terminal. |
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
2492 |
103047
997f1f1cac08
* term.c (Ftty_display_color_p, Ftty_display_color_cells)
Chong Yidong <cyd@stupidchicken.com>
parents:
102831
diff
changeset
|
2493 TERMINAL can be a terminal object, a frame or nil (meaning the |
997f1f1cac08
* term.c (Ftty_display_color_p, Ftty_display_color_cells)
Chong Yidong <cyd@stupidchicken.com>
parents:
102831
diff
changeset
|
2494 selected frame's terminal). This function always returns nil if |
997f1f1cac08
* term.c (Ftty_display_color_p, Ftty_display_color_cells)
Chong Yidong <cyd@stupidchicken.com>
parents:
102831
diff
changeset
|
2495 TERMINAL does not refer to a text-only terminal. */) |
109179
8cfee7d2955f
Convert DEFUNs to standard C.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
109165
diff
changeset
|
2496 (Lisp_Object terminal) |
83311
c016d82bf02b
Merged from miles@gnu.org--gnu-2005 (patch 423-434)
Karoly Lorentey <lorentey@elte.hu>
diff
changeset
|
2497 { |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
2498 struct terminal *t = get_terminal (terminal, 1); |
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
2499 |
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
2500 if (t->type == output_termcap) |
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
2501 t->display_info.tty->TS_enter_underline_mode = 0; |
83311
c016d82bf02b
Merged from miles@gnu.org--gnu-2005 (patch 423-434)
Karoly Lorentey <lorentey@elte.hu>
diff
changeset
|
2502 return Qnil; |
c016d82bf02b
Merged from miles@gnu.org--gnu-2005 (patch 423-434)
Karoly Lorentey <lorentey@elte.hu>
diff
changeset
|
2503 } |
c016d82bf02b
Merged from miles@gnu.org--gnu-2005 (patch 423-434)
Karoly Lorentey <lorentey@elte.hu>
diff
changeset
|
2504 |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2505 |
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2506 |
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2507 DEFUN ("suspend-tty", Fsuspend_tty, Ssuspend_tty, 0, 1, 0, |
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2508 doc: /* Suspend the terminal device TTY. |
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2509 |
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2510 The device is restored to its default state, and Emacs ceases all |
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2511 access to the tty device. Frames that use the device are not deleted, |
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2512 but input is not read from them and if they change, their display is |
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2513 not updated. |
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2514 |
103047
997f1f1cac08
* term.c (Ftty_display_color_p, Ftty_display_color_cells)
Chong Yidong <cyd@stupidchicken.com>
parents:
102831
diff
changeset
|
2515 TTY may be a terminal object, a frame, or nil for the terminal device |
997f1f1cac08
* term.c (Ftty_display_color_p, Ftty_display_color_cells)
Chong Yidong <cyd@stupidchicken.com>
parents:
102831
diff
changeset
|
2516 of the currently selected frame. |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2517 |
83891
dab32bc3edc8
* server.el (server-start, server-unload-hook): Undo previous
Dan Nicolaescu <dann@ics.uci.edu>
parents:
83889
diff
changeset
|
2518 This function runs `suspend-tty-functions' after suspending the |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2519 device. The functions are run with one arg, the id of the suspended |
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2520 terminal device. |
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2521 |
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2522 `suspend-tty' does nothing if it is called on a device that is already |
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2523 suspended. |
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2524 |
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2525 A suspended tty may be resumed by calling `resume-tty' on it. */) |
109179
8cfee7d2955f
Convert DEFUNs to standard C.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
109165
diff
changeset
|
2526 (Lisp_Object tty) |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2527 { |
83512
5d328dadd0f4
Make `tty-display-color-p' follow its doc string. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83502
diff
changeset
|
2528 struct terminal *t = get_tty_terminal (tty, 1); |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2529 FILE *f; |
92281
4bf10a5a835d
(encode_terminal_code, produce_special_glyphs): Likewise.
Kim F. Storm <storm@cua.dk>
parents:
92237
diff
changeset
|
2530 |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
2531 if (!t) |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2532 error ("Unknown tty device"); |
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2533 |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
2534 f = t->display_info.tty->input; |
92281
4bf10a5a835d
(encode_terminal_code, produce_special_glyphs): Likewise.
Kim F. Storm <storm@cua.dk>
parents:
92237
diff
changeset
|
2535 |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2536 if (f) |
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2537 { |
84769
cbcb89640ef2
* xt-mouse.el (xterm-mouse-mode): Re-enable suspend-tty-functions.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
84768
diff
changeset
|
2538 /* First run `suspend-tty-functions' and then clean up the tty |
cbcb89640ef2
* xt-mouse.el (xterm-mouse-mode): Re-enable suspend-tty-functions.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
84768
diff
changeset
|
2539 state because `suspend-tty-functions' might need to change |
cbcb89640ef2
* xt-mouse.el (xterm-mouse-mode): Re-enable suspend-tty-functions.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
84768
diff
changeset
|
2540 the tty state. */ |
cbcb89640ef2
* xt-mouse.el (xterm-mouse-mode): Re-enable suspend-tty-functions.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
84768
diff
changeset
|
2541 if (!NILP (Vrun_hooks)) |
cbcb89640ef2
* xt-mouse.el (xterm-mouse-mode): Re-enable suspend-tty-functions.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
84768
diff
changeset
|
2542 { |
cbcb89640ef2
* xt-mouse.el (xterm-mouse-mode): Re-enable suspend-tty-functions.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
84768
diff
changeset
|
2543 Lisp_Object args[2]; |
cbcb89640ef2
* xt-mouse.el (xterm-mouse-mode): Re-enable suspend-tty-functions.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
84768
diff
changeset
|
2544 args[0] = intern ("suspend-tty-functions"); |
cbcb89640ef2
* xt-mouse.el (xterm-mouse-mode): Re-enable suspend-tty-functions.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
84768
diff
changeset
|
2545 XSETTERMINAL (args[1], t); |
cbcb89640ef2
* xt-mouse.el (xterm-mouse-mode): Re-enable suspend-tty-functions.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
84768
diff
changeset
|
2546 Frun_hook_with_args (2, args); |
cbcb89640ef2
* xt-mouse.el (xterm-mouse-mode): Re-enable suspend-tty-functions.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
84768
diff
changeset
|
2547 } |
cbcb89640ef2
* xt-mouse.el (xterm-mouse-mode): Re-enable suspend-tty-functions.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
84768
diff
changeset
|
2548 |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
2549 reset_sys_modes (t->display_info.tty); |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2550 delete_keyboard_wait_descriptor (fileno (f)); |
97658 | 2551 |
2552 #ifndef MSDOS | |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2553 fclose (f); |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
2554 if (f != t->display_info.tty->output) |
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
2555 fclose (t->display_info.tty->output); |
97658 | 2556 #endif |
92281
4bf10a5a835d
(encode_terminal_code, produce_special_glyphs): Likewise.
Kim F. Storm <storm@cua.dk>
parents:
92237
diff
changeset
|
2557 |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
2558 t->display_info.tty->input = 0; |
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
2559 t->display_info.tty->output = 0; |
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
2560 |
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
2561 if (FRAMEP (t->display_info.tty->top_frame)) |
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
2562 FRAME_SET_VISIBLE (XFRAME (t->display_info.tty->top_frame), 0); |
92281
4bf10a5a835d
(encode_terminal_code, produce_special_glyphs): Likewise.
Kim F. Storm <storm@cua.dk>
parents:
92237
diff
changeset
|
2563 |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2564 } |
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2565 |
83521
40a5d8a15056
Fix crashes in redisplay functions on suspended tty frames. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83512
diff
changeset
|
2566 /* Clear display hooks to prevent further output. */ |
40a5d8a15056
Fix crashes in redisplay functions on suspended tty frames. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83512
diff
changeset
|
2567 clear_tty_hooks (t); |
40a5d8a15056
Fix crashes in redisplay functions on suspended tty frames. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83512
diff
changeset
|
2568 |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2569 return Qnil; |
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2570 } |
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2571 |
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2572 DEFUN ("resume-tty", Fresume_tty, Sresume_tty, 0, 1, 0, |
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2573 doc: /* Resume the previously suspended terminal device TTY. |
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2574 The terminal is opened and reinitialized. Frames that are on the |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
2575 suspended terminal are revived. |
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
2576 |
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
2577 It is an error to resume a terminal while another terminal is active |
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
2578 on the same device. |
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
2579 |
83891
dab32bc3edc8
* server.el (server-start, server-unload-hook): Undo previous
Dan Nicolaescu <dann@ics.uci.edu>
parents:
83889
diff
changeset
|
2580 This function runs `resume-tty-functions' after resuming the terminal. |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
2581 The functions are run with one arg, the id of the resumed terminal |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2582 device. |
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2583 |
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2584 `resume-tty' does nothing if it is called on a device that is not |
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2585 suspended. |
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2586 |
103047
997f1f1cac08
* term.c (Ftty_display_color_p, Ftty_display_color_cells)
Chong Yidong <cyd@stupidchicken.com>
parents:
102831
diff
changeset
|
2587 TTY may be a terminal object, a frame, or nil (meaning the selected |
997f1f1cac08
* term.c (Ftty_display_color_p, Ftty_display_color_cells)
Chong Yidong <cyd@stupidchicken.com>
parents:
102831
diff
changeset
|
2588 frame's terminal). */) |
109179
8cfee7d2955f
Convert DEFUNs to standard C.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
109165
diff
changeset
|
2589 (Lisp_Object tty) |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2590 { |
83512
5d328dadd0f4
Make `tty-display-color-p' follow its doc string. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83502
diff
changeset
|
2591 struct terminal *t = get_tty_terminal (tty, 1); |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2592 int fd; |
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2593 |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
2594 if (!t) |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2595 error ("Unknown tty device"); |
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2596 |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
2597 if (!t->display_info.tty->input) |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2598 { |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
2599 if (get_named_tty (t->display_info.tty->name)) |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2600 error ("Cannot resume display while another display is active on the same device"); |
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2601 |
97658 | 2602 #ifdef MSDOS |
2603 t->display_info.tty->output = stdout; | |
2604 t->display_info.tty->input = stdin; | |
2605 #else /* !MSDOS */ | |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
2606 fd = emacs_open (t->display_info.tty->name, O_RDWR | O_NOCTTY, 0); |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2607 |
83498
f0987e2f27e2
Clean up tty device handling. Change name of controlling tty from nil to "/dev/tty".
Karoly Lorentey <lorentey@elte.hu>
parents:
83468
diff
changeset
|
2608 if (fd == -1) |
f0987e2f27e2
Clean up tty device handling. Change name of controlling tty from nil to "/dev/tty".
Karoly Lorentey <lorentey@elte.hu>
parents:
83468
diff
changeset
|
2609 error ("Can not reopen tty device %s: %s", t->display_info.tty->name, strerror (errno)); |
f0987e2f27e2
Clean up tty device handling. Change name of controlling tty from nil to "/dev/tty".
Karoly Lorentey <lorentey@elte.hu>
parents:
83468
diff
changeset
|
2610 |
84779
67e430e38471
(DEV_TTY): New macro. Provide a definition for MS-Windows.
Eli Zaretskii <eliz@gnu.org>
parents:
84769
diff
changeset
|
2611 if (strcmp (t->display_info.tty->name, DEV_TTY)) |
83498
f0987e2f27e2
Clean up tty device handling. Change name of controlling tty from nil to "/dev/tty".
Karoly Lorentey <lorentey@elte.hu>
parents:
83468
diff
changeset
|
2612 dissociate_if_controlling_tty (fd); |
84779
67e430e38471
(DEV_TTY): New macro. Provide a definition for MS-Windows.
Eli Zaretskii <eliz@gnu.org>
parents:
84769
diff
changeset
|
2613 |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
2614 t->display_info.tty->output = fdopen (fd, "w+"); |
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
2615 t->display_info.tty->input = t->display_info.tty->output; |
97658 | 2616 #endif |
2617 | |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2618 add_keyboard_wait_descriptor (fd); |
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2619 |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
2620 if (FRAMEP (t->display_info.tty->top_frame)) |
101690
1009d5607716
* dispnew.c (window_change_signal): Don't try to get the size of a
Dan Nicolaescu <dann@ics.uci.edu>
parents:
100951
diff
changeset
|
2621 { |
1009d5607716
* dispnew.c (window_change_signal): Don't try to get the size of a
Dan Nicolaescu <dann@ics.uci.edu>
parents:
100951
diff
changeset
|
2622 struct frame *f = XFRAME (t->display_info.tty->top_frame); |
1009d5607716
* dispnew.c (window_change_signal): Don't try to get the size of a
Dan Nicolaescu <dann@ics.uci.edu>
parents:
100951
diff
changeset
|
2623 int width, height; |
1009d5607716
* dispnew.c (window_change_signal): Don't try to get the size of a
Dan Nicolaescu <dann@ics.uci.edu>
parents:
100951
diff
changeset
|
2624 int old_height = FRAME_COLS (f); |
1009d5607716
* dispnew.c (window_change_signal): Don't try to get the size of a
Dan Nicolaescu <dann@ics.uci.edu>
parents:
100951
diff
changeset
|
2625 int old_width = FRAME_LINES (f); |
1009d5607716
* dispnew.c (window_change_signal): Don't try to get the size of a
Dan Nicolaescu <dann@ics.uci.edu>
parents:
100951
diff
changeset
|
2626 |
1009d5607716
* dispnew.c (window_change_signal): Don't try to get the size of a
Dan Nicolaescu <dann@ics.uci.edu>
parents:
100951
diff
changeset
|
2627 /* Check if terminal/window size has changed while the frame |
1009d5607716
* dispnew.c (window_change_signal): Don't try to get the size of a
Dan Nicolaescu <dann@ics.uci.edu>
parents:
100951
diff
changeset
|
2628 was suspended. */ |
1009d5607716
* dispnew.c (window_change_signal): Don't try to get the size of a
Dan Nicolaescu <dann@ics.uci.edu>
parents:
100951
diff
changeset
|
2629 get_tty_size (fileno (t->display_info.tty->input), &width, &height); |
1009d5607716
* dispnew.c (window_change_signal): Don't try to get the size of a
Dan Nicolaescu <dann@ics.uci.edu>
parents:
100951
diff
changeset
|
2630 if (width != old_width || height != old_height) |
1009d5607716
* dispnew.c (window_change_signal): Don't try to get the size of a
Dan Nicolaescu <dann@ics.uci.edu>
parents:
100951
diff
changeset
|
2631 change_frame_size (f, height, width, 0, 0, 0); |
1009d5607716
* dispnew.c (window_change_signal): Don't try to get the size of a
Dan Nicolaescu <dann@ics.uci.edu>
parents:
100951
diff
changeset
|
2632 FRAME_SET_VISIBLE (XFRAME (t->display_info.tty->top_frame), 1); |
1009d5607716
* dispnew.c (window_change_signal): Don't try to get the size of a
Dan Nicolaescu <dann@ics.uci.edu>
parents:
100951
diff
changeset
|
2633 } |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
2634 |
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
2635 init_sys_modes (t->display_info.tty); |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2636 |
83891
dab32bc3edc8
* server.el (server-start, server-unload-hook): Undo previous
Dan Nicolaescu <dann@ics.uci.edu>
parents:
83889
diff
changeset
|
2637 /* Run `resume-tty-functions'. */ |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2638 if (!NILP (Vrun_hooks)) |
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2639 { |
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2640 Lisp_Object args[2]; |
83891
dab32bc3edc8
* server.el (server-start, server-unload-hook): Undo previous
Dan Nicolaescu <dann@ics.uci.edu>
parents:
83889
diff
changeset
|
2641 args[0] = intern ("resume-tty-functions"); |
84692
0d8dd9a91520
(get_tty_terminal): Don't treat output_initial specially.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
84461
diff
changeset
|
2642 XSETTERMINAL (args[1], t); |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2643 Frun_hook_with_args (2, args); |
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2644 } |
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2645 } |
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2646 |
83521
40a5d8a15056
Fix crashes in redisplay functions on suspended tty frames. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83512
diff
changeset
|
2647 set_tty_hooks (t); |
40a5d8a15056
Fix crashes in redisplay functions on suspended tty frames. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83512
diff
changeset
|
2648 |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2649 return Qnil; |
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2650 } |
83311
c016d82bf02b
Merged from miles@gnu.org--gnu-2005 (patch 423-434)
Karoly Lorentey <lorentey@elte.hu>
diff
changeset
|
2651 |
82988
f82e3a6f5ccb
A few more bugfixes and new features.
Karoly Lorentey <lorentey@elte.hu>
parents:
82987
diff
changeset
|
2652 |
25002 | 2653 /*********************************************************************** |
80979
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2654 Mouse |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2655 ***********************************************************************/ |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2656 |
80994
62b6aa7f8c37
Use HAVE_GPM instead of HAVE_GPM_H.
Nick Roberts <nickrob@snap.net.nz>
parents:
80979
diff
changeset
|
2657 #ifdef HAVE_GPM |
81107 | 2658 void |
2659 term_mouse_moveto (int x, int y) | |
81102
a00e7c5f2faa
(mouse_face_window): Rename...
Nick Roberts <nickrob@snap.net.nz>
parents:
81083
diff
changeset
|
2660 { |
81811
c10410a3aa36
Include unistd.h for ttyname, used in handle_one_term_event.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
81308
diff
changeset
|
2661 /* TODO: how to set mouse position? |
81102
a00e7c5f2faa
(mouse_face_window): Rename...
Nick Roberts <nickrob@snap.net.nz>
parents:
81083
diff
changeset
|
2662 const char *name; |
a00e7c5f2faa
(mouse_face_window): Rename...
Nick Roberts <nickrob@snap.net.nz>
parents:
81083
diff
changeset
|
2663 int fd; |
a00e7c5f2faa
(mouse_face_window): Rename...
Nick Roberts <nickrob@snap.net.nz>
parents:
81083
diff
changeset
|
2664 name = (const char *) ttyname (0); |
a00e7c5f2faa
(mouse_face_window): Rename...
Nick Roberts <nickrob@snap.net.nz>
parents:
81083
diff
changeset
|
2665 fd = open (name, O_WRONLY); |
81127
d620b28641cd
(term_mouse_highlight): Remove unused variables.
Nick Roberts <nickrob@snap.net.nz>
parents:
81107
diff
changeset
|
2666 SOME_FUNCTION (x, y, fd); |
81102
a00e7c5f2faa
(mouse_face_window): Rename...
Nick Roberts <nickrob@snap.net.nz>
parents:
81083
diff
changeset
|
2667 close (fd); |
a00e7c5f2faa
(mouse_face_window): Rename...
Nick Roberts <nickrob@snap.net.nz>
parents:
81083
diff
changeset
|
2668 last_mouse_x = x; |
81127
d620b28641cd
(term_mouse_highlight): Remove unused variables.
Nick Roberts <nickrob@snap.net.nz>
parents:
81107
diff
changeset
|
2669 last_mouse_y = y; */ |
81102
a00e7c5f2faa
(mouse_face_window): Rename...
Nick Roberts <nickrob@snap.net.nz>
parents:
81083
diff
changeset
|
2670 } |
a00e7c5f2faa
(mouse_face_window): Rename...
Nick Roberts <nickrob@snap.net.nz>
parents:
81083
diff
changeset
|
2671 |
111343
f168d8610334
Reflect mouse-highlight redesign in term.c
Eli Zaretskii <eliz@gnu.org>
parents:
110688
diff
changeset
|
2672 /* Implementation of draw_row_with_mouse_face for TTY/GPM. */ |
f168d8610334
Reflect mouse-highlight redesign in term.c
Eli Zaretskii <eliz@gnu.org>
parents:
110688
diff
changeset
|
2673 void |
f168d8610334
Reflect mouse-highlight redesign in term.c
Eli Zaretskii <eliz@gnu.org>
parents:
110688
diff
changeset
|
2674 tty_draw_row_with_mouse_face (struct window *w, struct glyph_row *row, |
f168d8610334
Reflect mouse-highlight redesign in term.c
Eli Zaretskii <eliz@gnu.org>
parents:
110688
diff
changeset
|
2675 int start_hpos, int end_hpos, |
f168d8610334
Reflect mouse-highlight redesign in term.c
Eli Zaretskii <eliz@gnu.org>
parents:
110688
diff
changeset
|
2676 enum draw_glyphs_face draw) |
80979
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2677 { |
111343
f168d8610334
Reflect mouse-highlight redesign in term.c
Eli Zaretskii <eliz@gnu.org>
parents:
110688
diff
changeset
|
2678 int nglyphs = end_hpos - start_hpos; |
f168d8610334
Reflect mouse-highlight redesign in term.c
Eli Zaretskii <eliz@gnu.org>
parents:
110688
diff
changeset
|
2679 struct frame *f = XFRAME (WINDOW_FRAME (w)); |
f168d8610334
Reflect mouse-highlight redesign in term.c
Eli Zaretskii <eliz@gnu.org>
parents:
110688
diff
changeset
|
2680 struct tty_display_info *tty = FRAME_TTY (f); |
f168d8610334
Reflect mouse-highlight redesign in term.c
Eli Zaretskii <eliz@gnu.org>
parents:
110688
diff
changeset
|
2681 int face_id = tty->mouse_highlight.mouse_face_face_id; |
f168d8610334
Reflect mouse-highlight redesign in term.c
Eli Zaretskii <eliz@gnu.org>
parents:
110688
diff
changeset
|
2682 int save_x, save_y, pos_x, pos_y; |
f168d8610334
Reflect mouse-highlight redesign in term.c
Eli Zaretskii <eliz@gnu.org>
parents:
110688
diff
changeset
|
2683 |
f168d8610334
Reflect mouse-highlight redesign in term.c
Eli Zaretskii <eliz@gnu.org>
parents:
110688
diff
changeset
|
2684 if (end_hpos >= row->used[TEXT_AREA]) |
f168d8610334
Reflect mouse-highlight redesign in term.c
Eli Zaretskii <eliz@gnu.org>
parents:
110688
diff
changeset
|
2685 nglyphs = row->used[TEXT_AREA] - start_hpos; |
f168d8610334
Reflect mouse-highlight redesign in term.c
Eli Zaretskii <eliz@gnu.org>
parents:
110688
diff
changeset
|
2686 |
f168d8610334
Reflect mouse-highlight redesign in term.c
Eli Zaretskii <eliz@gnu.org>
parents:
110688
diff
changeset
|
2687 pos_y = row->y + WINDOW_TOP_EDGE_Y (w); |
f168d8610334
Reflect mouse-highlight redesign in term.c
Eli Zaretskii <eliz@gnu.org>
parents:
110688
diff
changeset
|
2688 pos_x = row->used[LEFT_MARGIN_AREA] + start_hpos + WINDOW_LEFT_EDGE_X (w); |
f168d8610334
Reflect mouse-highlight redesign in term.c
Eli Zaretskii <eliz@gnu.org>
parents:
110688
diff
changeset
|
2689 |
f168d8610334
Reflect mouse-highlight redesign in term.c
Eli Zaretskii <eliz@gnu.org>
parents:
110688
diff
changeset
|
2690 /* Save current cursor co-ordinates. */ |
f168d8610334
Reflect mouse-highlight redesign in term.c
Eli Zaretskii <eliz@gnu.org>
parents:
110688
diff
changeset
|
2691 save_y = curY (tty); |
f168d8610334
Reflect mouse-highlight redesign in term.c
Eli Zaretskii <eliz@gnu.org>
parents:
110688
diff
changeset
|
2692 save_x = curX (tty); |
f168d8610334
Reflect mouse-highlight redesign in term.c
Eli Zaretskii <eliz@gnu.org>
parents:
110688
diff
changeset
|
2693 cursor_to (f, pos_y, pos_x); |
f168d8610334
Reflect mouse-highlight redesign in term.c
Eli Zaretskii <eliz@gnu.org>
parents:
110688
diff
changeset
|
2694 |
f168d8610334
Reflect mouse-highlight redesign in term.c
Eli Zaretskii <eliz@gnu.org>
parents:
110688
diff
changeset
|
2695 if (draw == DRAW_MOUSE_FACE) |
f168d8610334
Reflect mouse-highlight redesign in term.c
Eli Zaretskii <eliz@gnu.org>
parents:
110688
diff
changeset
|
2696 tty_write_glyphs_with_face (f, row->glyphs[TEXT_AREA] + start_hpos, |
f168d8610334
Reflect mouse-highlight redesign in term.c
Eli Zaretskii <eliz@gnu.org>
parents:
110688
diff
changeset
|
2697 nglyphs, face_id); |
f168d8610334
Reflect mouse-highlight redesign in term.c
Eli Zaretskii <eliz@gnu.org>
parents:
110688
diff
changeset
|
2698 else if (draw == DRAW_NORMAL_TEXT) |
f168d8610334
Reflect mouse-highlight redesign in term.c
Eli Zaretskii <eliz@gnu.org>
parents:
110688
diff
changeset
|
2699 write_glyphs (f, row->glyphs[TEXT_AREA] + start_hpos, nglyphs); |
f168d8610334
Reflect mouse-highlight redesign in term.c
Eli Zaretskii <eliz@gnu.org>
parents:
110688
diff
changeset
|
2700 |
f168d8610334
Reflect mouse-highlight redesign in term.c
Eli Zaretskii <eliz@gnu.org>
parents:
110688
diff
changeset
|
2701 cursor_to (f, save_y, save_x); |
80979
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2702 } |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2703 |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2704 static int |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2705 term_mouse_movement (FRAME_PTR frame, Gpm_Event *event) |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2706 { |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2707 /* Has the mouse moved off the glyph it was on at the last sighting? */ |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2708 if (event->x != last_mouse_x || event->y != last_mouse_y) |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2709 { |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2710 frame->mouse_moved = 1; |
111343
f168d8610334
Reflect mouse-highlight redesign in term.c
Eli Zaretskii <eliz@gnu.org>
parents:
110688
diff
changeset
|
2711 note_mouse_highlight (frame, event->x, event->y); |
80979
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2712 /* Remember which glyph we're now on. */ |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2713 last_mouse_x = event->x; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2714 last_mouse_y = event->y; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2715 return 1; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2716 } |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2717 return 0; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2718 } |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2719 |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2720 /* Return the current position of the mouse. |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2721 |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2722 Set *f to the frame the mouse is in, or zero if the mouse is in no |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2723 Emacs frame. If it is set to zero, all the other arguments are |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2724 garbage. |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2725 |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2726 Set *bar_window to Qnil, and *x and *y to the column and |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2727 row of the character cell the mouse is over. |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2728 |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2729 Set *time to the time the mouse was at the returned position. |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2730 |
81127
d620b28641cd
(term_mouse_highlight): Remove unused variables.
Nick Roberts <nickrob@snap.net.nz>
parents:
81107
diff
changeset
|
2731 This clears mouse_moved until the next motion |
81102
a00e7c5f2faa
(mouse_face_window): Rename...
Nick Roberts <nickrob@snap.net.nz>
parents:
81083
diff
changeset
|
2732 event arrives. */ |
80979
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2733 static void |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2734 term_mouse_position (FRAME_PTR *fp, int insist, Lisp_Object *bar_window, |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2735 enum scroll_bar_part *part, Lisp_Object *x, |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2736 Lisp_Object *y, unsigned long *time) |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2737 { |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2738 struct timeval now; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2739 |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2740 *fp = SELECTED_FRAME (); |
81102
a00e7c5f2faa
(mouse_face_window): Rename...
Nick Roberts <nickrob@snap.net.nz>
parents:
81083
diff
changeset
|
2741 (*fp)->mouse_moved = 0; |
80979
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2742 |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2743 *bar_window = Qnil; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2744 *part = 0; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2745 |
81127
d620b28641cd
(term_mouse_highlight): Remove unused variables.
Nick Roberts <nickrob@snap.net.nz>
parents:
81107
diff
changeset
|
2746 XSETINT (*x, last_mouse_x); |
81102
a00e7c5f2faa
(mouse_face_window): Rename...
Nick Roberts <nickrob@snap.net.nz>
parents:
81083
diff
changeset
|
2747 XSETINT (*y, last_mouse_y); |
80979
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2748 gettimeofday(&now, 0); |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2749 *time = (now.tv_sec * 1000) + (now.tv_usec / 1000); |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2750 } |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2751 |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2752 /* Prepare a mouse-event in *RESULT for placement in the input queue. |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2753 |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2754 If the event is a button press, then note that we have grabbed |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2755 the mouse. */ |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2756 |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2757 static Lisp_Object |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2758 term_mouse_click (struct input_event *result, Gpm_Event *event, |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2759 struct frame *f) |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2760 { |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2761 struct timeval now; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2762 int i, j; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2763 |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2764 result->kind = GPM_CLICK_EVENT; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2765 for (i = 0, j = GPM_B_LEFT; i < 3; i++, j >>= 1 ) |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2766 { |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2767 if (event->buttons & j) { |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2768 result->code = i; /* button number */ |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2769 break; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2770 } |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2771 } |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2772 gettimeofday(&now, 0); |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2773 result->timestamp = (now.tv_sec * 1000) + (now.tv_usec / 1000); |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2774 |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2775 if (event->type & GPM_UP) |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2776 result->modifiers = up_modifier; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2777 else if (event->type & GPM_DOWN) |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2778 result->modifiers = down_modifier; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2779 else |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2780 result->modifiers = 0; |
92281
4bf10a5a835d
(encode_terminal_code, produce_special_glyphs): Likewise.
Kim F. Storm <storm@cua.dk>
parents:
92237
diff
changeset
|
2781 |
80979
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2782 if (event->type & GPM_SINGLE) |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2783 result->modifiers |= click_modifier; |
92281
4bf10a5a835d
(encode_terminal_code, produce_special_glyphs): Likewise.
Kim F. Storm <storm@cua.dk>
parents:
92237
diff
changeset
|
2784 |
80979
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2785 if (event->type & GPM_DOUBLE) |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2786 result->modifiers |= double_modifier; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2787 |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2788 if (event->type & GPM_TRIPLE) |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2789 result->modifiers |= triple_modifier; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2790 |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2791 if (event->type & GPM_DRAG) |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2792 result->modifiers |= drag_modifier; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2793 |
81127
d620b28641cd
(term_mouse_highlight): Remove unused variables.
Nick Roberts <nickrob@snap.net.nz>
parents:
81107
diff
changeset
|
2794 if (!(event->type & (GPM_MOVE | GPM_DRAG))) { |
80979
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2795 |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2796 /* 1 << KG_SHIFT */ |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2797 if (event->modifiers & (1 << 0)) |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2798 result->modifiers |= shift_modifier; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2799 |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2800 /* 1 << KG_CTRL */ |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2801 if (event->modifiers & (1 << 2)) |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2802 result->modifiers |= ctrl_modifier; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2803 |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2804 /* 1 << KG_ALT || KG_ALTGR */ |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2805 if (event->modifiers & (1 << 3) |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2806 || event->modifiers & (1 << 1)) |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2807 result->modifiers |= meta_modifier; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2808 } |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2809 |
81127
d620b28641cd
(term_mouse_highlight): Remove unused variables.
Nick Roberts <nickrob@snap.net.nz>
parents:
81107
diff
changeset
|
2810 XSETINT (result->x, event->x); |
d620b28641cd
(term_mouse_highlight): Remove unused variables.
Nick Roberts <nickrob@snap.net.nz>
parents:
81107
diff
changeset
|
2811 XSETINT (result->y, event->y); |
80979
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2812 XSETFRAME (result->frame_or_window, f); |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2813 result->arg = Qnil; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2814 return Qnil; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2815 } |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2816 |
92281
4bf10a5a835d
(encode_terminal_code, produce_special_glyphs): Likewise.
Kim F. Storm <storm@cua.dk>
parents:
92237
diff
changeset
|
2817 int |
83622 | 2818 handle_one_term_event (struct tty_display_info *tty, Gpm_Event *event, struct input_event* hold_quit) |
80979
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2819 { |
83622 | 2820 struct frame *f = XFRAME (tty->top_frame); |
80979
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2821 struct input_event ie; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2822 int do_help = 0; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2823 int count = 0; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2824 |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2825 EVENT_INIT (ie); |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2826 ie.kind = NO_EVENT; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2827 ie.arg = Qnil; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2828 |
81127
d620b28641cd
(term_mouse_highlight): Remove unused variables.
Nick Roberts <nickrob@snap.net.nz>
parents:
81107
diff
changeset
|
2829 if (event->type & (GPM_MOVE | GPM_DRAG)) { |
80979
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2830 previous_help_echo_string = help_echo_string; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2831 help_echo_string = Qnil; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2832 |
84968
85eb2660cbe3
(mouse_face_window): Rename from Qmouse_face_window. Update all users.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
84955
diff
changeset
|
2833 Gpm_DrawPointer (event->x, event->y, fileno (tty->output)); |
80979
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2834 |
81127
d620b28641cd
(term_mouse_highlight): Remove unused variables.
Nick Roberts <nickrob@snap.net.nz>
parents:
81107
diff
changeset
|
2835 if (!term_mouse_movement (f, event)) |
d620b28641cd
(term_mouse_highlight): Remove unused variables.
Nick Roberts <nickrob@snap.net.nz>
parents:
81107
diff
changeset
|
2836 help_echo_string = previous_help_echo_string; |
80979
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2837 |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2838 /* If the contents of the global variable help_echo_string |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2839 has changed, generate a HELP_EVENT. */ |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2840 if (!NILP (help_echo_string) |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2841 || !NILP (previous_help_echo_string)) |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2842 do_help = 1; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2843 |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2844 goto done; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2845 } |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2846 else { |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2847 f->mouse_moved = 0; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2848 term_mouse_click (&ie, event, f); |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2849 } |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2850 |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2851 done: |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2852 if (ie.kind != NO_EVENT) |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2853 { |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2854 kbd_buffer_store_event_hold (&ie, hold_quit); |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2855 count++; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2856 } |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2857 |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2858 if (do_help |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2859 && !(hold_quit && hold_quit->kind != NO_EVENT)) |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2860 { |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2861 Lisp_Object frame; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2862 |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2863 if (f) |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2864 XSETFRAME (frame, f); |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2865 else |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2866 frame = Qnil; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2867 |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2868 gen_help_event (help_echo_string, frame, help_echo_window, |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2869 help_echo_object, help_echo_pos); |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2870 count++; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2871 } |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2872 |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2873 return count; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2874 } |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2875 |
84968
85eb2660cbe3
(mouse_face_window): Rename from Qmouse_face_window. Update all users.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
84955
diff
changeset
|
2876 DEFUN ("gpm-mouse-start", Fgpm_mouse_start, Sgpm_mouse_start, |
80979
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2877 0, 0, 0, |
84768
53194ec05789
* termhooks.h (term_gpm): Delete. Use gpm_tty's NULLness instead.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
84692
diff
changeset
|
2878 doc: /* Open a connection to Gpm. |
84968
85eb2660cbe3
(mouse_face_window): Rename from Qmouse_face_window. Update all users.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
84955
diff
changeset
|
2879 Gpm-mouse can only be activated for one tty at a time. */) |
109179
8cfee7d2955f
Convert DEFUNs to standard C.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
109165
diff
changeset
|
2880 (void) |
80979
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2881 { |
84768
53194ec05789
* termhooks.h (term_gpm): Delete. Use gpm_tty's NULLness instead.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
84692
diff
changeset
|
2882 struct frame *f = SELECTED_FRAME (); |
53194ec05789
* termhooks.h (term_gpm): Delete. Use gpm_tty's NULLness instead.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
84692
diff
changeset
|
2883 struct tty_display_info *tty |
53194ec05789
* termhooks.h (term_gpm): Delete. Use gpm_tty's NULLness instead.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
84692
diff
changeset
|
2884 = ((f)->output_method == output_termcap |
53194ec05789
* termhooks.h (term_gpm): Delete. Use gpm_tty's NULLness instead.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
84692
diff
changeset
|
2885 ? (f)->terminal->display_info.tty : NULL); |
80979
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2886 Gpm_Connect connection; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2887 |
84969
6e58c1c8c0fc
(Fgpm_mouse_start): Don't signal an error if already activated on this tty.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
84968
diff
changeset
|
2888 if (!tty) |
6e58c1c8c0fc
(Fgpm_mouse_start): Don't signal an error if already activated on this tty.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
84968
diff
changeset
|
2889 error ("Gpm-mouse only works in the GNU/Linux console"); |
6e58c1c8c0fc
(Fgpm_mouse_start): Don't signal an error if already activated on this tty.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
84968
diff
changeset
|
2890 if (gpm_tty == tty) |
6e58c1c8c0fc
(Fgpm_mouse_start): Don't signal an error if already activated on this tty.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
84968
diff
changeset
|
2891 return Qnil; /* Already activated, nothing to do. */ |
84968
85eb2660cbe3
(mouse_face_window): Rename from Qmouse_face_window. Update all users.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
84955
diff
changeset
|
2892 if (gpm_tty) |
85eb2660cbe3
(mouse_face_window): Rename from Qmouse_face_window. Update all users.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
84955
diff
changeset
|
2893 error ("Gpm-mouse can only be activated for one tty at a time"); |
84768
53194ec05789
* termhooks.h (term_gpm): Delete. Use gpm_tty's NULLness instead.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
84692
diff
changeset
|
2894 |
80979
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2895 connection.eventMask = ~0; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2896 connection.defaultMask = ~GPM_HARD; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2897 connection.maxMod = ~0; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2898 connection.minMod = 0; |
81127
d620b28641cd
(term_mouse_highlight): Remove unused variables.
Nick Roberts <nickrob@snap.net.nz>
parents:
81107
diff
changeset
|
2899 gpm_zerobased = 1; |
80979
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2900 |
84768
53194ec05789
* termhooks.h (term_gpm): Delete. Use gpm_tty's NULLness instead.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
84692
diff
changeset
|
2901 if (Gpm_Open (&connection, 0) < 0) |
84968
85eb2660cbe3
(mouse_face_window): Rename from Qmouse_face_window. Update all users.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
84955
diff
changeset
|
2902 error ("Gpm-mouse failed to connect to the gpm daemon"); |
80979
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2903 else |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2904 { |
84768
53194ec05789
* termhooks.h (term_gpm): Delete. Use gpm_tty's NULLness instead.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
84692
diff
changeset
|
2905 gpm_tty = tty; |
84955
dfbee4931a6a
(Fterm_open_connection): Add comment.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
84849
diff
changeset
|
2906 /* `init_sys_modes' arranges for mouse movements sent through gpm_fd |
dfbee4931a6a
(Fterm_open_connection): Add comment.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
84849
diff
changeset
|
2907 to generate SIGIOs. Apparently we need to call reset_sys_modes |
dfbee4931a6a
(Fterm_open_connection): Add comment.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
84849
diff
changeset
|
2908 before calling init_sys_modes. */ |
83622 | 2909 reset_sys_modes (tty); |
2910 init_sys_modes (tty); | |
80979
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2911 add_gpm_wait_descriptor (gpm_fd); |
84968
85eb2660cbe3
(mouse_face_window): Rename from Qmouse_face_window. Update all users.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
84955
diff
changeset
|
2912 return Qnil; |
80979
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2913 } |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2914 } |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2915 |
98155
314662df7c17
* term.c (close_gpm): New fun extracted from Fgpm_mouse_stop.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
97830
diff
changeset
|
2916 void |
102744
d69c45eb83b1
* keyboard.c (tty_read_avail_input): Don't treat a -1 return from
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
101964
diff
changeset
|
2917 close_gpm (int fd) |
98155
314662df7c17
* term.c (close_gpm): New fun extracted from Fgpm_mouse_stop.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
97830
diff
changeset
|
2918 { |
102744
d69c45eb83b1
* keyboard.c (tty_read_avail_input): Don't treat a -1 return from
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
101964
diff
changeset
|
2919 if (fd >= 0) |
d69c45eb83b1
* keyboard.c (tty_read_avail_input): Don't treat a -1 return from
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
101964
diff
changeset
|
2920 delete_gpm_wait_descriptor (fd); |
98155
314662df7c17
* term.c (close_gpm): New fun extracted from Fgpm_mouse_stop.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
97830
diff
changeset
|
2921 while (Gpm_Close()); /* close all the stack */ |
314662df7c17
* term.c (close_gpm): New fun extracted from Fgpm_mouse_stop.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
97830
diff
changeset
|
2922 gpm_tty = NULL; |
314662df7c17
* term.c (close_gpm): New fun extracted from Fgpm_mouse_stop.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
97830
diff
changeset
|
2923 } |
314662df7c17
* term.c (close_gpm): New fun extracted from Fgpm_mouse_stop.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
97830
diff
changeset
|
2924 |
84968
85eb2660cbe3
(mouse_face_window): Rename from Qmouse_face_window. Update all users.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
84955
diff
changeset
|
2925 DEFUN ("gpm-mouse-stop", Fgpm_mouse_stop, Sgpm_mouse_stop, |
80979
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2926 0, 0, 0, |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2927 doc: /* Close a connection to Gpm. */) |
109179
8cfee7d2955f
Convert DEFUNs to standard C.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
109165
diff
changeset
|
2928 (void) |
80979
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2929 { |
84969
6e58c1c8c0fc
(Fgpm_mouse_start): Don't signal an error if already activated on this tty.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
84968
diff
changeset
|
2930 struct frame *f = SELECTED_FRAME (); |
6e58c1c8c0fc
(Fgpm_mouse_start): Don't signal an error if already activated on this tty.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
84968
diff
changeset
|
2931 struct tty_display_info *tty |
6e58c1c8c0fc
(Fgpm_mouse_start): Don't signal an error if already activated on this tty.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
84968
diff
changeset
|
2932 = ((f)->output_method == output_termcap |
6e58c1c8c0fc
(Fgpm_mouse_start): Don't signal an error if already activated on this tty.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
84968
diff
changeset
|
2933 ? (f)->terminal->display_info.tty : NULL); |
6e58c1c8c0fc
(Fgpm_mouse_start): Don't signal an error if already activated on this tty.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
84968
diff
changeset
|
2934 |
6e58c1c8c0fc
(Fgpm_mouse_start): Don't signal an error if already activated on this tty.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
84968
diff
changeset
|
2935 if (!tty || gpm_tty != tty) |
6e58c1c8c0fc
(Fgpm_mouse_start): Don't signal an error if already activated on this tty.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
84968
diff
changeset
|
2936 return Qnil; /* Not activated on this terminal, nothing to do. */ |
92281
4bf10a5a835d
(encode_terminal_code, produce_special_glyphs): Likewise.
Kim F. Storm <storm@cua.dk>
parents:
92237
diff
changeset
|
2937 |
102744
d69c45eb83b1
* keyboard.c (tty_read_avail_input): Don't treat a -1 return from
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
101964
diff
changeset
|
2938 close_gpm (gpm_fd); |
84968
85eb2660cbe3
(mouse_face_window): Rename from Qmouse_face_window. Update all users.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
84955
diff
changeset
|
2939 return Qnil; |
80979
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2940 } |
80994
62b6aa7f8c37
Use HAVE_GPM instead of HAVE_GPM_H.
Nick Roberts <nickrob@snap.net.nz>
parents:
80979
diff
changeset
|
2941 #endif /* HAVE_GPM */ |
80979
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2942 |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2943 |
103617
9342805096db
(create_tty_output) [MSDOS]: #ifdef away.
Eli Zaretskii <eliz@gnu.org>
parents:
103605
diff
changeset
|
2944 #ifndef MSDOS |
25002 | 2945 /*********************************************************************** |
2946 Initialization | |
2947 ***********************************************************************/ | |
2948 | |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2949 /* Initialize the tty-dependent part of frame F. The frame must |
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2950 already have its device initialized. */ |
83025
c66ebcc29777
Removed %T in mode-line-format. Trivial documentation changes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83021
diff
changeset
|
2951 |
21514 | 2952 void |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2953 create_tty_output (struct frame *f) |
83008
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
2954 { |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2955 struct tty_output *t; |
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2956 |
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2957 if (! FRAME_TERMCAP_P (f)) |
83008
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
2958 abort (); |
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
2959 |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2960 t = xmalloc (sizeof (struct tty_output)); |
109165
750db9f3e6d8
Replace bcopy, bzero, bcmp by memcpy, memmove, memset, memcmp
Andreas Schwab <schwab@linux-m68k.org>
parents:
109144
diff
changeset
|
2961 memset (t, 0, sizeof (struct tty_output)); |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2962 |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
2963 t->display_info = FRAME_TERMINAL (f)->display_info.tty; |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2964 |
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2965 f->output_data.tty = t; |
53226
dd3018b4785b
Implemented multiple tty support.
Karoly Lorentey <lorentey@elte.hu>
parents:
53225
diff
changeset
|
2966 } |
dd3018b4785b
Implemented multiple tty support.
Karoly Lorentey <lorentey@elte.hu>
parents:
53225
diff
changeset
|
2967 |
100367
b6b22701e97c
(tty_free_frame_resources): Renamed from delete_tty_output; all
Chong Yidong <cyd@stupidchicken.com>
parents:
100276
diff
changeset
|
2968 /* Delete frame F's face cache, and its tty-dependent part. */ |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2969 |
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2970 static void |
100367
b6b22701e97c
(tty_free_frame_resources): Renamed from delete_tty_output; all
Chong Yidong <cyd@stupidchicken.com>
parents:
100276
diff
changeset
|
2971 tty_free_frame_resources (struct frame *f) |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2972 { |
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2973 if (! FRAME_TERMCAP_P (f)) |
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2974 abort (); |
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2975 |
100367
b6b22701e97c
(tty_free_frame_resources): Renamed from delete_tty_output; all
Chong Yidong <cyd@stupidchicken.com>
parents:
100276
diff
changeset
|
2976 if (FRAME_FACE_CACHE (f)) |
b6b22701e97c
(tty_free_frame_resources): Renamed from delete_tty_output; all
Chong Yidong <cyd@stupidchicken.com>
parents:
100276
diff
changeset
|
2977 free_frame_faces (f); |
b6b22701e97c
(tty_free_frame_resources): Renamed from delete_tty_output; all
Chong Yidong <cyd@stupidchicken.com>
parents:
100276
diff
changeset
|
2978 |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2979 xfree (f->output_data.tty); |
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2980 } |
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2981 |
103617
9342805096db
(create_tty_output) [MSDOS]: #ifdef away.
Eli Zaretskii <eliz@gnu.org>
parents:
103605
diff
changeset
|
2982 #else /* MSDOS */ |
9342805096db
(create_tty_output) [MSDOS]: #ifdef away.
Eli Zaretskii <eliz@gnu.org>
parents:
103605
diff
changeset
|
2983 |
9342805096db
(create_tty_output) [MSDOS]: #ifdef away.
Eli Zaretskii <eliz@gnu.org>
parents:
103605
diff
changeset
|
2984 /* Delete frame F's face cache. */ |
9342805096db
(create_tty_output) [MSDOS]: #ifdef away.
Eli Zaretskii <eliz@gnu.org>
parents:
103605
diff
changeset
|
2985 |
9342805096db
(create_tty_output) [MSDOS]: #ifdef away.
Eli Zaretskii <eliz@gnu.org>
parents:
103605
diff
changeset
|
2986 static void |
9342805096db
(create_tty_output) [MSDOS]: #ifdef away.
Eli Zaretskii <eliz@gnu.org>
parents:
103605
diff
changeset
|
2987 tty_free_frame_resources (struct frame *f) |
9342805096db
(create_tty_output) [MSDOS]: #ifdef away.
Eli Zaretskii <eliz@gnu.org>
parents:
103605
diff
changeset
|
2988 { |
9342805096db
(create_tty_output) [MSDOS]: #ifdef away.
Eli Zaretskii <eliz@gnu.org>
parents:
103605
diff
changeset
|
2989 if (! FRAME_TERMCAP_P (f) && ! FRAME_MSDOS_P (f)) |
9342805096db
(create_tty_output) [MSDOS]: #ifdef away.
Eli Zaretskii <eliz@gnu.org>
parents:
103605
diff
changeset
|
2990 abort (); |
9342805096db
(create_tty_output) [MSDOS]: #ifdef away.
Eli Zaretskii <eliz@gnu.org>
parents:
103605
diff
changeset
|
2991 |
9342805096db
(create_tty_output) [MSDOS]: #ifdef away.
Eli Zaretskii <eliz@gnu.org>
parents:
103605
diff
changeset
|
2992 if (FRAME_FACE_CACHE (f)) |
9342805096db
(create_tty_output) [MSDOS]: #ifdef away.
Eli Zaretskii <eliz@gnu.org>
parents:
103605
diff
changeset
|
2993 free_frame_faces (f); |
9342805096db
(create_tty_output) [MSDOS]: #ifdef away.
Eli Zaretskii <eliz@gnu.org>
parents:
103605
diff
changeset
|
2994 } |
9342805096db
(create_tty_output) [MSDOS]: #ifdef away.
Eli Zaretskii <eliz@gnu.org>
parents:
103605
diff
changeset
|
2995 #endif /* MSDOS */ |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2996 |
84461
7ec30b352b6e
* xterm.c (x_create_terminal): Add comment.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
84359
diff
changeset
|
2997 /* Reset the hooks in TERMINAL. */ |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2998 |
83521
40a5d8a15056
Fix crashes in redisplay functions on suspended tty frames. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83512
diff
changeset
|
2999 static void |
40a5d8a15056
Fix crashes in redisplay functions on suspended tty frames. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83512
diff
changeset
|
3000 clear_tty_hooks (struct terminal *terminal) |
40a5d8a15056
Fix crashes in redisplay functions on suspended tty frames. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83512
diff
changeset
|
3001 { |
40a5d8a15056
Fix crashes in redisplay functions on suspended tty frames. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83512
diff
changeset
|
3002 terminal->rif = 0; |
40a5d8a15056
Fix crashes in redisplay functions on suspended tty frames. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83512
diff
changeset
|
3003 terminal->cursor_to_hook = 0; |
40a5d8a15056
Fix crashes in redisplay functions on suspended tty frames. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83512
diff
changeset
|
3004 terminal->raw_cursor_to_hook = 0; |
40a5d8a15056
Fix crashes in redisplay functions on suspended tty frames. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83512
diff
changeset
|
3005 terminal->clear_to_end_hook = 0; |
40a5d8a15056
Fix crashes in redisplay functions on suspended tty frames. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83512
diff
changeset
|
3006 terminal->clear_frame_hook = 0; |
40a5d8a15056
Fix crashes in redisplay functions on suspended tty frames. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83512
diff
changeset
|
3007 terminal->clear_end_of_line_hook = 0; |
40a5d8a15056
Fix crashes in redisplay functions on suspended tty frames. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83512
diff
changeset
|
3008 terminal->ins_del_lines_hook = 0; |
40a5d8a15056
Fix crashes in redisplay functions on suspended tty frames. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83512
diff
changeset
|
3009 terminal->insert_glyphs_hook = 0; |
40a5d8a15056
Fix crashes in redisplay functions on suspended tty frames. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83512
diff
changeset
|
3010 terminal->write_glyphs_hook = 0; |
40a5d8a15056
Fix crashes in redisplay functions on suspended tty frames. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83512
diff
changeset
|
3011 terminal->delete_glyphs_hook = 0; |
40a5d8a15056
Fix crashes in redisplay functions on suspended tty frames. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83512
diff
changeset
|
3012 terminal->ring_bell_hook = 0; |
40a5d8a15056
Fix crashes in redisplay functions on suspended tty frames. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83512
diff
changeset
|
3013 terminal->reset_terminal_modes_hook = 0; |
40a5d8a15056
Fix crashes in redisplay functions on suspended tty frames. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83512
diff
changeset
|
3014 terminal->set_terminal_modes_hook = 0; |
40a5d8a15056
Fix crashes in redisplay functions on suspended tty frames. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83512
diff
changeset
|
3015 terminal->update_begin_hook = 0; |
40a5d8a15056
Fix crashes in redisplay functions on suspended tty frames. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83512
diff
changeset
|
3016 terminal->update_end_hook = 0; |
40a5d8a15056
Fix crashes in redisplay functions on suspended tty frames. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83512
diff
changeset
|
3017 terminal->set_terminal_window_hook = 0; |
40a5d8a15056
Fix crashes in redisplay functions on suspended tty frames. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83512
diff
changeset
|
3018 terminal->mouse_position_hook = 0; |
40a5d8a15056
Fix crashes in redisplay functions on suspended tty frames. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83512
diff
changeset
|
3019 terminal->frame_rehighlight_hook = 0; |
40a5d8a15056
Fix crashes in redisplay functions on suspended tty frames. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83512
diff
changeset
|
3020 terminal->frame_raise_lower_hook = 0; |
83548
c71725faff1a
Merged from emacs@sv.gnu.org. Last-minute emacsclient rewrites be damned!
Karoly Lorentey <lorentey@elte.hu>
diff
changeset
|
3021 terminal->fullscreen_hook = 0; |
83521
40a5d8a15056
Fix crashes in redisplay functions on suspended tty frames. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83512
diff
changeset
|
3022 terminal->set_vertical_scroll_bar_hook = 0; |
40a5d8a15056
Fix crashes in redisplay functions on suspended tty frames. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83512
diff
changeset
|
3023 terminal->condemn_scroll_bars_hook = 0; |
40a5d8a15056
Fix crashes in redisplay functions on suspended tty frames. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83512
diff
changeset
|
3024 terminal->redeem_scroll_bar_hook = 0; |
40a5d8a15056
Fix crashes in redisplay functions on suspended tty frames. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83512
diff
changeset
|
3025 terminal->judge_scroll_bars_hook = 0; |
40a5d8a15056
Fix crashes in redisplay functions on suspended tty frames. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83512
diff
changeset
|
3026 terminal->read_socket_hook = 0; |
40a5d8a15056
Fix crashes in redisplay functions on suspended tty frames. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83512
diff
changeset
|
3027 terminal->frame_up_to_date_hook = 0; |
40a5d8a15056
Fix crashes in redisplay functions on suspended tty frames. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83512
diff
changeset
|
3028 |
40a5d8a15056
Fix crashes in redisplay functions on suspended tty frames. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83512
diff
changeset
|
3029 /* Leave these two set, or suspended frames are not deleted |
40a5d8a15056
Fix crashes in redisplay functions on suspended tty frames. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83512
diff
changeset
|
3030 correctly. */ |
100367
b6b22701e97c
(tty_free_frame_resources): Renamed from delete_tty_output; all
Chong Yidong <cyd@stupidchicken.com>
parents:
100276
diff
changeset
|
3031 terminal->delete_frame_hook = &tty_free_frame_resources; |
83521
40a5d8a15056
Fix crashes in redisplay functions on suspended tty frames. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83512
diff
changeset
|
3032 terminal->delete_terminal_hook = &delete_tty; |
40a5d8a15056
Fix crashes in redisplay functions on suspended tty frames. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83512
diff
changeset
|
3033 } |
40a5d8a15056
Fix crashes in redisplay functions on suspended tty frames. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83512
diff
changeset
|
3034 |
84461
7ec30b352b6e
* xterm.c (x_create_terminal): Add comment.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
84359
diff
changeset
|
3035 /* Initialize hooks in TERMINAL with the values needed for a tty. */ |
7ec30b352b6e
* xterm.c (x_create_terminal): Add comment.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
84359
diff
changeset
|
3036 |
83521
40a5d8a15056
Fix crashes in redisplay functions on suspended tty frames. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83512
diff
changeset
|
3037 static void |
40a5d8a15056
Fix crashes in redisplay functions on suspended tty frames. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83512
diff
changeset
|
3038 set_tty_hooks (struct terminal *terminal) |
253 | 3039 { |
83521
40a5d8a15056
Fix crashes in redisplay functions on suspended tty frames. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83512
diff
changeset
|
3040 terminal->rif = 0; /* ttys don't support window-based redisplay. */ |
40a5d8a15056
Fix crashes in redisplay functions on suspended tty frames. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83512
diff
changeset
|
3041 |
40a5d8a15056
Fix crashes in redisplay functions on suspended tty frames. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83512
diff
changeset
|
3042 terminal->cursor_to_hook = &tty_cursor_to; |
40a5d8a15056
Fix crashes in redisplay functions on suspended tty frames. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83512
diff
changeset
|
3043 terminal->raw_cursor_to_hook = &tty_raw_cursor_to; |
40a5d8a15056
Fix crashes in redisplay functions on suspended tty frames. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83512
diff
changeset
|
3044 |
40a5d8a15056
Fix crashes in redisplay functions on suspended tty frames. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83512
diff
changeset
|
3045 terminal->clear_to_end_hook = &tty_clear_to_end; |
40a5d8a15056
Fix crashes in redisplay functions on suspended tty frames. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83512
diff
changeset
|
3046 terminal->clear_frame_hook = &tty_clear_frame; |
40a5d8a15056
Fix crashes in redisplay functions on suspended tty frames. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83512
diff
changeset
|
3047 terminal->clear_end_of_line_hook = &tty_clear_end_of_line; |
40a5d8a15056
Fix crashes in redisplay functions on suspended tty frames. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83512
diff
changeset
|
3048 |
40a5d8a15056
Fix crashes in redisplay functions on suspended tty frames. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83512
diff
changeset
|
3049 terminal->ins_del_lines_hook = &tty_ins_del_lines; |
40a5d8a15056
Fix crashes in redisplay functions on suspended tty frames. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83512
diff
changeset
|
3050 |
40a5d8a15056
Fix crashes in redisplay functions on suspended tty frames. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83512
diff
changeset
|
3051 terminal->insert_glyphs_hook = &tty_insert_glyphs; |
40a5d8a15056
Fix crashes in redisplay functions on suspended tty frames. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83512
diff
changeset
|
3052 terminal->write_glyphs_hook = &tty_write_glyphs; |
40a5d8a15056
Fix crashes in redisplay functions on suspended tty frames. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83512
diff
changeset
|
3053 terminal->delete_glyphs_hook = &tty_delete_glyphs; |
40a5d8a15056
Fix crashes in redisplay functions on suspended tty frames. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83512
diff
changeset
|
3054 |
40a5d8a15056
Fix crashes in redisplay functions on suspended tty frames. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83512
diff
changeset
|
3055 terminal->ring_bell_hook = &tty_ring_bell; |
92281
4bf10a5a835d
(encode_terminal_code, produce_special_glyphs): Likewise.
Kim F. Storm <storm@cua.dk>
parents:
92237
diff
changeset
|
3056 |
83521
40a5d8a15056
Fix crashes in redisplay functions on suspended tty frames. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83512
diff
changeset
|
3057 terminal->reset_terminal_modes_hook = &tty_reset_terminal_modes; |
40a5d8a15056
Fix crashes in redisplay functions on suspended tty frames. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83512
diff
changeset
|
3058 terminal->set_terminal_modes_hook = &tty_set_terminal_modes; |
40a5d8a15056
Fix crashes in redisplay functions on suspended tty frames. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83512
diff
changeset
|
3059 terminal->update_begin_hook = 0; /* Not needed. */ |
40a5d8a15056
Fix crashes in redisplay functions on suspended tty frames. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83512
diff
changeset
|
3060 terminal->update_end_hook = &tty_update_end; |
40a5d8a15056
Fix crashes in redisplay functions on suspended tty frames. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83512
diff
changeset
|
3061 terminal->set_terminal_window_hook = &tty_set_terminal_window; |
40a5d8a15056
Fix crashes in redisplay functions on suspended tty frames. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83512
diff
changeset
|
3062 |
40a5d8a15056
Fix crashes in redisplay functions on suspended tty frames. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83512
diff
changeset
|
3063 terminal->mouse_position_hook = 0; /* Not needed. */ |
40a5d8a15056
Fix crashes in redisplay functions on suspended tty frames. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83512
diff
changeset
|
3064 terminal->frame_rehighlight_hook = 0; /* Not needed. */ |
40a5d8a15056
Fix crashes in redisplay functions on suspended tty frames. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83512
diff
changeset
|
3065 terminal->frame_raise_lower_hook = 0; /* Not needed. */ |
40a5d8a15056
Fix crashes in redisplay functions on suspended tty frames. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83512
diff
changeset
|
3066 |
40a5d8a15056
Fix crashes in redisplay functions on suspended tty frames. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83512
diff
changeset
|
3067 terminal->set_vertical_scroll_bar_hook = 0; /* Not needed. */ |
40a5d8a15056
Fix crashes in redisplay functions on suspended tty frames. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83512
diff
changeset
|
3068 terminal->condemn_scroll_bars_hook = 0; /* Not needed. */ |
40a5d8a15056
Fix crashes in redisplay functions on suspended tty frames. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83512
diff
changeset
|
3069 terminal->redeem_scroll_bar_hook = 0; /* Not needed. */ |
40a5d8a15056
Fix crashes in redisplay functions on suspended tty frames. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83512
diff
changeset
|
3070 terminal->judge_scroll_bars_hook = 0; /* Not needed. */ |
40a5d8a15056
Fix crashes in redisplay functions on suspended tty frames. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83512
diff
changeset
|
3071 |
40a5d8a15056
Fix crashes in redisplay functions on suspended tty frames. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83512
diff
changeset
|
3072 terminal->read_socket_hook = &tty_read_avail_input; /* keyboard.c */ |
40a5d8a15056
Fix crashes in redisplay functions on suspended tty frames. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83512
diff
changeset
|
3073 terminal->frame_up_to_date_hook = 0; /* Not needed. */ |
92281
4bf10a5a835d
(encode_terminal_code, produce_special_glyphs): Likewise.
Kim F. Storm <storm@cua.dk>
parents:
92237
diff
changeset
|
3074 |
100367
b6b22701e97c
(tty_free_frame_resources): Renamed from delete_tty_output; all
Chong Yidong <cyd@stupidchicken.com>
parents:
100276
diff
changeset
|
3075 terminal->delete_frame_hook = &tty_free_frame_resources; |
83521
40a5d8a15056
Fix crashes in redisplay functions on suspended tty frames. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83512
diff
changeset
|
3076 terminal->delete_terminal_hook = &delete_tty; |
40a5d8a15056
Fix crashes in redisplay functions on suspended tty frames. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83512
diff
changeset
|
3077 } |
40a5d8a15056
Fix crashes in redisplay functions on suspended tty frames. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83512
diff
changeset
|
3078 |
83086
347ce3d5d79c
Fix dropping of the controlling tty on Solaris (Dan Nicolaescu).
Karoly Lorentey <lorentey@elte.hu>
parents:
83082
diff
changeset
|
3079 /* Drop the controlling terminal if fd is the same device. */ |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
3080 static void |
83086
347ce3d5d79c
Fix dropping of the controlling tty on Solaris (Dan Nicolaescu).
Karoly Lorentey <lorentey@elte.hu>
parents:
83082
diff
changeset
|
3081 dissociate_if_controlling_tty (int fd) |
253 | 3082 { |
97658 | 3083 #ifndef DOS_NT |
111544
107fd4b37e9d
Clean up src/systty.h macros.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
111526
diff
changeset
|
3084 int pgid = tcgetpgrp (fd); /* If tcgetpgrp succeeds, fd is the ctty. */ |
83086
347ce3d5d79c
Fix dropping of the controlling tty on Solaris (Dan Nicolaescu).
Karoly Lorentey <lorentey@elte.hu>
parents:
83082
diff
changeset
|
3085 if (pgid != -1) |
347ce3d5d79c
Fix dropping of the controlling tty on Solaris (Dan Nicolaescu).
Karoly Lorentey <lorentey@elte.hu>
parents:
83082
diff
changeset
|
3086 { |
109633
ce2dcd6fda75
Fix emacs -Q -f server-start & emacsclient -t on GNU/Linux.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
109559
diff
changeset
|
3087 #if defined (USG5) |
83086
347ce3d5d79c
Fix dropping of the controlling tty on Solaris (Dan Nicolaescu).
Karoly Lorentey <lorentey@elte.hu>
parents:
83082
diff
changeset
|
3088 setpgrp (); |
347ce3d5d79c
Fix dropping of the controlling tty on Solaris (Dan Nicolaescu).
Karoly Lorentey <lorentey@elte.hu>
parents:
83082
diff
changeset
|
3089 no_controlling_tty = 1; |
84359
b651dc7c54ac
* term.c (dissociate_if_controlling_tty): Call setsid on CYGWIN.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
83891
diff
changeset
|
3090 #elif defined (CYGWIN) |
b651dc7c54ac
* term.c (dissociate_if_controlling_tty): Call setsid on CYGWIN.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
83891
diff
changeset
|
3091 setsid (); |
b651dc7c54ac
* term.c (dissociate_if_controlling_tty): Call setsid on CYGWIN.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
83891
diff
changeset
|
3092 no_controlling_tty = 1; |
83086
347ce3d5d79c
Fix dropping of the controlling tty on Solaris (Dan Nicolaescu).
Karoly Lorentey <lorentey@elte.hu>
parents:
83082
diff
changeset
|
3093 #else |
347ce3d5d79c
Fix dropping of the controlling tty on Solaris (Dan Nicolaescu).
Karoly Lorentey <lorentey@elte.hu>
parents:
83082
diff
changeset
|
3094 #ifdef TIOCNOTTY /* Try BSD ioctls. */ |
83154
ae72b7a6c292
Dissociate from the controlling tty correctly on FreeBSD.
Karoly Lorentey <lorentey@elte.hu>
parents:
83147
diff
changeset
|
3095 sigblock (sigmask (SIGTTOU)); |
84779
67e430e38471
(DEV_TTY): New macro. Provide a definition for MS-Windows.
Eli Zaretskii <eliz@gnu.org>
parents:
84769
diff
changeset
|
3096 fd = emacs_open (DEV_TTY, O_RDWR, 0); |
83154
ae72b7a6c292
Dissociate from the controlling tty correctly on FreeBSD.
Karoly Lorentey <lorentey@elte.hu>
parents:
83147
diff
changeset
|
3097 if (fd != -1 && ioctl (fd, TIOCNOTTY, 0) != -1) |
ae72b7a6c292
Dissociate from the controlling tty correctly on FreeBSD.
Karoly Lorentey <lorentey@elte.hu>
parents:
83147
diff
changeset
|
3098 { |
ae72b7a6c292
Dissociate from the controlling tty correctly on FreeBSD.
Karoly Lorentey <lorentey@elte.hu>
parents:
83147
diff
changeset
|
3099 no_controlling_tty = 1; |
ae72b7a6c292
Dissociate from the controlling tty correctly on FreeBSD.
Karoly Lorentey <lorentey@elte.hu>
parents:
83147
diff
changeset
|
3100 } |
ae72b7a6c292
Dissociate from the controlling tty correctly on FreeBSD.
Karoly Lorentey <lorentey@elte.hu>
parents:
83147
diff
changeset
|
3101 if (fd != -1) |
ae72b7a6c292
Dissociate from the controlling tty correctly on FreeBSD.
Karoly Lorentey <lorentey@elte.hu>
parents:
83147
diff
changeset
|
3102 emacs_close (fd); |
ae72b7a6c292
Dissociate from the controlling tty correctly on FreeBSD.
Karoly Lorentey <lorentey@elte.hu>
parents:
83147
diff
changeset
|
3103 sigunblock (sigmask (SIGTTOU)); |
ae72b7a6c292
Dissociate from the controlling tty correctly on FreeBSD.
Karoly Lorentey <lorentey@elte.hu>
parents:
83147
diff
changeset
|
3104 #else |
ae72b7a6c292
Dissociate from the controlling tty correctly on FreeBSD.
Karoly Lorentey <lorentey@elte.hu>
parents:
83147
diff
changeset
|
3105 /* Unknown system. */ |
ae72b7a6c292
Dissociate from the controlling tty correctly on FreeBSD.
Karoly Lorentey <lorentey@elte.hu>
parents:
83147
diff
changeset
|
3106 croak (); |
ae72b7a6c292
Dissociate from the controlling tty correctly on FreeBSD.
Karoly Lorentey <lorentey@elte.hu>
parents:
83147
diff
changeset
|
3107 #endif /* ! TIOCNOTTY */ |
83158
f948c9fd910c
Fix parse error in term.c (ARISAWA Akihiro).
Karoly Lorentey <lorentey@elte.hu>
parents:
83154
diff
changeset
|
3108 #endif /* ! USG */ |
83086
347ce3d5d79c
Fix dropping of the controlling tty on Solaris (Dan Nicolaescu).
Karoly Lorentey <lorentey@elte.hu>
parents:
83082
diff
changeset
|
3109 } |
97658 | 3110 #endif /* !DOS_NT */ |
83086
347ce3d5d79c
Fix dropping of the controlling tty on Solaris (Dan Nicolaescu).
Karoly Lorentey <lorentey@elte.hu>
parents:
83082
diff
changeset
|
3111 } |
347ce3d5d79c
Fix dropping of the controlling tty on Solaris (Dan Nicolaescu).
Karoly Lorentey <lorentey@elte.hu>
parents:
83082
diff
changeset
|
3112 |
83008
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
3113 /* Create a termcap display on the tty device with the given name and |
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
3114 type. |
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
3115 |
83525
b2e7507b55c6
Fix C-x 5 2 on the controlling tty; fix some possible crash conditions and a memory leak.
Karoly Lorentey <lorentey@elte.hu>
parents:
83522
diff
changeset
|
3116 If NAME is NULL, then use the controlling tty, i.e., "/dev/tty". |
83008
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
3117 Otherwise NAME should be a path to the tty device file, |
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
3118 e.g. "/dev/pts/7". |
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
3119 |
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
3120 TERMINAL_TYPE is the termcap type of the device, e.g. "vt100". |
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
3121 |
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
3122 If MUST_SUCCEED is true, then all errors are fatal. */ |
83025
c66ebcc29777
Removed %T in mode-line-format. Trivial documentation changes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83021
diff
changeset
|
3123 |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
3124 struct terminal * |
109726
64732fa6188a
Use const char* instead of char*.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
109664
diff
changeset
|
3125 init_tty (const char *name, const char *terminal_type, int must_succeed) |
253 | 3126 { |
83498
f0987e2f27e2
Clean up tty device handling. Change name of controlling tty from nil to "/dev/tty".
Karoly Lorentey <lorentey@elte.hu>
parents:
83468
diff
changeset
|
3127 char *area = NULL; |
253 | 3128 char **address = &area; |
52314
529dd59ee898
(term_init): Remove `const' from buffer_size's declaration.
Eli Zaretskii <eliz@gnu.org>
parents:
52294
diff
changeset
|
3129 int buffer_size = 4096; |
83498
f0987e2f27e2
Clean up tty device handling. Change name of controlling tty from nil to "/dev/tty".
Karoly Lorentey <lorentey@elte.hu>
parents:
83468
diff
changeset
|
3130 register char *p = NULL; |
253 | 3131 int status; |
83498
f0987e2f27e2
Clean up tty device handling. Change name of controlling tty from nil to "/dev/tty".
Karoly Lorentey <lorentey@elte.hu>
parents:
83468
diff
changeset
|
3132 struct tty_display_info *tty = NULL; |
f0987e2f27e2
Clean up tty device handling. Change name of controlling tty from nil to "/dev/tty".
Karoly Lorentey <lorentey@elte.hu>
parents:
83468
diff
changeset
|
3133 struct terminal *terminal = NULL; |
f0987e2f27e2
Clean up tty device handling. Change name of controlling tty from nil to "/dev/tty".
Karoly Lorentey <lorentey@elte.hu>
parents:
83468
diff
changeset
|
3134 int ctty = 0; /* 1 if asked to open controlling tty. */ |
83004
7900111db01c
Converted display hooks to be display-local. Plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
82995
diff
changeset
|
3135 |
83008
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
3136 if (!terminal_type) |
100276
8f4457a692c5
(encode_terminal_code): Free any previous memory blocks
Chong Yidong <cyd@stupidchicken.com>
parents:
98367
diff
changeset
|
3137 maybe_fatal (must_succeed, 0, |
83008
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
3138 "Unknown terminal type", |
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
3139 "Unknown terminal type"); |
83167
69ebc75cb461
Implemented display ids for multiple emacsclients on the same tty. Plus assorted bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83161
diff
changeset
|
3140 |
83525
b2e7507b55c6
Fix C-x 5 2 on the controlling tty; fix some possible crash conditions and a memory leak.
Karoly Lorentey <lorentey@elte.hu>
parents:
83522
diff
changeset
|
3141 if (name == NULL) |
84779
67e430e38471
(DEV_TTY): New macro. Provide a definition for MS-Windows.
Eli Zaretskii <eliz@gnu.org>
parents:
84769
diff
changeset
|
3142 name = DEV_TTY; |
67e430e38471
(DEV_TTY): New macro. Provide a definition for MS-Windows.
Eli Zaretskii <eliz@gnu.org>
parents:
84769
diff
changeset
|
3143 if (!strcmp (name, DEV_TTY)) |
83525
b2e7507b55c6
Fix C-x 5 2 on the controlling tty; fix some possible crash conditions and a memory leak.
Karoly Lorentey <lorentey@elte.hu>
parents:
83522
diff
changeset
|
3144 ctty = 1; |
b2e7507b55c6
Fix C-x 5 2 on the controlling tty; fix some possible crash conditions and a memory leak.
Karoly Lorentey <lorentey@elte.hu>
parents:
83522
diff
changeset
|
3145 |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
3146 /* If we already have a terminal on the given device, use that. If |
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
3147 all such terminals are suspended, create a new one instead. */ |
83341
76e51706154e
Rename term_init to init_tty.
Karoly Lorentey <lorentey@elte.hu>
parents:
83338
diff
changeset
|
3148 /* XXX Perhaps this should be made explicit by having init_tty |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
3149 always create a new terminal and separating terminal and frame |
83167
69ebc75cb461
Implemented display ids for multiple emacsclients on the same tty. Plus assorted bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83161
diff
changeset
|
3150 creation on Lisp level. */ |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
3151 terminal = get_named_tty (name); |
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
3152 if (terminal) |
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
3153 return terminal; |
84779
67e430e38471
(DEV_TTY): New macro. Provide a definition for MS-Windows.
Eli Zaretskii <eliz@gnu.org>
parents:
84769
diff
changeset
|
3154 |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
3155 terminal = create_terminal (); |
97658 | 3156 #ifdef MSDOS |
3157 if (been_here > 0) | |
100276
8f4457a692c5
(encode_terminal_code): Free any previous memory blocks
Chong Yidong <cyd@stupidchicken.com>
parents:
98367
diff
changeset
|
3158 maybe_fatal (1, 0, "Attempt to create another terminal %s", "", |
97658 | 3159 name, ""); |
3160 been_here = 1; | |
3161 tty = &the_only_display_info; | |
3162 #else | |
83008
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
3163 tty = (struct tty_display_info *) xmalloc (sizeof (struct tty_display_info)); |
97658 | 3164 #endif |
109165
750db9f3e6d8
Replace bcopy, bzero, bcmp by memcpy, memmove, memset, memcmp
Andreas Schwab <schwab@linux-m68k.org>
parents:
109144
diff
changeset
|
3165 memset (tty, 0, sizeof (struct tty_display_info)); |
83008
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
3166 tty->next = tty_list; |
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
3167 tty_list = tty; |
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
3168 |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
3169 terminal->type = output_termcap; |
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
3170 terminal->display_info.tty = tty; |
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
3171 tty->terminal = terminal; |
53226
dd3018b4785b
Implemented multiple tty support.
Karoly Lorentey <lorentey@elte.hu>
parents:
53225
diff
changeset
|
3172 |
82991
2b26656ff804
MULTI_KBOARD support for ttys. Input-related bugfixes for X+tty sessions.
Karoly Lorentey <lorentey@elte.hu>
parents:
82990
diff
changeset
|
3173 tty->Wcm = (struct cm *) xmalloc (sizeof (struct cm)); |
2b26656ff804
MULTI_KBOARD support for ttys. Input-related bugfixes for X+tty sessions.
Karoly Lorentey <lorentey@elte.hu>
parents:
82990
diff
changeset
|
3174 Wcm_clear (tty); |
2b26656ff804
MULTI_KBOARD support for ttys. Input-related bugfixes for X+tty sessions.
Karoly Lorentey <lorentey@elte.hu>
parents:
82990
diff
changeset
|
3175 |
110588
0995e4af573f
Code simplification in term.c.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
110562
diff
changeset
|
3176 encode_terminal_src_size = 0; |
0995e4af573f
Code simplification in term.c.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
110562
diff
changeset
|
3177 encode_terminal_dst_size = 0; |
0995e4af573f
Code simplification in term.c.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
110562
diff
changeset
|
3178 |
0995e4af573f
Code simplification in term.c.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
110562
diff
changeset
|
3179 #ifdef HAVE_GPM |
0995e4af573f
Code simplification in term.c.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
110562
diff
changeset
|
3180 terminal->mouse_position_hook = term_mouse_position; |
111343
f168d8610334
Reflect mouse-highlight redesign in term.c
Eli Zaretskii <eliz@gnu.org>
parents:
110688
diff
changeset
|
3181 tty->mouse_highlight.mouse_face_window = Qnil; |
110588
0995e4af573f
Code simplification in term.c.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
110562
diff
changeset
|
3182 #endif |
0995e4af573f
Code simplification in term.c.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
110562
diff
changeset
|
3183 |
0995e4af573f
Code simplification in term.c.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
110562
diff
changeset
|
3184 |
97658 | 3185 #ifndef DOS_NT |
83521
40a5d8a15056
Fix crashes in redisplay functions on suspended tty frames. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83512
diff
changeset
|
3186 set_tty_hooks (terminal); |
84779
67e430e38471
(DEV_TTY): New macro. Provide a definition for MS-Windows.
Eli Zaretskii <eliz@gnu.org>
parents:
84769
diff
changeset
|
3187 |
83498
f0987e2f27e2
Clean up tty device handling. Change name of controlling tty from nil to "/dev/tty".
Karoly Lorentey <lorentey@elte.hu>
parents:
83468
diff
changeset
|
3188 { |
f0987e2f27e2
Clean up tty device handling. Change name of controlling tty from nil to "/dev/tty".
Karoly Lorentey <lorentey@elte.hu>
parents:
83468
diff
changeset
|
3189 int fd; |
f0987e2f27e2
Clean up tty device handling. Change name of controlling tty from nil to "/dev/tty".
Karoly Lorentey <lorentey@elte.hu>
parents:
83468
diff
changeset
|
3190 FILE *file; |
83032
b8237c556f0e
Fix the case when emacsclient is run on Emacs's controlling tty.
Karoly Lorentey <lorentey@elte.hu>
parents:
83027
diff
changeset
|
3191 |
b8237c556f0e
Fix the case when emacsclient is run on Emacs's controlling tty.
Karoly Lorentey <lorentey@elte.hu>
parents:
83027
diff
changeset
|
3192 #ifdef O_IGNORE_CTTY |
83498
f0987e2f27e2
Clean up tty device handling. Change name of controlling tty from nil to "/dev/tty".
Karoly Lorentey <lorentey@elte.hu>
parents:
83468
diff
changeset
|
3193 if (!ctty) |
83032
b8237c556f0e
Fix the case when emacsclient is run on Emacs's controlling tty.
Karoly Lorentey <lorentey@elte.hu>
parents:
83027
diff
changeset
|
3194 /* Open the terminal device. Don't recognize it as our |
b8237c556f0e
Fix the case when emacsclient is run on Emacs's controlling tty.
Karoly Lorentey <lorentey@elte.hu>
parents:
83027
diff
changeset
|
3195 controlling terminal, and don't make it the controlling tty |
b8237c556f0e
Fix the case when emacsclient is run on Emacs's controlling tty.
Karoly Lorentey <lorentey@elte.hu>
parents:
83027
diff
changeset
|
3196 if we don't have one at the moment. */ |
b8237c556f0e
Fix the case when emacsclient is run on Emacs's controlling tty.
Karoly Lorentey <lorentey@elte.hu>
parents:
83027
diff
changeset
|
3197 fd = emacs_open (name, O_RDWR | O_IGNORE_CTTY | O_NOCTTY, 0); |
83498
f0987e2f27e2
Clean up tty device handling. Change name of controlling tty from nil to "/dev/tty".
Karoly Lorentey <lorentey@elte.hu>
parents:
83468
diff
changeset
|
3198 else |
83032
b8237c556f0e
Fix the case when emacsclient is run on Emacs's controlling tty.
Karoly Lorentey <lorentey@elte.hu>
parents:
83027
diff
changeset
|
3199 #else |
83074
34a7a8f40548
Fix background-mode on terminal frames (Dan Nicolaescu).
Karoly Lorentey <lorentey@elte.hu>
parents:
83065
diff
changeset
|
3200 /* Alas, O_IGNORE_CTTY is a GNU extension that seems to be only |
83498
f0987e2f27e2
Clean up tty device handling. Change name of controlling tty from nil to "/dev/tty".
Karoly Lorentey <lorentey@elte.hu>
parents:
83468
diff
changeset
|
3201 defined on Hurd. On other systems, we need to explicitly |
f0987e2f27e2
Clean up tty device handling. Change name of controlling tty from nil to "/dev/tty".
Karoly Lorentey <lorentey@elte.hu>
parents:
83468
diff
changeset
|
3202 dissociate ourselves from the controlling tty when we want to |
f0987e2f27e2
Clean up tty device handling. Change name of controlling tty from nil to "/dev/tty".
Karoly Lorentey <lorentey@elte.hu>
parents:
83468
diff
changeset
|
3203 open a frame on the same terminal. */ |
83032
b8237c556f0e
Fix the case when emacsclient is run on Emacs's controlling tty.
Karoly Lorentey <lorentey@elte.hu>
parents:
83027
diff
changeset
|
3204 fd = emacs_open (name, O_RDWR | O_NOCTTY, 0); |
b8237c556f0e
Fix the case when emacsclient is run on Emacs's controlling tty.
Karoly Lorentey <lorentey@elte.hu>
parents:
83027
diff
changeset
|
3205 #endif /* O_IGNORE_CTTY */ |
b8237c556f0e
Fix the case when emacsclient is run on Emacs's controlling tty.
Karoly Lorentey <lorentey@elte.hu>
parents:
83027
diff
changeset
|
3206 |
100370
c611d83003ce
(init_tty): Move setting the terminal name before the
Dan Nicolaescu <dann@ics.uci.edu>
parents:
100367
diff
changeset
|
3207 tty->name = xstrdup (name); |
c611d83003ce
(init_tty): Move setting the terminal name before the
Dan Nicolaescu <dann@ics.uci.edu>
parents:
100367
diff
changeset
|
3208 terminal->name = xstrdup (name); |
c611d83003ce
(init_tty): Move setting the terminal name before the
Dan Nicolaescu <dann@ics.uci.edu>
parents:
100367
diff
changeset
|
3209 |
83498
f0987e2f27e2
Clean up tty device handling. Change name of controlling tty from nil to "/dev/tty".
Karoly Lorentey <lorentey@elte.hu>
parents:
83468
diff
changeset
|
3210 if (fd < 0) |
100276
8f4457a692c5
(encode_terminal_code): Free any previous memory blocks
Chong Yidong <cyd@stupidchicken.com>
parents:
98367
diff
changeset
|
3211 maybe_fatal (must_succeed, terminal, |
83498
f0987e2f27e2
Clean up tty device handling. Change name of controlling tty from nil to "/dev/tty".
Karoly Lorentey <lorentey@elte.hu>
parents:
83468
diff
changeset
|
3212 "Could not open file: %s", |
f0987e2f27e2
Clean up tty device handling. Change name of controlling tty from nil to "/dev/tty".
Karoly Lorentey <lorentey@elte.hu>
parents:
83468
diff
changeset
|
3213 "Could not open file: %s", |
f0987e2f27e2
Clean up tty device handling. Change name of controlling tty from nil to "/dev/tty".
Karoly Lorentey <lorentey@elte.hu>
parents:
83468
diff
changeset
|
3214 name); |
f0987e2f27e2
Clean up tty device handling. Change name of controlling tty from nil to "/dev/tty".
Karoly Lorentey <lorentey@elte.hu>
parents:
83468
diff
changeset
|
3215 if (!isatty (fd)) |
f0987e2f27e2
Clean up tty device handling. Change name of controlling tty from nil to "/dev/tty".
Karoly Lorentey <lorentey@elte.hu>
parents:
83468
diff
changeset
|
3216 { |
f0987e2f27e2
Clean up tty device handling. Change name of controlling tty from nil to "/dev/tty".
Karoly Lorentey <lorentey@elte.hu>
parents:
83468
diff
changeset
|
3217 close (fd); |
100276
8f4457a692c5
(encode_terminal_code): Free any previous memory blocks
Chong Yidong <cyd@stupidchicken.com>
parents:
98367
diff
changeset
|
3218 maybe_fatal (must_succeed, terminal, |
83498
f0987e2f27e2
Clean up tty device handling. Change name of controlling tty from nil to "/dev/tty".
Karoly Lorentey <lorentey@elte.hu>
parents:
83468
diff
changeset
|
3219 "Not a tty device: %s", |
f0987e2f27e2
Clean up tty device handling. Change name of controlling tty from nil to "/dev/tty".
Karoly Lorentey <lorentey@elte.hu>
parents:
83468
diff
changeset
|
3220 "Not a tty device: %s", |
f0987e2f27e2
Clean up tty device handling. Change name of controlling tty from nil to "/dev/tty".
Karoly Lorentey <lorentey@elte.hu>
parents:
83468
diff
changeset
|
3221 name); |
f0987e2f27e2
Clean up tty device handling. Change name of controlling tty from nil to "/dev/tty".
Karoly Lorentey <lorentey@elte.hu>
parents:
83468
diff
changeset
|
3222 } |
f0987e2f27e2
Clean up tty device handling. Change name of controlling tty from nil to "/dev/tty".
Karoly Lorentey <lorentey@elte.hu>
parents:
83468
diff
changeset
|
3223 |
f0987e2f27e2
Clean up tty device handling. Change name of controlling tty from nil to "/dev/tty".
Karoly Lorentey <lorentey@elte.hu>
parents:
83468
diff
changeset
|
3224 #ifndef O_IGNORE_CTTY |
f0987e2f27e2
Clean up tty device handling. Change name of controlling tty from nil to "/dev/tty".
Karoly Lorentey <lorentey@elte.hu>
parents:
83468
diff
changeset
|
3225 if (!ctty) |
83086
347ce3d5d79c
Fix dropping of the controlling tty on Solaris (Dan Nicolaescu).
Karoly Lorentey <lorentey@elte.hu>
parents:
83082
diff
changeset
|
3226 dissociate_if_controlling_tty (fd); |
83498
f0987e2f27e2
Clean up tty device handling. Change name of controlling tty from nil to "/dev/tty".
Karoly Lorentey <lorentey@elte.hu>
parents:
83468
diff
changeset
|
3227 #endif |
f0987e2f27e2
Clean up tty device handling. Change name of controlling tty from nil to "/dev/tty".
Karoly Lorentey <lorentey@elte.hu>
parents:
83468
diff
changeset
|
3228 |
f0987e2f27e2
Clean up tty device handling. Change name of controlling tty from nil to "/dev/tty".
Karoly Lorentey <lorentey@elte.hu>
parents:
83468
diff
changeset
|
3229 file = fdopen (fd, "w+"); |
f0987e2f27e2
Clean up tty device handling. Change name of controlling tty from nil to "/dev/tty".
Karoly Lorentey <lorentey@elte.hu>
parents:
83468
diff
changeset
|
3230 tty->input = file; |
f0987e2f27e2
Clean up tty device handling. Change name of controlling tty from nil to "/dev/tty".
Karoly Lorentey <lorentey@elte.hu>
parents:
83468
diff
changeset
|
3231 tty->output = file; |
f0987e2f27e2
Clean up tty device handling. Change name of controlling tty from nil to "/dev/tty".
Karoly Lorentey <lorentey@elte.hu>
parents:
83468
diff
changeset
|
3232 } |
84779
67e430e38471
(DEV_TTY): New macro. Provide a definition for MS-Windows.
Eli Zaretskii <eliz@gnu.org>
parents:
84769
diff
changeset
|
3233 |
82989
f3845715a5f6
Separate frame-local, tty-dependent parameters from tty-local parameters.
Karoly Lorentey <lorentey@elte.hu>
parents:
82988
diff
changeset
|
3234 tty->type = xstrdup (terminal_type); |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3235 |
82988
f82e3a6f5ccb
A few more bugfixes and new features.
Karoly Lorentey <lorentey@elte.hu>
parents:
82987
diff
changeset
|
3236 add_keyboard_wait_descriptor (fileno (tty->input)); |
253 | 3237 |
53232
22aaf1e5fbe6
Full support for multiple terminal I/O (with some rough edges).
Karoly Lorentey <lorentey@elte.hu>
parents:
53229
diff
changeset
|
3238 Wcm_clear (tty); |
253 | 3239 |
100276
8f4457a692c5
(encode_terminal_code): Free any previous memory blocks
Chong Yidong <cyd@stupidchicken.com>
parents:
98367
diff
changeset
|
3240 tty->termcap_term_buffer = (char *) xmalloc (buffer_size); |
84779
67e430e38471
(DEV_TTY): New macro. Provide a definition for MS-Windows.
Eli Zaretskii <eliz@gnu.org>
parents:
84769
diff
changeset
|
3241 |
83086
347ce3d5d79c
Fix dropping of the controlling tty on Solaris (Dan Nicolaescu).
Karoly Lorentey <lorentey@elte.hu>
parents:
83082
diff
changeset
|
3242 /* On some systems, tgetent tries to access the controlling |
347ce3d5d79c
Fix dropping of the controlling tty on Solaris (Dan Nicolaescu).
Karoly Lorentey <lorentey@elte.hu>
parents:
83082
diff
changeset
|
3243 terminal. */ |
347ce3d5d79c
Fix dropping of the controlling tty on Solaris (Dan Nicolaescu).
Karoly Lorentey <lorentey@elte.hu>
parents:
83082
diff
changeset
|
3244 sigblock (sigmask (SIGTTOU)); |
100276
8f4457a692c5
(encode_terminal_code): Free any previous memory blocks
Chong Yidong <cyd@stupidchicken.com>
parents:
98367
diff
changeset
|
3245 status = tgetent (tty->termcap_term_buffer, terminal_type); |
83086
347ce3d5d79c
Fix dropping of the controlling tty on Solaris (Dan Nicolaescu).
Karoly Lorentey <lorentey@elte.hu>
parents:
83082
diff
changeset
|
3246 sigunblock (sigmask (SIGTTOU)); |
84779
67e430e38471
(DEV_TTY): New macro. Provide a definition for MS-Windows.
Eli Zaretskii <eliz@gnu.org>
parents:
84769
diff
changeset
|
3247 |
253 | 3248 if (status < 0) |
10824
894369e950f5
(term_init) [TERMINFO]: Make error message more accurate.
Karl Heuer <kwzh@gnu.org>
parents:
10771
diff
changeset
|
3249 { |
894369e950f5
(term_init) [TERMINFO]: Make error message more accurate.
Karl Heuer <kwzh@gnu.org>
parents:
10771
diff
changeset
|
3250 #ifdef TERMINFO |
100276
8f4457a692c5
(encode_terminal_code): Free any previous memory blocks
Chong Yidong <cyd@stupidchicken.com>
parents:
98367
diff
changeset
|
3251 maybe_fatal (must_succeed, terminal, |
83008
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
3252 "Cannot open terminfo database file", |
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
3253 "Cannot open terminfo database file"); |
10824
894369e950f5
(term_init) [TERMINFO]: Make error message more accurate.
Karl Heuer <kwzh@gnu.org>
parents:
10771
diff
changeset
|
3254 #else |
100276
8f4457a692c5
(encode_terminal_code): Free any previous memory blocks
Chong Yidong <cyd@stupidchicken.com>
parents:
98367
diff
changeset
|
3255 maybe_fatal (must_succeed, terminal, |
83008
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
3256 "Cannot open termcap database file", |
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
3257 "Cannot open termcap database file"); |
10824
894369e950f5
(term_init) [TERMINFO]: Make error message more accurate.
Karl Heuer <kwzh@gnu.org>
parents:
10771
diff
changeset
|
3258 #endif |
894369e950f5
(term_init) [TERMINFO]: Make error message more accurate.
Karl Heuer <kwzh@gnu.org>
parents:
10771
diff
changeset
|
3259 } |
253 | 3260 if (status == 0) |
10824
894369e950f5
(term_init) [TERMINFO]: Make error message more accurate.
Karl Heuer <kwzh@gnu.org>
parents:
10771
diff
changeset
|
3261 { |
100276
8f4457a692c5
(encode_terminal_code): Free any previous memory blocks
Chong Yidong <cyd@stupidchicken.com>
parents:
98367
diff
changeset
|
3262 maybe_fatal (must_succeed, terminal, |
83008
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
3263 "Terminal type %s is not defined", |
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
3264 "Terminal type %s is not defined.\n\ |
10824
894369e950f5
(term_init) [TERMINFO]: Make error message more accurate.
Karl Heuer <kwzh@gnu.org>
parents:
10771
diff
changeset
|
3265 If that is not the actual type of terminal you have,\n\ |
894369e950f5
(term_init) [TERMINFO]: Make error message more accurate.
Karl Heuer <kwzh@gnu.org>
parents:
10771
diff
changeset
|
3266 use the Bourne shell command `TERM=... export TERM' (C-shell:\n\ |
107847
e81bca2fba28
(init_tty): Move common text outside of #ifdef TERMINFO.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
107640
diff
changeset
|
3267 `setenv TERM ...') to specify the correct type. It may be necessary\n" |
e81bca2fba28
(init_tty): Move common text outside of #ifdef TERMINFO.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
107640
diff
changeset
|
3268 #ifdef TERMINFO |
e81bca2fba28
(init_tty): Move common text outside of #ifdef TERMINFO.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
107640
diff
changeset
|
3269 "to do `unset TERMINFO' (C-shell: `unsetenv TERMINFO') as well.", |
10824
894369e950f5
(term_init) [TERMINFO]: Make error message more accurate.
Karl Heuer <kwzh@gnu.org>
parents:
10771
diff
changeset
|
3270 #else |
107847
e81bca2fba28
(init_tty): Move common text outside of #ifdef TERMINFO.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
107640
diff
changeset
|
3271 "to do `unset TERMCAP' (C-shell: `unsetenv TERMCAP') as well.", |
e81bca2fba28
(init_tty): Move common text outside of #ifdef TERMINFO.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
107640
diff
changeset
|
3272 #endif |
83008
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
3273 terminal_type); |
10824
894369e950f5
(term_init) [TERMINFO]: Make error message more accurate.
Karl Heuer <kwzh@gnu.org>
parents:
10771
diff
changeset
|
3274 } |
52265
84e49afb2178
(term_init): Use a buffer of size 4096 for tgetent since
Richard M. Stallman <rms@gnu.org>
parents:
51212
diff
changeset
|
3275 |
52294
d9ae4cdf1ed1
(term_init): Fix previous change
Kenichi Handa <handa@m17n.org>
parents:
52293
diff
changeset
|
3276 #ifndef TERMINFO |
100276
8f4457a692c5
(encode_terminal_code): Free any previous memory blocks
Chong Yidong <cyd@stupidchicken.com>
parents:
98367
diff
changeset
|
3277 if (strlen (tty->termcap_term_buffer) >= buffer_size) |
52265
84e49afb2178
(term_init): Use a buffer of size 4096 for tgetent since
Richard M. Stallman <rms@gnu.org>
parents:
51212
diff
changeset
|
3278 abort (); |
100276
8f4457a692c5
(encode_terminal_code): Free any previous memory blocks
Chong Yidong <cyd@stupidchicken.com>
parents:
98367
diff
changeset
|
3279 buffer_size = strlen (tty->termcap_term_buffer); |
52293
473d34d4814c
(term_init): Fix previous change; don't rely on the
Kenichi Handa <handa@m17n.org>
parents:
52265
diff
changeset
|
3280 #endif |
100276
8f4457a692c5
(encode_terminal_code): Free any previous memory blocks
Chong Yidong <cyd@stupidchicken.com>
parents:
98367
diff
changeset
|
3281 tty->termcap_strings_buffer = area = (char *) xmalloc (buffer_size); |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3282 tty->TS_ins_line = tgetstr ("al", address); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3283 tty->TS_ins_multi_lines = tgetstr ("AL", address); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3284 tty->TS_bell = tgetstr ("bl", address); |
53232
22aaf1e5fbe6
Full support for multiple terminal I/O (with some rough edges).
Karoly Lorentey <lorentey@elte.hu>
parents:
53229
diff
changeset
|
3285 BackTab (tty) = tgetstr ("bt", address); |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3286 tty->TS_clr_to_bottom = tgetstr ("cd", address); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3287 tty->TS_clr_line = tgetstr ("ce", address); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3288 tty->TS_clr_frame = tgetstr ("cl", address); |
53232
22aaf1e5fbe6
Full support for multiple terminal I/O (with some rough edges).
Karoly Lorentey <lorentey@elte.hu>
parents:
53229
diff
changeset
|
3289 ColPosition (tty) = NULL; /* tgetstr ("ch", address); */ |
22aaf1e5fbe6
Full support for multiple terminal I/O (with some rough edges).
Karoly Lorentey <lorentey@elte.hu>
parents:
53229
diff
changeset
|
3290 AbsPosition (tty) = tgetstr ("cm", address); |
22aaf1e5fbe6
Full support for multiple terminal I/O (with some rough edges).
Karoly Lorentey <lorentey@elte.hu>
parents:
53229
diff
changeset
|
3291 CR (tty) = tgetstr ("cr", address); |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3292 tty->TS_set_scroll_region = tgetstr ("cs", address); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3293 tty->TS_set_scroll_region_1 = tgetstr ("cS", address); |
53232
22aaf1e5fbe6
Full support for multiple terminal I/O (with some rough edges).
Karoly Lorentey <lorentey@elte.hu>
parents:
53229
diff
changeset
|
3294 RowPosition (tty) = tgetstr ("cv", address); |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3295 tty->TS_del_char = tgetstr ("dc", address); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3296 tty->TS_del_multi_chars = tgetstr ("DC", address); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3297 tty->TS_del_line = tgetstr ("dl", address); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3298 tty->TS_del_multi_lines = tgetstr ("DL", address); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3299 tty->TS_delete_mode = tgetstr ("dm", address); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3300 tty->TS_end_delete_mode = tgetstr ("ed", address); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3301 tty->TS_end_insert_mode = tgetstr ("ei", address); |
53232
22aaf1e5fbe6
Full support for multiple terminal I/O (with some rough edges).
Karoly Lorentey <lorentey@elte.hu>
parents:
53229
diff
changeset
|
3302 Home (tty) = tgetstr ("ho", address); |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3303 tty->TS_ins_char = tgetstr ("ic", address); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3304 tty->TS_ins_multi_chars = tgetstr ("IC", address); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3305 tty->TS_insert_mode = tgetstr ("im", address); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3306 tty->TS_pad_inserted_char = tgetstr ("ip", address); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3307 tty->TS_end_keypad_mode = tgetstr ("ke", address); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3308 tty->TS_keypad_mode = tgetstr ("ks", address); |
53232
22aaf1e5fbe6
Full support for multiple terminal I/O (with some rough edges).
Karoly Lorentey <lorentey@elte.hu>
parents:
53229
diff
changeset
|
3309 LastLine (tty) = tgetstr ("ll", address); |
22aaf1e5fbe6
Full support for multiple terminal I/O (with some rough edges).
Karoly Lorentey <lorentey@elte.hu>
parents:
53229
diff
changeset
|
3310 Right (tty) = tgetstr ("nd", address); |
22aaf1e5fbe6
Full support for multiple terminal I/O (with some rough edges).
Karoly Lorentey <lorentey@elte.hu>
parents:
53229
diff
changeset
|
3311 Down (tty) = tgetstr ("do", address); |
22aaf1e5fbe6
Full support for multiple terminal I/O (with some rough edges).
Karoly Lorentey <lorentey@elte.hu>
parents:
53229
diff
changeset
|
3312 if (!Down (tty)) |
22aaf1e5fbe6
Full support for multiple terminal I/O (with some rough edges).
Karoly Lorentey <lorentey@elte.hu>
parents:
53229
diff
changeset
|
3313 Down (tty) = tgetstr ("nl", address); /* Obsolete name for "do" */ |
253 | 3314 if (tgetflag ("bs")) |
53232
22aaf1e5fbe6
Full support for multiple terminal I/O (with some rough edges).
Karoly Lorentey <lorentey@elte.hu>
parents:
53229
diff
changeset
|
3315 Left (tty) = "\b"; /* can't possibly be longer! */ |
253 | 3316 else /* (Actually, "bs" is obsolete...) */ |
53232
22aaf1e5fbe6
Full support for multiple terminal I/O (with some rough edges).
Karoly Lorentey <lorentey@elte.hu>
parents:
53229
diff
changeset
|
3317 Left (tty) = tgetstr ("le", address); |
22aaf1e5fbe6
Full support for multiple terminal I/O (with some rough edges).
Karoly Lorentey <lorentey@elte.hu>
parents:
53229
diff
changeset
|
3318 if (!Left (tty)) |
22aaf1e5fbe6
Full support for multiple terminal I/O (with some rough edges).
Karoly Lorentey <lorentey@elte.hu>
parents:
53229
diff
changeset
|
3319 Left (tty) = tgetstr ("bc", address); /* Obsolete name for "le" */ |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3320 tty->TS_pad_char = tgetstr ("pc", address); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3321 tty->TS_repeat = tgetstr ("rp", address); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3322 tty->TS_end_standout_mode = tgetstr ("se", address); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3323 tty->TS_fwd_scroll = tgetstr ("sf", address); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3324 tty->TS_standout_mode = tgetstr ("so", address); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3325 tty->TS_rev_scroll = tgetstr ("sr", address); |
53232
22aaf1e5fbe6
Full support for multiple terminal I/O (with some rough edges).
Karoly Lorentey <lorentey@elte.hu>
parents:
53229
diff
changeset
|
3326 tty->Wcm->cm_tab = tgetstr ("ta", address); |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3327 tty->TS_end_termcap_modes = tgetstr ("te", address); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3328 tty->TS_termcap_modes = tgetstr ("ti", address); |
53232
22aaf1e5fbe6
Full support for multiple terminal I/O (with some rough edges).
Karoly Lorentey <lorentey@elte.hu>
parents:
53229
diff
changeset
|
3329 Up (tty) = tgetstr ("up", address); |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3330 tty->TS_visible_bell = tgetstr ("vb", address); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3331 tty->TS_cursor_normal = tgetstr ("ve", address); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3332 tty->TS_cursor_visible = tgetstr ("vs", address); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3333 tty->TS_cursor_invisible = tgetstr ("vi", address); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3334 tty->TS_set_window = tgetstr ("wi", address); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3335 |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3336 tty->TS_enter_underline_mode = tgetstr ("us", address); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3337 tty->TS_exit_underline_mode = tgetstr ("ue", address); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3338 tty->TS_enter_bold_mode = tgetstr ("md", address); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3339 tty->TS_enter_dim_mode = tgetstr ("mh", address); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3340 tty->TS_enter_blink_mode = tgetstr ("mb", address); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3341 tty->TS_enter_reverse_mode = tgetstr ("mr", address); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3342 tty->TS_enter_alt_charset_mode = tgetstr ("as", address); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3343 tty->TS_exit_alt_charset_mode = tgetstr ("ae", address); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3344 tty->TS_exit_attribute_mode = tgetstr ("me", address); |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
46559
diff
changeset
|
3345 |
53232
22aaf1e5fbe6
Full support for multiple terminal I/O (with some rough edges).
Karoly Lorentey <lorentey@elte.hu>
parents:
53229
diff
changeset
|
3346 MultiUp (tty) = tgetstr ("UP", address); |
22aaf1e5fbe6
Full support for multiple terminal I/O (with some rough edges).
Karoly Lorentey <lorentey@elte.hu>
parents:
53229
diff
changeset
|
3347 MultiDown (tty) = tgetstr ("DO", address); |
22aaf1e5fbe6
Full support for multiple terminal I/O (with some rough edges).
Karoly Lorentey <lorentey@elte.hu>
parents:
53229
diff
changeset
|
3348 MultiLeft (tty) = tgetstr ("LE", address); |
22aaf1e5fbe6
Full support for multiple terminal I/O (with some rough edges).
Karoly Lorentey <lorentey@elte.hu>
parents:
53229
diff
changeset
|
3349 MultiRight (tty) = tgetstr ("RI", address); |
253 | 3350 |
26425
08c26156186a
(term_init): If "op" isn't available, don't support color
Gerd Moellmann <gerd@gnu.org>
parents:
25727
diff
changeset
|
3351 /* SVr4/ANSI color suppert. If "op" isn't available, don't support |
08c26156186a
(term_init): If "op" isn't available, don't support color
Gerd Moellmann <gerd@gnu.org>
parents:
25727
diff
changeset
|
3352 color because we can't switch back to the default foreground and |
08c26156186a
(term_init): If "op" isn't available, don't support color
Gerd Moellmann <gerd@gnu.org>
parents:
25727
diff
changeset
|
3353 background. */ |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3354 tty->TS_orig_pair = tgetstr ("op", address); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3355 if (tty->TS_orig_pair) |
25002 | 3356 { |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3357 tty->TS_set_foreground = tgetstr ("AF", address); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3358 tty->TS_set_background = tgetstr ("AB", address); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3359 if (!tty->TS_set_foreground) |
26425
08c26156186a
(term_init): If "op" isn't available, don't support color
Gerd Moellmann <gerd@gnu.org>
parents:
25727
diff
changeset
|
3360 { |
08c26156186a
(term_init): If "op" isn't available, don't support color
Gerd Moellmann <gerd@gnu.org>
parents:
25727
diff
changeset
|
3361 /* SVr4. */ |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3362 tty->TS_set_foreground = tgetstr ("Sf", address); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3363 tty->TS_set_background = tgetstr ("Sb", address); |
26425
08c26156186a
(term_init): If "op" isn't available, don't support color
Gerd Moellmann <gerd@gnu.org>
parents:
25727
diff
changeset
|
3364 } |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
46559
diff
changeset
|
3365 |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3366 tty->TN_max_colors = tgetnum ("Co"); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3367 tty->TN_max_pairs = tgetnum ("pa"); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3368 |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3369 tty->TN_no_color_video = tgetnum ("NC"); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3370 if (tty->TN_no_color_video == -1) |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3371 tty->TN_no_color_video = 0; |
25002 | 3372 } |
3373 | |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3374 tty_default_color_capabilities (tty, 1); |
42742
73fcf65b58d3
(tty_default_color_capabilities, tty_setup_colors)
Eli Zaretskii <eliz@gnu.org>
parents:
42122
diff
changeset
|
3375 |
53232
22aaf1e5fbe6
Full support for multiple terminal I/O (with some rough edges).
Karoly Lorentey <lorentey@elte.hu>
parents:
53229
diff
changeset
|
3376 MagicWrap (tty) = tgetflag ("xn"); |
11530
a265aaa699e0
(term_init): MagicWrap implies AutoWrap.
Karl Heuer <kwzh@gnu.org>
parents:
11235
diff
changeset
|
3377 /* Since we make MagicWrap terminals look like AutoWrap, we need to have |
a265aaa699e0
(term_init): MagicWrap implies AutoWrap.
Karl Heuer <kwzh@gnu.org>
parents:
11235
diff
changeset
|
3378 the former flag imply the latter. */ |
53232
22aaf1e5fbe6
Full support for multiple terminal I/O (with some rough edges).
Karoly Lorentey <lorentey@elte.hu>
parents:
53229
diff
changeset
|
3379 AutoWrap (tty) = MagicWrap (tty) || tgetflag ("am"); |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
3380 terminal->memory_below_frame = tgetflag ("db"); |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3381 tty->TF_hazeltine = tgetflag ("hz"); |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
3382 terminal->must_write_spaces = tgetflag ("in"); |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3383 tty->meta_key = tgetflag ("km") || tgetflag ("MT"); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3384 tty->TF_insmode_motion = tgetflag ("mi"); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3385 tty->TF_standout_motion = tgetflag ("ms"); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3386 tty->TF_underscore = tgetflag ("ul"); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3387 tty->TF_teleray = tgetflag ("xt"); |
253 | 3388 |
110588
0995e4af573f
Code simplification in term.c.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
110562
diff
changeset
|
3389 #else /* DOS_NT */ |
0995e4af573f
Code simplification in term.c.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
110562
diff
changeset
|
3390 #ifdef WINDOWSNT |
0995e4af573f
Code simplification in term.c.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
110562
diff
changeset
|
3391 { |
0995e4af573f
Code simplification in term.c.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
110562
diff
changeset
|
3392 struct frame *f = XFRAME (selected_frame); |
0995e4af573f
Code simplification in term.c.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
110562
diff
changeset
|
3393 |
0995e4af573f
Code simplification in term.c.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
110562
diff
changeset
|
3394 initialize_w32_display (terminal); |
0995e4af573f
Code simplification in term.c.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
110562
diff
changeset
|
3395 |
0995e4af573f
Code simplification in term.c.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
110562
diff
changeset
|
3396 FrameRows (tty) = FRAME_LINES (f); |
0995e4af573f
Code simplification in term.c.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
110562
diff
changeset
|
3397 FrameCols (tty) = FRAME_COLS (f); |
0995e4af573f
Code simplification in term.c.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
110562
diff
changeset
|
3398 tty->specified_window = FRAME_LINES (f); |
0995e4af573f
Code simplification in term.c.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
110562
diff
changeset
|
3399 |
0995e4af573f
Code simplification in term.c.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
110562
diff
changeset
|
3400 FRAME_CAN_HAVE_SCROLL_BARS (f) = 0; |
0995e4af573f
Code simplification in term.c.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
110562
diff
changeset
|
3401 FRAME_VERTICAL_SCROLL_BAR_TYPE (f) = vertical_scroll_bar_none; |
0995e4af573f
Code simplification in term.c.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
110562
diff
changeset
|
3402 terminal->char_ins_del_ok = 1; |
0995e4af573f
Code simplification in term.c.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
110562
diff
changeset
|
3403 baud_rate = 19200; |
0995e4af573f
Code simplification in term.c.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
110562
diff
changeset
|
3404 } |
0995e4af573f
Code simplification in term.c.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
110562
diff
changeset
|
3405 #else /* MSDOS */ |
0995e4af573f
Code simplification in term.c.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
110562
diff
changeset
|
3406 { |
0995e4af573f
Code simplification in term.c.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
110562
diff
changeset
|
3407 int height, width; |
0995e4af573f
Code simplification in term.c.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
110562
diff
changeset
|
3408 if (strcmp (terminal_type, "internal") == 0) |
0995e4af573f
Code simplification in term.c.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
110562
diff
changeset
|
3409 terminal->type = output_msdos_raw; |
0995e4af573f
Code simplification in term.c.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
110562
diff
changeset
|
3410 initialize_msdos_display (terminal); |
0995e4af573f
Code simplification in term.c.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
110562
diff
changeset
|
3411 |
0995e4af573f
Code simplification in term.c.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
110562
diff
changeset
|
3412 get_tty_size (fileno (tty->input), &width, &height); |
0995e4af573f
Code simplification in term.c.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
110562
diff
changeset
|
3413 FrameCols (tty) = width; |
0995e4af573f
Code simplification in term.c.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
110562
diff
changeset
|
3414 FrameRows (tty) = height; |
0995e4af573f
Code simplification in term.c.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
110562
diff
changeset
|
3415 terminal->char_ins_del_ok = 0; |
0995e4af573f
Code simplification in term.c.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
110562
diff
changeset
|
3416 init_baud_rate (fileno (tty->input)); |
0995e4af573f
Code simplification in term.c.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
110562
diff
changeset
|
3417 } |
0995e4af573f
Code simplification in term.c.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
110562
diff
changeset
|
3418 #endif /* MSDOS */ |
0995e4af573f
Code simplification in term.c.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
110562
diff
changeset
|
3419 tty->output = stdout; |
0995e4af573f
Code simplification in term.c.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
110562
diff
changeset
|
3420 tty->input = stdin; |
0995e4af573f
Code simplification in term.c.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
110562
diff
changeset
|
3421 /* The following two are inaccessible from w32console.c. */ |
0995e4af573f
Code simplification in term.c.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
110562
diff
changeset
|
3422 terminal->delete_frame_hook = &tty_free_frame_resources; |
0995e4af573f
Code simplification in term.c.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
110562
diff
changeset
|
3423 terminal->delete_terminal_hook = &delete_tty; |
0995e4af573f
Code simplification in term.c.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
110562
diff
changeset
|
3424 |
0995e4af573f
Code simplification in term.c.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
110562
diff
changeset
|
3425 tty->name = xstrdup (name); |
0995e4af573f
Code simplification in term.c.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
110562
diff
changeset
|
3426 terminal->name = xstrdup (name); |
0995e4af573f
Code simplification in term.c.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
110562
diff
changeset
|
3427 tty->type = xstrdup (terminal_type); |
0995e4af573f
Code simplification in term.c.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
110562
diff
changeset
|
3428 |
0995e4af573f
Code simplification in term.c.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
110562
diff
changeset
|
3429 add_keyboard_wait_descriptor (0); |
0995e4af573f
Code simplification in term.c.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
110562
diff
changeset
|
3430 |
0995e4af573f
Code simplification in term.c.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
110562
diff
changeset
|
3431 tty->delete_in_insert_mode = 1; |
0995e4af573f
Code simplification in term.c.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
110562
diff
changeset
|
3432 |
0995e4af573f
Code simplification in term.c.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
110562
diff
changeset
|
3433 UseTabs (tty) = 0; |
0995e4af573f
Code simplification in term.c.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
110562
diff
changeset
|
3434 terminal->scroll_region_ok = 0; |
0995e4af573f
Code simplification in term.c.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
110562
diff
changeset
|
3435 |
0995e4af573f
Code simplification in term.c.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
110562
diff
changeset
|
3436 /* Seems to insert lines when it's not supposed to, messing up the |
0995e4af573f
Code simplification in term.c.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
110562
diff
changeset
|
3437 display. In doing a trace, it didn't seem to be called much, so I |
0995e4af573f
Code simplification in term.c.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
110562
diff
changeset
|
3438 don't think we're losing anything by turning it off. */ |
0995e4af573f
Code simplification in term.c.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
110562
diff
changeset
|
3439 terminal->line_ins_del_ok = 0; |
0995e4af573f
Code simplification in term.c.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
110562
diff
changeset
|
3440 |
0995e4af573f
Code simplification in term.c.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
110562
diff
changeset
|
3441 tty->TN_max_colors = 16; /* Required to be non-zero for tty-display-color-p */ |
0995e4af573f
Code simplification in term.c.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
110562
diff
changeset
|
3442 #endif /* DOS_NT */ |
0995e4af573f
Code simplification in term.c.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
110562
diff
changeset
|
3443 |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
3444 terminal->kboard = (KBOARD *) xmalloc (sizeof (KBOARD)); |
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
3445 init_kboard (terminal->kboard); |
85614
9f3a25157e4f
Make `window-system' into a keyboard-local variable (rather than
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
85106
diff
changeset
|
3446 terminal->kboard->Vwindow_system = Qnil; |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
3447 terminal->kboard->next_kboard = all_kboards; |
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
3448 all_kboards = terminal->kboard; |
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
3449 terminal->kboard->reference_count++; |
83317
e235da12dd03
Make sure the terminfo function key sequences are set up in the correct function-key-map.
Karoly Lorentey <lorentey@elte.hu>
parents:
83315
diff
changeset
|
3450 /* Don't let the initial kboard remain current longer than necessary. |
e235da12dd03
Make sure the terminfo function key sequences are set up in the correct function-key-map.
Karoly Lorentey <lorentey@elte.hu>
parents:
83315
diff
changeset
|
3451 That would cause problems if a file loaded on startup tries to |
e235da12dd03
Make sure the terminfo function key sequences are set up in the correct function-key-map.
Karoly Lorentey <lorentey@elte.hu>
parents:
83315
diff
changeset
|
3452 prompt in the mini-buffer. */ |
e235da12dd03
Make sure the terminfo function key sequences are set up in the correct function-key-map.
Karoly Lorentey <lorentey@elte.hu>
parents:
83315
diff
changeset
|
3453 if (current_kboard == initial_kboard) |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
3454 current_kboard = terminal->kboard; |
97658 | 3455 #ifndef DOS_NT |
83619
5da6a46ddbd6
* s/darwin.h (SYSTEM_PURESIZE_EXTRA): Define here.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
83616
diff
changeset
|
3456 term_get_fkeys (address, terminal->kboard); |
97141
840bd675fd85
* s/ms-w32.h (MULTI_KBOARD): Remove.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
97043
diff
changeset
|
3457 |
765 | 3458 /* Get frame size from system, or else from termcap. */ |
16093
4c74d7f1cfa6
(term_init): Avoid type-mismatch calling get_frame_size.
Richard M. Stallman <rms@gnu.org>
parents:
15974
diff
changeset
|
3459 { |
4c74d7f1cfa6
(term_init): Avoid type-mismatch calling get_frame_size.
Richard M. Stallman <rms@gnu.org>
parents:
15974
diff
changeset
|
3460 int height, width; |
83065
a871be7b26a5
Implemented suspending of emacsclient frames.
Karoly Lorentey <lorentey@elte.hu>
parents:
83050
diff
changeset
|
3461 get_tty_size (fileno (tty->input), &width, &height); |
53341 | 3462 FrameCols (tty) = width; |
3463 FrameRows (tty) = height; | |
16093
4c74d7f1cfa6
(term_init): Avoid type-mismatch calling get_frame_size.
Richard M. Stallman <rms@gnu.org>
parents:
15974
diff
changeset
|
3464 } |
4c74d7f1cfa6
(term_init): Avoid type-mismatch calling get_frame_size.
Richard M. Stallman <rms@gnu.org>
parents:
15974
diff
changeset
|
3465 |
53341 | 3466 if (FrameCols (tty) <= 0) |
3467 FrameCols (tty) = tgetnum ("co"); | |
3468 if (FrameRows (tty) <= 0) | |
3469 FrameRows (tty) = tgetnum ("li"); | |
3470 | |
3471 if (FrameRows (tty) < 3 || FrameCols (tty) < 3) | |
100276
8f4457a692c5
(encode_terminal_code): Free any previous memory blocks
Chong Yidong <cyd@stupidchicken.com>
parents:
98367
diff
changeset
|
3472 maybe_fatal (must_succeed, terminal, |
109375
3e07e13fe30a
Convert maybe_fatal to standard C.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
109179
diff
changeset
|
3473 "Screen size %dx%d is too small", |
83008
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
3474 "Screen size %dx%d is too small", |
53341 | 3475 FrameCols (tty), FrameRows (tty)); |
10332
e14daed4a820
(term_init): Fatal error if screen is too small.
Richard M. Stallman <rms@gnu.org>
parents:
10261
diff
changeset
|
3476 |
53232
22aaf1e5fbe6
Full support for multiple terminal I/O (with some rough edges).
Karoly Lorentey <lorentey@elte.hu>
parents:
53229
diff
changeset
|
3477 TabWidth (tty) = tgetnum ("tw"); |
253 | 3478 |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3479 if (!tty->TS_bell) |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3480 tty->TS_bell = "\07"; |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3481 |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3482 if (!tty->TS_fwd_scroll) |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3483 tty->TS_fwd_scroll = Down (tty); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3484 |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3485 PC = tty->TS_pad_char ? *tty->TS_pad_char : 0; |
253 | 3486 |
53232
22aaf1e5fbe6
Full support for multiple terminal I/O (with some rough edges).
Karoly Lorentey <lorentey@elte.hu>
parents:
53229
diff
changeset
|
3487 if (TabWidth (tty) < 0) |
22aaf1e5fbe6
Full support for multiple terminal I/O (with some rough edges).
Karoly Lorentey <lorentey@elte.hu>
parents:
53229
diff
changeset
|
3488 TabWidth (tty) = 8; |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
46559
diff
changeset
|
3489 |
253 | 3490 /* Turned off since /etc/termcap seems to have :ta= for most terminals |
3491 and newer termcap doc does not seem to say there is a default. | |
53232
22aaf1e5fbe6
Full support for multiple terminal I/O (with some rough edges).
Karoly Lorentey <lorentey@elte.hu>
parents:
53229
diff
changeset
|
3492 if (!tty->Wcm->cm_tab) |
22aaf1e5fbe6
Full support for multiple terminal I/O (with some rough edges).
Karoly Lorentey <lorentey@elte.hu>
parents:
53229
diff
changeset
|
3493 tty->Wcm->cm_tab = "\t"; |
253 | 3494 */ |
3495 | |
40086
050b19294988
(TN_standout_width, TF_xs, TN_magic_cookie_glitch_ul): Variables removed.
Miles Bader <miles@gnu.org>
parents:
40081
diff
changeset
|
3496 /* We don't support standout modes that use `magic cookies', so |
050b19294988
(TN_standout_width, TF_xs, TN_magic_cookie_glitch_ul): Variables removed.
Miles Bader <miles@gnu.org>
parents:
40081
diff
changeset
|
3497 turn off any that do. */ |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3498 if (tty->TS_standout_mode && tgetnum ("sg") >= 0) |
40086
050b19294988
(TN_standout_width, TF_xs, TN_magic_cookie_glitch_ul): Variables removed.
Miles Bader <miles@gnu.org>
parents:
40081
diff
changeset
|
3499 { |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3500 tty->TS_standout_mode = 0; |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3501 tty->TS_end_standout_mode = 0; |
40086
050b19294988
(TN_standout_width, TF_xs, TN_magic_cookie_glitch_ul): Variables removed.
Miles Bader <miles@gnu.org>
parents:
40081
diff
changeset
|
3502 } |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3503 if (tty->TS_enter_underline_mode && tgetnum ("ug") >= 0) |
40086
050b19294988
(TN_standout_width, TF_xs, TN_magic_cookie_glitch_ul): Variables removed.
Miles Bader <miles@gnu.org>
parents:
40081
diff
changeset
|
3504 { |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3505 tty->TS_enter_underline_mode = 0; |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3506 tty->TS_exit_underline_mode = 0; |
40086
050b19294988
(TN_standout_width, TF_xs, TN_magic_cookie_glitch_ul): Variables removed.
Miles Bader <miles@gnu.org>
parents:
40081
diff
changeset
|
3507 } |
050b19294988
(TN_standout_width, TF_xs, TN_magic_cookie_glitch_ul): Variables removed.
Miles Bader <miles@gnu.org>
parents:
40081
diff
changeset
|
3508 |
050b19294988
(TN_standout_width, TF_xs, TN_magic_cookie_glitch_ul): Variables removed.
Miles Bader <miles@gnu.org>
parents:
40081
diff
changeset
|
3509 /* If there's no standout mode, try to use underlining instead. */ |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3510 if (tty->TS_standout_mode == 0) |
253 | 3511 { |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3512 tty->TS_standout_mode = tty->TS_enter_underline_mode; |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3513 tty->TS_end_standout_mode = tty->TS_exit_underline_mode; |
253 | 3514 } |
3515 | |
5933
560cee2048ed
(term_init): If no `se', use `me';
Richard M. Stallman <rms@gnu.org>
parents:
5648
diff
changeset
|
3516 /* If no `se' string, try using a `me' string instead. |
560cee2048ed
(term_init): If no `se', use `me';
Richard M. Stallman <rms@gnu.org>
parents:
5648
diff
changeset
|
3517 If that fails, we can't use standout mode at all. */ |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3518 if (tty->TS_end_standout_mode == 0) |
5933
560cee2048ed
(term_init): If no `se', use `me';
Richard M. Stallman <rms@gnu.org>
parents:
5648
diff
changeset
|
3519 { |
8612
86065bec6fc9
(term_init): Added missing argument to tgetstr.
Richard M. Stallman <rms@gnu.org>
parents:
8027
diff
changeset
|
3520 char *s = tgetstr ("me", address); |
5933
560cee2048ed
(term_init): If no `se', use `me';
Richard M. Stallman <rms@gnu.org>
parents:
5648
diff
changeset
|
3521 if (s != 0) |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3522 tty->TS_end_standout_mode = s; |
5933
560cee2048ed
(term_init): If no `se', use `me';
Richard M. Stallman <rms@gnu.org>
parents:
5648
diff
changeset
|
3523 else |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3524 tty->TS_standout_mode = 0; |
5933
560cee2048ed
(term_init): If no `se', use `me';
Richard M. Stallman <rms@gnu.org>
parents:
5648
diff
changeset
|
3525 } |
560cee2048ed
(term_init): If no `se', use `me';
Richard M. Stallman <rms@gnu.org>
parents:
5648
diff
changeset
|
3526 |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3527 if (tty->TF_teleray) |
253 | 3528 { |
53232
22aaf1e5fbe6
Full support for multiple terminal I/O (with some rough edges).
Karoly Lorentey <lorentey@elte.hu>
parents:
53229
diff
changeset
|
3529 tty->Wcm->cm_tab = 0; |
40086
050b19294988
(TN_standout_width, TF_xs, TN_magic_cookie_glitch_ul): Variables removed.
Miles Bader <miles@gnu.org>
parents:
40081
diff
changeset
|
3530 /* We can't support standout mode, because it uses magic cookies. */ |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3531 tty->TS_standout_mode = 0; |
253 | 3532 /* But that means we cannot rely on ^M to go to column zero! */ |
53232
22aaf1e5fbe6
Full support for multiple terminal I/O (with some rough edges).
Karoly Lorentey <lorentey@elte.hu>
parents:
53229
diff
changeset
|
3533 CR (tty) = 0; |
253 | 3534 /* LF can't be trusted either -- can alter hpos */ |
3535 /* if move at column 0 thru a line with TS_standout_mode */ | |
53232
22aaf1e5fbe6
Full support for multiple terminal I/O (with some rough edges).
Karoly Lorentey <lorentey@elte.hu>
parents:
53229
diff
changeset
|
3536 Down (tty) = 0; |
253 | 3537 } |
3538 | |
3539 /* Special handling for certain terminal types known to need it */ | |
3540 | |
3541 if (!strcmp (terminal_type, "supdup")) | |
3542 { | |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
3543 terminal->memory_below_frame = 1; |
53232
22aaf1e5fbe6
Full support for multiple terminal I/O (with some rough edges).
Karoly Lorentey <lorentey@elte.hu>
parents:
53229
diff
changeset
|
3544 tty->Wcm->cm_losewrap = 1; |
253 | 3545 } |
3546 if (!strncmp (terminal_type, "c10", 3) | |
3547 || !strcmp (terminal_type, "perq")) | |
3548 { | |
3549 /* Supply a makeshift :wi string. | |
3550 This string is not valid in general since it works only | |
3551 for windows starting at the upper left corner; | |
3552 but that is all Emacs uses. | |
3553 | |
765 | 3554 This string works only if the frame is using |
253 | 3555 the top of the video memory, because addressing is memory-relative. |
3556 So first check the :ti string to see if that is true. | |
3557 | |
3558 It would be simpler if the :wi string could go in the termcap | |
3559 entry, but it can't because it is not fully valid. | |
3560 If it were in the termcap entry, it would confuse other programs. */ | |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3561 if (!tty->TS_set_window) |
253 | 3562 { |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3563 p = tty->TS_termcap_modes; |
253 | 3564 while (*p && strcmp (p, "\033v ")) |
3565 p++; | |
3566 if (*p) | |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3567 tty->TS_set_window = "\033v%C %C %C %C "; |
253 | 3568 } |
3569 /* Termcap entry often fails to have :in: flag */ | |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
3570 terminal->must_write_spaces = 1; |
253 | 3571 /* :ti string typically fails to have \E^G! in it */ |
3572 /* This limits scope of insert-char to one line. */ | |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3573 strcpy (area, tty->TS_termcap_modes); |
253 | 3574 strcat (area, "\033\007!"); |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3575 tty->TS_termcap_modes = area; |
253 | 3576 area += strlen (area) + 1; |
53232
22aaf1e5fbe6
Full support for multiple terminal I/O (with some rough edges).
Karoly Lorentey <lorentey@elte.hu>
parents:
53229
diff
changeset
|
3577 p = AbsPosition (tty); |
253 | 3578 /* Change all %+ parameters to %C, to handle |
53226
dd3018b4785b
Implemented multiple tty support.
Karoly Lorentey <lorentey@elte.hu>
parents:
53225
diff
changeset
|
3579 values above 96 correctly for the C100. */ |
253 | 3580 while (*p) |
53226
dd3018b4785b
Implemented multiple tty support.
Karoly Lorentey <lorentey@elte.hu>
parents:
53225
diff
changeset
|
3581 { |
dd3018b4785b
Implemented multiple tty support.
Karoly Lorentey <lorentey@elte.hu>
parents:
53225
diff
changeset
|
3582 if (p[0] == '%' && p[1] == '+') |
dd3018b4785b
Implemented multiple tty support.
Karoly Lorentey <lorentey@elte.hu>
parents:
53225
diff
changeset
|
3583 p[1] = 'C'; |
dd3018b4785b
Implemented multiple tty support.
Karoly Lorentey <lorentey@elte.hu>
parents:
53225
diff
changeset
|
3584 p++; |
dd3018b4785b
Implemented multiple tty support.
Karoly Lorentey <lorentey@elte.hu>
parents:
53225
diff
changeset
|
3585 } |
253 | 3586 } |
3587 | |
53341 | 3588 tty->specified_window = FrameRows (tty); |
253 | 3589 |
53232
22aaf1e5fbe6
Full support for multiple terminal I/O (with some rough edges).
Karoly Lorentey <lorentey@elte.hu>
parents:
53229
diff
changeset
|
3590 if (Wcm_init (tty) == -1) /* can't do cursor motion */ |
83008
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
3591 { |
100276
8f4457a692c5
(encode_terminal_code): Free any previous memory blocks
Chong Yidong <cyd@stupidchicken.com>
parents:
98367
diff
changeset
|
3592 maybe_fatal (must_succeed, terminal, |
83008
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
3593 "Terminal type \"%s\" is not powerful enough to run Emacs", |
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
3594 "Terminal type \"%s\" is not powerful enough to run Emacs.\n\ |
12412
7f2c068121d8
(term_init): Alternative error messages for TERMCAP/TERMINFO.
Richard M. Stallman <rms@gnu.org>
parents:
12071
diff
changeset
|
3595 It lacks the ability to position the cursor.\n\ |
7f2c068121d8
(term_init): Alternative error messages for TERMCAP/TERMINFO.
Richard M. Stallman <rms@gnu.org>
parents:
12071
diff
changeset
|
3596 If that is not the actual type of terminal you have,\n\ |
7f2c068121d8
(term_init): Alternative error messages for TERMCAP/TERMINFO.
Richard M. Stallman <rms@gnu.org>
parents:
12071
diff
changeset
|
3597 use the Bourne shell command `TERM=... export TERM' (C-shell:\n\ |
107847
e81bca2fba28
(init_tty): Move common text outside of #ifdef TERMINFO.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
107640
diff
changeset
|
3598 `setenv TERM ...') to specify the correct type. It may be necessary\n" |
e81bca2fba28
(init_tty): Move common text outside of #ifdef TERMINFO.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
107640
diff
changeset
|
3599 # ifdef TERMINFO |
e81bca2fba28
(init_tty): Move common text outside of #ifdef TERMINFO.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
107640
diff
changeset
|
3600 "to do `unset TERMINFO' (C-shell: `unsetenv TERMINFO') as well.", |
12412
7f2c068121d8
(term_init): Alternative error messages for TERMCAP/TERMINFO.
Richard M. Stallman <rms@gnu.org>
parents:
12071
diff
changeset
|
3601 # else /* TERMCAP */ |
107847
e81bca2fba28
(init_tty): Move common text outside of #ifdef TERMINFO.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
107640
diff
changeset
|
3602 "to do `unset TERMCAP' (C-shell: `unsetenv TERMCAP') as well.", |
12412
7f2c068121d8
(term_init): Alternative error messages for TERMCAP/TERMINFO.
Richard M. Stallman <rms@gnu.org>
parents:
12071
diff
changeset
|
3603 # endif /* TERMINFO */ |
83008
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
3604 terminal_type); |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3605 } |
82990
2ecd1f669db9
Fixed X support, preliminary support for X-tty combo sessions.
Karoly Lorentey <lorentey@elte.hu>
parents:
82989
diff
changeset
|
3606 |
53341 | 3607 if (FrameRows (tty) <= 0 || FrameCols (tty) <= 0) |
100276
8f4457a692c5
(encode_terminal_code): Free any previous memory blocks
Chong Yidong <cyd@stupidchicken.com>
parents:
98367
diff
changeset
|
3608 maybe_fatal (must_succeed, terminal, |
83008
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
3609 "Could not determine the frame size", |
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
3610 "Could not determine the frame size"); |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3611 |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3612 tty->delete_in_insert_mode |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3613 = tty->TS_delete_mode && tty->TS_insert_mode |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3614 && !strcmp (tty->TS_delete_mode, tty->TS_insert_mode); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3615 |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3616 tty->se_is_so = (tty->TS_standout_mode |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3617 && tty->TS_end_standout_mode |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3618 && !strcmp (tty->TS_standout_mode, tty->TS_end_standout_mode)); |
253 | 3619 |
83065
a871be7b26a5
Implemented suspending of emacsclient frames.
Karoly Lorentey <lorentey@elte.hu>
parents:
83050
diff
changeset
|
3620 UseTabs (tty) = tabs_safe_p (fileno (tty->input)) && TabWidth (tty) == 8; |
253 | 3621 |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
3622 terminal->scroll_region_ok |
53232
22aaf1e5fbe6
Full support for multiple terminal I/O (with some rough edges).
Karoly Lorentey <lorentey@elte.hu>
parents:
53229
diff
changeset
|
3623 = (tty->Wcm->cm_abs |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3624 && (tty->TS_set_window || tty->TS_set_scroll_region || tty->TS_set_scroll_region_1)); |
253 | 3625 |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
3626 terminal->line_ins_del_ok |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3627 = (((tty->TS_ins_line || tty->TS_ins_multi_lines) |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3628 && (tty->TS_del_line || tty->TS_del_multi_lines)) |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
3629 || (terminal->scroll_region_ok |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3630 && tty->TS_fwd_scroll && tty->TS_rev_scroll)); |
53226
dd3018b4785b
Implemented multiple tty support.
Karoly Lorentey <lorentey@elte.hu>
parents:
53225
diff
changeset
|
3631 |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
3632 terminal->char_ins_del_ok |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3633 = ((tty->TS_ins_char || tty->TS_insert_mode |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3634 || tty->TS_pad_inserted_char || tty->TS_ins_multi_chars) |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3635 && (tty->TS_del_char || tty->TS_del_multi_chars)); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3636 |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
3637 terminal->fast_clear_end_of_line = tty->TS_clr_line != 0; |
253 | 3638 |
83065
a871be7b26a5
Implemented suspending of emacsclient frames.
Karoly Lorentey <lorentey@elte.hu>
parents:
83050
diff
changeset
|
3639 init_baud_rate (fileno (tty->input)); |
83004
7900111db01c
Converted display hooks to be display-local. Plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
82995
diff
changeset
|
3640 |
97658 | 3641 #endif /* not DOS_NT */ |
84849
ba20cee1aec0
(init_tty): Call init_sys_modes on WINDOWSNT also.
Jason Rumney <jasonr@gnu.org>
parents:
84779
diff
changeset
|
3642 |
53341 | 3643 /* Init system terminal modes (RAW or CBREAK, etc.). */ |
3644 init_sys_modes (tty); | |
82990
2ecd1f669db9
Fixed X support, preliminary support for X-tty combo sessions.
Karoly Lorentey <lorentey@elte.hu>
parents:
82989
diff
changeset
|
3645 |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
3646 return terminal; |
253 | 3647 } |
3648 | |
109375
3e07e13fe30a
Convert maybe_fatal to standard C.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
109179
diff
changeset
|
3649 |
3e07e13fe30a
Convert maybe_fatal to standard C.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
109179
diff
changeset
|
3650 static void |
3e07e13fe30a
Convert maybe_fatal to standard C.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
109179
diff
changeset
|
3651 vfatal (const char *str, va_list ap) |
3e07e13fe30a
Convert maybe_fatal to standard C.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
109179
diff
changeset
|
3652 { |
3e07e13fe30a
Convert maybe_fatal to standard C.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
109179
diff
changeset
|
3653 fprintf (stderr, "emacs: "); |
3e07e13fe30a
Convert maybe_fatal to standard C.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
109179
diff
changeset
|
3654 vfprintf (stderr, str, ap); |
3e07e13fe30a
Convert maybe_fatal to standard C.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
109179
diff
changeset
|
3655 if (!(strlen (str) > 0 && str[strlen (str) - 1] == '\n')) |
3e07e13fe30a
Convert maybe_fatal to standard C.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
109179
diff
changeset
|
3656 fprintf (stderr, "\n"); |
3e07e13fe30a
Convert maybe_fatal to standard C.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
109179
diff
changeset
|
3657 va_end (ap); |
3e07e13fe30a
Convert maybe_fatal to standard C.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
109179
diff
changeset
|
3658 fflush (stderr); |
3e07e13fe30a
Convert maybe_fatal to standard C.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
109179
diff
changeset
|
3659 exit (1); |
3e07e13fe30a
Convert maybe_fatal to standard C.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
109179
diff
changeset
|
3660 } |
3e07e13fe30a
Convert maybe_fatal to standard C.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
109179
diff
changeset
|
3661 |
3e07e13fe30a
Convert maybe_fatal to standard C.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
109179
diff
changeset
|
3662 |
83341
76e51706154e
Rename term_init to init_tty.
Karoly Lorentey <lorentey@elte.hu>
parents:
83338
diff
changeset
|
3663 /* Auxiliary error-handling function for init_tty. |
100276
8f4457a692c5
(encode_terminal_code): Free any previous memory blocks
Chong Yidong <cyd@stupidchicken.com>
parents:
98367
diff
changeset
|
3664 Delete TERMINAL, then call error or fatal with str1 or str2, |
8f4457a692c5
(encode_terminal_code): Free any previous memory blocks
Chong Yidong <cyd@stupidchicken.com>
parents:
98367
diff
changeset
|
3665 respectively, according to MUST_SUCCEED. */ |
83025
c66ebcc29777
Removed %T in mode-line-format. Trivial documentation changes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83021
diff
changeset
|
3666 |
83008
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
3667 static void |
109375
3e07e13fe30a
Convert maybe_fatal to standard C.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
109179
diff
changeset
|
3668 maybe_fatal (int must_succeed, struct terminal *terminal, |
3e07e13fe30a
Convert maybe_fatal to standard C.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
109179
diff
changeset
|
3669 const char *str1, const char *str2, ...) |
83008
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
3670 { |
109375
3e07e13fe30a
Convert maybe_fatal to standard C.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
109179
diff
changeset
|
3671 va_list ap; |
3e07e13fe30a
Convert maybe_fatal to standard C.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
109179
diff
changeset
|
3672 va_start (ap, str2); |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
3673 if (terminal) |
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
3674 delete_tty (terminal); |
92281
4bf10a5a835d
(encode_terminal_code, produce_special_glyphs): Likewise.
Kim F. Storm <storm@cua.dk>
parents:
92237
diff
changeset
|
3675 |
83008
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
3676 if (must_succeed) |
109375
3e07e13fe30a
Convert maybe_fatal to standard C.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
109179
diff
changeset
|
3677 vfatal (str2, ap); |
83008
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
3678 else |
109375
3e07e13fe30a
Convert maybe_fatal to standard C.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
109179
diff
changeset
|
3679 verror (str1, ap); |
3e07e13fe30a
Convert maybe_fatal to standard C.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
109179
diff
changeset
|
3680 |
3e07e13fe30a
Convert maybe_fatal to standard C.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
109179
diff
changeset
|
3681 va_end (ap); |
83008
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
3682 abort (); |
253 | 3683 } |
3684 | |
21514 | 3685 void |
86288
145903731829
* term.c: Include stdarg.h.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
85614
diff
changeset
|
3686 fatal (const char *str, ...) |
253 | 3687 { |
86288
145903731829
* term.c: Include stdarg.h.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
85614
diff
changeset
|
3688 va_list ap; |
145903731829
* term.c: Include stdarg.h.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
85614
diff
changeset
|
3689 va_start (ap, str); |
109375
3e07e13fe30a
Convert maybe_fatal to standard C.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
109179
diff
changeset
|
3690 vfatal (str, ap); |
86288
145903731829
* term.c: Include stdarg.h.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
85614
diff
changeset
|
3691 va_end (ap); |
253 | 3692 } |
6752
f9236145bad7
(system_uses_terminfo): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
6652
diff
changeset
|
3693 |
82988
f82e3a6f5ccb
A few more bugfixes and new features.
Karoly Lorentey <lorentey@elte.hu>
parents:
82987
diff
changeset
|
3694 |
f82e3a6f5ccb
A few more bugfixes and new features.
Karoly Lorentey <lorentey@elte.hu>
parents:
82987
diff
changeset
|
3695 |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
3696 /* Delete the given tty terminal, closing all frames on it. */ |
83025
c66ebcc29777
Removed %T in mode-line-format. Trivial documentation changes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83021
diff
changeset
|
3697 |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
3698 static void |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
3699 delete_tty (struct terminal *terminal) |
63549
bda22724fc82
(produce_special_glyphs): Use spec_glyph_lookup_face.
Richard M. Stallman <rms@gnu.org>
parents:
61591
diff
changeset
|
3700 { |
83004
7900111db01c
Converted display hooks to be display-local. Plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
82995
diff
changeset
|
3701 struct tty_display_info *tty; |
92281
4bf10a5a835d
(encode_terminal_code, produce_special_glyphs): Likewise.
Kim F. Storm <storm@cua.dk>
parents:
92237
diff
changeset
|
3702 |
100666
dab9cf44bf3f
In comments, write delete_frame instead of Fdelete_frame.
Martin Rudalics <rudalics@gmx.at>
parents:
100370
diff
changeset
|
3703 /* Protect against recursive calls. delete_frame in |
83525
b2e7507b55c6
Fix C-x 5 2 on the controlling tty; fix some possible crash conditions and a memory leak.
Karoly Lorentey <lorentey@elte.hu>
parents:
83522
diff
changeset
|
3704 delete_terminal calls us back when it deletes our last frame. */ |
84692
0d8dd9a91520
(get_tty_terminal): Don't treat output_initial specially.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
84461
diff
changeset
|
3705 if (!terminal->name) |
53341 | 3706 return; |
3707 | |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
3708 if (terminal->type != output_termcap) |
83004
7900111db01c
Converted display hooks to be display-local. Plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
82995
diff
changeset
|
3709 abort (); |
7900111db01c
Converted display hooks to be display-local. Plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
82995
diff
changeset
|
3710 |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
3711 tty = terminal->display_info.tty; |
92281
4bf10a5a835d
(encode_terminal_code, produce_special_glyphs): Likewise.
Kim F. Storm <storm@cua.dk>
parents:
92237
diff
changeset
|
3712 |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3713 if (tty == tty_list) |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3714 tty_list = tty->next; |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3715 else |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3716 { |
82989
f3845715a5f6
Separate frame-local, tty-dependent parameters from tty-local parameters.
Karoly Lorentey <lorentey@elte.hu>
parents:
82988
diff
changeset
|
3717 struct tty_display_info *p; |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3718 for (p = tty_list; p && p->next != tty; p = p->next) |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3719 ; |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3720 |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3721 if (! p) |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3722 /* This should not happen. */ |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3723 abort (); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3724 |
53341 | 3725 p->next = tty->next; |
3726 tty->next = 0; | |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3727 } |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3728 |
83342
9216636c02fc
Rename `struct display' to `struct device'. Update function, parameter and variable names accordingly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83341
diff
changeset
|
3729 /* reset_sys_modes needs a valid device, so this call needs to be |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
3730 before delete_terminal. */ |
83008
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
3731 reset_sys_modes (tty); |
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
3732 |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
3733 delete_terminal (terminal); |
83004
7900111db01c
Converted display hooks to be display-local. Plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
82995
diff
changeset
|
3734 |
95481
4390d64d3328
Make "xfree (NULL)" a no-op; remove useless if-before-xfree.
Jim Meyering <jim@meyering.net>
parents:
94963
diff
changeset
|
3735 xfree (tty->name); |
4390d64d3328
Make "xfree (NULL)" a no-op; remove useless if-before-xfree.
Jim Meyering <jim@meyering.net>
parents:
94963
diff
changeset
|
3736 xfree (tty->type); |
82990
2ecd1f669db9
Fixed X support, preliminary support for X-tty combo sessions.
Karoly Lorentey <lorentey@elte.hu>
parents:
82989
diff
changeset
|
3737 |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3738 if (tty->input) |
82988
f82e3a6f5ccb
A few more bugfixes and new features.
Karoly Lorentey <lorentey@elte.hu>
parents:
82987
diff
changeset
|
3739 { |
f82e3a6f5ccb
A few more bugfixes and new features.
Karoly Lorentey <lorentey@elte.hu>
parents:
82987
diff
changeset
|
3740 delete_keyboard_wait_descriptor (fileno (tty->input)); |
f82e3a6f5ccb
A few more bugfixes and new features.
Karoly Lorentey <lorentey@elte.hu>
parents:
82987
diff
changeset
|
3741 if (tty->input != stdin) |
f82e3a6f5ccb
A few more bugfixes and new features.
Karoly Lorentey <lorentey@elte.hu>
parents:
82987
diff
changeset
|
3742 fclose (tty->input); |
f82e3a6f5ccb
A few more bugfixes and new features.
Karoly Lorentey <lorentey@elte.hu>
parents:
82987
diff
changeset
|
3743 } |
f82e3a6f5ccb
A few more bugfixes and new features.
Karoly Lorentey <lorentey@elte.hu>
parents:
82987
diff
changeset
|
3744 if (tty->output && tty->output != stdout && tty->output != tty->input) |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3745 fclose (tty->output); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3746 if (tty->termscript) |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3747 fclose (tty->termscript); |
82990
2ecd1f669db9
Fixed X support, preliminary support for X-tty combo sessions.
Karoly Lorentey <lorentey@elte.hu>
parents:
82989
diff
changeset
|
3748 |
95481
4390d64d3328
Make "xfree (NULL)" a no-op; remove useless if-before-xfree.
Jim Meyering <jim@meyering.net>
parents:
94963
diff
changeset
|
3749 xfree (tty->old_tty); |
4390d64d3328
Make "xfree (NULL)" a no-op; remove useless if-before-xfree.
Jim Meyering <jim@meyering.net>
parents:
94963
diff
changeset
|
3750 xfree (tty->Wcm); |
103624
3e06f0e66062
Remove useless if-before-xfree tests.
Jim Meyering <jim@meyering.net>
parents:
103617
diff
changeset
|
3751 xfree (tty->termcap_strings_buffer); |
3e06f0e66062
Remove useless if-before-xfree tests.
Jim Meyering <jim@meyering.net>
parents:
103617
diff
changeset
|
3752 xfree (tty->termcap_term_buffer); |
82990
2ecd1f669db9
Fixed X support, preliminary support for X-tty combo sessions.
Karoly Lorentey <lorentey@elte.hu>
parents:
82989
diff
changeset
|
3753 |
109165
750db9f3e6d8
Replace bcopy, bzero, bcmp by memcpy, memmove, memset, memcmp
Andreas Schwab <schwab@linux-m68k.org>
parents:
109144
diff
changeset
|
3754 memset (tty, 0, sizeof (struct tty_display_info)); |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3755 xfree (tty); |
63549
bda22724fc82
(produce_special_glyphs): Use spec_glyph_lookup_face.
Richard M. Stallman <rms@gnu.org>
parents:
61591
diff
changeset
|
3756 } |
bda22724fc82
(produce_special_glyphs): Use spec_glyph_lookup_face.
Richard M. Stallman <rms@gnu.org>
parents:
61591
diff
changeset
|
3757 |
83004
7900111db01c
Converted display hooks to be display-local. Plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
82995
diff
changeset
|
3758 |
7900111db01c
Converted display hooks to be display-local. Plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
82995
diff
changeset
|
3759 |
82989
f3845715a5f6
Separate frame-local, tty-dependent parameters from tty-local parameters.
Karoly Lorentey <lorentey@elte.hu>
parents:
82988
diff
changeset
|
3760 /* Mark the pointers in the tty_display_info objects. |
82988
f82e3a6f5ccb
A few more bugfixes and new features.
Karoly Lorentey <lorentey@elte.hu>
parents:
82987
diff
changeset
|
3761 Called by the Fgarbage_collector. */ |
83025
c66ebcc29777
Removed %T in mode-line-format. Trivial documentation changes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83021
diff
changeset
|
3762 |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3763 void |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
3764 mark_ttys (void) |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3765 { |
82989
f3845715a5f6
Separate frame-local, tty-dependent parameters from tty-local parameters.
Karoly Lorentey <lorentey@elte.hu>
parents:
82988
diff
changeset
|
3766 struct tty_display_info *tty; |
83032
b8237c556f0e
Fix the case when emacsclient is run on Emacs's controlling tty.
Karoly Lorentey <lorentey@elte.hu>
parents:
83027
diff
changeset
|
3767 |
82988
f82e3a6f5ccb
A few more bugfixes and new features.
Karoly Lorentey <lorentey@elte.hu>
parents:
82987
diff
changeset
|
3768 for (tty = tty_list; tty; tty = tty->next) |
83762
ffb5395e8445
(mark_ttys): Don't bother checking top_frame (incorrectly)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
83653
diff
changeset
|
3769 mark_object (tty->top_frame); |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3770 } |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3771 |
83004
7900111db01c
Converted display hooks to be display-local. Plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
82995
diff
changeset
|
3772 |
7900111db01c
Converted display hooks to be display-local. Plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
82995
diff
changeset
|
3773 |
21514 | 3774 void |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109108
diff
changeset
|
3775 syms_of_term (void) |
6752
f9236145bad7
(system_uses_terminfo): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
6652
diff
changeset
|
3776 { |
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39914
diff
changeset
|
3777 DEFVAR_BOOL ("system-uses-terminfo", &system_uses_terminfo, |
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39914
diff
changeset
|
3778 doc: /* Non-nil means the system uses terminfo rather than termcap. |
39914
91951fb5b9e5
Put doc strings in comments.
Gerd Moellmann <gerd@gnu.org>
parents:
39697
diff
changeset
|
3779 This variable can be used by terminal emulator packages. */); |
6752
f9236145bad7
(system_uses_terminfo): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
6652
diff
changeset
|
3780 #ifdef TERMINFO |
f9236145bad7
(system_uses_terminfo): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
6652
diff
changeset
|
3781 system_uses_terminfo = 1; |
f9236145bad7
(system_uses_terminfo): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
6652
diff
changeset
|
3782 #else |
f9236145bad7
(system_uses_terminfo): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
6652
diff
changeset
|
3783 system_uses_terminfo = 0; |
f9236145bad7
(system_uses_terminfo): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
6652
diff
changeset
|
3784 #endif |
15974
61249a8fe735
(Vring_bell_function): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
15094
diff
changeset
|
3785 |
83891
dab32bc3edc8
* server.el (server-start, server-unload-hook): Undo previous
Dan Nicolaescu <dann@ics.uci.edu>
parents:
83889
diff
changeset
|
3786 DEFVAR_LISP ("suspend-tty-functions", &Vsuspend_tty_functions, |
dab32bc3edc8
* server.el (server-start, server-unload-hook): Undo previous
Dan Nicolaescu <dann@ics.uci.edu>
parents:
83889
diff
changeset
|
3787 doc: /* Functions to be run after suspending a tty. |
103048
b5e8a934cfd1
* term.c (Vsuspend_tty_functions, Vresume_tty_functions): Doc fixes,
Chong Yidong <cyd@stupidchicken.com>
parents:
103047
diff
changeset
|
3788 The functions are run with one argument, the terminal object to be suspended. |
83065
a871be7b26a5
Implemented suspending of emacsclient frames.
Karoly Lorentey <lorentey@elte.hu>
parents:
83050
diff
changeset
|
3789 See `suspend-tty'. */); |
83891
dab32bc3edc8
* server.el (server-start, server-unload-hook): Undo previous
Dan Nicolaescu <dann@ics.uci.edu>
parents:
83889
diff
changeset
|
3790 Vsuspend_tty_functions = Qnil; |
dab32bc3edc8
* server.el (server-start, server-unload-hook): Undo previous
Dan Nicolaescu <dann@ics.uci.edu>
parents:
83889
diff
changeset
|
3791 |
dab32bc3edc8
* server.el (server-start, server-unload-hook): Undo previous
Dan Nicolaescu <dann@ics.uci.edu>
parents:
83889
diff
changeset
|
3792 |
dab32bc3edc8
* server.el (server-start, server-unload-hook): Undo previous
Dan Nicolaescu <dann@ics.uci.edu>
parents:
83889
diff
changeset
|
3793 DEFVAR_LISP ("resume-tty-functions", &Vresume_tty_functions, |
dab32bc3edc8
* server.el (server-start, server-unload-hook): Undo previous
Dan Nicolaescu <dann@ics.uci.edu>
parents:
83889
diff
changeset
|
3794 doc: /* Functions to be run after resuming a tty. |
103048
b5e8a934cfd1
* term.c (Vsuspend_tty_functions, Vresume_tty_functions): Doc fixes,
Chong Yidong <cyd@stupidchicken.com>
parents:
103047
diff
changeset
|
3795 The functions are run with one argument, the terminal object that was revived. |
83065
a871be7b26a5
Implemented suspending of emacsclient frames.
Karoly Lorentey <lorentey@elte.hu>
parents:
83050
diff
changeset
|
3796 See `resume-tty'. */); |
83891
dab32bc3edc8
* server.el (server-start, server-unload-hook): Undo previous
Dan Nicolaescu <dann@ics.uci.edu>
parents:
83889
diff
changeset
|
3797 Vresume_tty_functions = Qnil; |
25002 | 3798 |
67935
52bbc53dbce1
(visible_cursor): New boolean var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66238
diff
changeset
|
3799 DEFVAR_BOOL ("visible-cursor", &visible_cursor, |
52bbc53dbce1
(visible_cursor): New boolean var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66238
diff
changeset
|
3800 doc: /* Non-nil means to make the cursor very visible. |
52bbc53dbce1
(visible_cursor): New boolean var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66238
diff
changeset
|
3801 This only has an effect when running in a text terminal. |
52bbc53dbce1
(visible_cursor): New boolean var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66238
diff
changeset
|
3802 What means \"very visible\" is up to your terminal. It may make the cursor |
52bbc53dbce1
(visible_cursor): New boolean var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66238
diff
changeset
|
3803 bigger, or it may make it blink, or it may do nothing at all. */); |
52bbc53dbce1
(visible_cursor): New boolean var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66238
diff
changeset
|
3804 visible_cursor = 1; |
52bbc53dbce1
(visible_cursor): New boolean var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66238
diff
changeset
|
3805 |
25002 | 3806 defsubr (&Stty_display_color_p); |
42954
e514d4931d6f
(Ftty_display_color_cells): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
42808
diff
changeset
|
3807 defsubr (&Stty_display_color_cells); |
63549
bda22724fc82
(produce_special_glyphs): Use spec_glyph_lookup_face.
Richard M. Stallman <rms@gnu.org>
parents:
61591
diff
changeset
|
3808 defsubr (&Stty_no_underline); |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
3809 defsubr (&Stty_type); |
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
3810 defsubr (&Scontrolling_tty_p); |
83065
a871be7b26a5
Implemented suspending of emacsclient frames.
Karoly Lorentey <lorentey@elte.hu>
parents:
83050
diff
changeset
|
3811 defsubr (&Ssuspend_tty); |
a871be7b26a5
Implemented suspending of emacsclient frames.
Karoly Lorentey <lorentey@elte.hu>
parents:
83050
diff
changeset
|
3812 defsubr (&Sresume_tty); |
80994
62b6aa7f8c37
Use HAVE_GPM instead of HAVE_GPM_H.
Nick Roberts <nickrob@snap.net.nz>
parents:
80979
diff
changeset
|
3813 #ifdef HAVE_GPM |
84968
85eb2660cbe3
(mouse_face_window): Rename from Qmouse_face_window. Update all users.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
84955
diff
changeset
|
3814 defsubr (&Sgpm_mouse_start); |
85eb2660cbe3
(mouse_face_window): Rename from Qmouse_face_window. Update all users.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
84955
diff
changeset
|
3815 defsubr (&Sgpm_mouse_stop); |
80994
62b6aa7f8c37
Use HAVE_GPM instead of HAVE_GPM_H.
Nick Roberts <nickrob@snap.net.nz>
parents:
80979
diff
changeset
|
3816 #endif /* HAVE_GPM */ |
97021
fb376eec83a9
(syms_of_term): Initialize default_orig_pair, default_set_foreground,
Chong Yidong <cyd@stupidchicken.com>
parents:
96303
diff
changeset
|
3817 |
97658 | 3818 #ifndef DOS_NT |
97021
fb376eec83a9
(syms_of_term): Initialize default_orig_pair, default_set_foreground,
Chong Yidong <cyd@stupidchicken.com>
parents:
96303
diff
changeset
|
3819 default_orig_pair = NULL; |
fb376eec83a9
(syms_of_term): Initialize default_orig_pair, default_set_foreground,
Chong Yidong <cyd@stupidchicken.com>
parents:
96303
diff
changeset
|
3820 default_set_foreground = NULL; |
fb376eec83a9
(syms_of_term): Initialize default_orig_pair, default_set_foreground,
Chong Yidong <cyd@stupidchicken.com>
parents:
96303
diff
changeset
|
3821 default_set_background = NULL; |
97658 | 3822 #endif /* !DOS_NT */ |
100276
8f4457a692c5
(encode_terminal_code): Free any previous memory blocks
Chong Yidong <cyd@stupidchicken.com>
parents:
98367
diff
changeset
|
3823 |
8f4457a692c5
(encode_terminal_code): Free any previous memory blocks
Chong Yidong <cyd@stupidchicken.com>
parents:
98367
diff
changeset
|
3824 encode_terminal_src = NULL; |
8f4457a692c5
(encode_terminal_code): Free any previous memory blocks
Chong Yidong <cyd@stupidchicken.com>
parents:
98367
diff
changeset
|
3825 encode_terminal_dst = NULL; |
6752
f9236145bad7
(system_uses_terminfo): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
6652
diff
changeset
|
3826 } |
25002 | 3827 |