Mercurial > emacs
annotate src/term.c @ 107998:531d454c3a99
Implement GUI display of R2L lines, fix TTY display of R2L lines.
xdisp.c [HAVE_WINDOW_SYSTEM]: Add prototype for
append_stretch_glyph.
(set_cursor_from_row) <cursor_x>: Remove unused variable. Fix
off-by-one error in computing x at end of text in the row.
(append_stretch_glyph): In reversed row, prepend the glyph rather
than append it. Set resolved_level and bidi_type of the glyph.
(extend_face_to_end_of_line): If the row is reversed, prepend a
stretch glyph whose width is such that the rightmost glyph will be
drawn at the right margin of the window. Fix off-by-one error on
TTY frames in testing whether a line needs face extension. Fix
face extension at ZV. If this is the last glyph row, use
DEFAULT_FACE_ID, to avoid painting the rest of the window with the
region face.
(set_cursor_from_row, display_line): Use
MATRIX_ROW_CONTINUATION_LINE_P instead of testing value of
row->continuation_lines_width.
(next_element_from_buffer): Don't call bidi_paragraph_init if we
are at ZV. Fixes a crash when reseated to ZV by
try_window_reusing_current_matrix.
(display_and_set_cursor, erase_phys_cursor): Handle negative HPOS,
which happens with R2L glyph rows. Fixes a crash when inserting a
character at end of an R2L line.
(set_cursor_from_row): Don't be fooled by truncated rows: don't
treat them as having zero-width characters. Improve comments.
Don't reverse pos_before and pos_after for reversed glyph rows.
Set cursor.x to negative value when the cursor might be on the
left fringe.
(IT_OVERFLOW_NEWLINE_INTO_FRINGE): For R2L lines, consider the
left fringe, not the right one.
(notice_overwritten_cursor, draw_phys_cursor_glyph)
(erase_phys_cursor): For reversed cursor_row, support cursor on
the left fringe.
fringe.c (update_window_fringes): For R2L rows, swap the bitmaps
of continuation indicators on the fringes.
(draw_fringe_bitmap): For reversed glyph rows, allow cursor on the
left fringe.
w32term.c (w32_draw_window_cursor): For reversed glyph rows,
draw cursor on the left fringe.
xterm.c (x_draw_window_cursor): For reversed glyph rows, draw
cursor on the left fringe.
dispnew.c (update_text_area): Handle reversed desired rows when
the cursor is on the left fringe.
(set_window_cursor_after_update): Limit cursor's hpos by -1 from
below, not by 0, for when the cursor is on the left fringe.
xdisp.c (unproduce_glyphs): New function.
(display_line): Use it when produced glyphs are discarded from R2L
glyph rows.
(append_composite_glyph): In R2L rows, prepend the glyph rather
than appending it.
term.c (append_composite_glyph): In R2L rows, prepend the glyph
rather than append it. Set up the resolved_level and bidi_type
attributes of the appended glyph.
(produce_special_glyphs): Mirror the backslash continuation
character in R2L lines.
author | Eli Zaretskii <eliz@gnu.org> |
---|---|
date | Tue, 20 Apr 2010 16:31:28 +0300 |
parents | bef5d1738c0b 8ef8b6523597 |
children | 9aa39b975b8a |
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> | |
25002 | 26 #include <string.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
|
27 #include <errno.h> |
53226
dd3018b4785b
Implemented multiple tty support.
Karoly Lorentey <lorentey@elte.hu>
parents:
53225
diff
changeset
|
28 #include <sys/file.h> |
83644 | 29 |
81817
e6ed0991129c
Include unistd.h only if HAVE_UNISTD_H.
Richard M. Stallman <rms@gnu.org>
parents:
81811
diff
changeset
|
30 #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
|
31 #include <unistd.h> |
81817
e6ed0991129c
Include unistd.h only if HAVE_UNISTD_H.
Richard M. Stallman <rms@gnu.org>
parents:
81811
diff
changeset
|
32 #endif |
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39914
diff
changeset
|
33 |
83095
b448166f5664
Fix #include errors for FreeBSD (Frank Ruell)
Karoly Lorentey <lorentey@elte.hu>
parents:
83086
diff
changeset
|
34 #if HAVE_TERMIOS_H |
b448166f5664
Fix #include errors for FreeBSD (Frank Ruell)
Karoly Lorentey <lorentey@elte.hu>
parents:
83086
diff
changeset
|
35 #include <termios.h> /* For TIOCNOTTY. */ |
b448166f5664
Fix #include errors for FreeBSD (Frank Ruell)
Karoly Lorentey <lorentey@elte.hu>
parents:
83086
diff
changeset
|
36 #endif |
83086
347ce3d5d79c
Fix dropping of the controlling tty on Solaris (Dan Nicolaescu).
Karoly Lorentey <lorentey@elte.hu>
parents:
83082
diff
changeset
|
37 |
347ce3d5d79c
Fix dropping of the controlling tty on Solaris (Dan Nicolaescu).
Karoly Lorentey <lorentey@elte.hu>
parents:
83082
diff
changeset
|
38 #include <signal.h> |
86288
145903731829
* term.c: Include stdarg.h.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
85614
diff
changeset
|
39 #include <stdarg.h> |
105669
68dd71358159
* alloc.c: Do not define struct catchtag.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
105661
diff
changeset
|
40 #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
|
41 |
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
|
42 #include "lisp.h" |
253 | 43 #include "termchar.h" |
44 #include "termopts.h" | |
88391
1953d0d56cd7
Include "buffer.h" and "character.h".
Kenichi Handa <handa@m17n.org>
parents:
43073
diff
changeset
|
45 #include "buffer.h" |
1953d0d56cd7
Include "buffer.h" and "character.h".
Kenichi Handa <handa@m17n.org>
parents:
43073
diff
changeset
|
46 #include "character.h" |
17046
84b0e9794a87
Include charset.h and coding.h.
Karl Heuer <kwzh@gnu.org>
parents:
16894
diff
changeset
|
47 #include "charset.h" |
84b0e9794a87
Include charset.h and coding.h.
Karl Heuer <kwzh@gnu.org>
parents:
16894
diff
changeset
|
48 #include "coding.h" |
90638 | 49 #include "composite.h" |
31102
6a0caa788013
Include keyboard.h before frame.h.
Andrew Innes <andrewi@gnu.org>
parents:
30848
diff
changeset
|
50 #include "keyboard.h" |
765 | 51 #include "frame.h" |
253 | 52 #include "disptab.h" |
53 #include "termhooks.h" | |
21514 | 54 #include "dispextern.h" |
25002 | 55 #include "window.h" |
39697
0b986bb45526
Include keymap.h.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
39682
diff
changeset
|
56 #include "keymap.h" |
76627
c53e7d075f1a
Include blockinput.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
75348
diff
changeset
|
57 #include "blockinput.h" |
83086
347ce3d5d79c
Fix dropping of the controlling tty on Solaris (Dan Nicolaescu).
Karoly Lorentey <lorentey@elte.hu>
parents:
83082
diff
changeset
|
58 #include "syssignal.h" |
347ce3d5d79c
Fix dropping of the controlling tty on Solaris (Dan Nicolaescu).
Karoly Lorentey <lorentey@elte.hu>
parents:
83082
diff
changeset
|
59 #include "systty.h" |
81308
16181a4d64bf
Include intervals.h to declare Fget_text_property.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
81127
diff
changeset
|
60 #include "intervals.h" |
97658 | 61 #ifdef MSDOS |
62 #include "msdos.h" | |
63 static int been_here = -1; | |
64 #endif | |
25002 | 65 |
33672
a94852aef620
Don't try to include termcap.h; see comment there.
Gerd Moellmann <gerd@gnu.org>
parents:
33006
diff
changeset
|
66 /* 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
|
67 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
|
68 won't find. */ |
29929
bb7557f86f5b
[!HAVE_TERMCAP_H]: Declare tputs, tgetent, tgetflag, tgetnum.
Dave Love <fx@gnu.org>
parents:
29462
diff
changeset
|
69 extern void tputs P_ ((const char *, int, int (*)(int))); |
bb7557f86f5b
[!HAVE_TERMCAP_H]: Declare tputs, tgetent, tgetflag, tgetnum.
Dave Love <fx@gnu.org>
parents:
29462
diff
changeset
|
70 extern int tgetent P_ ((char *, const char *)); |
bb7557f86f5b
[!HAVE_TERMCAP_H]: Declare tputs, tgetent, tgetflag, tgetnum.
Dave Love <fx@gnu.org>
parents:
29462
diff
changeset
|
71 extern int tgetflag P_ ((char *id)); |
bb7557f86f5b
[!HAVE_TERMCAP_H]: Declare tputs, tgetent, tgetflag, tgetnum.
Dave Love <fx@gnu.org>
parents:
29462
diff
changeset
|
72 extern int tgetnum P_ ((char *id)); |
25727
46fe79182b54
(OUTPUT_IF, OUTPUT1_IF): Use do-while.
Gerd Moellmann <gerd@gnu.org>
parents:
25675
diff
changeset
|
73 |
21827
87c7f4bd99da
Include cm.h after dispextern.h to avoid name conflicts
Geoff Voelker <voelker@cs.washington.edu>
parents:
21624
diff
changeset
|
74 #include "cm.h" |
21514 | 75 #ifdef HAVE_X_WINDOWS |
76 #include "xterm.h" | |
77 #endif | |
8898 | 78 |
53226
dd3018b4785b
Implemented multiple tty support.
Karoly Lorentey <lorentey@elte.hu>
parents:
53225
diff
changeset
|
79 #ifndef O_RDWR |
dd3018b4785b
Implemented multiple tty support.
Karoly Lorentey <lorentey@elte.hu>
parents:
53225
diff
changeset
|
80 #define O_RDWR 2 |
dd3018b4785b
Implemented multiple tty support.
Karoly Lorentey <lorentey@elte.hu>
parents:
53225
diff
changeset
|
81 #endif |
dd3018b4785b
Implemented multiple tty support.
Karoly Lorentey <lorentey@elte.hu>
parents:
53225
diff
changeset
|
82 |
83032
b8237c556f0e
Fix the case when emacsclient is run on Emacs's controlling tty.
Karoly Lorentey <lorentey@elte.hu>
parents:
83027
diff
changeset
|
83 #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
|
84 #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
|
85 #endif |
b8237c556f0e
Fix the case when emacsclient is run on Emacs's controlling tty.
Karoly Lorentey <lorentey@elte.hu>
parents:
83027
diff
changeset
|
86 |
84779
67e430e38471
(DEV_TTY): New macro. Provide a definition for MS-Windows.
Eli Zaretskii <eliz@gnu.org>
parents:
84769
diff
changeset
|
87 /* 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
|
88 #ifdef WINDOWSNT |
67e430e38471
(DEV_TTY): New macro. Provide a definition for MS-Windows.
Eli Zaretskii <eliz@gnu.org>
parents:
84769
diff
changeset
|
89 #define DEV_TTY "CONOUT$" |
67e430e38471
(DEV_TTY): New macro. Provide a definition for MS-Windows.
Eli Zaretskii <eliz@gnu.org>
parents:
84769
diff
changeset
|
90 #else |
67e430e38471
(DEV_TTY): New macro. Provide a definition for MS-Windows.
Eli Zaretskii <eliz@gnu.org>
parents:
84769
diff
changeset
|
91 #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
|
92 #endif |
67e430e38471
(DEV_TTY): New macro. Provide a definition for MS-Windows.
Eli Zaretskii <eliz@gnu.org>
parents:
84769
diff
changeset
|
93 |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
94 static void tty_set_scroll_region P_ ((struct frame *f, int start, int stop)); |
25002 | 95 static void turn_on_face P_ ((struct frame *, int face_id)); |
96 static void turn_off_face P_ ((struct frame *, int face_id)); | |
82989
f3845715a5f6
Separate frame-local, tty-dependent parameters from tty-local parameters.
Karoly Lorentey <lorentey@elte.hu>
parents:
82988
diff
changeset
|
97 static void tty_show_cursor P_ ((struct tty_display_info *)); |
f3845715a5f6
Separate frame-local, tty-dependent parameters from tty-local parameters.
Karoly Lorentey <lorentey@elte.hu>
parents:
82988
diff
changeset
|
98 static void tty_hide_cursor P_ ((struct tty_display_info *)); |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
99 static void tty_background_highlight P_ ((struct tty_display_info *tty)); |
83521
40a5d8a15056
Fix crashes in redisplay functions on suspended tty frames. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83512
diff
changeset
|
100 static void clear_tty_hooks P_ ((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
|
101 static void set_tty_hooks P_ ((struct terminal *terminal)); |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
102 static void dissociate_if_controlling_tty P_ ((int fd)); |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
103 static void delete_tty P_ ((struct terminal *)); |
25002 | 104 |
53232
22aaf1e5fbe6
Full support for multiple terminal I/O (with some rough edges).
Karoly Lorentey <lorentey@elte.hu>
parents:
53229
diff
changeset
|
105 #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
|
106 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
|
107 (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
|
108 - curY (tty)), \ |
22aaf1e5fbe6
Full support for multiple terminal I/O (with some rough edges).
Karoly Lorentey <lorentey@elte.hu>
parents:
53229
diff
changeset
|
109 cmputc) |
22aaf1e5fbe6
Full support for multiple terminal I/O (with some rough edges).
Karoly Lorentey <lorentey@elte.hu>
parents:
53229
diff
changeset
|
110 |
53226
dd3018b4785b
Implemented multiple tty support.
Karoly Lorentey <lorentey@elte.hu>
parents:
53225
diff
changeset
|
111 #define OUTPUT1(tty, a) emacs_tputs ((tty), a, 1, cmputc) |
dd3018b4785b
Implemented multiple tty support.
Karoly Lorentey <lorentey@elte.hu>
parents:
53225
diff
changeset
|
112 #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
|
113 |
dd3018b4785b
Implemented multiple tty support.
Karoly Lorentey <lorentey@elte.hu>
parents:
53225
diff
changeset
|
114 #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
|
115 do { \ |
22aaf1e5fbe6
Full support for multiple terminal I/O (with some rough edges).
Karoly Lorentey <lorentey@elte.hu>
parents:
53229
diff
changeset
|
116 if (a) \ |
22aaf1e5fbe6
Full support for multiple terminal I/O (with some rough edges).
Karoly Lorentey <lorentey@elte.hu>
parents:
53229
diff
changeset
|
117 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
|
118 (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
|
119 - curY (tty) ), \ |
22aaf1e5fbe6
Full support for multiple terminal I/O (with some rough edges).
Karoly Lorentey <lorentey@elte.hu>
parents:
53229
diff
changeset
|
120 cmputc); \ |
22aaf1e5fbe6
Full support for multiple terminal I/O (with some rough edges).
Karoly Lorentey <lorentey@elte.hu>
parents:
53229
diff
changeset
|
121 } while (0) |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
46559
diff
changeset
|
122 |
53226
dd3018b4785b
Implemented multiple tty support.
Karoly Lorentey <lorentey@elte.hu>
parents:
53225
diff
changeset
|
123 #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
|
124 |
67935
52bbc53dbce1
(visible_cursor): New boolean var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66238
diff
changeset
|
125 /* 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
|
126 |
52bbc53dbce1
(visible_cursor): New boolean var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66238
diff
changeset
|
127 static int visible_cursor; |
52bbc53dbce1
(visible_cursor): New boolean var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66238
diff
changeset
|
128 |
54428
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
129 /* Display space properties */ |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
130 |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
131 extern Lisp_Object Qspace, QCalign_to, QCwidth; |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
132 |
83065
a871be7b26a5
Implemented suspending of emacsclient frames.
Karoly Lorentey <lorentey@elte.hu>
parents:
83050
diff
changeset
|
133 /* 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
|
134 Lisp_Object Vsuspend_tty_functions; |
83065
a871be7b26a5
Implemented suspending of emacsclient frames.
Karoly Lorentey <lorentey@elte.hu>
parents:
83050
diff
changeset
|
135 |
a871be7b26a5
Implemented suspending of emacsclient frames.
Karoly Lorentey <lorentey@elte.hu>
parents:
83050
diff
changeset
|
136 /* 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
|
137 Lisp_Object Vresume_tty_functions; |
83065
a871be7b26a5
Implemented suspending of emacsclient frames.
Karoly Lorentey <lorentey@elte.hu>
parents:
83050
diff
changeset
|
138 |
83004
7900111db01c
Converted display hooks to be display-local. Plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
82995
diff
changeset
|
139 /* 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
|
140 struct tty_display_info *tty_list; |
253 | 141 |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
142 /* 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
|
143 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
|
144 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
|
145 else. */ |
253 | 146 int no_redraw_on_reenter; |
147 | |
28465
113efc964095
(TN_no_color_video): New variable.
Gerd Moellmann <gerd@gnu.org>
parents:
28200
diff
changeset
|
148 /* 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
|
149 corresponding attribute cannot be combined with colors. */ |
113efc964095
(TN_no_color_video): New variable.
Gerd Moellmann <gerd@gnu.org>
parents:
28200
diff
changeset
|
150 |
113efc964095
(TN_no_color_video): New variable.
Gerd Moellmann <gerd@gnu.org>
parents:
28200
diff
changeset
|
151 enum no_color_bit |
113efc964095
(TN_no_color_video): New variable.
Gerd Moellmann <gerd@gnu.org>
parents:
28200
diff
changeset
|
152 { |
113efc964095
(TN_no_color_video): New variable.
Gerd Moellmann <gerd@gnu.org>
parents:
28200
diff
changeset
|
153 NC_STANDOUT = 1 << 0, |
113efc964095
(TN_no_color_video): New variable.
Gerd Moellmann <gerd@gnu.org>
parents:
28200
diff
changeset
|
154 NC_UNDERLINE = 1 << 1, |
113efc964095
(TN_no_color_video): New variable.
Gerd Moellmann <gerd@gnu.org>
parents:
28200
diff
changeset
|
155 NC_REVERSE = 1 << 2, |
113efc964095
(TN_no_color_video): New variable.
Gerd Moellmann <gerd@gnu.org>
parents:
28200
diff
changeset
|
156 NC_BLINK = 1 << 3, |
113efc964095
(TN_no_color_video): New variable.
Gerd Moellmann <gerd@gnu.org>
parents:
28200
diff
changeset
|
157 NC_DIM = 1 << 4, |
113efc964095
(TN_no_color_video): New variable.
Gerd Moellmann <gerd@gnu.org>
parents:
28200
diff
changeset
|
158 NC_BOLD = 1 << 5, |
113efc964095
(TN_no_color_video): New variable.
Gerd Moellmann <gerd@gnu.org>
parents:
28200
diff
changeset
|
159 NC_INVIS = 1 << 6, |
113efc964095
(TN_no_color_video): New variable.
Gerd Moellmann <gerd@gnu.org>
parents:
28200
diff
changeset
|
160 NC_PROTECT = 1 << 7, |
113efc964095
(TN_no_color_video): New variable.
Gerd Moellmann <gerd@gnu.org>
parents:
28200
diff
changeset
|
161 NC_ALT_CHARSET = 1 << 8 |
113efc964095
(TN_no_color_video): New variable.
Gerd Moellmann <gerd@gnu.org>
parents:
28200
diff
changeset
|
162 }; |
113efc964095
(TN_no_color_video): New variable.
Gerd Moellmann <gerd@gnu.org>
parents:
28200
diff
changeset
|
163 |
253 | 164 /* internal state */ |
165 | |
10771
d564078d10c6
(calculate_costs): Update max_frame_height, max_frame_width.
Richard M. Stallman <rms@gnu.org>
parents:
10481
diff
changeset
|
166 /* The largest frame width in any call to calculate_costs. */ |
25002 | 167 |
51212
332134065648
Make (some) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50227
diff
changeset
|
168 int max_frame_cols; |
25002 | 169 |
10771
d564078d10c6
(calculate_costs): Update max_frame_height, max_frame_width.
Richard M. Stallman <rms@gnu.org>
parents:
10481
diff
changeset
|
170 /* The largest frame height in any call to calculate_costs. */ |
25002 | 171 |
51212
332134065648
Make (some) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50227
diff
changeset
|
172 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
|
173 |
83032
b8237c556f0e
Fix the case when emacsclient is run on Emacs's controlling tty.
Karoly Lorentey <lorentey@elte.hu>
parents:
83027
diff
changeset
|
174 /* 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
|
175 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
|
176 static int no_controlling_tty; |
253 | 177 |
6752
f9236145bad7
(system_uses_terminfo): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
6652
diff
changeset
|
178 /* Provided for lisp packages. */ |
25002 | 179 |
6752
f9236145bad7
(system_uses_terminfo): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
6652
diff
changeset
|
180 static int system_uses_terminfo; |
f9236145bad7
(system_uses_terminfo): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
6652
diff
changeset
|
181 |
253 | 182 char *tparam (); |
8612
86065bec6fc9
(term_init): Added missing argument to tgetstr.
Richard M. Stallman <rms@gnu.org>
parents:
8027
diff
changeset
|
183 |
86065bec6fc9
(term_init): Added missing argument to tgetstr.
Richard M. Stallman <rms@gnu.org>
parents:
8027
diff
changeset
|
184 extern char *tgetstr (); |
253 | 185 |
9797
05d9072c5a38
(term_init) [WINDOWSNT]: Do some Windows-specific
Richard M. Stallman <rms@gnu.org>
parents:
9658
diff
changeset
|
186 |
80994
62b6aa7f8c37
Use HAVE_GPM instead of HAVE_GPM_H.
Nick Roberts <nickrob@snap.net.nz>
parents:
80979
diff
changeset
|
187 #ifdef HAVE_GPM |
80979
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
188 #include <sys/fcntl.h> |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
189 |
84981
a35153116cd0
(term_clear_mouse_face, term_mouse_highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
84969
diff
changeset
|
190 static void term_clear_mouse_face (); |
a35153116cd0
(term_clear_mouse_face, term_mouse_highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
84969
diff
changeset
|
191 static void term_mouse_highlight (struct frame *f, int x, int y); |
a35153116cd0
(term_clear_mouse_face, term_mouse_highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
84969
diff
changeset
|
192 |
84768
53194ec05789
* termhooks.h (term_gpm): Delete. Use gpm_tty's NULLness instead.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
84692
diff
changeset
|
193 /* 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
|
194 struct tty_display_info *gpm_tty = NULL; |
83622 | 195 |
80979
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
196 /* These variables describe the range of text currently shown in its |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
197 mouse-face, together with the window they apply to. As long as |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
198 the mouse stays within this range, we need not redraw anything on |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
199 its account. Rows and columns are glyph matrix positions in |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
200 MOUSE_FACE_WINDOW. */ |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
201 static int mouse_face_beg_row, mouse_face_beg_col; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
202 static int mouse_face_end_row, mouse_face_end_col; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
203 static int mouse_face_past_end; |
84968
85eb2660cbe3
(mouse_face_window): Rename from Qmouse_face_window. Update all users.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
84955
diff
changeset
|
204 static Lisp_Object mouse_face_window; |
80979
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
205 static int mouse_face_face_id; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
206 |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
207 static int pos_x, pos_y; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
208 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
|
209 #endif /* HAVE_GPM */ |
80979
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
210 |
83025
c66ebcc29777
Removed %T in mode-line-format. Trivial documentation changes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83021
diff
changeset
|
211 /* 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
|
212 |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
213 static void |
83100
4970ad4995f5
Eliminated updating_frame.
Karoly Lorentey <lorentey@elte.hu>
parents:
83095
diff
changeset
|
214 tty_ring_bell (struct frame *f) |
253 | 215 { |
83008
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
216 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
|
217 |
83167
69ebc75cb461
Implemented display ids for multiple emacsclients on the same tty. Plus assorted bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83161
diff
changeset
|
218 if (tty->output) |
15974
61249a8fe735
(Vring_bell_function): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
15094
diff
changeset
|
219 { |
83167
69ebc75cb461
Implemented display ids for multiple emacsclients on the same tty. Plus assorted bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83161
diff
changeset
|
220 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
|
221 ? 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
|
222 : 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
|
223 fflush (tty->output); |
15974
61249a8fe735
(Vring_bell_function): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
15094
diff
changeset
|
224 } |
253 | 225 } |
226 | |
83025
c66ebcc29777
Removed %T in mode-line-format. Trivial documentation changes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83021
diff
changeset
|
227 /* Set up termcap modes for Emacs. */ |
253 | 228 |
21514 | 229 void |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
230 tty_set_terminal_modes (struct terminal *terminal) |
253 | 231 { |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
232 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
|
233 |
83065
a871be7b26a5
Implemented suspending of emacsclient frames.
Karoly Lorentey <lorentey@elte.hu>
parents:
83050
diff
changeset
|
234 if (tty->output) |
253 | 235 { |
83353
532e0a9335a9
Merged in changes from CVS trunk. Plus added lisp/term tweaks.
Karoly Lorentey <lorentey@elte.hu>
diff
changeset
|
236 if (tty->TS_termcap_modes) |
532e0a9335a9
Merged in changes from CVS trunk. Plus added lisp/term tweaks.
Karoly Lorentey <lorentey@elte.hu>
diff
changeset
|
237 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
|
238 else |
83353
532e0a9335a9
Merged in changes from CVS trunk. Plus added lisp/term tweaks.
Karoly Lorentey <lorentey@elte.hu>
diff
changeset
|
239 { |
532e0a9335a9
Merged in changes from CVS trunk. Plus added lisp/term tweaks.
Karoly Lorentey <lorentey@elte.hu>
diff
changeset
|
240 /* 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
|
241 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
|
242 int i; |
83382
7a3090aca393
Fix hardcoded stdout usage in term.c. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83370
diff
changeset
|
243 current_tty = tty; |
83353
532e0a9335a9
Merged in changes from CVS trunk. Plus added lisp/term tweaks.
Karoly Lorentey <lorentey@elte.hu>
diff
changeset
|
244 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
|
245 cmputc ('\n'); |
83353
532e0a9335a9
Merged in changes from CVS trunk. Plus added lisp/term tweaks.
Karoly Lorentey <lorentey@elte.hu>
diff
changeset
|
246 } |
532e0a9335a9
Merged in changes from CVS trunk. Plus added lisp/term tweaks.
Karoly Lorentey <lorentey@elte.hu>
diff
changeset
|
247 |
83065
a871be7b26a5
Implemented suspending of emacsclient frames.
Karoly Lorentey <lorentey@elte.hu>
parents:
83050
diff
changeset
|
248 OUTPUT_IF (tty, tty->TS_termcap_modes); |
83450
c69d44922688
Merged from miles@gnu.org--gnu-2005 (patch 682)
Karoly Lorentey <lorentey@elte.hu>
diff
changeset
|
249 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
|
250 OUTPUT_IF (tty, tty->TS_keypad_mode); |
a871be7b26a5
Implemented suspending of emacsclient frames.
Karoly Lorentey <lorentey@elte.hu>
parents:
83050
diff
changeset
|
251 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
|
252 fflush (tty->output); |
253 | 253 } |
254 } | |
255 | |
83025
c66ebcc29777
Removed %T in mode-line-format. Trivial documentation changes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83021
diff
changeset
|
256 /* Reset termcap modes before exiting Emacs. */ |
253 | 257 |
21514 | 258 void |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
259 tty_reset_terminal_modes (struct terminal *terminal) |
253 | 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 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
|
262 |
a871be7b26a5
Implemented suspending of emacsclient frames.
Karoly Lorentey <lorentey@elte.hu>
parents:
83050
diff
changeset
|
263 if (tty->output) |
253 | 264 { |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
265 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
|
266 tty_turn_off_insert (tty); |
83065
a871be7b26a5
Implemented suspending of emacsclient frames.
Karoly Lorentey <lorentey@elte.hu>
parents:
83050
diff
changeset
|
267 OUTPUT_IF (tty, tty->TS_end_keypad_mode); |
a871be7b26a5
Implemented suspending of emacsclient frames.
Karoly Lorentey <lorentey@elte.hu>
parents:
83050
diff
changeset
|
268 OUTPUT_IF (tty, tty->TS_cursor_normal); |
a871be7b26a5
Implemented suspending of emacsclient frames.
Karoly Lorentey <lorentey@elte.hu>
parents:
83050
diff
changeset
|
269 OUTPUT_IF (tty, tty->TS_end_termcap_modes); |
a871be7b26a5
Implemented suspending of emacsclient frames.
Karoly Lorentey <lorentey@elte.hu>
parents:
83050
diff
changeset
|
270 OUTPUT_IF (tty, tty->TS_orig_pair); |
37959
b53edc686faf
(tty_cursor_hidden): New variable.
Gerd Moellmann <gerd@gnu.org>
parents:
37499
diff
changeset
|
271 /* 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
|
272 current_tty = tty; |
37959
b53edc686faf
(tty_cursor_hidden): New variable.
Gerd Moellmann <gerd@gnu.org>
parents:
37499
diff
changeset
|
273 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
|
274 fflush (tty->output); |
253 | 275 } |
276 } | |
277 | |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
278 /* 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
|
279 |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
280 static void |
83008
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
281 tty_update_end (struct frame *f) |
253 | 282 { |
83008
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
283 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
|
284 |
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
285 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
|
286 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
|
287 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
|
288 tty_background_highlight (tty); |
253 | 289 } |
290 | |
83025
c66ebcc29777
Removed %T in mode-line-format. Trivial documentation changes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83021
diff
changeset
|
291 /* 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
|
292 |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
293 static void |
83100
4970ad4995f5
Eliminated updating_frame.
Karoly Lorentey <lorentey@elte.hu>
parents:
83095
diff
changeset
|
294 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
|
295 { |
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
296 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
|
297 |
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
298 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
|
299 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
|
300 tty_set_scroll_region (f, 0, tty->specified_window); |
253 | 301 } |
302 | |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
303 static void |
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
304 tty_set_scroll_region (struct frame *f, int start, int stop) |
253 | 305 { |
306 char *buf; | |
82989
f3845715a5f6
Separate frame-local, tty-dependent parameters from tty-local parameters.
Karoly Lorentey <lorentey@elte.hu>
parents:
82988
diff
changeset
|
307 struct tty_display_info *tty = FRAME_TTY (f); |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
46559
diff
changeset
|
308 |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
309 if (tty->TS_set_scroll_region) |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
310 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
|
311 else if (tty->TS_set_scroll_region_1) |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
312 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
|
313 FRAME_LINES (f), start, |
1595c5e1e9bb
Updating_frame vs. selected_frame in term.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
53226
diff
changeset
|
314 FRAME_LINES (f) - stop, |
1595c5e1e9bb
Updating_frame vs. selected_frame in term.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
53226
diff
changeset
|
315 FRAME_LINES (f)); |
253 | 316 else |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
317 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
|
318 |
53232
22aaf1e5fbe6
Full support for multiple terminal I/O (with some rough edges).
Karoly Lorentey <lorentey@elte.hu>
parents:
53229
diff
changeset
|
319 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
|
320 xfree (buf); |
53232
22aaf1e5fbe6
Full support for multiple terminal I/O (with some rough edges).
Karoly Lorentey <lorentey@elte.hu>
parents:
53229
diff
changeset
|
321 losecursor (tty); |
253 | 322 } |
37959
b53edc686faf
(tty_cursor_hidden): New variable.
Gerd Moellmann <gerd@gnu.org>
parents:
37499
diff
changeset
|
323 |
253 | 324 |
37959
b53edc686faf
(tty_cursor_hidden): New variable.
Gerd Moellmann <gerd@gnu.org>
parents:
37499
diff
changeset
|
325 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
|
326 tty_turn_on_insert (struct tty_display_info *tty) |
253 | 327 { |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
328 if (!tty->insert_mode) |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
329 OUTPUT (tty, tty->TS_insert_mode); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
330 tty->insert_mode = 1; |
253 | 331 } |
332 | |
21514 | 333 void |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
334 tty_turn_off_insert (struct tty_display_info *tty) |
253 | 335 { |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
336 if (tty->insert_mode) |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
337 OUTPUT (tty, tty->TS_end_insert_mode); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
338 tty->insert_mode = 0; |
253 | 339 } |
340 | |
40086
050b19294988
(TN_standout_width, TF_xs, TN_magic_cookie_glitch_ul): Variables removed.
Miles Bader <miles@gnu.org>
parents:
40081
diff
changeset
|
341 /* Handle highlighting. */ |
253 | 342 |
21514 | 343 void |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
344 tty_turn_off_highlight (struct tty_display_info *tty) |
253 | 345 { |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
346 if (tty->standout_mode) |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
347 OUTPUT_IF (tty, tty->TS_end_standout_mode); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
348 tty->standout_mode = 0; |
253 | 349 } |
350 | |
37959
b53edc686faf
(tty_cursor_hidden): New variable.
Gerd Moellmann <gerd@gnu.org>
parents:
37499
diff
changeset
|
351 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
|
352 tty_turn_on_highlight (struct tty_display_info *tty) |
253 | 353 { |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
354 if (!tty->standout_mode) |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
355 OUTPUT_IF (tty, tty->TS_standout_mode); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
356 tty->standout_mode = 1; |
253 | 357 } |
358 | |
37477
6a7ab4d2c7b3
(toggle_highlight): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
35448
diff
changeset
|
359 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
|
360 tty_toggle_highlight (struct tty_display_info *tty) |
37477
6a7ab4d2c7b3
(toggle_highlight): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
35448
diff
changeset
|
361 { |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
362 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
|
363 tty_turn_off_highlight (tty); |
37477
6a7ab4d2c7b3
(toggle_highlight): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
35448
diff
changeset
|
364 else |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
365 tty_turn_on_highlight (tty); |
37477
6a7ab4d2c7b3
(toggle_highlight): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
35448
diff
changeset
|
366 } |
6a7ab4d2c7b3
(toggle_highlight): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
35448
diff
changeset
|
367 |
25002 | 368 |
369 /* Make cursor invisible. */ | |
370 | |
371 static void | |
82989
f3845715a5f6
Separate frame-local, tty-dependent parameters from tty-local parameters.
Karoly Lorentey <lorentey@elte.hu>
parents:
82988
diff
changeset
|
372 tty_hide_cursor (struct tty_display_info *tty) |
25002 | 373 { |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
374 if (tty->cursor_hidden == 0) |
37959
b53edc686faf
(tty_cursor_hidden): New variable.
Gerd Moellmann <gerd@gnu.org>
parents:
37499
diff
changeset
|
375 { |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
376 tty->cursor_hidden = 1; |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
377 OUTPUT_IF (tty, tty->TS_cursor_invisible); |
37959
b53edc686faf
(tty_cursor_hidden): New variable.
Gerd Moellmann <gerd@gnu.org>
parents:
37499
diff
changeset
|
378 } |
25002 | 379 } |
380 | |
381 | |
382 /* Ensure that cursor is visible. */ | |
383 | |
384 static void | |
82989
f3845715a5f6
Separate frame-local, tty-dependent parameters from tty-local parameters.
Karoly Lorentey <lorentey@elte.hu>
parents:
82988
diff
changeset
|
385 tty_show_cursor (struct tty_display_info *tty) |
25002 | 386 { |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
387 if (tty->cursor_hidden) |
37959
b53edc686faf
(tty_cursor_hidden): New variable.
Gerd Moellmann <gerd@gnu.org>
parents:
37499
diff
changeset
|
388 { |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
389 tty->cursor_hidden = 0; |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
390 OUTPUT_IF (tty, tty->TS_cursor_normal); |
67935
52bbc53dbce1
(visible_cursor): New boolean var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66238
diff
changeset
|
391 if (visible_cursor) |
83450
c69d44922688
Merged from miles@gnu.org--gnu-2005 (patch 682)
Karoly Lorentey <lorentey@elte.hu>
diff
changeset
|
392 OUTPUT_IF (tty, tty->TS_cursor_visible); |
37959
b53edc686faf
(tty_cursor_hidden): New variable.
Gerd Moellmann <gerd@gnu.org>
parents:
37499
diff
changeset
|
393 } |
25002 | 394 } |
395 | |
396 | |
253 | 397 /* Set standout mode to the state it should be in for |
398 empty space inside windows. What this is, | |
399 depends on the user option inverse-video. */ | |
400 | |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
401 static void |
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
402 tty_background_highlight (struct tty_display_info *tty) |
253 | 403 { |
404 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
|
405 tty_turn_on_highlight (tty); |
253 | 406 else |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
407 tty_turn_off_highlight (tty); |
253 | 408 } |
409 | |
410 /* Set standout mode to the mode specified for the text to be output. */ | |
411 | |
21514 | 412 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
|
413 tty_highlight_if_desired (struct tty_display_info *tty) |
253 | 414 { |
40081
07d7dbf18784
(reassert_line_highlight_hook, change_line_highlight_hook): Variables removed.
Miles Bader <miles@gnu.org>
parents:
39988
diff
changeset
|
415 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
|
416 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
|
417 else |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
418 tty_turn_off_highlight (tty); |
253 | 419 } |
420 | |
421 | |
25002 | 422 /* Move cursor to row/column position VPOS/HPOS. HPOS/VPOS are |
423 frame-relative coordinates. */ | |
253 | 424 |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
425 static void |
83100
4970ad4995f5
Eliminated updating_frame.
Karoly Lorentey <lorentey@elte.hu>
parents:
83095
diff
changeset
|
426 tty_cursor_to (struct frame *f, int vpos, int hpos) |
253 | 427 { |
83008
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
428 struct tty_display_info *tty = FRAME_TTY (f); |
253 | 429 |
12071
f85f23c50344
(cursor_to, clear_to_end_of_line_raw):
Karl Heuer <kwzh@gnu.org>
parents:
11530
diff
changeset
|
430 /* 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
|
431 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
|
432 if (! tty->costs_set) |
12071
f85f23c50344
(cursor_to, clear_to_end_of_line_raw):
Karl Heuer <kwzh@gnu.org>
parents:
11530
diff
changeset
|
433 return; |
f85f23c50344
(cursor_to, clear_to_end_of_line_raw):
Karl Heuer <kwzh@gnu.org>
parents:
11530
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) == vpos |
22aaf1e5fbe6
Full support for multiple terminal I/O (with some rough edges).
Karoly Lorentey <lorentey@elte.hu>
parents:
53229
diff
changeset
|
436 && curX (tty) == hpos) |
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, vpos, hpos); |
253 | 443 } |
444 | |
445 /* Similar but don't take any account of the wasted characters. */ | |
446 | |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
447 static void |
83100
4970ad4995f5
Eliminated updating_frame.
Karoly Lorentey <lorentey@elte.hu>
parents:
83095
diff
changeset
|
448 tty_raw_cursor_to (struct frame *f, int row, int col) |
253 | 449 { |
83008
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
450 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
|
451 |
53232
22aaf1e5fbe6
Full support for multiple terminal I/O (with some rough edges).
Karoly Lorentey <lorentey@elte.hu>
parents:
53229
diff
changeset
|
452 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
|
453 && curX (tty) == col) |
253 | 454 return; |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
455 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
|
456 tty_background_highlight (tty); |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
457 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
|
458 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
|
459 cmgoto (tty, row, col); |
253 | 460 } |
461 | |
462 /* Erase operations */ | |
463 | |
83025
c66ebcc29777
Removed %T in mode-line-format. Trivial documentation changes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83021
diff
changeset
|
464 /* 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
|
465 |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
466 static void |
83100
4970ad4995f5
Eliminated updating_frame.
Karoly Lorentey <lorentey@elte.hu>
parents:
83095
diff
changeset
|
467 tty_clear_to_end (struct frame *f) |
253 | 468 { |
469 register int i; | |
83008
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
470 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
|
471 |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
472 if (tty->TS_clr_to_bottom) |
253 | 473 { |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
474 tty_background_highlight (tty); |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
475 OUTPUT (tty, tty->TS_clr_to_bottom); |
253 | 476 } |
477 else | |
478 { | |
53232
22aaf1e5fbe6
Full support for multiple terminal I/O (with some rough edges).
Karoly Lorentey <lorentey@elte.hu>
parents:
53229
diff
changeset
|
479 for (i = curY (tty); i < FRAME_LINES (f); i++) |
253 | 480 { |
83100
4970ad4995f5
Eliminated updating_frame.
Karoly Lorentey <lorentey@elte.hu>
parents:
83095
diff
changeset
|
481 cursor_to (f, i, 0); |
4970ad4995f5
Eliminated updating_frame.
Karoly Lorentey <lorentey@elte.hu>
parents:
83095
diff
changeset
|
482 clear_end_of_line (f, FRAME_COLS (f)); |
253 | 483 } |
484 } | |
485 } | |
486 | |
83025
c66ebcc29777
Removed %T in mode-line-format. Trivial documentation changes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83021
diff
changeset
|
487 /* Clear an entire termcap frame. */ |
c66ebcc29777
Removed %T in mode-line-format. Trivial documentation changes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83021
diff
changeset
|
488 |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
489 static void |
83100
4970ad4995f5
Eliminated updating_frame.
Karoly Lorentey <lorentey@elte.hu>
parents:
83095
diff
changeset
|
490 tty_clear_frame (struct frame *f) |
253 | 491 { |
83008
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
492 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
|
493 |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
494 if (tty->TS_clr_frame) |
253 | 495 { |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
496 tty_background_highlight (tty); |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
497 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
|
498 cmat (tty, 0, 0); |
253 | 499 } |
500 else | |
501 { | |
83100
4970ad4995f5
Eliminated updating_frame.
Karoly Lorentey <lorentey@elte.hu>
parents:
83095
diff
changeset
|
502 cursor_to (f, 0, 0); |
4970ad4995f5
Eliminated updating_frame.
Karoly Lorentey <lorentey@elte.hu>
parents:
83095
diff
changeset
|
503 clear_to_end (f); |
253 | 504 } |
505 } | |
506 | |
83025
c66ebcc29777
Removed %T in mode-line-format. Trivial documentation changes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83021
diff
changeset
|
507 /* An implementation of clear_end_of_line for termcap frames. |
253 | 508 |
509 Note that the cursor may be moved, on terminals lacking a `ce' string. */ | |
510 | |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
511 static void |
83100
4970ad4995f5
Eliminated updating_frame.
Karoly Lorentey <lorentey@elte.hu>
parents:
83095
diff
changeset
|
512 tty_clear_end_of_line (struct frame *f, int first_unused_hpos) |
253 | 513 { |
514 register int i; | |
83008
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
515 struct tty_display_info *tty = FRAME_TTY (f); |
253 | 516 |
12071
f85f23c50344
(cursor_to, clear_to_end_of_line_raw):
Karl Heuer <kwzh@gnu.org>
parents:
11530
diff
changeset
|
517 /* 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
|
518 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
|
519 if (! tty->costs_set) |
12071
f85f23c50344
(cursor_to, clear_to_end_of_line_raw):
Karl Heuer <kwzh@gnu.org>
parents:
11530
diff
changeset
|
520 return; |
f85f23c50344
(cursor_to, clear_to_end_of_line_raw):
Karl Heuer <kwzh@gnu.org>
parents:
11530
diff
changeset
|
521 |
53232
22aaf1e5fbe6
Full support for multiple terminal I/O (with some rough edges).
Karoly Lorentey <lorentey@elte.hu>
parents:
53229
diff
changeset
|
522 if (curX (tty) >= first_unused_hpos) |
253 | 523 return; |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
524 tty_background_highlight (tty); |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
525 if (tty->TS_clr_line) |
253 | 526 { |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
527 OUTPUT1 (tty, tty->TS_clr_line); |
253 | 528 } |
529 else | |
530 { /* 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
|
531 tty_turn_off_insert (tty); |
253 | 532 |
25002 | 533 /* 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
|
534 if (AutoWrap (tty) |
53341 | 535 && curY (tty) == FrameRows (tty) - 1 |
536 && first_unused_hpos == FrameCols (tty)) | |
253 | 537 first_unused_hpos--; |
538 | |
53232
22aaf1e5fbe6
Full support for multiple terminal I/O (with some rough edges).
Karoly Lorentey <lorentey@elte.hu>
parents:
53229
diff
changeset
|
539 for (i = curX (tty); i < first_unused_hpos; i++) |
253 | 540 { |
83065
a871be7b26a5
Implemented suspending of emacsclient frames.
Karoly Lorentey <lorentey@elte.hu>
parents:
83050
diff
changeset
|
541 if (tty->termscript) |
a871be7b26a5
Implemented suspending of emacsclient frames.
Karoly Lorentey <lorentey@elte.hu>
parents:
83050
diff
changeset
|
542 fputc (' ', tty->termscript); |
a871be7b26a5
Implemented suspending of emacsclient frames.
Karoly Lorentey <lorentey@elte.hu>
parents:
83050
diff
changeset
|
543 fputc (' ', tty->output); |
253 | 544 } |
53232
22aaf1e5fbe6
Full support for multiple terminal I/O (with some rough edges).
Karoly Lorentey <lorentey@elte.hu>
parents:
53229
diff
changeset
|
545 cmplus (tty, first_unused_hpos - curX (tty)); |
253 | 546 } |
547 } | |
548 | |
90059
9b0bfaaaec9c
Sync to the change in HEAD on 2004-11-30.
Kenichi Handa <handa@m17n.org>
parents:
90054
diff
changeset
|
549 /* 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
|
550 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
|
551 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
|
552 /* 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
|
553 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
|
554 static int encode_terminal_dst_size; |
58638
67bea14002c3
(encode_terminal_buf, encode_terminal_bufsize): New
Kenichi Handa <handa@m17n.org>
parents:
54428
diff
changeset
|
555 |
67bea14002c3
(encode_terminal_buf, encode_terminal_bufsize): New
Kenichi Handa <handa@m17n.org>
parents:
54428
diff
changeset
|
556 /* 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
|
557 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
|
558 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
|
559 |
58701
24c51e9d8586
(encode_terminal_code): Don't make it "static".
Kenichi Handa <handa@m17n.org>
parents:
58638
diff
changeset
|
560 unsigned char * |
58638
67bea14002c3
(encode_terminal_buf, encode_terminal_bufsize): New
Kenichi Handa <handa@m17n.org>
parents:
54428
diff
changeset
|
561 encode_terminal_code (src, src_len, coding) |
25002 | 562 struct glyph *src; |
17046
84b0e9794a87
Include charset.h and coding.h.
Karl Heuer <kwzh@gnu.org>
parents:
16894
diff
changeset
|
563 int src_len; |
58638
67bea14002c3
(encode_terminal_buf, encode_terminal_bufsize): New
Kenichi Handa <handa@m17n.org>
parents:
54428
diff
changeset
|
564 struct coding_system *coding; |
17046
84b0e9794a87
Include charset.h and coding.h.
Karl Heuer <kwzh@gnu.org>
parents:
16894
diff
changeset
|
565 { |
66238
d3f5aa0f18c4
(encode_terminal_code): Remove unused var src_start.
Kim F. Storm <storm@cua.dk>
parents:
65795
diff
changeset
|
566 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
|
567 unsigned char *buf; |
67bea14002c3
(encode_terminal_buf, encode_terminal_bufsize): New
Kenichi Handa <handa@m17n.org>
parents:
54428
diff
changeset
|
568 int nchars, nbytes, required; |
17046
84b0e9794a87
Include charset.h and coding.h.
Karl Heuer <kwzh@gnu.org>
parents:
16894
diff
changeset
|
569 register int tlen = GLYPH_TABLE_LENGTH; |
84b0e9794a87
Include charset.h and coding.h.
Karl Heuer <kwzh@gnu.org>
parents:
16894
diff
changeset
|
570 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
|
571 Lisp_Object charset_list; |
58638
67bea14002c3
(encode_terminal_buf, encode_terminal_bufsize): New
Kenichi Handa <handa@m17n.org>
parents:
54428
diff
changeset
|
572 |
67bea14002c3
(encode_terminal_buf, encode_terminal_bufsize): New
Kenichi Handa <handa@m17n.org>
parents:
54428
diff
changeset
|
573 /* 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
|
574 multibyte-form. But, it may be enlarged on demand if |
90638 | 575 Vglyph_table contains a string or a composite glyph is |
576 encountered. */ | |
58638
67bea14002c3
(encode_terminal_buf, encode_terminal_bufsize): New
Kenichi Handa <handa@m17n.org>
parents:
54428
diff
changeset
|
577 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
|
578 if (encode_terminal_src_size < required) |
58638
67bea14002c3
(encode_terminal_buf, encode_terminal_bufsize): New
Kenichi Handa <handa@m17n.org>
parents:
54428
diff
changeset
|
579 { |
100276
8f4457a692c5
(encode_terminal_code): Free any previous memory blocks
Chong Yidong <cyd@stupidchicken.com>
parents:
98367
diff
changeset
|
580 if (encode_terminal_src) |
8f4457a692c5
(encode_terminal_code): Free any previous memory blocks
Chong Yidong <cyd@stupidchicken.com>
parents:
98367
diff
changeset
|
581 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
|
582 else |
90059
9b0bfaaaec9c
Sync to the change in HEAD on 2004-11-30.
Kenichi Handa <handa@m17n.org>
parents:
90054
diff
changeset
|
583 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
|
584 encode_terminal_src_size = required; |
58638
67bea14002c3
(encode_terminal_buf, encode_terminal_bufsize): New
Kenichi Handa <handa@m17n.org>
parents:
54428
diff
changeset
|
585 } |
67bea14002c3
(encode_terminal_buf, encode_terminal_bufsize): New
Kenichi Handa <handa@m17n.org>
parents:
54428
diff
changeset
|
586 |
90059
9b0bfaaaec9c
Sync to the change in HEAD on 2004-11-30.
Kenichi Handa <handa@m17n.org>
parents:
90054
diff
changeset
|
587 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
|
588 |
9b0bfaaaec9c
Sync to the change in HEAD on 2004-11-30.
Kenichi Handa <handa@m17n.org>
parents:
90054
diff
changeset
|
589 buf = encode_terminal_src; |
58638
67bea14002c3
(encode_terminal_buf, encode_terminal_bufsize): New
Kenichi Handa <handa@m17n.org>
parents:
54428
diff
changeset
|
590 nchars = 0; |
17046
84b0e9794a87
Include charset.h and coding.h.
Karl Heuer <kwzh@gnu.org>
parents:
16894
diff
changeset
|
591 while (src < src_end) |
84b0e9794a87
Include charset.h and coding.h.
Karl Heuer <kwzh@gnu.org>
parents:
16894
diff
changeset
|
592 { |
90638 | 593 if (src->type == COMPOSITE_GLYPH) |
594 { | |
97830
62a07e57ef40
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
97720
diff
changeset
|
595 struct composition *cmp; |
62a07e57ef40
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
97720
diff
changeset
|
596 Lisp_Object gstring; |
90638 | 597 int i; |
598 | |
599 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
|
600 if (src->u.cmp.automatic) |
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 gstring = composition_gstring_from_id (src->u.cmp.id); |
101964
05ec76bd8aa4
(encode_terminal_code): Adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
101774
diff
changeset
|
603 required = src->u.cmp.to + 1 - src->u.cmp.from; |
97830
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 else |
62a07e57ef40
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
97720
diff
changeset
|
606 { |
62a07e57ef40
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
97720
diff
changeset
|
607 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
|
608 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
|
609 } |
90638 | 610 |
611 if (encode_terminal_src_size < nbytes + required) | |
612 { | |
613 encode_terminal_src_size = nbytes + required; | |
614 encode_terminal_src = xrealloc (encode_terminal_src, | |
615 encode_terminal_src_size); | |
616 buf = encode_terminal_src + nbytes; | |
617 } | |
618 | |
97830
62a07e57ef40
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
97720
diff
changeset
|
619 if (src->u.cmp.automatic) |
101964
05ec76bd8aa4
(encode_terminal_code): Adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
101774
diff
changeset
|
620 for (i = src->u.cmp.from; i <= src->u.cmp.to; i++) |
97830
62a07e57ef40
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
97720
diff
changeset
|
621 { |
62a07e57ef40
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
97720
diff
changeset
|
622 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
|
623 int c = LGLYPH_CHAR (g); |
62a07e57ef40
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
97720
diff
changeset
|
624 |
62a07e57ef40
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
97720
diff
changeset
|
625 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
|
626 c = '?'; |
97830
62a07e57ef40
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
97720
diff
changeset
|
627 buf += CHAR_STRING (c, buf); |
62a07e57ef40
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
97720
diff
changeset
|
628 nchars++; |
62a07e57ef40
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
97720
diff
changeset
|
629 } |
62a07e57ef40
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
97720
diff
changeset
|
630 else |
62a07e57ef40
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
97720
diff
changeset
|
631 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
|
632 { |
62a07e57ef40
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
97720
diff
changeset
|
633 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
|
634 |
101774
d4f9e4244d5a
(encode_terminal_code): Fix handling of composition.
Kenichi Handa <handa@m17n.org>
parents:
101690
diff
changeset
|
635 if (c == '\t') |
d4f9e4244d5a
(encode_terminal_code): Fix handling of composition.
Kenichi Handa <handa@m17n.org>
parents:
101690
diff
changeset
|
636 continue; |
d4f9e4244d5a
(encode_terminal_code): Fix handling of composition.
Kenichi Handa <handa@m17n.org>
parents:
101690
diff
changeset
|
637 if (char_charset (c, charset_list, NULL)) |
d4f9e4244d5a
(encode_terminal_code): Fix handling of composition.
Kenichi Handa <handa@m17n.org>
parents:
101690
diff
changeset
|
638 { |
d4f9e4244d5a
(encode_terminal_code): Fix handling of composition.
Kenichi Handa <handa@m17n.org>
parents:
101690
diff
changeset
|
639 if (CHAR_WIDTH (c) == 0 |
d4f9e4244d5a
(encode_terminal_code): Fix handling of composition.
Kenichi Handa <handa@m17n.org>
parents:
101690
diff
changeset
|
640 && 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
|
641 /* Should be left-padded */ |
d4f9e4244d5a
(encode_terminal_code): Fix handling of composition.
Kenichi Handa <handa@m17n.org>
parents:
101690
diff
changeset
|
642 { |
d4f9e4244d5a
(encode_terminal_code): Fix handling of composition.
Kenichi Handa <handa@m17n.org>
parents:
101690
diff
changeset
|
643 buf += CHAR_STRING (' ', buf); |
d4f9e4244d5a
(encode_terminal_code): Fix handling of composition.
Kenichi Handa <handa@m17n.org>
parents:
101690
diff
changeset
|
644 nchars++; |
d4f9e4244d5a
(encode_terminal_code): Fix handling of composition.
Kenichi Handa <handa@m17n.org>
parents:
101690
diff
changeset
|
645 } |
d4f9e4244d5a
(encode_terminal_code): Fix handling of composition.
Kenichi Handa <handa@m17n.org>
parents:
101690
diff
changeset
|
646 } |
d4f9e4244d5a
(encode_terminal_code): Fix handling of composition.
Kenichi Handa <handa@m17n.org>
parents:
101690
diff
changeset
|
647 else |
d4f9e4244d5a
(encode_terminal_code): Fix handling of composition.
Kenichi Handa <handa@m17n.org>
parents:
101690
diff
changeset
|
648 c = '?'; |
97830
62a07e57ef40
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
97720
diff
changeset
|
649 buf += CHAR_STRING (c, buf); |
62a07e57ef40
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
97720
diff
changeset
|
650 nchars++; |
62a07e57ef40
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
97720
diff
changeset
|
651 } |
90638 | 652 } |
17046
84b0e9794a87
Include charset.h and coding.h.
Karl Heuer <kwzh@gnu.org>
parents:
16894
diff
changeset
|
653 /* We must skip glyphs to be padded for a wide character. */ |
90638 | 654 else if (! CHAR_GLYPH_PADDING_P (*src)) |
17046
84b0e9794a87
Include charset.h and coding.h.
Karl Heuer <kwzh@gnu.org>
parents:
16894
diff
changeset
|
655 { |
92281
4bf10a5a835d
(encode_terminal_code, produce_special_glyphs): Likewise.
Kim F. Storm <storm@cua.dk>
parents:
92237
diff
changeset
|
656 GLYPH g; |
90059
9b0bfaaaec9c
Sync to the change in HEAD on 2004-11-30.
Kenichi Handa <handa@m17n.org>
parents:
90054
diff
changeset
|
657 int c; |
9b0bfaaaec9c
Sync to the change in HEAD on 2004-11-30.
Kenichi Handa <handa@m17n.org>
parents:
90054
diff
changeset
|
658 Lisp_Object string; |
9b0bfaaaec9c
Sync to the change in HEAD on 2004-11-30.
Kenichi Handa <handa@m17n.org>
parents:
90054
diff
changeset
|
659 |
9b0bfaaaec9c
Sync to the change in HEAD on 2004-11-30.
Kenichi Handa <handa@m17n.org>
parents:
90054
diff
changeset
|
660 string = Qnil; |
92281
4bf10a5a835d
(encode_terminal_code, produce_special_glyphs): Likewise.
Kim F. Storm <storm@cua.dk>
parents:
92237
diff
changeset
|
661 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
|
662 |
4bf10a5a835d
(encode_terminal_code, produce_special_glyphs): Likewise.
Kim F. Storm <storm@cua.dk>
parents:
92237
diff
changeset
|
663 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
|
664 { |
98367
758774f72111
(encode_terminal_code): Fix a typo in a comment.
Eli Zaretskii <eliz@gnu.org>
parents:
98155
diff
changeset
|
665 /* 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
|
666 c = src->u.ch; |
26871
aaf45e665b14
(encode_terminal_code): Delete codes for a composite
Kenichi Handa <handa@m17n.org>
parents:
26425
diff
changeset
|
667 } |
17046
84b0e9794a87
Include charset.h and coding.h.
Karl Heuer <kwzh@gnu.org>
parents:
16894
diff
changeset
|
668 else |
19035 | 669 { |
26999
5d0057e6170e
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
26902
diff
changeset
|
670 /* 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
|
671 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
|
672 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
|
673 |
5d0057e6170e
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
26902
diff
changeset
|
674 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
|
675 /* 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
|
676 (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
|
677 c = GLYPH_CHAR (g); |
26999
5d0057e6170e
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
26902
diff
changeset
|
678 else |
89563
d193de460ec1
(terminal_encode_buffer, terminal_encode_buf_size): New
Kenichi Handa <handa@m17n.org>
parents:
89483
diff
changeset
|
679 /* 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
|
680 string = tbase[GLYPH_CHAR (g)]; |
19035 | 681 } |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
46559
diff
changeset
|
682 |
89563
d193de460ec1
(terminal_encode_buffer, terminal_encode_buf_size): New
Kenichi Handa <handa@m17n.org>
parents:
89483
diff
changeset
|
683 if (NILP (string)) |
d193de460ec1
(terminal_encode_buffer, terminal_encode_buf_size): New
Kenichi Handa <handa@m17n.org>
parents:
89483
diff
changeset
|
684 { |
90638 | 685 nbytes = buf - encode_terminal_src; |
686 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
|
687 { |
90638 | 688 encode_terminal_src_size = nbytes + MAX_MULTIBYTE_LENGTH; |
689 encode_terminal_src = xrealloc (encode_terminal_src, | |
690 encode_terminal_src_size); | |
691 buf = encode_terminal_src + nbytes; | |
692 } | |
90059
9b0bfaaaec9c
Sync to the change in HEAD on 2004-11-30.
Kenichi Handa <handa@m17n.org>
parents:
90054
diff
changeset
|
693 if (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
|
694 { |
89566
86c0ff434620
(encode_terminal_code): Don't handle glyph-table. Check
Kenichi Handa <handa@m17n.org>
parents:
89563
diff
changeset
|
695 /* 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
|
696 buf += CHAR_STRING (c, buf); |
58638
67bea14002c3
(encode_terminal_buf, encode_terminal_bufsize): New
Kenichi Handa <handa@m17n.org>
parents:
54428
diff
changeset
|
697 nchars++; |
26999
5d0057e6170e
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
26902
diff
changeset
|
698 } |
5d0057e6170e
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
26902
diff
changeset
|
699 else |
5d0057e6170e
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
26902
diff
changeset
|
700 { |
90059
9b0bfaaaec9c
Sync to the change in HEAD on 2004-11-30.
Kenichi Handa <handa@m17n.org>
parents:
90054
diff
changeset
|
701 /* C is not encodable. */ |
9b0bfaaaec9c
Sync to the change in HEAD on 2004-11-30.
Kenichi Handa <handa@m17n.org>
parents:
90054
diff
changeset
|
702 *buf++ = '?'; |
9b0bfaaaec9c
Sync to the change in HEAD on 2004-11-30.
Kenichi Handa <handa@m17n.org>
parents:
90054
diff
changeset
|
703 nchars++; |
9b0bfaaaec9c
Sync to the change in HEAD on 2004-11-30.
Kenichi Handa <handa@m17n.org>
parents:
90054
diff
changeset
|
704 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
|
705 { |
90059
9b0bfaaaec9c
Sync to the change in HEAD on 2004-11-30.
Kenichi Handa <handa@m17n.org>
parents:
90054
diff
changeset
|
706 *buf++ = '?'; |
9b0bfaaaec9c
Sync to the change in HEAD on 2004-11-30.
Kenichi Handa <handa@m17n.org>
parents:
90054
diff
changeset
|
707 nchars++; |
9b0bfaaaec9c
Sync to the change in HEAD on 2004-11-30.
Kenichi Handa <handa@m17n.org>
parents:
90054
diff
changeset
|
708 src++; |
58638
67bea14002c3
(encode_terminal_buf, encode_terminal_bufsize): New
Kenichi Handa <handa@m17n.org>
parents:
54428
diff
changeset
|
709 } |
26999
5d0057e6170e
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
26902
diff
changeset
|
710 } |
19035 | 711 } |
89563
d193de460ec1
(terminal_encode_buffer, terminal_encode_buf_size): New
Kenichi Handa <handa@m17n.org>
parents:
89483
diff
changeset
|
712 else |
23338
0a2b76b09162
(encode_terminal_code): Handle raw 8-bit codes correctly.
Kenichi Handa <handa@m17n.org>
parents:
23066
diff
changeset
|
713 { |
90059
9b0bfaaaec9c
Sync to the change in HEAD on 2004-11-30.
Kenichi Handa <handa@m17n.org>
parents:
90054
diff
changeset
|
714 unsigned char *p = SDATA (string), *pend = p + SBYTES (string); |
9b0bfaaaec9c
Sync to the change in HEAD on 2004-11-30.
Kenichi Handa <handa@m17n.org>
parents:
90054
diff
changeset
|
715 |
9b0bfaaaec9c
Sync to the change in HEAD on 2004-11-30.
Kenichi Handa <handa@m17n.org>
parents:
90054
diff
changeset
|
716 if (! STRING_MULTIBYTE (string)) |
9b0bfaaaec9c
Sync to the change in HEAD on 2004-11-30.
Kenichi Handa <handa@m17n.org>
parents:
90054
diff
changeset
|
717 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
|
718 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
|
719 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
|
720 { |
90059
9b0bfaaaec9c
Sync to the change in HEAD on 2004-11-30.
Kenichi Handa <handa@m17n.org>
parents:
90054
diff
changeset
|
721 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
|
722 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
|
723 encode_terminal_src_size); |
9b0bfaaaec9c
Sync to the change in HEAD on 2004-11-30.
Kenichi Handa <handa@m17n.org>
parents:
90054
diff
changeset
|
724 buf = encode_terminal_src + nbytes; |
89563
d193de460ec1
(terminal_encode_buffer, terminal_encode_buf_size): New
Kenichi Handa <handa@m17n.org>
parents:
89483
diff
changeset
|
725 } |
90059
9b0bfaaaec9c
Sync to the change in HEAD on 2004-11-30.
Kenichi Handa <handa@m17n.org>
parents:
90054
diff
changeset
|
726 bcopy (SDATA (string), buf, SBYTES (string)); |
9b0bfaaaec9c
Sync to the change in HEAD on 2004-11-30.
Kenichi Handa <handa@m17n.org>
parents:
90054
diff
changeset
|
727 buf += SBYTES (string); |
9b0bfaaaec9c
Sync to the change in HEAD on 2004-11-30.
Kenichi Handa <handa@m17n.org>
parents:
90054
diff
changeset
|
728 nchars += SCHARS (string); |
23338
0a2b76b09162
(encode_terminal_code): Handle raw 8-bit codes correctly.
Kenichi Handa <handa@m17n.org>
parents:
23066
diff
changeset
|
729 } |
17046
84b0e9794a87
Include charset.h and coding.h.
Karl Heuer <kwzh@gnu.org>
parents:
16894
diff
changeset
|
730 } |
84b0e9794a87
Include charset.h and coding.h.
Karl Heuer <kwzh@gnu.org>
parents:
16894
diff
changeset
|
731 src++; |
84b0e9794a87
Include charset.h and coding.h.
Karl Heuer <kwzh@gnu.org>
parents:
16894
diff
changeset
|
732 } |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
46559
diff
changeset
|
733 |
90059
9b0bfaaaec9c
Sync to the change in HEAD on 2004-11-30.
Kenichi Handa <handa@m17n.org>
parents:
90054
diff
changeset
|
734 if (nchars == 0) |
58638
67bea14002c3
(encode_terminal_buf, encode_terminal_bufsize): New
Kenichi Handa <handa@m17n.org>
parents:
54428
diff
changeset
|
735 { |
90059
9b0bfaaaec9c
Sync to the change in HEAD on 2004-11-30.
Kenichi Handa <handa@m17n.org>
parents:
90054
diff
changeset
|
736 coding->produced = 0; |
9b0bfaaaec9c
Sync to the change in HEAD on 2004-11-30.
Kenichi Handa <handa@m17n.org>
parents:
90054
diff
changeset
|
737 return NULL; |
58638
67bea14002c3
(encode_terminal_buf, encode_terminal_bufsize): New
Kenichi Handa <handa@m17n.org>
parents:
54428
diff
changeset
|
738 } |
90059
9b0bfaaaec9c
Sync to the change in HEAD on 2004-11-30.
Kenichi Handa <handa@m17n.org>
parents:
90054
diff
changeset
|
739 |
9b0bfaaaec9c
Sync to the change in HEAD on 2004-11-30.
Kenichi Handa <handa@m17n.org>
parents:
90054
diff
changeset
|
740 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
|
741 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
|
742 if (encode_terminal_dst_size == 0) |
58638
67bea14002c3
(encode_terminal_buf, encode_terminal_bufsize): New
Kenichi Handa <handa@m17n.org>
parents:
54428
diff
changeset
|
743 { |
90059
9b0bfaaaec9c
Sync to the change in HEAD on 2004-11-30.
Kenichi Handa <handa@m17n.org>
parents:
90054
diff
changeset
|
744 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
|
745 if (encode_terminal_dst) |
8f4457a692c5
(encode_terminal_code): Free any previous memory blocks
Chong Yidong <cyd@stupidchicken.com>
parents:
98367
diff
changeset
|
746 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
|
747 encode_terminal_dst_size); |
8f4457a692c5
(encode_terminal_code): Free any previous memory blocks
Chong Yidong <cyd@stupidchicken.com>
parents:
98367
diff
changeset
|
748 else |
8f4457a692c5
(encode_terminal_code): Free any previous memory blocks
Chong Yidong <cyd@stupidchicken.com>
parents:
98367
diff
changeset
|
749 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
|
750 } |
90059
9b0bfaaaec9c
Sync to the change in HEAD on 2004-11-30.
Kenichi Handa <handa@m17n.org>
parents:
90054
diff
changeset
|
751 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
|
752 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
|
753 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
|
754 /* 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
|
755 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
|
756 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
|
757 |
9b0bfaaaec9c
Sync to the change in HEAD on 2004-11-30.
Kenichi Handa <handa@m17n.org>
parents:
90054
diff
changeset
|
758 return (encode_terminal_dst); |
17046
84b0e9794a87
Include charset.h and coding.h.
Karl Heuer <kwzh@gnu.org>
parents:
16894
diff
changeset
|
759 } |
84b0e9794a87
Include charset.h and coding.h.
Karl Heuer <kwzh@gnu.org>
parents:
16894
diff
changeset
|
760 |
253 | 761 |
91041 | 762 |
83025
c66ebcc29777
Removed %T in mode-line-format. Trivial documentation changes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83021
diff
changeset
|
763 /* 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
|
764 |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
765 static void |
83100
4970ad4995f5
Eliminated updating_frame.
Karoly Lorentey <lorentey@elte.hu>
parents:
83095
diff
changeset
|
766 tty_write_glyphs (struct frame *f, struct glyph *string, int len) |
253 | 767 { |
58638
67bea14002c3
(encode_terminal_buf, encode_terminal_bufsize): New
Kenichi Handa <handa@m17n.org>
parents:
54428
diff
changeset
|
768 unsigned char *conversion_buffer; |
67bea14002c3
(encode_terminal_buf, encode_terminal_bufsize): New
Kenichi Handa <handa@m17n.org>
parents:
54428
diff
changeset
|
769 struct coding_system *coding; |
253 | 770 |
83008
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
771 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
|
772 |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
773 tty_turn_off_insert (tty); |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
774 tty_hide_cursor (tty); |
253 | 775 |
25002 | 776 /* Don't dare write in last column of bottom line, if Auto-Wrap, |
765 | 777 since that would scroll the whole frame on some terminals. */ |
253 | 778 |
53232
22aaf1e5fbe6
Full support for multiple terminal I/O (with some rough edges).
Karoly Lorentey <lorentey@elte.hu>
parents:
53229
diff
changeset
|
779 if (AutoWrap (tty) |
22aaf1e5fbe6
Full support for multiple terminal I/O (with some rough edges).
Karoly Lorentey <lorentey@elte.hu>
parents:
53229
diff
changeset
|
780 && 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
|
781 && (curX (tty) + len) == FRAME_COLS (f)) |
253 | 782 len --; |
17046
84b0e9794a87
Include charset.h and coding.h.
Karl Heuer <kwzh@gnu.org>
parents:
16894
diff
changeset
|
783 if (len <= 0) |
84b0e9794a87
Include charset.h and coding.h.
Karl Heuer <kwzh@gnu.org>
parents:
16894
diff
changeset
|
784 return; |
253 | 785 |
53232
22aaf1e5fbe6
Full support for multiple terminal I/O (with some rough edges).
Karoly Lorentey <lorentey@elte.hu>
parents:
53229
diff
changeset
|
786 cmplus (tty, len); |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
46559
diff
changeset
|
787 |
58638
67bea14002c3
(encode_terminal_buf, encode_terminal_bufsize): New
Kenichi Handa <handa@m17n.org>
parents:
54428
diff
changeset
|
788 /* 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
|
789 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
|
790 because it always return 1 if the member src_multibyte is 1. */ |
83231 | 791 coding = (FRAME_TERMINAL_CODING (f)->common_flags & CODING_REQUIRE_ENCODING_MASK |
792 ? 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
|
793 /* 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
|
794 the tail. */ |
58638
67bea14002c3
(encode_terminal_buf, encode_terminal_bufsize): New
Kenichi Handa <handa@m17n.org>
parents:
54428
diff
changeset
|
795 coding->mode &= ~CODING_MODE_LAST_BLOCK; |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
46559
diff
changeset
|
796 |
17046
84b0e9794a87
Include charset.h and coding.h.
Karl Heuer <kwzh@gnu.org>
parents:
16894
diff
changeset
|
797 while (len > 0) |
253 | 798 { |
25002 | 799 /* 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
|
800 int face_id = string->face_id; |
25002 | 801 int n; |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
46559
diff
changeset
|
802 |
25002 | 803 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
|
804 if (string[n].face_id != face_id) |
25002 | 805 break; |
806 | |
807 /* 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
|
808 tty_highlight_if_desired (tty); |
25002 | 809 turn_on_face (f, face_id); |
810 | |
58638
67bea14002c3
(encode_terminal_buf, encode_terminal_bufsize): New
Kenichi Handa <handa@m17n.org>
parents:
54428
diff
changeset
|
811 if (n == len) |
67bea14002c3
(encode_terminal_buf, encode_terminal_bufsize): New
Kenichi Handa <handa@m17n.org>
parents:
54428
diff
changeset
|
812 /* This is the last run. */ |
67bea14002c3
(encode_terminal_buf, encode_terminal_bufsize): New
Kenichi Handa <handa@m17n.org>
parents:
54428
diff
changeset
|
813 coding->mode |= CODING_MODE_LAST_BLOCK; |
67bea14002c3
(encode_terminal_buf, encode_terminal_bufsize): New
Kenichi Handa <handa@m17n.org>
parents:
54428
diff
changeset
|
814 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
|
815 if (coding->produced > 0) |
253 | 816 { |
76627
c53e7d075f1a
Include blockinput.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
75348
diff
changeset
|
817 BLOCK_INPUT; |
83231 | 818 fwrite (conversion_buffer, 1, coding->produced, tty->output); |
819 if (ferror (tty->output)) | |
820 clearerr (tty->output); | |
821 if (tty->termscript) | |
822 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
|
823 UNBLOCK_INPUT; |
253 | 824 } |
58638
67bea14002c3
(encode_terminal_buf, encode_terminal_bufsize): New
Kenichi Handa <handa@m17n.org>
parents:
54428
diff
changeset
|
825 len -= n; |
67bea14002c3
(encode_terminal_buf, encode_terminal_bufsize): New
Kenichi Handa <handa@m17n.org>
parents:
54428
diff
changeset
|
826 string += n; |
25002 | 827 |
828 /* Turn appearance modes off. */ | |
829 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
|
830 tty_turn_off_highlight (tty); |
17046
84b0e9794a87
Include charset.h and coding.h.
Karl Heuer <kwzh@gnu.org>
parents:
16894
diff
changeset
|
831 } |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
46559
diff
changeset
|
832 |
53232
22aaf1e5fbe6
Full support for multiple terminal I/O (with some rough edges).
Karoly Lorentey <lorentey@elte.hu>
parents:
53229
diff
changeset
|
833 cmcheckmagic (tty); |
253 | 834 } |
835 | |
84981
a35153116cd0
(term_clear_mouse_face, term_mouse_highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
84969
diff
changeset
|
836 #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
|
837 |
83622 | 838 static void |
839 tty_write_glyphs_with_face (f, string, len, face_id) | |
840 register struct frame *f; | |
80979
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
841 register struct glyph *string; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
842 register int len, face_id; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
843 { |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
844 unsigned char *conversion_buffer; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
845 struct coding_system *coding; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
846 |
83622 | 847 struct tty_display_info *tty = FRAME_TTY (f); |
848 | |
849 tty_turn_off_insert (tty); | |
850 tty_hide_cursor (tty); | |
80979
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 /* 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
|
853 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
|
854 |
83622 | 855 if (AutoWrap (tty) |
856 && curY (tty) + 1 == FRAME_LINES (f) | |
857 && (curX (tty) + len) == FRAME_COLS (f)) | |
80979
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
858 len --; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
859 if (len <= 0) |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
860 return; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
861 |
83622 | 862 cmplus (tty, len); |
80979
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
863 |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
864 /* 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
|
865 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
|
866 because it always return 1 if the member src_multibyte is 1. */ |
83622 | 867 coding = (FRAME_TERMINAL_CODING (f)->common_flags & CODING_REQUIRE_ENCODING_MASK |
868 ? 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
|
869 /* 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
|
870 the tail. */ |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
871 coding->mode &= ~CODING_MODE_LAST_BLOCK; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
872 |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
873 /* Turn appearance modes of the face. */ |
83622 | 874 tty_highlight_if_desired (tty); |
80979
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
875 turn_on_face (f, face_id); |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
876 |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
877 coding->mode |= CODING_MODE_LAST_BLOCK; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
878 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
|
879 if (coding->produced > 0) |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
880 { |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
881 BLOCK_INPUT; |
83622 | 882 fwrite (conversion_buffer, 1, coding->produced, tty->output); |
883 if (ferror (tty->output)) | |
884 clearerr (tty->output); | |
885 if (tty->termscript) | |
886 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
|
887 UNBLOCK_INPUT; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
888 } |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
889 |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
890 /* Turn appearance modes off. */ |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
891 turn_off_face (f, face_id); |
83622 | 892 tty_turn_off_highlight (tty); |
893 | |
894 cmcheckmagic (tty); | |
80979
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
895 } |
84981
a35153116cd0
(term_clear_mouse_face, term_mouse_highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
84969
diff
changeset
|
896 #endif |
83622 | 897 |
83025
c66ebcc29777
Removed %T in mode-line-format. Trivial documentation changes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83021
diff
changeset
|
898 /* 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
|
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 static void |
83100
4970ad4995f5
Eliminated updating_frame.
Karoly Lorentey <lorentey@elte.hu>
parents:
83095
diff
changeset
|
901 tty_insert_glyphs (struct frame *f, struct glyph *start, int len) |
253 | 902 { |
903 char *buf; | |
31829
43566b0aec59
Avoid some more compiler warnings.
Gerd Moellmann <gerd@gnu.org>
parents:
31102
diff
changeset
|
904 struct glyph *glyph = NULL; |
58638
67bea14002c3
(encode_terminal_buf, encode_terminal_bufsize): New
Kenichi Handa <handa@m17n.org>
parents:
54428
diff
changeset
|
905 unsigned char *conversion_buffer; |
67bea14002c3
(encode_terminal_buf, encode_terminal_bufsize): New
Kenichi Handa <handa@m17n.org>
parents:
54428
diff
changeset
|
906 unsigned char space[1]; |
67bea14002c3
(encode_terminal_buf, encode_terminal_bufsize): New
Kenichi Handa <handa@m17n.org>
parents:
54428
diff
changeset
|
907 struct coding_system *coding; |
253 | 908 |
83008
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
909 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
|
910 |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
911 if (tty->TS_ins_multi_chars) |
253 | 912 { |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
913 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
|
914 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
|
915 xfree (buf); |
253 | 916 if (start) |
83100
4970ad4995f5
Eliminated updating_frame.
Karoly Lorentey <lorentey@elte.hu>
parents:
83095
diff
changeset
|
917 write_glyphs (f, start, len); |
253 | 918 return; |
919 } | |
25002 | 920 |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
921 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
|
922 cmplus (tty, len); |
58638
67bea14002c3
(encode_terminal_buf, encode_terminal_bufsize): New
Kenichi Handa <handa@m17n.org>
parents:
54428
diff
changeset
|
923 |
67bea14002c3
(encode_terminal_buf, encode_terminal_bufsize): New
Kenichi Handa <handa@m17n.org>
parents:
54428
diff
changeset
|
924 if (! start) |
67bea14002c3
(encode_terminal_buf, encode_terminal_bufsize): New
Kenichi Handa <handa@m17n.org>
parents:
54428
diff
changeset
|
925 space[0] = SPACEGLYPH; |
67bea14002c3
(encode_terminal_buf, encode_terminal_bufsize): New
Kenichi Handa <handa@m17n.org>
parents:
54428
diff
changeset
|
926 |
67bea14002c3
(encode_terminal_buf, encode_terminal_bufsize): New
Kenichi Handa <handa@m17n.org>
parents:
54428
diff
changeset
|
927 /* 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
|
928 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
|
929 because it always return 1 if the member src_multibyte is 1. */ |
83231 | 930 coding = (FRAME_TERMINAL_CODING (f)->common_flags & CODING_REQUIRE_ENCODING_MASK |
931 ? 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
|
932 /* 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
|
933 the tail. */ |
67bea14002c3
(encode_terminal_buf, encode_terminal_bufsize): New
Kenichi Handa <handa@m17n.org>
parents:
54428
diff
changeset
|
934 coding->mode &= ~CODING_MODE_LAST_BLOCK; |
67bea14002c3
(encode_terminal_buf, encode_terminal_bufsize): New
Kenichi Handa <handa@m17n.org>
parents:
54428
diff
changeset
|
935 |
17191
36caec9c2e52
(insert_glyphs): Fix a bug which turns up when
Kenichi Handa <handa@m17n.org>
parents:
17180
diff
changeset
|
936 while (len-- > 0) |
253 | 937 { |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
938 OUTPUT1_IF (tty, tty->TS_ins_char); |
253 | 939 if (!start) |
26999
5d0057e6170e
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
26902
diff
changeset
|
940 { |
58638
67bea14002c3
(encode_terminal_buf, encode_terminal_bufsize): New
Kenichi Handa <handa@m17n.org>
parents:
54428
diff
changeset
|
941 conversion_buffer = space; |
67bea14002c3
(encode_terminal_buf, encode_terminal_bufsize): New
Kenichi Handa <handa@m17n.org>
parents:
54428
diff
changeset
|
942 coding->produced = 1; |
26999
5d0057e6170e
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
26902
diff
changeset
|
943 } |
253 | 944 else |
17046
84b0e9794a87
Include charset.h and coding.h.
Karl Heuer <kwzh@gnu.org>
parents:
16894
diff
changeset
|
945 { |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
946 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
|
947 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
|
948 glyph = start; |
25002 | 949 ++start; |
17046
84b0e9794a87
Include charset.h and coding.h.
Karl Heuer <kwzh@gnu.org>
parents:
16894
diff
changeset
|
950 /* 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
|
951 occupies more than one column. */ |
25002 | 952 while (len && CHAR_GLYPH_PADDING_P (*start)) |
17046
84b0e9794a87
Include charset.h and coding.h.
Karl Heuer <kwzh@gnu.org>
parents:
16894
diff
changeset
|
953 { |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
954 OUTPUT1_IF (tty, tty->TS_ins_char); |
17046
84b0e9794a87
Include charset.h and coding.h.
Karl Heuer <kwzh@gnu.org>
parents:
16894
diff
changeset
|
955 start++, len--; |
84b0e9794a87
Include charset.h and coding.h.
Karl Heuer <kwzh@gnu.org>
parents:
16894
diff
changeset
|
956 } |
26999
5d0057e6170e
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
26902
diff
changeset
|
957 |
5d0057e6170e
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
26902
diff
changeset
|
958 if (len <= 0) |
5d0057e6170e
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
26902
diff
changeset
|
959 /* This is the last glyph. */ |
58638
67bea14002c3
(encode_terminal_buf, encode_terminal_bufsize): New
Kenichi Handa <handa@m17n.org>
parents:
54428
diff
changeset
|
960 coding->mode |= CODING_MODE_LAST_BLOCK; |
67bea14002c3
(encode_terminal_buf, encode_terminal_bufsize): New
Kenichi Handa <handa@m17n.org>
parents:
54428
diff
changeset
|
961 |
83231 | 962 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
|
963 } |
253 | 964 |
58638
67bea14002c3
(encode_terminal_buf, encode_terminal_bufsize): New
Kenichi Handa <handa@m17n.org>
parents:
54428
diff
changeset
|
965 if (coding->produced > 0) |
253 | 966 { |
76627
c53e7d075f1a
Include blockinput.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
75348
diff
changeset
|
967 BLOCK_INPUT; |
83231 | 968 fwrite (conversion_buffer, 1, coding->produced, tty->output); |
83065
a871be7b26a5
Implemented suspending of emacsclient frames.
Karoly Lorentey <lorentey@elte.hu>
parents:
83050
diff
changeset
|
969 if (ferror (tty->output)) |
a871be7b26a5
Implemented suspending of emacsclient frames.
Karoly Lorentey <lorentey@elte.hu>
parents:
83050
diff
changeset
|
970 clearerr (tty->output); |
a871be7b26a5
Implemented suspending of emacsclient frames.
Karoly Lorentey <lorentey@elte.hu>
parents:
83050
diff
changeset
|
971 if (tty->termscript) |
83231 | 972 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
|
973 UNBLOCK_INPUT; |
253 | 974 } |
975 | |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
976 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
|
977 if (start) |
30848
fc80dcfc32cd
(write_glyphs): Also turn off inverse video after turning
Gerd Moellmann <gerd@gnu.org>
parents:
30836
diff
changeset
|
978 { |
fc80dcfc32cd
(write_glyphs): Also turn off inverse video after turning
Gerd Moellmann <gerd@gnu.org>
parents:
30836
diff
changeset
|
979 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
|
980 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
|
981 } |
10439
1fcbeb4410f6
(write_glyphs, insert_glyphs): Call checkmagic.
Karl Heuer <kwzh@gnu.org>
parents:
10332
diff
changeset
|
982 } |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
46559
diff
changeset
|
983 |
53232
22aaf1e5fbe6
Full support for multiple terminal I/O (with some rough edges).
Karoly Lorentey <lorentey@elte.hu>
parents:
53229
diff
changeset
|
984 cmcheckmagic (tty); |
253 | 985 } |
986 | |
83025
c66ebcc29777
Removed %T in mode-line-format. Trivial documentation changes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83021
diff
changeset
|
987 /* 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
|
988 |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
989 static void |
83100
4970ad4995f5
Eliminated updating_frame.
Karoly Lorentey <lorentey@elte.hu>
parents:
83095
diff
changeset
|
990 tty_delete_glyphs (struct frame *f, int n) |
253 | 991 { |
992 char *buf; | |
993 register int i; | |
994 | |
83008
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
995 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
|
996 |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
997 if (tty->delete_in_insert_mode) |
253 | 998 { |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
999 tty_turn_on_insert (tty); |
253 | 1000 } |
1001 else | |
1002 { | |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
1003 tty_turn_off_insert (tty); |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
1004 OUTPUT_IF (tty, tty->TS_delete_mode); |
253 | 1005 } |
1006 | |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
1007 if (tty->TS_del_multi_chars) |
253 | 1008 { |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
1009 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
|
1010 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
|
1011 xfree (buf); |
253 | 1012 } |
1013 else | |
1014 for (i = 0; i < n; i++) | |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
1015 OUTPUT1 (tty, tty->TS_del_char); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
1016 if (!tty->delete_in_insert_mode) |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
1017 OUTPUT_IF (tty, tty->TS_end_delete_mode); |
253 | 1018 } |
1019 | |
83025
c66ebcc29777
Removed %T in mode-line-format. Trivial documentation changes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83021
diff
changeset
|
1020 /* 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
|
1021 |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
1022 static void |
83100
4970ad4995f5
Eliminated updating_frame.
Karoly Lorentey <lorentey@elte.hu>
parents:
83095
diff
changeset
|
1023 tty_ins_del_lines (struct frame *f, int vpos, int n) |
253 | 1024 { |
83008
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
1025 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
|
1026 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
|
1027 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
|
1028 char *scroll = n > 0 ? tty->TS_rev_scroll : tty->TS_fwd_scroll; |
253 | 1029 |
1030 register int i = n > 0 ? n : -n; | |
1031 register char *buf; | |
1032 | |
1033 /* If the lines below the insertion are being pushed | |
1034 into the end of the window, this is the same as clearing; | |
1035 and we know the lines are already clear, since the matching | |
1036 deletion has already been done. So can ignore this. */ | |
1037 /* If the lines below the deletion are blank lines coming | |
1038 out of the end of the window, don't bother, | |
1039 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
|
1040 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
|
1041 && vpos + i >= tty->specified_window) |
253 | 1042 return; |
83008
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
1043 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
|
1044 && vpos + i >= FRAME_LINES (f)) |
253 | 1045 return; |
92281
4bf10a5a835d
(encode_terminal_code, produce_special_glyphs): Likewise.
Kim F. Storm <storm@cua.dk>
parents:
92237
diff
changeset
|
1046 |
253 | 1047 if (multi) |
1048 { | |
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 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
|
1052 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
|
1053 xfree (buf); |
253 | 1054 } |
1055 else if (single) | |
1056 { | |
83102
a330cf2446ad
Fix segfault in term.c (reported by lukhas@free.fr).
Karoly Lorentey <lorentey@elte.hu>
parents:
83100
diff
changeset
|
1057 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
|
1058 tty_background_highlight (tty); |
253 | 1059 while (--i >= 0) |
83008
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
1060 OUTPUT (tty, single); |
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
1061 if (tty->TF_teleray) |
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
1062 curX (tty) = 0; |
253 | 1063 } |
1064 else | |
1065 { | |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
1066 tty_set_scroll_region (f, vpos, tty->specified_window); |
253 | 1067 if (n < 0) |
83102
a330cf2446ad
Fix segfault in term.c (reported by lukhas@free.fr).
Karoly Lorentey <lorentey@elte.hu>
parents:
83100
diff
changeset
|
1068 raw_cursor_to (f, tty->specified_window - 1, 0); |
253 | 1069 else |
83102
a330cf2446ad
Fix segfault in term.c (reported by lukhas@free.fr).
Karoly Lorentey <lorentey@elte.hu>
parents:
83100
diff
changeset
|
1070 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
|
1071 tty_background_highlight (tty); |
253 | 1072 while (--i >= 0) |
83008
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
1073 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
|
1074 tty_set_scroll_region (f, 0, tty->specified_window); |
253 | 1075 } |
92281
4bf10a5a835d
(encode_terminal_code, produce_special_glyphs): Likewise.
Kim F. Storm <storm@cua.dk>
parents:
92237
diff
changeset
|
1076 |
83008
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
1077 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
|
1078 && 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
|
1079 && n < 0) |
253 | 1080 { |
83100
4970ad4995f5
Eliminated updating_frame.
Karoly Lorentey <lorentey@elte.hu>
parents:
83095
diff
changeset
|
1081 cursor_to (f, FRAME_LINES (f) + n, 0); |
4970ad4995f5
Eliminated updating_frame.
Karoly Lorentey <lorentey@elte.hu>
parents:
83095
diff
changeset
|
1082 clear_to_end (f); |
253 | 1083 } |
1084 } | |
1085 | |
1086 /* Compute cost of sending "str", in characters, | |
1087 not counting any line-dependent padding. */ | |
1088 | |
1089 int | |
83102
a330cf2446ad
Fix segfault in term.c (reported by lukhas@free.fr).
Karoly Lorentey <lorentey@elte.hu>
parents:
83100
diff
changeset
|
1090 string_cost (char *str) |
253 | 1091 { |
1092 cost = 0; | |
1093 if (str) | |
1094 tputs (str, 0, evalcost); | |
1095 return cost; | |
1096 } | |
1097 | |
1098 /* Compute cost of sending "str", in characters, | |
1099 counting any line-dependent padding at one line. */ | |
1100 | |
1101 static int | |
83102
a330cf2446ad
Fix segfault in term.c (reported by lukhas@free.fr).
Karoly Lorentey <lorentey@elte.hu>
parents:
83100
diff
changeset
|
1102 string_cost_one_line (char *str) |
253 | 1103 { |
1104 cost = 0; | |
1105 if (str) | |
1106 tputs (str, 1, evalcost); | |
1107 return cost; | |
1108 } | |
1109 | |
1110 /* Compute per line amount of line-dependent padding, | |
1111 in tenths of characters. */ | |
1112 | |
1113 int | |
83102
a330cf2446ad
Fix segfault in term.c (reported by lukhas@free.fr).
Karoly Lorentey <lorentey@elte.hu>
parents:
83100
diff
changeset
|
1114 per_line_cost (char *str) |
253 | 1115 { |
1116 cost = 0; | |
1117 if (str) | |
1118 tputs (str, 0, evalcost); | |
1119 cost = - cost; | |
1120 if (str) | |
1121 tputs (str, 10, evalcost); | |
1122 return cost; | |
1123 } | |
1124 | |
1125 #ifndef old | |
1126 /* 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
|
1127 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
|
1128 The length of this vector is based on max_frame_cols. */ |
253 | 1129 |
1130 int *char_ins_del_vector; | |
1131 | |
51212
332134065648
Make (some) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50227
diff
changeset
|
1132 #define char_ins_del_cost(f) (&char_ins_del_vector[FRAME_COLS ((f))]) |
253 | 1133 #endif |
1134 | |
1135 /* ARGSUSED */ | |
1136 static void | |
83102
a330cf2446ad
Fix segfault in term.c (reported by lukhas@free.fr).
Karoly Lorentey <lorentey@elte.hu>
parents:
83100
diff
changeset
|
1137 calculate_ins_del_char_costs (struct frame *f) |
253 | 1138 { |
82989
f3845715a5f6
Separate frame-local, tty-dependent parameters from tty-local parameters.
Karoly Lorentey <lorentey@elte.hu>
parents:
82988
diff
changeset
|
1139 struct tty_display_info *tty = FRAME_TTY (f); |
253 | 1140 int ins_startup_cost, del_startup_cost; |
1141 int ins_cost_per_char, del_cost_per_char; | |
1142 register int i; | |
1143 register int *p; | |
1144 | |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
1145 if (tty->TS_ins_multi_chars) |
253 | 1146 { |
1147 ins_cost_per_char = 0; | |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
1148 ins_startup_cost = string_cost_one_line (tty->TS_ins_multi_chars); |
253 | 1149 } |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
1150 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
|
1151 || (tty->TS_insert_mode && tty->TS_end_insert_mode)) |
253 | 1152 { |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
1153 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
|
1154 + string_cost (tty->TS_end_insert_mode))) / 100; |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
1155 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
|
1156 + string_cost_one_line (tty->TS_pad_inserted_char)); |
253 | 1157 } |
1158 else | |
1159 { | |
1160 ins_startup_cost = 9999; | |
1161 ins_cost_per_char = 0; | |
1162 } | |
1163 | |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
1164 if (tty->TS_del_multi_chars) |
253 | 1165 { |
1166 del_cost_per_char = 0; | |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
1167 del_startup_cost = string_cost_one_line (tty->TS_del_multi_chars); |
253 | 1168 } |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
1169 else if (tty->TS_del_char) |
253 | 1170 { |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
1171 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
|
1172 + string_cost (tty->TS_end_delete_mode)); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
1173 if (tty->delete_in_insert_mode) |
253 | 1174 del_startup_cost /= 2; |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
1175 del_cost_per_char = string_cost_one_line (tty->TS_del_char); |
253 | 1176 } |
1177 else | |
1178 { | |
1179 del_startup_cost = 9999; | |
1180 del_cost_per_char = 0; | |
1181 } | |
1182 | |
1183 /* Delete costs are at negative offsets */ | |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
1184 p = &char_ins_del_cost (f)[0]; |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
1185 for (i = FRAME_COLS (f); --i >= 0;) |
253 | 1186 *--p = (del_startup_cost += del_cost_per_char); |
1187 | |
1188 /* Doing nothing is free */ | |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
1189 p = &char_ins_del_cost (f)[0]; |
253 | 1190 *p++ = 0; |
1191 | |
1192 /* Insert costs are at positive offsets */ | |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
1193 for (i = FRAME_COLS (f); --i >= 0;) |
253 | 1194 *p++ = (ins_startup_cost += ins_cost_per_char); |
1195 } | |
1196 | |
21514 | 1197 void |
83102
a330cf2446ad
Fix segfault in term.c (reported by lukhas@free.fr).
Karoly Lorentey <lorentey@elte.hu>
parents:
83100
diff
changeset
|
1198 calculate_costs (struct frame *frame) |
253 | 1199 { |
10121
3f9f77a9488d
(calculate_costs): Set FRAME_COST_BAUD_RATE.
Richard M. Stallman <rms@gnu.org>
parents:
9797
diff
changeset
|
1200 FRAME_COST_BAUD_RATE (frame) = baud_rate; |
253 | 1201 |
53226
dd3018b4785b
Implemented multiple tty support.
Karoly Lorentey <lorentey@elte.hu>
parents:
53225
diff
changeset
|
1202 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
|
1203 { |
2ecd1f669db9
Fixed X support, preliminary support for X-tty combo sessions.
Karoly Lorentey <lorentey@elte.hu>
parents:
82989
diff
changeset
|
1204 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
|
1205 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
|
1206 ? 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
|
1207 : 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
|
1208 |
2ecd1f669db9
Fixed X support, preliminary support for X-tty combo sessions.
Karoly Lorentey <lorentey@elte.hu>
parents:
82989
diff
changeset
|
1209 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
|
1210 |
2ecd1f669db9
Fixed X support, preliminary support for X-tty combo sessions.
Karoly Lorentey <lorentey@elte.hu>
parents:
82989
diff
changeset
|
1211 tty->costs_set = 1; |
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 /* 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
|
1214 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
|
1215 used afterwards. |
2ecd1f669db9
Fixed X support, preliminary support for X-tty combo sessions.
Karoly Lorentey <lorentey@elte.hu>
parents:
82989
diff
changeset
|
1216 |
2ecd1f669db9
Fixed X support, preliminary support for X-tty combo sessions.
Karoly Lorentey <lorentey@elte.hu>
parents:
82989
diff
changeset
|
1217 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
|
1218 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
|
1219 |
2ecd1f669db9
Fixed X support, preliminary support for X-tty combo sessions.
Karoly Lorentey <lorentey@elte.hu>
parents:
82989
diff
changeset
|
1220 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
|
1221 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
|
1222 |
2ecd1f669db9
Fixed X support, preliminary support for X-tty combo sessions.
Karoly Lorentey <lorentey@elte.hu>
parents:
82989
diff
changeset
|
1223 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
|
1224 char_ins_del_vector |
2ecd1f669db9
Fixed X support, preliminary support for X-tty combo sessions.
Karoly Lorentey <lorentey@elte.hu>
parents:
82989
diff
changeset
|
1225 = (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
|
1226 (sizeof (int) |
2ecd1f669db9
Fixed X support, preliminary support for X-tty combo sessions.
Karoly Lorentey <lorentey@elte.hu>
parents:
82989
diff
changeset
|
1227 + 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
|
1228 else |
2ecd1f669db9
Fixed X support, preliminary support for X-tty combo sessions.
Karoly Lorentey <lorentey@elte.hu>
parents:
82989
diff
changeset
|
1229 char_ins_del_vector |
2ecd1f669db9
Fixed X support, preliminary support for X-tty combo sessions.
Karoly Lorentey <lorentey@elte.hu>
parents:
82989
diff
changeset
|
1230 = (int *) xmalloc (sizeof (int) |
2ecd1f669db9
Fixed X support, preliminary support for X-tty combo sessions.
Karoly Lorentey <lorentey@elte.hu>
parents:
82989
diff
changeset
|
1231 + 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
|
1232 |
2ecd1f669db9
Fixed X support, preliminary support for X-tty combo sessions.
Karoly Lorentey <lorentey@elte.hu>
parents:
82989
diff
changeset
|
1233 bzero (char_ins_del_vector, (sizeof (int) |
2ecd1f669db9
Fixed X support, preliminary support for X-tty combo sessions.
Karoly Lorentey <lorentey@elte.hu>
parents:
82989
diff
changeset
|
1234 + 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
|
1235 |
2ecd1f669db9
Fixed X support, preliminary support for X-tty combo sessions.
Karoly Lorentey <lorentey@elte.hu>
parents:
82989
diff
changeset
|
1236 |
2ecd1f669db9
Fixed X support, preliminary support for X-tty combo sessions.
Karoly Lorentey <lorentey@elte.hu>
parents:
82989
diff
changeset
|
1237 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
|
1238 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
|
1239 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
|
1240 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
|
1241 f, f, 1); |
2ecd1f669db9
Fixed X support, preliminary support for X-tty combo sessions.
Karoly Lorentey <lorentey@elte.hu>
parents:
82989
diff
changeset
|
1242 else |
2ecd1f669db9
Fixed X support, preliminary support for X-tty combo sessions.
Karoly Lorentey <lorentey@elte.hu>
parents:
82989
diff
changeset
|
1243 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
|
1244 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
|
1245 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
|
1246 0, 0, 1); |
2ecd1f669db9
Fixed X support, preliminary support for X-tty combo sessions.
Karoly Lorentey <lorentey@elte.hu>
parents:
82989
diff
changeset
|
1247 |
2ecd1f669db9
Fixed X support, preliminary support for X-tty combo sessions.
Karoly Lorentey <lorentey@elte.hu>
parents:
82989
diff
changeset
|
1248 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
|
1249 |
2ecd1f669db9
Fixed X support, preliminary support for X-tty combo sessions.
Karoly Lorentey <lorentey@elte.hu>
parents:
82989
diff
changeset
|
1250 /* 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
|
1251 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
|
1252 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
|
1253 else |
2ecd1f669db9
Fixed X support, preliminary support for X-tty combo sessions.
Karoly Lorentey <lorentey@elte.hu>
parents:
82989
diff
changeset
|
1254 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
|
1255 |
2ecd1f669db9
Fixed X support, preliminary support for X-tty combo sessions.
Karoly Lorentey <lorentey@elte.hu>
parents:
82989
diff
changeset
|
1256 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
|
1257 } |
253 | 1258 } |
1259 | |
1015
58c373be762c
* term.c (term_get_fkeys): Some systems define `static' to be the
Jim Blandy <jimb@redhat.com>
parents:
969
diff
changeset
|
1260 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
|
1261 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
|
1262 }; |
58c373be762c
* term.c (term_get_fkeys): Some systems define `static' to be the
Jim Blandy <jimb@redhat.com>
parents:
969
diff
changeset
|
1263 |
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
|
1264 /* 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
|
1265 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
|
1266 (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
|
1267 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
|
1268 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
|
1269 */ |
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
|
1270 |
25002 | 1271 static struct fkey_table keys[] = |
1272 { | |
42122
706558f91b28
(keys): Add missing braces around initializer.
Pavel Janík <Pavel@Janik.cz>
parents:
40086
diff
changeset
|
1273 {"kh", "home"}, /* termcap */ |
706558f91b28
(keys): Add missing braces around initializer.
Pavel Janík <Pavel@Janik.cz>
parents:
40086
diff
changeset
|
1274 {"kl", "left"}, /* termcap */ |
706558f91b28
(keys): Add missing braces around initializer.
Pavel Janík <Pavel@Janik.cz>
parents:
40086
diff
changeset
|
1275 {"ku", "up"}, /* termcap */ |
706558f91b28
(keys): Add missing braces around initializer.
Pavel Janík <Pavel@Janik.cz>
parents:
40086
diff
changeset
|
1276 {"kr", "right"}, /* termcap */ |
706558f91b28
(keys): Add missing braces around initializer.
Pavel Janík <Pavel@Janik.cz>
parents:
40086
diff
changeset
|
1277 {"kd", "down"}, /* termcap */ |
706558f91b28
(keys): Add missing braces around initializer.
Pavel Janík <Pavel@Janik.cz>
parents:
40086
diff
changeset
|
1278 {"%8", "prior"}, /* terminfo */ |
706558f91b28
(keys): Add missing braces around initializer.
Pavel Janík <Pavel@Janik.cz>
parents:
40086
diff
changeset
|
1279 {"%5", "next"}, /* terminfo */ |
706558f91b28
(keys): Add missing braces around initializer.
Pavel Janík <Pavel@Janik.cz>
parents:
40086
diff
changeset
|
1280 {"@7", "end"}, /* terminfo */ |
706558f91b28
(keys): Add missing braces around initializer.
Pavel Janík <Pavel@Janik.cz>
parents:
40086
diff
changeset
|
1281 {"@1", "begin"}, /* terminfo */ |
706558f91b28
(keys): Add missing braces around initializer.
Pavel Janík <Pavel@Janik.cz>
parents:
40086
diff
changeset
|
1282 {"*6", "select"}, /* terminfo */ |
706558f91b28
(keys): Add missing braces around initializer.
Pavel Janík <Pavel@Janik.cz>
parents:
40086
diff
changeset
|
1283 {"%9", "print"}, /* terminfo */ |
706558f91b28
(keys): Add missing braces around initializer.
Pavel Janík <Pavel@Janik.cz>
parents:
40086
diff
changeset
|
1284 {"@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
|
1285 /* |
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 * "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
|
1287 */ |
42122
706558f91b28
(keys): Add missing braces around initializer.
Pavel Janík <Pavel@Janik.cz>
parents:
40086
diff
changeset
|
1288 {"&8", "undo"}, /* terminfo */ |
706558f91b28
(keys): Add missing braces around initializer.
Pavel Janík <Pavel@Janik.cz>
parents:
40086
diff
changeset
|
1289 {"%0", "redo"}, /* terminfo */ |
706558f91b28
(keys): Add missing braces around initializer.
Pavel Janík <Pavel@Janik.cz>
parents:
40086
diff
changeset
|
1290 {"%7", "menu"}, /* terminfo --- actually the `options' key */ |
706558f91b28
(keys): Add missing braces around initializer.
Pavel Janík <Pavel@Janik.cz>
parents:
40086
diff
changeset
|
1291 {"@0", "find"}, /* terminfo */ |
706558f91b28
(keys): Add missing braces around initializer.
Pavel Janík <Pavel@Janik.cz>
parents:
40086
diff
changeset
|
1292 {"@2", "cancel"}, /* terminfo */ |
706558f91b28
(keys): Add missing braces around initializer.
Pavel Janík <Pavel@Janik.cz>
parents:
40086
diff
changeset
|
1293 {"%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
|
1294 /* |
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 * "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
|
1296 */ |
42122
706558f91b28
(keys): Add missing braces around initializer.
Pavel Janík <Pavel@Janik.cz>
parents:
40086
diff
changeset
|
1297 {"&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
|
1298 /* |
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 * "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
|
1300 */ |
42122
706558f91b28
(keys): Add missing braces around initializer.
Pavel Janík <Pavel@Janik.cz>
parents:
40086
diff
changeset
|
1301 {"kE", "clearline"}, /* terminfo */ |
706558f91b28
(keys): Add missing braces around initializer.
Pavel Janík <Pavel@Janik.cz>
parents:
40086
diff
changeset
|
1302 {"kA", "insertline"}, /* terminfo */ |
706558f91b28
(keys): Add missing braces around initializer.
Pavel Janík <Pavel@Janik.cz>
parents:
40086
diff
changeset
|
1303 {"kL", "deleteline"}, /* terminfo */ |
706558f91b28
(keys): Add missing braces around initializer.
Pavel Janík <Pavel@Janik.cz>
parents:
40086
diff
changeset
|
1304 {"kI", "insertchar"}, /* terminfo */ |
706558f91b28
(keys): Add missing braces around initializer.
Pavel Janík <Pavel@Janik.cz>
parents:
40086
diff
changeset
|
1305 {"kD", "deletechar"}, /* terminfo */ |
706558f91b28
(keys): Add missing braces around initializer.
Pavel Janík <Pavel@Janik.cz>
parents:
40086
diff
changeset
|
1306 {"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
|
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_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
|
1309 */ |
42122
706558f91b28
(keys): Add missing braces around initializer.
Pavel Janík <Pavel@Janik.cz>
parents:
40086
diff
changeset
|
1310 {"@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
|
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-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
|
1313 * "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
|
1314 * "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
|
1315 * --- 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
|
1316 */ |
42122
706558f91b28
(keys): Add missing braces around initializer.
Pavel Janík <Pavel@Janik.cz>
parents:
40086
diff
changeset
|
1317 {"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
|
1318 /* |
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
|
1319 * "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
|
1320 */ |
42122
706558f91b28
(keys): Add missing braces around initializer.
Pavel Janík <Pavel@Janik.cz>
parents:
40086
diff
changeset
|
1321 {"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
|
1322 /* |
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
|
1323 * "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
|
1324 */ |
42122
706558f91b28
(keys): Add missing braces around initializer.
Pavel Janík <Pavel@Janik.cz>
parents:
40086
diff
changeset
|
1325 {"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
|
1326 /* |
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
|
1327 * "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
|
1328 */ |
42122
706558f91b28
(keys): Add missing braces around initializer.
Pavel Janík <Pavel@Janik.cz>
parents:
40086
diff
changeset
|
1329 {"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
|
1330 /* |
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
|
1331 * "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
|
1332 */ |
42122
706558f91b28
(keys): Add missing braces around initializer.
Pavel Janík <Pavel@Janik.cz>
parents:
40086
diff
changeset
|
1333 {"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
|
1334 /* |
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
|
1335 * "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
|
1336 */ |
42122
706558f91b28
(keys): Add missing braces around initializer.
Pavel Janík <Pavel@Janik.cz>
parents:
40086
diff
changeset
|
1337 {"k1", "f1"}, |
706558f91b28
(keys): Add missing braces around initializer.
Pavel Janík <Pavel@Janik.cz>
parents:
40086
diff
changeset
|
1338 {"k2", "f2"}, |
706558f91b28
(keys): Add missing braces around initializer.
Pavel Janík <Pavel@Janik.cz>
parents:
40086
diff
changeset
|
1339 {"k3", "f3"}, |
706558f91b28
(keys): Add missing braces around initializer.
Pavel Janík <Pavel@Janik.cz>
parents:
40086
diff
changeset
|
1340 {"k4", "f4"}, |
706558f91b28
(keys): Add missing braces around initializer.
Pavel Janík <Pavel@Janik.cz>
parents:
40086
diff
changeset
|
1341 {"k5", "f5"}, |
706558f91b28
(keys): Add missing braces around initializer.
Pavel Janík <Pavel@Janik.cz>
parents:
40086
diff
changeset
|
1342 {"k6", "f6"}, |
706558f91b28
(keys): Add missing braces around initializer.
Pavel Janík <Pavel@Janik.cz>
parents:
40086
diff
changeset
|
1343 {"k7", "f7"}, |
706558f91b28
(keys): Add missing braces around initializer.
Pavel Janík <Pavel@Janik.cz>
parents:
40086
diff
changeset
|
1344 {"k8", "f8"}, |
61591
b015e12637bc
(struct keys): Add support for shifted keys.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
59382
diff
changeset
|
1345 {"k9", "f9"}, |
b015e12637bc
(struct keys): Add support for shifted keys.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
59382
diff
changeset
|
1346 |
b015e12637bc
(struct keys): Add support for shifted keys.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
59382
diff
changeset
|
1347 {"&0", "S-cancel"}, /*shifted cancel key*/ |
b015e12637bc
(struct keys): Add support for shifted keys.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
59382
diff
changeset
|
1348 {"&9", "S-begin"}, /*shifted begin key*/ |
b015e12637bc
(struct keys): Add support for shifted keys.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
59382
diff
changeset
|
1349 {"*0", "S-find"}, /*shifted find key*/ |
b015e12637bc
(struct keys): Add support for shifted keys.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
59382
diff
changeset
|
1350 {"*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
|
1351 {"*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
|
1352 {"*7", "S-end"}, /*shifted end key*/ |
b015e12637bc
(struct keys): Add support for shifted keys.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
59382
diff
changeset
|
1353 {"*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
|
1354 {"#1", "S-help"}, /*shifted help key*/ |
b015e12637bc
(struct keys): Add support for shifted keys.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
59382
diff
changeset
|
1355 {"#2", "S-home"}, /*shifted home key*/ |
b015e12637bc
(struct keys): Add support for shifted keys.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
59382
diff
changeset
|
1356 {"#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
|
1357 {"#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
|
1358 {"%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
|
1359 {"%c", "S-next"}, /*shifted next key*/ |
b015e12637bc
(struct keys): Add support for shifted keys.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
59382
diff
changeset
|
1360 {"%e", "S-prior"}, /*shifted previous key*/ |
b015e12637bc
(struct keys): Add support for shifted keys.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
59382
diff
changeset
|
1361 {"%f", "S-print"}, /*shifted print key*/ |
b015e12637bc
(struct keys): Add support for shifted keys.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
59382
diff
changeset
|
1362 {"%g", "S-redo"}, /*shifted redo key*/ |
b015e12637bc
(struct keys): Add support for shifted keys.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
59382
diff
changeset
|
1363 {"%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
|
1364 {"!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
|
1365 }; |
58c373be762c
* term.c (term_get_fkeys): Some systems define `static' to be the
Jim Blandy <jimb@redhat.com>
parents:
969
diff
changeset
|
1366 |
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
|
1367 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
|
1368 static KBOARD *term_get_fkeys_kboard; |
6248
0e4319197d29
(term_get_fkeys_data): Variable removed.
Roland McGrath <roland@gnu.org>
parents:
5933
diff
changeset
|
1369 static Lisp_Object term_get_fkeys_1 (); |
4543
929e4c850e76
(term_get_fkeys_define_1, term_get_fkeys_define): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
4499
diff
changeset
|
1370 |
85106
fd282fb888de
Add new `input-decode-map' keymap and use it for temrinal
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
84981
diff
changeset
|
1371 /* 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
|
1372 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
|
1373 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
|
1374 |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
1375 static void |
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
|
1376 term_get_fkeys (address, kboard) |
533 | 1377 char **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
|
1378 KBOARD *kboard; |
533 | 1379 { |
6248
0e4319197d29
(term_get_fkeys_data): Variable removed.
Roland McGrath <roland@gnu.org>
parents:
5933
diff
changeset
|
1380 /* 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
|
1381 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
|
1382 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
|
1383 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
|
1384 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
|
1385 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
|
1386 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
|
1387 |
0e4319197d29
(term_get_fkeys_data): Variable removed.
Roland McGrath <roland@gnu.org>
parents:
5933
diff
changeset
|
1388 extern Lisp_Object Fidentity (); |
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
|
1389 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
|
1390 term_get_fkeys_kboard = kboard; |
6248
0e4319197d29
(term_get_fkeys_data): Variable removed.
Roland McGrath <roland@gnu.org>
parents:
5933
diff
changeset
|
1391 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
|
1392 } |
0e4319197d29
(term_get_fkeys_data): Variable removed.
Roland McGrath <roland@gnu.org>
parents:
5933
diff
changeset
|
1393 |
0e4319197d29
(term_get_fkeys_data): Variable removed.
Roland McGrath <roland@gnu.org>
parents:
5933
diff
changeset
|
1394 static Lisp_Object |
0e4319197d29
(term_get_fkeys_data): Variable removed.
Roland McGrath <roland@gnu.org>
parents:
5933
diff
changeset
|
1395 term_get_fkeys_1 () |
0e4319197d29
(term_get_fkeys_data): Variable removed.
Roland McGrath <roland@gnu.org>
parents:
5933
diff
changeset
|
1396 { |
533 | 1397 int i; |
1398 | |
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
|
1399 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
|
1400 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
|
1401 |
3359
ef29e2a4fc46
(term_get_fkeys): If not initialized, init Vfunction_key_map.
Richard M. Stallman <rms@gnu.org>
parents:
2961
diff
changeset
|
1402 /* 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
|
1403 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
|
1404 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
|
1405 |
533 | 1406 for (i = 0; i < (sizeof (keys)/sizeof (keys[0])); i++) |
1407 { | |
1408 char *sequence = tgetstr (keys[i].cap, address); | |
1409 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
|
1410 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
|
1411 Fmake_vector (make_number (1), |
0e4319197d29
(term_get_fkeys_data): Variable removed.
Roland McGrath <roland@gnu.org>
parents:
5933
diff
changeset
|
1412 intern (keys[i].name))); |
533 | 1413 } |
1015
58c373be762c
* term.c (term_get_fkeys): Some systems define `static' to be the
Jim Blandy <jimb@redhat.com>
parents:
969
diff
changeset
|
1414 |
58c373be762c
* term.c (term_get_fkeys): Some systems define `static' to be the
Jim Blandy <jimb@redhat.com>
parents:
969
diff
changeset
|
1415 /* 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
|
1416 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
|
1417 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
|
1418 "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
|
1419 */ |
58c373be762c
* term.c (term_get_fkeys): Some systems define `static' to be the
Jim Blandy <jimb@redhat.com>
parents:
969
diff
changeset
|
1420 { |
58c373be762c
* term.c (term_get_fkeys): Some systems define `static' to be the
Jim Blandy <jimb@redhat.com>
parents:
969
diff
changeset
|
1421 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
|
1422 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
|
1423 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
|
1424 |
58c373be762c
* term.c (term_get_fkeys): Some systems define `static' to be the
Jim Blandy <jimb@redhat.com>
parents:
969
diff
changeset
|
1425 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
|
1426 { |
43073
c9baf4b00820
(term_get_fkeys_1): If `k0' and `k;' are both specified and
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
42959
diff
changeset
|
1427 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
|
1428 /* 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
|
1429 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
|
1430 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
|
1431 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
|
1432 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
|
1433 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
|
1434 } |
43073
c9baf4b00820
(term_get_fkeys_1): If `k0' and `k;' are both specified and
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
42959
diff
changeset
|
1435 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
|
1436 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
|
1437 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
|
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 /* 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
|
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 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
|
1443 |
3489
5c2b4797aab2
(term_get_fkeys): Use correct names for F10 and up.
Richard M. Stallman <rms@gnu.org>
parents:
3359
diff
changeset
|
1444 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
|
1445 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
|
1446 { |
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
|
1447 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
|
1448 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
|
1449 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
|
1450 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
|
1451 else |
10481
24756aef26e3
(term_get_fkeys_1): Bug fix for function key above f19.
Richard M. Stallman <rms@gnu.org>
parents:
10439
diff
changeset
|
1452 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
|
1453 |
3489
5c2b4797aab2
(term_get_fkeys): Use correct names for F10 and up.
Richard M. Stallman <rms@gnu.org>
parents:
3359
diff
changeset
|
1454 { |
5c2b4797aab2
(term_get_fkeys): Use correct names for F10 and up.
Richard M. Stallman <rms@gnu.org>
parents:
3359
diff
changeset
|
1455 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
|
1456 if (sequence) |
5c2b4797aab2
(term_get_fkeys): Use correct names for F10 and up.
Richard M. Stallman <rms@gnu.org>
parents:
3359
diff
changeset
|
1457 { |
4543
929e4c850e76
(term_get_fkeys_define_1, term_get_fkeys_define): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
4499
diff
changeset
|
1458 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
|
1459 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
|
1460 Fmake_vector (make_number (1), |
0e4319197d29
(term_get_fkeys_data): Variable removed.
Roland McGrath <roland@gnu.org>
parents:
5933
diff
changeset
|
1461 intern (fkey))); |
3489
5c2b4797aab2
(term_get_fkeys): Use correct names for F10 and up.
Richard M. Stallman <rms@gnu.org>
parents:
3359
diff
changeset
|
1462 } |
5c2b4797aab2
(term_get_fkeys): Use correct names for F10 and up.
Richard M. Stallman <rms@gnu.org>
parents:
3359
diff
changeset
|
1463 } |
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
|
1464 } |
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
|
1465 } |
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
|
1466 |
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
|
1467 /* |
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
|
1468 * 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
|
1469 */ |
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
|
1470 { |
3489
5c2b4797aab2
(term_get_fkeys): Use correct names for F10 and up.
Richard M. Stallman <rms@gnu.org>
parents:
3359
diff
changeset
|
1471 #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
|
1472 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
|
1473 { \ |
5c2b4797aab2
(term_get_fkeys): Use correct names for F10 and up.
Richard M. Stallman <rms@gnu.org>
parents:
3359
diff
changeset
|
1474 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
|
1475 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
|
1476 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
|
1477 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
|
1478 intern (sym))); \ |
3489
5c2b4797aab2
(term_get_fkeys): Use correct names for F10 and up.
Richard M. Stallman <rms@gnu.org>
parents:
3359
diff
changeset
|
1479 } |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
46559
diff
changeset
|
1480 |
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
|
1481 /* 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
|
1482 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
|
1483 /* 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
|
1484 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
|
1485 /* 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
|
1486 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
|
1487 /* 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
|
1488 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
|
1489 |
f42e5fd15f6f
(term_get_fkeys_1): Workaround for IBM's dialect of terminfo.
Karl Heuer <kwzh@gnu.org>
parents:
8898
diff
changeset
|
1490 /* 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
|
1491 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
|
1492 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
|
1493 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
|
1494 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
|
1495 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
|
1496 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
|
1497 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
|
1498 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
|
1499 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
|
1500 CONDITIONAL_REASSIGN ("*6", "kU", "select"); |
2224
49bda4cf498c
Supply second arg for tgetstr() calls.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2179
diff
changeset
|
1501 #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
|
1502 } |
25002 | 1503 |
1504 return Qnil; | |
533 | 1505 } |
1506 | |
1507 | |
25002 | 1508 /*********************************************************************** |
1509 Character Display Information | |
1510 ***********************************************************************/ | |
1511 | |
69637
8b3e0cacc358
Define aliases for append_glyph and produce_stretch_glyph
Kim F. Storm <storm@cua.dk>
parents:
68661
diff
changeset
|
1512 /* Avoid name clash with functions defined in xterm.c */ |
8b3e0cacc358
Define aliases for append_glyph and produce_stretch_glyph
Kim F. Storm <storm@cua.dk>
parents:
68661
diff
changeset
|
1513 #ifdef static |
8b3e0cacc358
Define aliases for append_glyph and produce_stretch_glyph
Kim F. Storm <storm@cua.dk>
parents:
68661
diff
changeset
|
1514 #define append_glyph append_glyph_term |
8b3e0cacc358
Define aliases for append_glyph and produce_stretch_glyph
Kim F. Storm <storm@cua.dk>
parents:
68661
diff
changeset
|
1515 #define produce_stretch_glyph produce_stretch_glyph_term |
90638 | 1516 #define append_composite_glyph append_composite_glyph_term |
1517 #define produce_composite_glyph produce_composite_glyph_term | |
69637
8b3e0cacc358
Define aliases for append_glyph and produce_stretch_glyph
Kim F. Storm <storm@cua.dk>
parents:
68661
diff
changeset
|
1518 #endif |
8b3e0cacc358
Define aliases for append_glyph and produce_stretch_glyph
Kim F. Storm <storm@cua.dk>
parents:
68661
diff
changeset
|
1519 |
25002 | 1520 static void append_glyph P_ ((struct it *)); |
54428
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1521 static void produce_stretch_glyph P_ ((struct it *)); |
90638 | 1522 static void append_composite_glyph P_ ((struct it *)); |
1523 static void produce_composite_glyph P_ ((struct it *)); | |
25002 | 1524 |
1525 /* 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
|
1526 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
|
1527 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
|
1528 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
|
1529 IT->pixel_width > 1. */ |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
46559
diff
changeset
|
1530 |
25002 | 1531 static void |
1532 append_glyph (it) | |
1533 struct it *it; | |
1534 { | |
1535 struct glyph *glyph, *end; | |
1536 int i; | |
1537 | |
1538 xassert (it->glyph_row); | |
1539 glyph = (it->glyph_row->glyphs[it->area] | |
1540 + it->glyph_row->used[it->area]); | |
1541 end = it->glyph_row->glyphs[1 + it->area]; | |
1542 | |
107598
4bad2c6338cc
Retrospective commit from 2009-10-17.
Eli Zaretskii <eliz@gnu.org>
parents:
106244
diff
changeset
|
1543 /* 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
|
1544 than append it. */ |
4bad2c6338cc
Retrospective commit from 2009-10-17.
Eli Zaretskii <eliz@gnu.org>
parents:
106244
diff
changeset
|
1545 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
|
1546 { |
4bad2c6338cc
Retrospective commit from 2009-10-17.
Eli Zaretskii <eliz@gnu.org>
parents:
106244
diff
changeset
|
1547 struct glyph *g; |
4bad2c6338cc
Retrospective commit from 2009-10-17.
Eli Zaretskii <eliz@gnu.org>
parents:
106244
diff
changeset
|
1548 int move_by = it->pixel_width; |
4bad2c6338cc
Retrospective commit from 2009-10-17.
Eli Zaretskii <eliz@gnu.org>
parents:
106244
diff
changeset
|
1549 |
4bad2c6338cc
Retrospective commit from 2009-10-17.
Eli Zaretskii <eliz@gnu.org>
parents:
106244
diff
changeset
|
1550 /* Make room for the new glyphs. */ |
4bad2c6338cc
Retrospective commit from 2009-10-17.
Eli Zaretskii <eliz@gnu.org>
parents:
106244
diff
changeset
|
1551 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
|
1552 move_by = end - glyph; |
4bad2c6338cc
Retrospective commit from 2009-10-17.
Eli Zaretskii <eliz@gnu.org>
parents:
106244
diff
changeset
|
1553 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
|
1554 g[move_by] = *g; |
4bad2c6338cc
Retrospective commit from 2009-10-17.
Eli Zaretskii <eliz@gnu.org>
parents:
106244
diff
changeset
|
1555 glyph = it->glyph_row->glyphs[it->area]; |
4bad2c6338cc
Retrospective commit from 2009-10-17.
Eli Zaretskii <eliz@gnu.org>
parents:
106244
diff
changeset
|
1556 end = glyph + move_by; |
4bad2c6338cc
Retrospective commit from 2009-10-17.
Eli Zaretskii <eliz@gnu.org>
parents:
106244
diff
changeset
|
1557 } |
4bad2c6338cc
Retrospective commit from 2009-10-17.
Eli Zaretskii <eliz@gnu.org>
parents:
106244
diff
changeset
|
1558 |
4bad2c6338cc
Retrospective commit from 2009-10-17.
Eli Zaretskii <eliz@gnu.org>
parents:
106244
diff
changeset
|
1559 /* 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
|
1560 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
|
1561 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
|
1562 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
|
1563 for (i = 0; |
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
46559
diff
changeset
|
1564 i < it->pixel_width && glyph < end; |
25002 | 1565 ++i) |
1566 { | |
1567 glyph->type = CHAR_GLYPH; | |
29462
3306af2e4f3d
(append_glyph): Revert change of 2000-06-06.
Gerd Moellmann <gerd@gnu.org>
parents:
29448
diff
changeset
|
1568 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
|
1569 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
|
1570 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
|
1571 glyph->padding_p = i > 0; |
25002 | 1572 glyph->charpos = CHARPOS (it->position); |
1573 glyph->object = it->object; | |
107598
4bad2c6338cc
Retrospective commit from 2009-10-17.
Eli Zaretskii <eliz@gnu.org>
parents:
106244
diff
changeset
|
1574 if (it->bidi_p) |
4bad2c6338cc
Retrospective commit from 2009-10-17.
Eli Zaretskii <eliz@gnu.org>
parents:
106244
diff
changeset
|
1575 { |
4bad2c6338cc
Retrospective commit from 2009-10-17.
Eli Zaretskii <eliz@gnu.org>
parents:
106244
diff
changeset
|
1576 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
|
1577 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
|
1578 abort (); |
107598
4bad2c6338cc
Retrospective commit from 2009-10-17.
Eli Zaretskii <eliz@gnu.org>
parents:
106244
diff
changeset
|
1579 glyph->bidi_type = it->bidi_it.type; |
4bad2c6338cc
Retrospective commit from 2009-10-17.
Eli Zaretskii <eliz@gnu.org>
parents:
106244
diff
changeset
|
1580 } |
107606
297c59e52ecf
Retrospective commit from 2009-12-26.
Eli Zaretskii <eliz@gnu.org>
parents:
107598
diff
changeset
|
1581 else |
297c59e52ecf
Retrospective commit from 2009-12-26.
Eli Zaretskii <eliz@gnu.org>
parents:
107598
diff
changeset
|
1582 { |
297c59e52ecf
Retrospective commit from 2009-12-26.
Eli Zaretskii <eliz@gnu.org>
parents:
107598
diff
changeset
|
1583 glyph->resolved_level = 0; |
297c59e52ecf
Retrospective commit from 2009-12-26.
Eli Zaretskii <eliz@gnu.org>
parents:
107598
diff
changeset
|
1584 glyph->bidi_type = UNKNOWN_BT; |
297c59e52ecf
Retrospective commit from 2009-12-26.
Eli Zaretskii <eliz@gnu.org>
parents:
107598
diff
changeset
|
1585 } |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
46559
diff
changeset
|
1586 |
25002 | 1587 ++it->glyph_row->used[it->area]; |
1588 ++glyph; | |
1589 } | |
1590 } | |
1591 | |
44372 | 1592 /* Produce glyphs for the display element described by IT. *IT |
1593 specifies what we want to produce a glyph for (character, image, ...), | |
1594 and where in the glyph matrix we currently are (glyph row and hpos). | |
1595 produce_glyphs fills in output fields of *IT with information such as the | |
1596 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
|
1597 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
|
1598 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
|
1599 display_element_type enumeration. |
44372 | 1600 |
1601 produce_glyphs also stores the result of glyph width, ascent | |
1602 etc. computations in *IT. | |
1603 | |
1604 IT->glyph_row may be null, in which case produce_glyphs does not | |
1605 actually fill in the glyphs. This is used in the move_* functions | |
1606 in xdisp.c for text width and height computations. | |
1607 | |
1608 Callers usually don't call produce_glyphs directly; | |
1609 instead they use the macro PRODUCE_GLYPHS. */ | |
25002 | 1610 |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
46559
diff
changeset
|
1611 void |
25002 | 1612 produce_glyphs (it) |
1613 struct it *it; | |
1614 { | |
1615 /* If a hook is installed, let it do the work. */ | |
90638 | 1616 |
1617 /* Nothing but characters are supported on terminal frames. */ | |
25002 | 1618 xassert (it->what == IT_CHARACTER |
26871
aaf45e665b14
(encode_terminal_code): Delete codes for a composite
Kenichi Handa <handa@m17n.org>
parents:
26425
diff
changeset
|
1619 || it->what == IT_COMPOSITION |
25002 | 1620 || it->what == IT_STRETCH); |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
46559
diff
changeset
|
1621 |
54428
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1622 if (it->what == IT_STRETCH) |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1623 { |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1624 produce_stretch_glyph (it); |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1625 goto done; |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1626 } |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1627 |
90638 | 1628 if (it->what == IT_COMPOSITION) |
1629 { | |
1630 produce_composite_glyph (it); | |
1631 goto done; | |
1632 } | |
25002 | 1633 |
68661
4e22dd401a52
(append_glyph): Refer to it->char_to_display instead of
Kenichi Handa <handa@m17n.org>
parents:
68651
diff
changeset
|
1634 /* Maybe translate single-byte characters to multibyte. */ |
4e22dd401a52
(append_glyph): Refer to it->char_to_display instead of
Kenichi Handa <handa@m17n.org>
parents:
68651
diff
changeset
|
1635 it->char_to_display = it->c; |
4e22dd401a52
(append_glyph): Refer to it->char_to_display instead of
Kenichi Handa <handa@m17n.org>
parents:
68651
diff
changeset
|
1636 |
25002 | 1637 if (it->c >= 040 && it->c < 0177) |
1638 { | |
1639 it->pixel_width = it->nglyphs = 1; | |
1640 if (it->glyph_row) | |
1641 append_glyph (it); | |
1642 } | |
1643 else if (it->c == '\n') | |
1644 it->pixel_width = it->nglyphs = 0; | |
1645 else if (it->c == '\t') | |
1646 { | |
28685
b4310b6f3b5e
(produce_glyphs): Remove reference to struct it's prompt_width.
Gerd Moellmann <gerd@gnu.org>
parents:
28507
diff
changeset
|
1647 int absolute_x = (it->current_x |
25002 | 1648 + it->continuation_lines_width); |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
46559
diff
changeset
|
1649 int next_tab_x |
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
46559
diff
changeset
|
1650 = (((1 + absolute_x + it->tab_width - 1) |
25002 | 1651 / it->tab_width) |
1652 * it->tab_width); | |
1653 int nspaces; | |
1654 | |
1655 /* If part of the TAB has been displayed on the previous line | |
1656 which is continued now, continuation_lines_width will have | |
1657 been incremented already by the part that fitted on the | |
1658 continued line. So, we will get the right number of spaces | |
1659 here. */ | |
1660 nspaces = next_tab_x - absolute_x; | |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
46559
diff
changeset
|
1661 |
25002 | 1662 if (it->glyph_row) |
1663 { | |
1664 int n = nspaces; | |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
46559
diff
changeset
|
1665 |
68661
4e22dd401a52
(append_glyph): Refer to it->char_to_display instead of
Kenichi Handa <handa@m17n.org>
parents:
68651
diff
changeset
|
1666 it->char_to_display = ' '; |
25002 | 1667 it->pixel_width = it->len = 1; |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
46559
diff
changeset
|
1668 |
25002 | 1669 while (n--) |
1670 append_glyph (it); | |
1671 } | |
1672 | |
1673 it->pixel_width = nspaces; | |
1674 it->nglyphs = nspaces; | |
1675 } | |
89566
86c0ff434620
(encode_terminal_code): Don't handle glyph-table. Check
Kenichi Handa <handa@m17n.org>
parents:
89563
diff
changeset
|
1676 else if (CHAR_BYTE8_P (it->c)) |
29262
b7059c9f98ac
(produce_glyphs): Don't treat eight-bit-* charsets as multibyte.
Eli Zaretskii <eliz@gnu.org>
parents:
29097
diff
changeset
|
1677 { |
68661
4e22dd401a52
(append_glyph): Refer to it->char_to_display instead of
Kenichi Handa <handa@m17n.org>
parents:
68651
diff
changeset
|
1678 if (unibyte_display_via_language_environment |
90301
1f534e44acca
(produce_glyphs): Sync to HEAD.
Kenichi Handa <handa@m17n.org>
parents:
90294
diff
changeset
|
1679 && (it->c >= 0240)) |
68661
4e22dd401a52
(append_glyph): Refer to it->char_to_display instead of
Kenichi Handa <handa@m17n.org>
parents:
68651
diff
changeset
|
1680 { |
105661
bac26aa40069
Remove leftover table unibyte_to_multibyte_table.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
105426
diff
changeset
|
1681 it->char_to_display = BYTE8_TO_CHAR (it->c); |
90301
1f534e44acca
(produce_glyphs): Sync to HEAD.
Kenichi Handa <handa@m17n.org>
parents:
90294
diff
changeset
|
1682 it->pixel_width = CHAR_WIDTH (it->char_to_display); |
68661
4e22dd401a52
(append_glyph): Refer to it->char_to_display instead of
Kenichi Handa <handa@m17n.org>
parents:
68651
diff
changeset
|
1683 it->nglyphs = it->pixel_width; |
4e22dd401a52
(append_glyph): Refer to it->char_to_display instead of
Kenichi Handa <handa@m17n.org>
parents:
68651
diff
changeset
|
1684 if (it->glyph_row) |
4e22dd401a52
(append_glyph): Refer to it->char_to_display instead of
Kenichi Handa <handa@m17n.org>
parents:
68651
diff
changeset
|
1685 append_glyph (it); |
4e22dd401a52
(append_glyph): Refer to it->char_to_display instead of
Kenichi Handa <handa@m17n.org>
parents:
68651
diff
changeset
|
1686 } |
4e22dd401a52
(append_glyph): Refer to it->char_to_display instead of
Kenichi Handa <handa@m17n.org>
parents:
68651
diff
changeset
|
1687 else |
4e22dd401a52
(append_glyph): Refer to it->char_to_display instead of
Kenichi Handa <handa@m17n.org>
parents:
68651
diff
changeset
|
1688 { |
90301
1f534e44acca
(produce_glyphs): Sync to HEAD.
Kenichi Handa <handa@m17n.org>
parents:
90294
diff
changeset
|
1689 /* Coming here means that it->c is from display table, thus |
1f534e44acca
(produce_glyphs): Sync to HEAD.
Kenichi Handa <handa@m17n.org>
parents:
90294
diff
changeset
|
1690 we must send the raw 8-bit byte as is to the terminal. |
1f534e44acca
(produce_glyphs): Sync to HEAD.
Kenichi Handa <handa@m17n.org>
parents:
90294
diff
changeset
|
1691 Although there's no way to know how many columns it |
1f534e44acca
(produce_glyphs): Sync to HEAD.
Kenichi Handa <handa@m17n.org>
parents:
90294
diff
changeset
|
1692 occupies on a screen, it is a good assumption that a |
1f534e44acca
(produce_glyphs): Sync to HEAD.
Kenichi Handa <handa@m17n.org>
parents:
90294
diff
changeset
|
1693 single byte code has 1-column width. */ |
68661
4e22dd401a52
(append_glyph): Refer to it->char_to_display instead of
Kenichi Handa <handa@m17n.org>
parents:
68651
diff
changeset
|
1694 it->pixel_width = it->nglyphs = 1; |
4e22dd401a52
(append_glyph): Refer to it->char_to_display instead of
Kenichi Handa <handa@m17n.org>
parents:
68651
diff
changeset
|
1695 if (it->glyph_row) |
4e22dd401a52
(append_glyph): Refer to it->char_to_display instead of
Kenichi Handa <handa@m17n.org>
parents:
68651
diff
changeset
|
1696 append_glyph (it); |
4e22dd401a52
(append_glyph): Refer to it->char_to_display instead of
Kenichi Handa <handa@m17n.org>
parents:
68651
diff
changeset
|
1697 } |
29262
b7059c9f98ac
(produce_glyphs): Don't treat eight-bit-* charsets as multibyte.
Eli Zaretskii <eliz@gnu.org>
parents:
29097
diff
changeset
|
1698 } |
25002 | 1699 else |
1700 { | |
88391
1953d0d56cd7
Include "buffer.h" and "character.h".
Kenichi Handa <handa@m17n.org>
parents:
43073
diff
changeset
|
1701 it->pixel_width = CHAR_WIDTH (it->c); |
25002 | 1702 it->nglyphs = it->pixel_width; |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
46559
diff
changeset
|
1703 |
25002 | 1704 if (it->glyph_row) |
1705 append_glyph (it); | |
1706 } | |
1707 | |
54428
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1708 done: |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
46559
diff
changeset
|
1709 /* Advance current_x by the pixel width as a convenience for |
25002 | 1710 the caller. */ |
1711 if (it->area == TEXT_AREA) | |
1712 it->current_x += it->pixel_width; | |
25187
39feb68ed3c7
(produce_glyphs): Set iterator's physical height
Gerd Moellmann <gerd@gnu.org>
parents:
25002
diff
changeset
|
1713 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
|
1714 it->descent = it->max_descent = it->phys_descent = it->max_phys_descent = 1; |
25002 | 1715 } |
1716 | |
1717 | |
54428
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1718 /* 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
|
1719 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
|
1720 `(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
|
1721 being recognized: |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1722 |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1723 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
|
1724 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
|
1725 point number. |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1726 |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1727 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
|
1728 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
|
1729 |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1730 static void |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1731 produce_stretch_glyph (it) |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1732 struct it *it; |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1733 { |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1734 /* (space :width WIDTH ...) */ |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1735 Lisp_Object prop, plist; |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1736 int width = 0, align_to = -1; |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1737 int zero_width_ok_p = 0; |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1738 double tem; |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1739 |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1740 /* List should start with `space'. */ |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1741 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
|
1742 plist = XCDR (it->object); |
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 /* Compute the width of the stretch. */ |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1745 if ((prop = Fplist_get (plist, QCwidth), !NILP (prop)) |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1746 && 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
|
1747 { |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1748 /* Absolute width `:width WIDTH' specified and valid. */ |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1749 zero_width_ok_p = 1; |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1750 width = (int)(tem + 0.5); |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1751 } |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1752 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
|
1753 && 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
|
1754 { |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1755 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
|
1756 align_to = (align_to < 0 |
54428
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1757 ? 0 |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1758 : 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
|
1759 else if (align_to < 0) |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1760 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
|
1761 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
|
1762 zero_width_ok_p = 1; |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1763 } |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1764 else |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1765 /* Nothing specified -> width defaults to canonical char width. */ |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1766 width = FRAME_COLUMN_WIDTH (it->f); |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1767 |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1768 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
|
1769 width = 1; |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1770 |
102831
1f0beb33697b
* term.c (produce_stretch_glyph): Reduce width of stretch glyphs
Chong Yidong <cyd@stupidchicken.com>
parents:
102744
diff
changeset
|
1771 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
|
1772 && 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
|
1773 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
|
1774 |
54428
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1775 if (width > 0 && it->glyph_row) |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1776 { |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1777 Lisp_Object o_object = it->object; |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1778 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
|
1779 int n = width; |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1780 |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1781 if (!STRINGP (object)) |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1782 object = it->w->buffer; |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1783 it->object = object; |
68661
4e22dd401a52
(append_glyph): Refer to it->char_to_display instead of
Kenichi Handa <handa@m17n.org>
parents:
68651
diff
changeset
|
1784 it->char_to_display = ' '; |
54428
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1785 it->pixel_width = it->len = 1; |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1786 while (n--) |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1787 append_glyph (it); |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1788 it->object = o_object; |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1789 } |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1790 it->pixel_width = width; |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1791 it->nglyphs = width; |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1792 } |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1793 |
3a86bc69c0e3
(produce_glyphs): Handle IT_STRETCH.
Kim F. Storm <storm@cua.dk>
parents:
54167
diff
changeset
|
1794 |
90638 | 1795 /* Append glyphs to IT's glyph_row for the composition IT->cmp_id. |
1796 Called from produce_composite_glyph for terminal frames if | |
1797 IT->glyph_row != NULL. IT->face_id contains the character's | |
1798 face. */ | |
1799 | |
1800 static void | |
1801 append_composite_glyph (it) | |
1802 struct it *it; | |
1803 { | |
1804 struct glyph *glyph; | |
1805 | |
1806 xassert (it->glyph_row); | |
1807 glyph = it->glyph_row->glyphs[it->area] + it->glyph_row->used[it->area]; | |
1808 if (glyph < it->glyph_row->glyphs[1 + it->area]) | |
1809 { | |
107996
8ef8b6523597
Fix R2L paragraph display on TTY.
Eli Zaretskii <eliz@gnu.org>
parents:
107994
diff
changeset
|
1810 /* 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
|
1811 rather than append it. */ |
8ef8b6523597
Fix R2L paragraph display on TTY.
Eli Zaretskii <eliz@gnu.org>
parents:
107994
diff
changeset
|
1812 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
|
1813 { |
8ef8b6523597
Fix R2L paragraph display on TTY.
Eli Zaretskii <eliz@gnu.org>
parents:
107994
diff
changeset
|
1814 struct glyph *g; |
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 /* Make room for the new glyph. */ |
8ef8b6523597
Fix R2L paragraph display on TTY.
Eli Zaretskii <eliz@gnu.org>
parents:
107994
diff
changeset
|
1817 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
|
1818 g[1] = *g; |
8ef8b6523597
Fix R2L paragraph display on TTY.
Eli Zaretskii <eliz@gnu.org>
parents:
107994
diff
changeset
|
1819 glyph = it->glyph_row->glyphs[it->area]; |
8ef8b6523597
Fix R2L paragraph display on TTY.
Eli Zaretskii <eliz@gnu.org>
parents:
107994
diff
changeset
|
1820 } |
90638 | 1821 glyph->type = COMPOSITE_GLYPH; |
1822 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
|
1823 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
|
1824 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
|
1825 { |
62a07e57ef40
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
97720
diff
changeset
|
1826 glyph->u.cmp.automatic = 0; |
62a07e57ef40
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
97720
diff
changeset
|
1827 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
|
1828 } |
62a07e57ef40
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
97720
diff
changeset
|
1829 else |
62a07e57ef40
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
97720
diff
changeset
|
1830 { |
62a07e57ef40
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
97720
diff
changeset
|
1831 glyph->u.cmp.automatic = 1; |
62a07e57ef40
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
97720
diff
changeset
|
1832 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
|
1833 glyph->u.cmp.from = it->cmp_it.from; |
101964
05ec76bd8aa4
(encode_terminal_code): Adjusted for the change of
Kenichi Handa <handa@m17n.org>
parents:
101774
diff
changeset
|
1834 glyph->u.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
|
1835 } |
62a07e57ef40
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
97720
diff
changeset
|
1836 |
90638 | 1837 glyph->face_id = it->face_id; |
1838 glyph->padding_p = 0; | |
1839 glyph->charpos = CHARPOS (it->position); | |
1840 glyph->object = it->object; | |
107996
8ef8b6523597
Fix R2L paragraph display on TTY.
Eli Zaretskii <eliz@gnu.org>
parents:
107994
diff
changeset
|
1841 if (it->bidi_p) |
8ef8b6523597
Fix R2L paragraph display on TTY.
Eli Zaretskii <eliz@gnu.org>
parents:
107994
diff
changeset
|
1842 { |
8ef8b6523597
Fix R2L paragraph display on TTY.
Eli Zaretskii <eliz@gnu.org>
parents:
107994
diff
changeset
|
1843 glyph->resolved_level = it->bidi_it.resolved_level; |
8ef8b6523597
Fix R2L paragraph display on TTY.
Eli Zaretskii <eliz@gnu.org>
parents:
107994
diff
changeset
|
1844 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
|
1845 abort (); |
8ef8b6523597
Fix R2L paragraph display on TTY.
Eli Zaretskii <eliz@gnu.org>
parents:
107994
diff
changeset
|
1846 glyph->bidi_type = it->bidi_it.type; |
8ef8b6523597
Fix R2L paragraph display on TTY.
Eli Zaretskii <eliz@gnu.org>
parents:
107994
diff
changeset
|
1847 } |
8ef8b6523597
Fix R2L paragraph display on TTY.
Eli Zaretskii <eliz@gnu.org>
parents:
107994
diff
changeset
|
1848 else |
8ef8b6523597
Fix R2L paragraph display on TTY.
Eli Zaretskii <eliz@gnu.org>
parents:
107994
diff
changeset
|
1849 { |
8ef8b6523597
Fix R2L paragraph display on TTY.
Eli Zaretskii <eliz@gnu.org>
parents:
107994
diff
changeset
|
1850 glyph->resolved_level = 0; |
8ef8b6523597
Fix R2L paragraph display on TTY.
Eli Zaretskii <eliz@gnu.org>
parents:
107994
diff
changeset
|
1851 glyph->bidi_type = UNKNOWN_BT; |
8ef8b6523597
Fix R2L paragraph display on TTY.
Eli Zaretskii <eliz@gnu.org>
parents:
107994
diff
changeset
|
1852 } |
90638 | 1853 |
1854 ++it->glyph_row->used[it->area]; | |
1855 ++glyph; | |
1856 } | |
1857 } | |
1858 | |
1859 | |
1860 /* Produce a composite glyph for iterator IT. IT->cmp_id is the ID of | |
1861 the composition. We simply produces components of the composition | |
105426
d0a6d64c3cfc
Fix typos in comments.
Juanma Barranquero <lekktu@gmail.com>
parents:
103711
diff
changeset
|
1862 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
|
1863 correctly. */ |
90638 | 1864 |
1865 static void | |
1866 produce_composite_glyph (it) | |
1867 struct it *it; | |
1868 { | |
1869 int c; | |
1870 | |
97830
62a07e57ef40
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
97720
diff
changeset
|
1871 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
|
1872 { |
62a07e57ef40
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
97720
diff
changeset
|
1873 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
|
1874 |
101774
d4f9e4244d5a
(encode_terminal_code): Fix handling of composition.
Kenichi Handa <handa@m17n.org>
parents:
101690
diff
changeset
|
1875 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
|
1876 } |
62a07e57ef40
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
97720
diff
changeset
|
1877 else |
62a07e57ef40
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
97720
diff
changeset
|
1878 { |
62a07e57ef40
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
97720
diff
changeset
|
1879 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
|
1880 |
62a07e57ef40
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
97720
diff
changeset
|
1881 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
|
1882 it->cmp_it.to, NULL); |
62a07e57ef40
(encode_terminal_code): Adjusted for the change of struct
Kenichi Handa <handa@m17n.org>
parents:
97720
diff
changeset
|
1883 } |
90638 | 1884 it->nglyphs = 1; |
1885 if (it->glyph_row) | |
1886 append_composite_glyph (it); | |
1887 } | |
1888 | |
1889 | |
25002 | 1890 /* Get information about special display element WHAT in an |
1891 environment described by IT. WHAT is one of IT_TRUNCATION or | |
1892 IT_CONTINUATION. Maybe produce glyphs for WHAT if IT has a | |
1893 non-null glyph_row member. This function ensures that fields like | |
1894 face_id, c, len of IT are left untouched. */ | |
1895 | |
1896 void | |
1897 produce_special_glyphs (it, what) | |
1898 struct it *it; | |
1899 enum display_element_type what; | |
1900 { | |
1901 struct it temp_it; | |
92281
4bf10a5a835d
(encode_terminal_code, produce_special_glyphs): Likewise.
Kim F. Storm <storm@cua.dk>
parents:
92237
diff
changeset
|
1902 Lisp_Object gc; |
63549
bda22724fc82
(produce_special_glyphs): Use spec_glyph_lookup_face.
Richard M. Stallman <rms@gnu.org>
parents:
61591
diff
changeset
|
1903 GLYPH glyph; |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
46559
diff
changeset
|
1904 |
25002 | 1905 temp_it = *it; |
1906 temp_it.dp = NULL; | |
1907 temp_it.what = IT_CHARACTER; | |
1908 temp_it.len = 1; | |
28507
b6f06a755c7d
make_number/XINT/XUINT conversions; EQ/== fixes; ==Qnil -> NILP
Ken Raeburn <raeburn@raeburn.org>
parents:
28465
diff
changeset
|
1909 temp_it.object = make_number (0); |
25002 | 1910 bzero (&temp_it.current, sizeof temp_it.current); |
1911 | |
1912 if (what == IT_CONTINUATION) | |
1913 { | |
107994
5dc04900cbd7
Mirror continuation indicators for R2L lines; fix face extension on TTY.
Eli Zaretskii <eliz@gnu.org>
parents:
107640
diff
changeset
|
1914 /* 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
|
1915 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
|
1916 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
|
1917 else |
5dc04900cbd7
Mirror continuation indicators for R2L lines; fix face extension on TTY.
Eli Zaretskii <eliz@gnu.org>
parents:
107640
diff
changeset
|
1918 SET_GLYPH_FROM_CHAR (glyph, '\\'); |
25002 | 1919 if (it->dp |
92281
4bf10a5a835d
(encode_terminal_code, produce_special_glyphs): Likewise.
Kim F. Storm <storm@cua.dk>
parents:
92237
diff
changeset
|
1920 && (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
|
1921 && GLYPH_CODE_CHAR_VALID_P (gc)) |
25002 | 1922 { |
107994
5dc04900cbd7
Mirror continuation indicators for R2L lines; fix face extension on TTY.
Eli Zaretskii <eliz@gnu.org>
parents:
107640
diff
changeset
|
1923 /* 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
|
1924 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
|
1925 spec_glyph_lookup_face (XWINDOW (it->window), &glyph); |
25002 | 1926 } |
1927 } | |
1928 else if (what == IT_TRUNCATION) | |
1929 { | |
1930 /* Truncation glyph. */ | |
92281
4bf10a5a835d
(encode_terminal_code, produce_special_glyphs): Likewise.
Kim F. Storm <storm@cua.dk>
parents:
92237
diff
changeset
|
1931 SET_GLYPH_FROM_CHAR (glyph, '$'); |
25002 | 1932 if (it->dp |
92281
4bf10a5a835d
(encode_terminal_code, produce_special_glyphs): Likewise.
Kim F. Storm <storm@cua.dk>
parents:
92237
diff
changeset
|
1933 && (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
|
1934 && GLYPH_CODE_CHAR_VALID_P (gc)) |
25002 | 1935 { |
107994
5dc04900cbd7
Mirror continuation indicators for R2L lines; fix face extension on TTY.
Eli Zaretskii <eliz@gnu.org>
parents:
107640
diff
changeset
|
1936 /* 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
|
1937 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
|
1938 spec_glyph_lookup_face (XWINDOW (it->window), &glyph); |
25002 | 1939 } |
1940 } | |
1941 else | |
1942 abort (); | |
63549
bda22724fc82
(produce_special_glyphs): Use spec_glyph_lookup_face.
Richard M. Stallman <rms@gnu.org>
parents:
61591
diff
changeset
|
1943 |
92281
4bf10a5a835d
(encode_terminal_code, produce_special_glyphs): Likewise.
Kim F. Storm <storm@cua.dk>
parents:
92237
diff
changeset
|
1944 temp_it.c = GLYPH_CHAR (glyph); |
4bf10a5a835d
(encode_terminal_code, produce_special_glyphs): Likewise.
Kim F. Storm <storm@cua.dk>
parents:
92237
diff
changeset
|
1945 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
|
1946 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
|
1947 |
bda22724fc82
(produce_special_glyphs): Use spec_glyph_lookup_face.
Richard M. Stallman <rms@gnu.org>
parents:
61591
diff
changeset
|
1948 produce_glyphs (&temp_it); |
bda22724fc82
(produce_special_glyphs): Use spec_glyph_lookup_face.
Richard M. Stallman <rms@gnu.org>
parents:
61591
diff
changeset
|
1949 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
|
1950 it->nglyphs = temp_it.pixel_width; |
25002 | 1951 } |
1952 | |
1953 | |
1954 | |
1955 /*********************************************************************** | |
1956 Faces | |
1957 ***********************************************************************/ | |
1958 | |
28465
113efc964095
(TN_no_color_video): New variable.
Gerd Moellmann <gerd@gnu.org>
parents:
28200
diff
changeset
|
1959 /* 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
|
1960 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
|
1961 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
|
1962 color; the termcap capability `NC' specifies which ones. */ |
113efc964095
(TN_no_color_video): New variable.
Gerd Moellmann <gerd@gnu.org>
parents:
28200
diff
changeset
|
1963 |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
1964 #define MAY_USE_WITH_COLORS_P(tty, ATTR) \ |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
1965 (tty->TN_max_colors > 0 \ |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
1966 ? (tty->TN_no_color_video & (ATTR)) == 0 \ |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
1967 : 1) |
25002 | 1968 |
63549
bda22724fc82
(produce_special_glyphs): Use spec_glyph_lookup_face.
Richard M. Stallman <rms@gnu.org>
parents:
61591
diff
changeset
|
1969 /* 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
|
1970 FACE_ID is a realized face ID number, in the face cache. */ |
25002 | 1971 |
1972 static void | |
1973 turn_on_face (f, face_id) | |
1974 struct frame *f; | |
1975 int face_id; | |
1976 { | |
1977 struct face *face = FACE_FROM_ID (f, face_id); | |
37477
6a7ab4d2c7b3
(toggle_highlight): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
35448
diff
changeset
|
1978 long fg = face->foreground; |
6a7ab4d2c7b3
(toggle_highlight): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
35448
diff
changeset
|
1979 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
|
1980 struct tty_display_info *tty = FRAME_TTY (f); |
25002 | 1981 |
37477
6a7ab4d2c7b3
(toggle_highlight): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
35448
diff
changeset
|
1982 /* 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
|
1983 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
|
1984 if (MAY_USE_WITH_COLORS_P (tty, NC_REVERSE)) |
37477
6a7ab4d2c7b3
(toggle_highlight): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
35448
diff
changeset
|
1985 { |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
1986 if (tty->TN_max_colors > 0) |
37477
6a7ab4d2c7b3
(toggle_highlight): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
35448
diff
changeset
|
1987 { |
6a7ab4d2c7b3
(toggle_highlight): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
35448
diff
changeset
|
1988 if (fg >= 0 && bg >= 0) |
6a7ab4d2c7b3
(toggle_highlight): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
35448
diff
changeset
|
1989 { |
6a7ab4d2c7b3
(toggle_highlight): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
35448
diff
changeset
|
1990 /* If the terminal supports colors, we can set them |
6a7ab4d2c7b3
(toggle_highlight): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
35448
diff
changeset
|
1991 below without using reverse video. The face's fg |
6a7ab4d2c7b3
(toggle_highlight): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
35448
diff
changeset
|
1992 and bg colors are set as they should appear on |
6a7ab4d2c7b3
(toggle_highlight): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
35448
diff
changeset
|
1993 the screen, i.e. they take the inverse-video'ness |
6a7ab4d2c7b3
(toggle_highlight): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
35448
diff
changeset
|
1994 of the face already into account. */ |
6a7ab4d2c7b3
(toggle_highlight): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
35448
diff
changeset
|
1995 } |
6a7ab4d2c7b3
(toggle_highlight): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
35448
diff
changeset
|
1996 else if (inverse_video) |
6a7ab4d2c7b3
(toggle_highlight): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
35448
diff
changeset
|
1997 { |
6a7ab4d2c7b3
(toggle_highlight): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
35448
diff
changeset
|
1998 if (fg == FACE_TTY_DEFAULT_FG_COLOR |
6a7ab4d2c7b3
(toggle_highlight): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
35448
diff
changeset
|
1999 || 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
|
2000 tty_toggle_highlight (tty); |
37477
6a7ab4d2c7b3
(toggle_highlight): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
35448
diff
changeset
|
2001 } |
6a7ab4d2c7b3
(toggle_highlight): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
35448
diff
changeset
|
2002 else |
6a7ab4d2c7b3
(toggle_highlight): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
35448
diff
changeset
|
2003 { |
6a7ab4d2c7b3
(toggle_highlight): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
35448
diff
changeset
|
2004 if (fg == FACE_TTY_DEFAULT_BG_COLOR |
6a7ab4d2c7b3
(toggle_highlight): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
35448
diff
changeset
|
2005 || 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
|
2006 tty_toggle_highlight (tty); |
37477
6a7ab4d2c7b3
(toggle_highlight): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
35448
diff
changeset
|
2007 } |
6a7ab4d2c7b3
(toggle_highlight): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
35448
diff
changeset
|
2008 } |
6a7ab4d2c7b3
(toggle_highlight): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
35448
diff
changeset
|
2009 else |
6a7ab4d2c7b3
(toggle_highlight): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
35448
diff
changeset
|
2010 { |
6a7ab4d2c7b3
(toggle_highlight): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
35448
diff
changeset
|
2011 /* If we can't display colors, use reverse video |
6a7ab4d2c7b3
(toggle_highlight): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
35448
diff
changeset
|
2012 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
|
2013 if (inverse_video) |
b8ff92361366
(turn_on_face): Fix reverse video handling on terminals
Gerd Moellmann <gerd@gnu.org>
parents:
37477
diff
changeset
|
2014 { |
b8ff92361366
(turn_on_face): Fix reverse video handling on terminals
Gerd Moellmann <gerd@gnu.org>
parents:
37477
diff
changeset
|
2015 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
|
2016 || 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
|
2017 tty_toggle_highlight (tty); |
37499
b8ff92361366
(turn_on_face): Fix reverse video handling on terminals
Gerd Moellmann <gerd@gnu.org>
parents:
37477
diff
changeset
|
2018 } |
b8ff92361366
(turn_on_face): Fix reverse video handling on terminals
Gerd Moellmann <gerd@gnu.org>
parents:
37477
diff
changeset
|
2019 else |
b8ff92361366
(turn_on_face): Fix reverse video handling on terminals
Gerd Moellmann <gerd@gnu.org>
parents:
37477
diff
changeset
|
2020 { |
b8ff92361366
(turn_on_face): Fix reverse video handling on terminals
Gerd Moellmann <gerd@gnu.org>
parents:
37477
diff
changeset
|
2021 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
|
2022 || 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
|
2023 tty_toggle_highlight (tty); |
37499
b8ff92361366
(turn_on_face): Fix reverse video handling on terminals
Gerd Moellmann <gerd@gnu.org>
parents:
37477
diff
changeset
|
2024 } |
37477
6a7ab4d2c7b3
(toggle_highlight): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
35448
diff
changeset
|
2025 } |
6a7ab4d2c7b3
(toggle_highlight): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
35448
diff
changeset
|
2026 } |
25002 | 2027 |
103605
d6ac90c70d24
* term.c (turn_on_face): Allow simultaneously bold and dim
Chong Yidong <cyd@stupidchicken.com>
parents:
103114
diff
changeset
|
2028 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
|
2029 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
|
2030 |
d6ac90c70d24
* term.c (turn_on_face): Allow simultaneously bold and dim
Chong Yidong <cyd@stupidchicken.com>
parents:
103114
diff
changeset
|
2031 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
|
2032 OUTPUT1_IF (tty, tty->TS_enter_dim_mode); |
25002 | 2033 |
2034 /* Alternate charset and blinking not yet used. */ | |
28465
113efc964095
(TN_no_color_video): New variable.
Gerd Moellmann <gerd@gnu.org>
parents:
28200
diff
changeset
|
2035 if (face->tty_alt_charset_p |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
2036 && 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
|
2037 OUTPUT1_IF (tty, tty->TS_enter_alt_charset_mode); |
25002 | 2038 |
28465
113efc964095
(TN_no_color_video): New variable.
Gerd Moellmann <gerd@gnu.org>
parents:
28200
diff
changeset
|
2039 if (face->tty_blinking_p |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
2040 && MAY_USE_WITH_COLORS_P (tty, NC_BLINK)) |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
2041 OUTPUT1_IF (tty, tty->TS_enter_blink_mode); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
2042 |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
2043 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
|
2044 OUTPUT1_IF (tty, tty->TS_enter_underline_mode); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
2045 |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
2046 if (tty->TN_max_colors > 0) |
25002 | 2047 { |
65072
462eb3df5c58
(turn_on_face): Check for TS_set_foreground and
Juri Linkov <juri@jurta.org>
parents:
64773
diff
changeset
|
2048 char *ts, *p; |
462eb3df5c58
(turn_on_face): Check for TS_set_foreground and
Juri Linkov <juri@jurta.org>
parents:
64773
diff
changeset
|
2049 |
83353
532e0a9335a9
Merged in changes from CVS trunk. Plus added lisp/term tweaks.
Karoly Lorentey <lorentey@elte.hu>
diff
changeset
|
2050 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
|
2051 if (fg >= 0 && ts) |
25002 | 2052 { |
83353
532e0a9335a9
Merged in changes from CVS trunk. Plus added lisp/term tweaks.
Karoly Lorentey <lorentey@elte.hu>
diff
changeset
|
2053 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
|
2054 OUTPUT (tty, p); |
25002 | 2055 xfree (p); |
2056 } | |
2057 | |
83353
532e0a9335a9
Merged in changes from CVS trunk. Plus added lisp/term tweaks.
Karoly Lorentey <lorentey@elte.hu>
diff
changeset
|
2058 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
|
2059 if (bg >= 0 && ts) |
25002 | 2060 { |
83353
532e0a9335a9
Merged in changes from CVS trunk. Plus added lisp/term tweaks.
Karoly Lorentey <lorentey@elte.hu>
diff
changeset
|
2061 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
|
2062 OUTPUT (tty, p); |
25002 | 2063 xfree (p); |
2064 } | |
2065 } | |
2066 } | |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
46559
diff
changeset
|
2067 |
25002 | 2068 |
2069 /* Turn off appearances of face FACE_ID on tty frame F. */ | |
2070 | |
2071 static void | |
2072 turn_off_face (f, face_id) | |
2073 struct frame *f; | |
2074 int face_id; | |
2075 { | |
2076 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
|
2077 struct tty_display_info *tty = FRAME_TTY (f); |
25002 | 2078 |
2079 xassert (face != NULL); | |
2080 | |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
2081 if (tty->TS_exit_attribute_mode) |
25002 | 2082 { |
2083 /* Capability "me" will turn off appearance modes double-bright, | |
2084 half-bright, reverse-video, standout, underline. It may or | |
2085 may not turn off alt-char-mode. */ | |
2086 if (face->tty_bold_p | |
2087 || face->tty_dim_p | |
2088 || face->tty_reverse_p | |
2089 || face->tty_alt_charset_p | |
2090 || face->tty_blinking_p | |
2091 || face->tty_underline_p) | |
30848
fc80dcfc32cd
(write_glyphs): Also turn off inverse video after turning
Gerd Moellmann <gerd@gnu.org>
parents:
30836
diff
changeset
|
2092 { |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
2093 OUTPUT1_IF (tty, tty->TS_exit_attribute_mode); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
2094 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
|
2095 tty->standout_mode = 0; |
30848
fc80dcfc32cd
(write_glyphs): Also turn off inverse video after turning
Gerd Moellmann <gerd@gnu.org>
parents:
30836
diff
changeset
|
2096 } |
25002 | 2097 |
2098 if (face->tty_alt_charset_p) | |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
2099 OUTPUT_IF (tty, tty->TS_exit_alt_charset_mode); |
25002 | 2100 } |
2101 else | |
2102 { | |
2103 /* If we don't have "me" we can only have those appearances | |
2104 that have exit sequences defined. */ | |
2105 if (face->tty_alt_charset_p) | |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
2106 OUTPUT_IF (tty, tty->TS_exit_alt_charset_mode); |
25002 | 2107 |
40086
050b19294988
(TN_standout_width, TF_xs, TN_magic_cookie_glitch_ul): Variables removed.
Miles Bader <miles@gnu.org>
parents:
40081
diff
changeset
|
2108 if (face->tty_underline_p) |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
2109 OUTPUT_IF (tty, tty->TS_exit_underline_mode); |
25002 | 2110 } |
2111 | |
2112 /* Switch back to default colors. */ | |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
2113 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
|
2114 && ((face->foreground != FACE_TTY_DEFAULT_COLOR |
264b83a3a688
Changes for separate unspecified foreground and background colors
Eli Zaretskii <eliz@gnu.org>
parents:
26871
diff
changeset
|
2115 && 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
|
2116 || (face->background != FACE_TTY_DEFAULT_COLOR |
264b83a3a688
Changes for separate unspecified foreground and background colors
Eli Zaretskii <eliz@gnu.org>
parents:
26871
diff
changeset
|
2117 && face->background != FACE_TTY_DEFAULT_BG_COLOR))) |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
2118 OUTPUT1_IF (tty, tty->TS_orig_pair); |
25002 | 2119 } |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
46559
diff
changeset
|
2120 |
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
46559
diff
changeset
|
2121 |
45522
1513f6afe56f
(tty_capable_p): New function.
Miles Bader <miles@gnu.org>
parents:
44890
diff
changeset
|
2122 /* 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
|
2123 capabilities in CAPS simultaneously, with foreground and background |
1513f6afe56f
(tty_capable_p): New function.
Miles Bader <miles@gnu.org>
parents:
44890
diff
changeset
|
2124 colors FG and BG. */ |
1513f6afe56f
(tty_capable_p): New function.
Miles Bader <miles@gnu.org>
parents:
44890
diff
changeset
|
2125 |
45548 | 2126 int |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
2127 tty_capable_p (tty, caps, fg, bg) |
82989
f3845715a5f6
Separate frame-local, tty-dependent parameters from tty-local parameters.
Karoly Lorentey <lorentey@elte.hu>
parents:
82988
diff
changeset
|
2128 struct tty_display_info *tty; |
45522
1513f6afe56f
(tty_capable_p): New function.
Miles Bader <miles@gnu.org>
parents:
44890
diff
changeset
|
2129 unsigned caps; |
1513f6afe56f
(tty_capable_p): New function.
Miles Bader <miles@gnu.org>
parents:
44890
diff
changeset
|
2130 unsigned long fg, bg; |
1513f6afe56f
(tty_capable_p): New function.
Miles Bader <miles@gnu.org>
parents:
44890
diff
changeset
|
2131 { |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
2132 #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
|
2133 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
|
2134 return 0; |
1513f6afe56f
(tty_capable_p): New function.
Miles Bader <miles@gnu.org>
parents:
44890
diff
changeset
|
2135 |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
2136 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
|
2137 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
|
2138 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
|
2139 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
|
2140 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
|
2141 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
|
2142 |
1513f6afe56f
(tty_capable_p): New function.
Miles Bader <miles@gnu.org>
parents:
44890
diff
changeset
|
2143 /* We can do it! */ |
1513f6afe56f
(tty_capable_p): New function.
Miles Bader <miles@gnu.org>
parents:
44890
diff
changeset
|
2144 return 1; |
1513f6afe56f
(tty_capable_p): New function.
Miles Bader <miles@gnu.org>
parents:
44890
diff
changeset
|
2145 } |
1513f6afe56f
(tty_capable_p): New function.
Miles Bader <miles@gnu.org>
parents:
44890
diff
changeset
|
2146 |
25002 | 2147 /* Return non-zero if the terminal is capable to display colors. */ |
2148 | |
2149 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
|
2150 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
|
2151 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
|
2152 |
103047
997f1f1cac08
* term.c (Ftty_display_color_p, Ftty_display_color_cells)
Chong Yidong <cyd@stupidchicken.com>
parents:
102831
diff
changeset
|
2153 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
|
2154 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
|
2155 TERMINAL does not refer to a text-only terminal. */) |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
2156 (terminal) |
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
2157 Lisp_Object terminal; |
25002 | 2158 { |
83512
5d328dadd0f4
Make `tty-display-color-p' follow its doc string. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83502
diff
changeset
|
2159 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
|
2160 if (!t) |
83004
7900111db01c
Converted display hooks to be display-local. Plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
82995
diff
changeset
|
2161 return Qnil; |
83008
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
2162 else |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
2163 return t->display_info.tty->TN_max_colors > 0 ? Qt : Qnil; |
25002 | 2164 } |
2165 | |
42954
e514d4931d6f
(Ftty_display_color_cells): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
42808
diff
changeset
|
2166 /* Return the number of supported colors. */ |
e514d4931d6f
(Ftty_display_color_cells): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
42808
diff
changeset
|
2167 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
|
2168 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
|
2169 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
|
2170 |
103047
997f1f1cac08
* term.c (Ftty_display_color_p, Ftty_display_color_cells)
Chong Yidong <cyd@stupidchicken.com>
parents:
102831
diff
changeset
|
2171 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
|
2172 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
|
2173 TERMINAL does not refer to a text-only terminal. */) |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
2174 (terminal) |
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
2175 Lisp_Object terminal; |
42954
e514d4931d6f
(Ftty_display_color_cells): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
42808
diff
changeset
|
2176 { |
83512
5d328dadd0f4
Make `tty-display-color-p' follow its doc string. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83502
diff
changeset
|
2177 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
|
2178 if (!t) |
83161
8d62eda26760
Fix byte-compile errors during bootstrap. (Reported by Juraj Kubelka.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83158
diff
changeset
|
2179 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
|
2180 else |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
2181 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
|
2182 } |
e514d4931d6f
(Ftty_display_color_cells): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
42808
diff
changeset
|
2183 |
97658 | 2184 #ifndef DOS_NT |
25002 | 2185 |
78566
a23949b99eb1
Tweak previous change (don't init statics).
Glenn Morris <rgm@gnu.org>
parents:
78563
diff
changeset
|
2186 /* 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
|
2187 to work around an HPUX compiler bug (?). See |
78562 | 2188 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
|
2189 static int default_max_colors; |
a23949b99eb1
Tweak previous change (don't init statics).
Glenn Morris <rgm@gnu.org>
parents:
78563
diff
changeset
|
2190 static int default_max_pairs; |
a23949b99eb1
Tweak previous change (don't init statics).
Glenn Morris <rgm@gnu.org>
parents:
78563
diff
changeset
|
2191 static int default_no_color_video; |
a23949b99eb1
Tweak previous change (don't init statics).
Glenn Morris <rgm@gnu.org>
parents:
78563
diff
changeset
|
2192 static char *default_orig_pair; |
a23949b99eb1
Tweak previous change (don't init statics).
Glenn Morris <rgm@gnu.org>
parents:
78563
diff
changeset
|
2193 static char *default_set_foreground; |
a23949b99eb1
Tweak previous change (don't init statics).
Glenn Morris <rgm@gnu.org>
parents:
78563
diff
changeset
|
2194 static char *default_set_background; |
78560
44134c35ea57
Philippe Waroquiers <philippe.waroquiers at eurocontrol.int>
Glenn Morris <rgm@gnu.org>
parents:
78260
diff
changeset
|
2195 |
42742
73fcf65b58d3
(tty_default_color_capabilities, tty_setup_colors)
Eli Zaretskii <eliz@gnu.org>
parents:
42122
diff
changeset
|
2196 /* 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
|
2197 terminal. */ |
73fcf65b58d3
(tty_default_color_capabilities, tty_setup_colors)
Eli Zaretskii <eliz@gnu.org>
parents:
42122
diff
changeset
|
2198 static void |
82989
f3845715a5f6
Separate frame-local, tty-dependent parameters from tty-local parameters.
Karoly Lorentey <lorentey@elte.hu>
parents:
82988
diff
changeset
|
2199 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
|
2200 { |
73fcf65b58d3
(tty_default_color_capabilities, tty_setup_colors)
Eli Zaretskii <eliz@gnu.org>
parents:
42122
diff
changeset
|
2201 |
73fcf65b58d3
(tty_default_color_capabilities, tty_setup_colors)
Eli Zaretskii <eliz@gnu.org>
parents:
42122
diff
changeset
|
2202 if (save) |
73fcf65b58d3
(tty_default_color_capabilities, tty_setup_colors)
Eli Zaretskii <eliz@gnu.org>
parents:
42122
diff
changeset
|
2203 { |
95481
4390d64d3328
Make "xfree (NULL)" a no-op; remove useless if-before-xfree.
Jim Meyering <jim@meyering.net>
parents:
94963
diff
changeset
|
2204 xfree (default_orig_pair); |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
2205 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
|
2206 |
95481
4390d64d3328
Make "xfree (NULL)" a no-op; remove useless if-before-xfree.
Jim Meyering <jim@meyering.net>
parents:
94963
diff
changeset
|
2207 xfree (default_set_foreground); |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
2208 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
|
2209 : NULL; |
73fcf65b58d3
(tty_default_color_capabilities, tty_setup_colors)
Eli Zaretskii <eliz@gnu.org>
parents:
42122
diff
changeset
|
2210 |
95481
4390d64d3328
Make "xfree (NULL)" a no-op; remove useless if-before-xfree.
Jim Meyering <jim@meyering.net>
parents:
94963
diff
changeset
|
2211 xfree (default_set_background); |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
2212 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
|
2213 : NULL; |
73fcf65b58d3
(tty_default_color_capabilities, tty_setup_colors)
Eli Zaretskii <eliz@gnu.org>
parents:
42122
diff
changeset
|
2214 |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
2215 default_max_colors = tty->TN_max_colors; |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
2216 default_max_pairs = tty->TN_max_pairs; |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
2217 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
|
2218 } |
73fcf65b58d3
(tty_default_color_capabilities, tty_setup_colors)
Eli Zaretskii <eliz@gnu.org>
parents:
42122
diff
changeset
|
2219 else |
73fcf65b58d3
(tty_default_color_capabilities, tty_setup_colors)
Eli Zaretskii <eliz@gnu.org>
parents:
42122
diff
changeset
|
2220 { |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
2221 tty->TS_orig_pair = default_orig_pair; |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
2222 tty->TS_set_foreground = default_set_foreground; |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
2223 tty->TS_set_background = default_set_background; |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
2224 tty->TN_max_colors = default_max_colors; |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
2225 tty->TN_max_pairs = default_max_pairs; |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
2226 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
|
2227 } |
73fcf65b58d3
(tty_default_color_capabilities, tty_setup_colors)
Eli Zaretskii <eliz@gnu.org>
parents:
42122
diff
changeset
|
2228 } |
73fcf65b58d3
(tty_default_color_capabilities, tty_setup_colors)
Eli Zaretskii <eliz@gnu.org>
parents:
42122
diff
changeset
|
2229 |
73fcf65b58d3
(tty_default_color_capabilities, tty_setup_colors)
Eli Zaretskii <eliz@gnu.org>
parents:
42122
diff
changeset
|
2230 /* 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
|
2231 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
|
2232 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
|
2233 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
|
2234 static void |
82989
f3845715a5f6
Separate frame-local, tty-dependent parameters from tty-local parameters.
Karoly Lorentey <lorentey@elte.hu>
parents:
82988
diff
changeset
|
2235 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
|
2236 { |
52652
31a3a92c1a03
(tty_setup_colors): Treat any negative argument as -1.
Eli Zaretskii <eliz@gnu.org>
parents:
52579
diff
changeset
|
2237 /* 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
|
2238 if (mode < -1) |
31a3a92c1a03
(tty_setup_colors): Treat any negative argument as -1.
Eli Zaretskii <eliz@gnu.org>
parents:
52579
diff
changeset
|
2239 mode = -1; |
31a3a92c1a03
(tty_setup_colors): Treat any negative argument as -1.
Eli Zaretskii <eliz@gnu.org>
parents:
52579
diff
changeset
|
2240 |
42742
73fcf65b58d3
(tty_default_color_capabilities, tty_setup_colors)
Eli Zaretskii <eliz@gnu.org>
parents:
42122
diff
changeset
|
2241 switch (mode) |
73fcf65b58d3
(tty_default_color_capabilities, tty_setup_colors)
Eli Zaretskii <eliz@gnu.org>
parents:
42122
diff
changeset
|
2242 { |
73fcf65b58d3
(tty_default_color_capabilities, tty_setup_colors)
Eli Zaretskii <eliz@gnu.org>
parents:
42122
diff
changeset
|
2243 case -1: /* no colors at all */ |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
2244 tty->TN_max_colors = 0; |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
2245 tty->TN_max_pairs = 0; |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
2246 tty->TN_no_color_video = 0; |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
2247 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
|
2248 break; |
73fcf65b58d3
(tty_default_color_capabilities, tty_setup_colors)
Eli Zaretskii <eliz@gnu.org>
parents:
42122
diff
changeset
|
2249 case 0: /* default colors, if any */ |
73fcf65b58d3
(tty_default_color_capabilities, tty_setup_colors)
Eli Zaretskii <eliz@gnu.org>
parents:
42122
diff
changeset
|
2250 default: |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
2251 tty_default_color_capabilities (tty, 0); |
42742
73fcf65b58d3
(tty_default_color_capabilities, tty_setup_colors)
Eli Zaretskii <eliz@gnu.org>
parents:
42122
diff
changeset
|
2252 break; |
73fcf65b58d3
(tty_default_color_capabilities, tty_setup_colors)
Eli Zaretskii <eliz@gnu.org>
parents:
42122
diff
changeset
|
2253 case 8: /* 8 standard ANSI colors */ |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
2254 tty->TS_orig_pair = "\033[0m"; |
42742
73fcf65b58d3
(tty_default_color_capabilities, tty_setup_colors)
Eli Zaretskii <eliz@gnu.org>
parents:
42122
diff
changeset
|
2255 #ifdef TERMINFO |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
2256 tty->TS_set_foreground = "\033[3%p1%dm"; |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
2257 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
|
2258 #else |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
2259 tty->TS_set_foreground = "\033[3%dm"; |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
2260 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
|
2261 #endif |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
2262 tty->TN_max_colors = 8; |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
2263 tty->TN_max_pairs = 64; |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
2264 tty->TN_no_color_video = 0; |
42742
73fcf65b58d3
(tty_default_color_capabilities, tty_setup_colors)
Eli Zaretskii <eliz@gnu.org>
parents:
42122
diff
changeset
|
2265 break; |
73fcf65b58d3
(tty_default_color_capabilities, tty_setup_colors)
Eli Zaretskii <eliz@gnu.org>
parents:
42122
diff
changeset
|
2266 } |
73fcf65b58d3
(tty_default_color_capabilities, tty_setup_colors)
Eli Zaretskii <eliz@gnu.org>
parents:
42122
diff
changeset
|
2267 } |
73fcf65b58d3
(tty_default_color_capabilities, tty_setup_colors)
Eli Zaretskii <eliz@gnu.org>
parents:
42122
diff
changeset
|
2268 |
73fcf65b58d3
(tty_default_color_capabilities, tty_setup_colors)
Eli Zaretskii <eliz@gnu.org>
parents:
42122
diff
changeset
|
2269 void |
93883
722fdbc7a012
* xdisp.c (redisplay_internal): Reset tty's color_mode when switching
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
92281
diff
changeset
|
2270 set_tty_color_mode (tty, f) |
722fdbc7a012
* xdisp.c (redisplay_internal): Reset tty's color_mode when switching
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
92281
diff
changeset
|
2271 struct tty_display_info *tty; |
42742
73fcf65b58d3
(tty_default_color_capabilities, tty_setup_colors)
Eli Zaretskii <eliz@gnu.org>
parents:
42122
diff
changeset
|
2272 struct frame *f; |
73fcf65b58d3
(tty_default_color_capabilities, tty_setup_colors)
Eli Zaretskii <eliz@gnu.org>
parents:
42122
diff
changeset
|
2273 { |
107984
bef5d1738c0b
Make variable forwarding explicit rather the using special values.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
107847
diff
changeset
|
2274 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
|
2275 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
|
2276 int mode; |
42742
73fcf65b58d3
(tty_default_color_capabilities, tty_setup_colors)
Eli Zaretskii <eliz@gnu.org>
parents:
42122
diff
changeset
|
2277 extern Lisp_Object Qtty_color_mode; |
93883
722fdbc7a012
* xdisp.c (redisplay_internal): Reset tty's color_mode when switching
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
92281
diff
changeset
|
2278 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
|
2279 = 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
|
2280 |
93984
ddcecf318c8a
(set_tty_color_mode): Left over typo.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
93883
diff
changeset
|
2281 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
|
2282 val = CONSP (tem) ? XCDR (tem) : Qnil; |
42742
73fcf65b58d3
(tty_default_color_capabilities, tty_setup_colors)
Eli Zaretskii <eliz@gnu.org>
parents:
42122
diff
changeset
|
2283 |
52579
611336925095
(set_tty_color_mode): Use INTEGERP to test whether a
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
2284 if (INTEGERP (val)) |
42742
73fcf65b58d3
(tty_default_color_capabilities, tty_setup_colors)
Eli Zaretskii <eliz@gnu.org>
parents:
42122
diff
changeset
|
2285 color_mode = val; |
107984
bef5d1738c0b
Make variable forwarding explicit rather the using special values.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
107847
diff
changeset
|
2286 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
|
2287 { |
107984
bef5d1738c0b
Make variable forwarding explicit rather the using special values.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
107847
diff
changeset
|
2288 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
|
2289 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
|
2290 } |
107984
bef5d1738c0b
Make variable forwarding explicit rather the using special values.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
107847
diff
changeset
|
2291 else |
bef5d1738c0b
Make variable forwarding explicit rather the using special values.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
107847
diff
changeset
|
2292 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
|
2293 |
93883
722fdbc7a012
* xdisp.c (redisplay_internal): Reset tty's color_mode when switching
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
92281
diff
changeset
|
2294 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
|
2295 |
722fdbc7a012
* xdisp.c (redisplay_internal): Reset tty's color_mode when switching
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
92281
diff
changeset
|
2296 if (mode != tty->previous_color_mode) |
42742
73fcf65b58d3
(tty_default_color_capabilities, tty_setup_colors)
Eli Zaretskii <eliz@gnu.org>
parents:
42122
diff
changeset
|
2297 { |
93883
722fdbc7a012
* xdisp.c (redisplay_internal): Reset tty's color_mode when switching
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
92281
diff
changeset
|
2298 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
|
2299 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
|
2300 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
|
2301 /* 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
|
2302 safe_call (1, &funsym); |
42742
73fcf65b58d3
(tty_default_color_capabilities, tty_setup_colors)
Eli Zaretskii <eliz@gnu.org>
parents:
42122
diff
changeset
|
2303 } |
73fcf65b58d3
(tty_default_color_capabilities, tty_setup_colors)
Eli Zaretskii <eliz@gnu.org>
parents:
42122
diff
changeset
|
2304 } |
73fcf65b58d3
(tty_default_color_capabilities, tty_setup_colors)
Eli Zaretskii <eliz@gnu.org>
parents:
42122
diff
changeset
|
2305 |
97658 | 2306 #endif /* !DOS_NT */ |
25002 | 2307 |
2308 | |
53226
dd3018b4785b
Implemented multiple tty support.
Karoly Lorentey <lorentey@elte.hu>
parents:
53225
diff
changeset
|
2309 |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
2310 /* 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
|
2311 |
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
2312 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
|
2313 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
|
2314 { |
83512
5d328dadd0f4
Make `tty-display-color-p' follow its doc string. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83502
diff
changeset
|
2315 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
|
2316 |
97658 | 2317 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
|
2318 { |
5d328dadd0f4
Make `tty-display-color-p' follow its doc string. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83502
diff
changeset
|
2319 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
|
2320 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
|
2321 else |
5d328dadd0f4
Make `tty-display-color-p' follow its doc string. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83502
diff
changeset
|
2322 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
|
2323 } |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
2324 |
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
2325 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
|
2326 } |
69ebc75cb461
Implemented display ids for multiple emacsclients on the same tty. Plus assorted bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83161
diff
changeset
|
2327 |
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
|
2328 /* 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
|
2329 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
|
2330 |
83342
9216636c02fc
Rename `struct display' to `struct device'. Update function, parameter and variable names accordingly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83341
diff
changeset
|
2331 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
|
2332 |
c66ebcc29777
Removed %T in mode-line-format. Trivial documentation changes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83021
diff
changeset
|
2333 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
|
2334 |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
2335 struct terminal * |
83342
9216636c02fc
Rename `struct display' to `struct device'. Update function, parameter and variable names accordingly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83341
diff
changeset
|
2336 get_named_tty (name) |
53226
dd3018b4785b
Implemented multiple tty support.
Karoly Lorentey <lorentey@elte.hu>
parents:
53225
diff
changeset
|
2337 char *name; |
dd3018b4785b
Implemented multiple tty support.
Karoly Lorentey <lorentey@elte.hu>
parents:
53225
diff
changeset
|
2338 { |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
2339 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
|
2340 |
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
|
2341 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
|
2342 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
|
2343 |
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
|
2344 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
|
2345 { |
97720
b2594691f8f2
(get_named_tty): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents:
97658
diff
changeset
|
2346 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
|
2347 && !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
|
2348 && 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
|
2349 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
|
2350 } |
53226
dd3018b4785b
Implemented multiple tty support.
Karoly Lorentey <lorentey@elte.hu>
parents:
53225
diff
changeset
|
2351 |
dd3018b4785b
Implemented multiple tty support.
Karoly Lorentey <lorentey@elte.hu>
parents:
53225
diff
changeset
|
2352 return 0; |
dd3018b4785b
Implemented multiple tty support.
Karoly Lorentey <lorentey@elte.hu>
parents:
53225
diff
changeset
|
2353 } |
dd3018b4785b
Implemented multiple tty support.
Karoly Lorentey <lorentey@elte.hu>
parents:
53225
diff
changeset
|
2354 |
dd3018b4785b
Implemented multiple tty support.
Karoly Lorentey <lorentey@elte.hu>
parents:
53225
diff
changeset
|
2355 |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
2356 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
|
2357 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
|
2358 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
|
2359 |
103047
997f1f1cac08
* term.c (Ftty_display_color_p, Ftty_display_color_cells)
Chong Yidong <cyd@stupidchicken.com>
parents:
102831
diff
changeset
|
2360 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
|
2361 selected frame's terminal). */) |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
2362 (terminal) |
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
2363 Lisp_Object terminal; |
82988
f82e3a6f5ccb
A few more bugfixes and new features.
Karoly Lorentey <lorentey@elte.hu>
parents:
82987
diff
changeset
|
2364 { |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
2365 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
|
2366 |
97658 | 2367 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
|
2368 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
|
2369 |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
2370 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
|
2371 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
|
2372 else |
f82e3a6f5ccb
A few more bugfixes and new features.
Karoly Lorentey <lorentey@elte.hu>
parents:
82987
diff
changeset
|
2373 return Qnil; |
f82e3a6f5ccb
A few more bugfixes and new features.
Karoly Lorentey <lorentey@elte.hu>
parents:
82987
diff
changeset
|
2374 } |
f82e3a6f5ccb
A few more bugfixes and new features.
Karoly Lorentey <lorentey@elte.hu>
parents:
82987
diff
changeset
|
2375 |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
2376 DEFUN ("controlling-tty-p", Fcontrolling_tty_p, Scontrolling_tty_p, 0, 1, 0, |
97658 | 2377 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
|
2378 |
103047
997f1f1cac08
* term.c (Ftty_display_color_p, Ftty_display_color_cells)
Chong Yidong <cyd@stupidchicken.com>
parents:
102831
diff
changeset
|
2379 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
|
2380 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
|
2381 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
|
2382 (terminal) |
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
2383 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
|
2384 { |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
2385 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
|
2386 |
97658 | 2387 if ((t->type != output_termcap && t->type != output_msdos_raw) |
2388 || 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
|
2389 return Qnil; |
6b4b299e2cd5
Fix suspend-frame on the controlling tty (reported by Dan Nicolaescu).
Karoly Lorentey <lorentey@elte.hu>
parents:
83168
diff
changeset
|
2390 else |
6b4b299e2cd5
Fix suspend-frame on the controlling tty (reported by Dan Nicolaescu).
Karoly Lorentey <lorentey@elte.hu>
parents:
83168
diff
changeset
|
2391 return Qt; |
6b4b299e2cd5
Fix suspend-frame on the controlling tty (reported by Dan Nicolaescu).
Karoly Lorentey <lorentey@elte.hu>
parents:
83168
diff
changeset
|
2392 } |
6b4b299e2cd5
Fix suspend-frame on the controlling tty (reported by Dan Nicolaescu).
Karoly Lorentey <lorentey@elte.hu>
parents:
83168
diff
changeset
|
2393 |
83311
c016d82bf02b
Merged from miles@gnu.org--gnu-2005 (patch 423-434)
Karoly Lorentey <lorentey@elte.hu>
diff
changeset
|
2394 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
|
2395 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
|
2396 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
|
2397 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
|
2398 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
|
2399 |
103047
997f1f1cac08
* term.c (Ftty_display_color_p, Ftty_display_color_cells)
Chong Yidong <cyd@stupidchicken.com>
parents:
102831
diff
changeset
|
2400 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
|
2401 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
|
2402 TERMINAL does not refer to a text-only terminal. */) |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
2403 (terminal) |
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
2404 Lisp_Object terminal; |
83311
c016d82bf02b
Merged from miles@gnu.org--gnu-2005 (patch 423-434)
Karoly Lorentey <lorentey@elte.hu>
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 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
|
2407 |
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
2408 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
|
2409 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
|
2410 return Qnil; |
c016d82bf02b
Merged from miles@gnu.org--gnu-2005 (patch 423-434)
Karoly Lorentey <lorentey@elte.hu>
diff
changeset
|
2411 } |
c016d82bf02b
Merged from miles@gnu.org--gnu-2005 (patch 423-434)
Karoly Lorentey <lorentey@elte.hu>
diff
changeset
|
2412 |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2413 |
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2414 |
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2415 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
|
2416 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
|
2417 |
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2418 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
|
2419 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
|
2420 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
|
2421 not updated. |
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2422 |
103047
997f1f1cac08
* term.c (Ftty_display_color_p, Ftty_display_color_cells)
Chong Yidong <cyd@stupidchicken.com>
parents:
102831
diff
changeset
|
2423 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
|
2424 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
|
2425 |
83891
dab32bc3edc8
* server.el (server-start, server-unload-hook): Undo previous
Dan Nicolaescu <dann@ics.uci.edu>
parents:
83889
diff
changeset
|
2426 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
|
2427 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
|
2428 terminal device. |
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2429 |
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2430 `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
|
2431 suspended. |
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2432 |
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2433 A suspended tty may be resumed by calling `resume-tty' on it. */) |
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2434 (tty) |
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2435 Lisp_Object tty; |
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2436 { |
83512
5d328dadd0f4
Make `tty-display-color-p' follow its doc string. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83502
diff
changeset
|
2437 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
|
2438 FILE *f; |
92281
4bf10a5a835d
(encode_terminal_code, produce_special_glyphs): Likewise.
Kim F. Storm <storm@cua.dk>
parents:
92237
diff
changeset
|
2439 |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
2440 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
|
2441 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
|
2442 |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
2443 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
|
2444 |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2445 if (f) |
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2446 { |
84769
cbcb89640ef2
* xt-mouse.el (xterm-mouse-mode): Re-enable suspend-tty-functions.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
84768
diff
changeset
|
2447 /* 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
|
2448 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
|
2449 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
|
2450 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
|
2451 { |
cbcb89640ef2
* xt-mouse.el (xterm-mouse-mode): Re-enable suspend-tty-functions.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
84768
diff
changeset
|
2452 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
|
2453 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
|
2454 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
|
2455 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
|
2456 } |
cbcb89640ef2
* xt-mouse.el (xterm-mouse-mode): Re-enable suspend-tty-functions.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
84768
diff
changeset
|
2457 |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
2458 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
|
2459 |
97658 | 2460 #ifdef subprocesses |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2461 delete_keyboard_wait_descriptor (fileno (f)); |
97658 | 2462 #endif |
2463 | |
2464 #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
|
2465 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
|
2466 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
|
2467 fclose (t->display_info.tty->output); |
97658 | 2468 #endif |
92281
4bf10a5a835d
(encode_terminal_code, produce_special_glyphs): Likewise.
Kim F. Storm <storm@cua.dk>
parents:
92237
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 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
|
2471 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
|
2472 |
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
2473 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
|
2474 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
|
2475 |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2476 } |
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2477 |
83521
40a5d8a15056
Fix crashes in redisplay functions on suspended tty frames. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83512
diff
changeset
|
2478 /* 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
|
2479 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
|
2480 |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2481 return Qnil; |
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2482 } |
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2483 |
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2484 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
|
2485 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
|
2486 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
|
2487 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
|
2488 |
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
2489 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
|
2490 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
|
2491 |
83891
dab32bc3edc8
* server.el (server-start, server-unload-hook): Undo previous
Dan Nicolaescu <dann@ics.uci.edu>
parents:
83889
diff
changeset
|
2492 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
|
2493 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
|
2494 device. |
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2495 |
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2496 `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
|
2497 suspended. |
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2498 |
103047
997f1f1cac08
* term.c (Ftty_display_color_p, Ftty_display_color_cells)
Chong Yidong <cyd@stupidchicken.com>
parents:
102831
diff
changeset
|
2499 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
|
2500 frame's terminal). */) |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2501 (tty) |
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2502 Lisp_Object tty; |
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2503 { |
83512
5d328dadd0f4
Make `tty-display-color-p' follow its doc string. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83502
diff
changeset
|
2504 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
|
2505 int fd; |
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2506 |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
2507 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
|
2508 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
|
2509 |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
2510 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
|
2511 { |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
2512 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
|
2513 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
|
2514 |
97658 | 2515 #ifdef MSDOS |
2516 t->display_info.tty->output = stdout; | |
2517 t->display_info.tty->input = stdin; | |
2518 #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
|
2519 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
|
2520 |
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
|
2521 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
|
2522 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
|
2523 |
84779
67e430e38471
(DEV_TTY): New macro. Provide a definition for MS-Windows.
Eli Zaretskii <eliz@gnu.org>
parents:
84769
diff
changeset
|
2524 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
|
2525 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
|
2526 |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
2527 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
|
2528 t->display_info.tty->input = t->display_info.tty->output; |
97658 | 2529 #endif |
2530 | |
2531 #ifdef subprocesses | |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2532 add_keyboard_wait_descriptor (fd); |
97658 | 2533 #endif |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2534 |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
2535 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
|
2536 { |
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
|
2537 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
|
2538 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
|
2539 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
|
2540 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
|
2541 |
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
|
2542 /* 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
|
2543 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
|
2544 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
|
2545 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
|
2546 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
|
2547 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
|
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 |
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
2550 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
|
2551 |
83891
dab32bc3edc8
* server.el (server-start, server-unload-hook): Undo previous
Dan Nicolaescu <dann@ics.uci.edu>
parents:
83889
diff
changeset
|
2552 /* 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
|
2553 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
|
2554 { |
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2555 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
|
2556 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
|
2557 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
|
2558 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
|
2559 } |
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2560 } |
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2561 |
83521
40a5d8a15056
Fix crashes in redisplay functions on suspended tty frames. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83512
diff
changeset
|
2562 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
|
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 return Qnil; |
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
2565 } |
83311
c016d82bf02b
Merged from miles@gnu.org--gnu-2005 (patch 423-434)
Karoly Lorentey <lorentey@elte.hu>
diff
changeset
|
2566 |
82988
f82e3a6f5ccb
A few more bugfixes and new features.
Karoly Lorentey <lorentey@elte.hu>
parents:
82987
diff
changeset
|
2567 |
25002 | 2568 /*********************************************************************** |
80979
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2569 Mouse |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2570 ***********************************************************************/ |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2571 |
80994
62b6aa7f8c37
Use HAVE_GPM instead of HAVE_GPM_H.
Nick Roberts <nickrob@snap.net.nz>
parents:
80979
diff
changeset
|
2572 #ifdef HAVE_GPM |
81107 | 2573 void |
2574 term_mouse_moveto (int x, int y) | |
81102
a00e7c5f2faa
(mouse_face_window): Rename...
Nick Roberts <nickrob@snap.net.nz>
parents:
81083
diff
changeset
|
2575 { |
81811
c10410a3aa36
Include unistd.h for ttyname, used in handle_one_term_event.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
81308
diff
changeset
|
2576 /* TODO: how to set mouse position? |
81102
a00e7c5f2faa
(mouse_face_window): Rename...
Nick Roberts <nickrob@snap.net.nz>
parents:
81083
diff
changeset
|
2577 const char *name; |
a00e7c5f2faa
(mouse_face_window): Rename...
Nick Roberts <nickrob@snap.net.nz>
parents:
81083
diff
changeset
|
2578 int fd; |
a00e7c5f2faa
(mouse_face_window): Rename...
Nick Roberts <nickrob@snap.net.nz>
parents:
81083
diff
changeset
|
2579 name = (const char *) ttyname (0); |
a00e7c5f2faa
(mouse_face_window): Rename...
Nick Roberts <nickrob@snap.net.nz>
parents:
81083
diff
changeset
|
2580 fd = open (name, O_WRONLY); |
81127
d620b28641cd
(term_mouse_highlight): Remove unused variables.
Nick Roberts <nickrob@snap.net.nz>
parents:
81107
diff
changeset
|
2581 SOME_FUNCTION (x, y, fd); |
81102
a00e7c5f2faa
(mouse_face_window): Rename...
Nick Roberts <nickrob@snap.net.nz>
parents:
81083
diff
changeset
|
2582 close (fd); |
a00e7c5f2faa
(mouse_face_window): Rename...
Nick Roberts <nickrob@snap.net.nz>
parents:
81083
diff
changeset
|
2583 last_mouse_x = x; |
81127
d620b28641cd
(term_mouse_highlight): Remove unused variables.
Nick Roberts <nickrob@snap.net.nz>
parents:
81107
diff
changeset
|
2584 last_mouse_y = y; */ |
81102
a00e7c5f2faa
(mouse_face_window): Rename...
Nick Roberts <nickrob@snap.net.nz>
parents:
81083
diff
changeset
|
2585 } |
a00e7c5f2faa
(mouse_face_window): Rename...
Nick Roberts <nickrob@snap.net.nz>
parents:
81083
diff
changeset
|
2586 |
80979
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2587 static void |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2588 term_show_mouse_face (enum draw_glyphs_face draw) |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2589 { |
84968
85eb2660cbe3
(mouse_face_window): Rename from Qmouse_face_window. Update all users.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
84955
diff
changeset
|
2590 struct window *w = XWINDOW (mouse_face_window); |
80979
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2591 int save_x, save_y; |
81811
c10410a3aa36
Include unistd.h for ttyname, used in handle_one_term_event.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
81308
diff
changeset
|
2592 int i; |
80979
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2593 |
83622 | 2594 struct frame *f = XFRAME (w->frame); |
2595 struct tty_display_info *tty = FRAME_TTY (f); | |
2596 | |
80979
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2597 if (/* If window is in the process of being destroyed, don't bother |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2598 to do anything. */ |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2599 w->current_matrix != NULL |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2600 /* Recognize when we are called to operate on rows that don't exist |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2601 anymore. This can happen when a window is split. */ |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2602 && mouse_face_end_row < w->current_matrix->nrows) |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2603 { |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2604 /* write_glyphs writes at cursor position, so we need to |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2605 temporarily move cursor coordinates to the beginning of |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2606 the highlight region. */ |
92281
4bf10a5a835d
(encode_terminal_code, produce_special_glyphs): Likewise.
Kim F. Storm <storm@cua.dk>
parents:
92237
diff
changeset
|
2607 |
80979
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2608 /* Save current cursor co-ordinates */ |
83622 | 2609 save_y = curY (tty); |
2610 save_x = curX (tty); | |
80979
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2611 |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2612 /* Note that mouse_face_beg_row etc. are window relative. */ |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2613 for (i = mouse_face_beg_row; i <= mouse_face_end_row; i++) |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2614 { |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2615 int start_hpos, end_hpos, nglyphs; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2616 struct glyph_row *row = MATRIX_ROW (w->current_matrix, i); |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2617 |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2618 /* Don't do anything if row doesn't have valid contents. */ |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2619 if (!row->enabled_p) |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2620 continue; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2621 |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2622 /* For all but the first row, the highlight starts at column 0. */ |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2623 if (i == mouse_face_beg_row) |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2624 start_hpos = mouse_face_beg_col; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2625 else |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2626 start_hpos = 0; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2627 |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2628 if (i == mouse_face_end_row) |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2629 end_hpos = mouse_face_end_col; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2630 else |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2631 { |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2632 end_hpos = row->used[TEXT_AREA]; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2633 if (draw == DRAW_NORMAL_TEXT) |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2634 row->fill_line_p = 1; /* Clear to end of line */ |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2635 } |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2636 |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2637 if (end_hpos <= start_hpos) |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2638 continue; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2639 /* Record that some glyphs of this row are displayed in |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2640 mouse-face. */ |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2641 row->mouse_face_p = draw > 0; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2642 |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2643 nglyphs = end_hpos - start_hpos; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2644 |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2645 if (end_hpos >= row->used[TEXT_AREA]) |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2646 nglyphs = row->used[TEXT_AREA] - start_hpos; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2647 |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2648 pos_y = row->y + WINDOW_TOP_EDGE_Y (w); |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2649 pos_x = row->used[LEFT_MARGIN_AREA] + start_hpos |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2650 + WINDOW_LEFT_EDGE_X (w); |
92281
4bf10a5a835d
(encode_terminal_code, produce_special_glyphs): Likewise.
Kim F. Storm <storm@cua.dk>
parents:
92237
diff
changeset
|
2651 |
83622 | 2652 cursor_to (f, pos_y, pos_x); |
80979
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2653 |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2654 if (draw == DRAW_MOUSE_FACE) |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2655 { |
83622 | 2656 tty_write_glyphs_with_face (f, row->glyphs[TEXT_AREA] + start_hpos, |
80979
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2657 nglyphs, mouse_face_face_id); |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2658 } |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2659 else /* draw == DRAW_NORMAL_TEXT */ |
83622 | 2660 write_glyphs (f, row->glyphs[TEXT_AREA] + start_hpos, nglyphs); |
80979
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2661 } |
83622 | 2662 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
|
2663 } |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2664 } |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2665 |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2666 static void |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2667 term_clear_mouse_face () |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2668 { |
84968
85eb2660cbe3
(mouse_face_window): Rename from Qmouse_face_window. Update all users.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
84955
diff
changeset
|
2669 if (!NILP (mouse_face_window)) |
80979
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2670 term_show_mouse_face (DRAW_NORMAL_TEXT); |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2671 |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2672 mouse_face_beg_row = mouse_face_beg_col = -1; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2673 mouse_face_end_row = mouse_face_end_col = -1; |
84968
85eb2660cbe3
(mouse_face_window): Rename from Qmouse_face_window. Update all users.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
84955
diff
changeset
|
2674 mouse_face_window = Qnil; |
80979
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2675 } |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2676 |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2677 /* Find the glyph matrix position of buffer position POS in window W. |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2678 *HPOS and *VPOS are set to the positions found. W's current glyphs |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2679 must be up to date. If POS is above window start return (0, 0). |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2680 If POS is after end of W, return end of last line in W. |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2681 - taken from msdos.c */ |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2682 static int |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2683 fast_find_position (struct window *w, int pos, int *hpos, int *vpos) |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2684 { |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2685 int i, lastcol, line_start_position, maybe_next_line_p = 0; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2686 int yb = window_text_bottom_y (w); |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2687 struct glyph_row *row = MATRIX_ROW (w->current_matrix, 0), *best_row = row; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2688 |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2689 while (row->y < yb) |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2690 { |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2691 if (row->used[TEXT_AREA]) |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2692 line_start_position = row->glyphs[TEXT_AREA]->charpos; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2693 else |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2694 line_start_position = 0; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2695 |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2696 if (line_start_position > pos) |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2697 break; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2698 /* If the position sought is the end of the buffer, |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2699 don't include the blank lines at the bottom of the window. */ |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2700 else if (line_start_position == pos |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2701 && pos == BUF_ZV (XBUFFER (w->buffer))) |
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 maybe_next_line_p = 1; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2704 break; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2705 } |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2706 else if (line_start_position > 0) |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2707 best_row = row; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2708 |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2709 /* Don't overstep the last matrix row, lest we get into the |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2710 never-never land... */ |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2711 if (row->y + 1 >= yb) |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2712 break; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2713 |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2714 ++row; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2715 } |
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 /* Find the right column within BEST_ROW. */ |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2718 lastcol = 0; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2719 row = best_row; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2720 for (i = 0; i < row->used[TEXT_AREA]; i++) |
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 struct glyph *glyph = row->glyphs[TEXT_AREA] + i; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2723 int charpos; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2724 |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2725 charpos = glyph->charpos; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2726 if (charpos == pos) |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2727 { |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2728 *hpos = i; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2729 *vpos = row->y; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2730 return 1; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2731 } |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2732 else if (charpos > pos) |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2733 break; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2734 else if (charpos > 0) |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2735 lastcol = i; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2736 } |
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 /* If we're looking for the end of the buffer, |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2739 and we didn't find it in the line we scanned, |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2740 use the start of the following line. */ |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2741 if (maybe_next_line_p) |
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 ++row; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2744 lastcol = 0; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2745 } |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2746 |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2747 *vpos = row->y; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2748 *hpos = lastcol + 1; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2749 return 0; |
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 static void |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2753 term_mouse_highlight (struct frame *f, int x, int y) |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2754 { |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2755 enum window_part part; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2756 Lisp_Object window; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2757 struct window *w; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2758 struct buffer *b; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2759 |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2760 if (NILP (Vmouse_highlight) |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2761 || !f->glyphs_initialized_p) |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2762 return; |
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 /* Which window is that in? */ |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2765 window = window_from_coordinates (f, x, y, &part, &x, &y, 0); |
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 /* Not on a window -> return. */ |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2768 if (!WINDOWP (window)) |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2769 return; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2770 |
84968
85eb2660cbe3
(mouse_face_window): Rename from Qmouse_face_window. Update all users.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
84955
diff
changeset
|
2771 if (!EQ (window, mouse_face_window)) |
80979
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2772 term_clear_mouse_face (); |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2773 |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2774 w = XWINDOW (window); |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2775 |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2776 /* Are we in a window whose display is up to date? |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2777 And verify the buffer's text has not changed. */ |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2778 b = XBUFFER (w->buffer); |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2779 if (part == ON_TEXT |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2780 && EQ (w->window_end_valid, w->buffer) |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2781 && XFASTINT (w->last_modified) == BUF_MODIFF (b) |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2782 && XFASTINT (w->last_overlay_modified) == BUF_OVERLAY_MODIFF (b)) |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2783 { |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2784 int pos, i, nrows = w->current_matrix->nrows; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2785 struct glyph_row *row; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2786 struct glyph *glyph; |
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 /* Find the glyph under X/Y. */ |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2789 glyph = NULL; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2790 if (y >= 0 && y < nrows) |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2791 { |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2792 row = MATRIX_ROW (w->current_matrix, y); |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2793 /* Give up if some row before the one we are looking for is |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2794 not enabled. */ |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2795 for (i = 0; i <= y; i++) |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2796 if (!MATRIX_ROW (w->current_matrix, i)->enabled_p) |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2797 break; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2798 if (i > y /* all rows upto and including the one at Y are enabled */ |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2799 && row->displays_text_p |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2800 && x < window_box_width (w, TEXT_AREA)) |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2801 { |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2802 glyph = row->glyphs[TEXT_AREA]; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2803 if (x >= row->used[TEXT_AREA]) |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2804 glyph = NULL; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2805 else |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2806 { |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2807 glyph += x; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2808 if (!BUFFERP (glyph->object)) |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2809 glyph = NULL; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2810 } |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2811 } |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2812 } |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2813 |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2814 /* Clear mouse face if X/Y not over text. */ |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2815 if (glyph == NULL) |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2816 { |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2817 term_clear_mouse_face (); |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2818 return; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2819 } |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2820 |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2821 if (!BUFFERP (glyph->object)) |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2822 abort (); |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2823 pos = glyph->charpos; |
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 /* Check for mouse-face. */ |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2826 { |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2827 extern Lisp_Object Qmouse_face; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2828 Lisp_Object mouse_face, overlay, position, *overlay_vec; |
81083
223bb8e66f74
* xfaces.c (syms_of_xfaces): Delete stray semicolon.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
80994
diff
changeset
|
2829 int noverlays, obegv, ozv; |
80979
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2830 struct buffer *obuf; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2831 |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2832 /* If we get an out-of-range value, return now; avoid an error. */ |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2833 if (pos > BUF_Z (b)) |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2834 return; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2835 |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2836 /* Make the window's buffer temporarily current for |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2837 overlays_at and compute_char_face. */ |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2838 obuf = current_buffer; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2839 current_buffer = b; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2840 obegv = BEGV; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2841 ozv = ZV; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2842 BEGV = BEG; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2843 ZV = Z; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2844 |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2845 /* Is this char mouse-active? */ |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2846 XSETINT (position, pos); |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2847 |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2848 /* Put all the overlays we want in a vector in overlay_vec. */ |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2849 GET_OVERLAYS_AT (pos, overlay_vec, noverlays, NULL, 0); |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2850 /* Sort overlays into increasing priority order. */ |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2851 noverlays = sort_overlays (overlay_vec, noverlays, w); |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2852 |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2853 /* Check mouse-face highlighting. */ |
84968
85eb2660cbe3
(mouse_face_window): Rename from Qmouse_face_window. Update all users.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
84955
diff
changeset
|
2854 if (!(EQ (window, mouse_face_window) |
80979
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2855 && y >= mouse_face_beg_row |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2856 && y <= mouse_face_end_row |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2857 && (y > mouse_face_beg_row |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2858 || x >= mouse_face_beg_col) |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2859 && (y < mouse_face_end_row |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2860 || x < mouse_face_end_col |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2861 || mouse_face_past_end))) |
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 /* Clear the display of the old active region, if any. */ |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2864 term_clear_mouse_face (); |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2865 |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2866 /* Find the highest priority overlay that has a mouse-face |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2867 property. */ |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2868 overlay = Qnil; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2869 for (i = noverlays - 1; i >= 0; --i) |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2870 { |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2871 mouse_face = Foverlay_get (overlay_vec[i], Qmouse_face); |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2872 if (!NILP (mouse_face)) |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2873 { |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2874 overlay = overlay_vec[i]; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2875 break; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2876 } |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2877 } |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2878 |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2879 /* If no overlay applies, get a text property. */ |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2880 if (NILP (overlay)) |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2881 mouse_face = Fget_text_property (position, Qmouse_face, |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2882 w->buffer); |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2883 |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2884 /* Handle the overlay case. */ |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2885 if (!NILP (overlay)) |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2886 { |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2887 /* Find the range of text around this char that |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2888 should be active. */ |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2889 Lisp_Object before, after; |
92237
ce06567a933d
* dispextern.h (face_at_buffer_position, face_for_overlay_string)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
91327
diff
changeset
|
2890 EMACS_INT ignore; |
80979
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2891 |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2892 |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2893 before = Foverlay_start (overlay); |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2894 after = Foverlay_end (overlay); |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2895 /* Record this as the current active region. */ |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2896 fast_find_position (w, XFASTINT (before), |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2897 &mouse_face_beg_col, |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2898 &mouse_face_beg_row); |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2899 |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2900 mouse_face_past_end |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2901 = !fast_find_position (w, XFASTINT (after), |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2902 &mouse_face_end_col, |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2903 &mouse_face_end_row); |
84968
85eb2660cbe3
(mouse_face_window): Rename from Qmouse_face_window. Update all users.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
84955
diff
changeset
|
2904 mouse_face_window = window; |
80979
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2905 |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2906 mouse_face_face_id |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2907 = face_at_buffer_position (w, pos, 0, 0, |
103114
fa8e2c663118
* xfaces.c (face_at_buffer_position): New arg base_face_id.
Chong Yidong <cyd@stupidchicken.com>
parents:
103048
diff
changeset
|
2908 &ignore, pos + 1, 1, -1); |
80979
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2909 |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2910 /* Display it as active. */ |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2911 term_show_mouse_face (DRAW_MOUSE_FACE); |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2912 } |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2913 /* Handle the text property case. */ |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2914 else if (!NILP (mouse_face)) |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2915 { |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2916 /* Find the range of text around this char that |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2917 should be active. */ |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2918 Lisp_Object before, after, beginning, end; |
92237
ce06567a933d
* dispextern.h (face_at_buffer_position, face_for_overlay_string)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
91327
diff
changeset
|
2919 EMACS_INT ignore; |
80979
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2920 |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2921 beginning = Fmarker_position (w->start); |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2922 XSETINT (end, (BUF_Z (b) - XFASTINT (w->window_end_pos))); |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2923 before |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2924 = Fprevious_single_property_change (make_number (pos + 1), |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2925 Qmouse_face, |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2926 w->buffer, beginning); |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2927 after |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2928 = Fnext_single_property_change (position, Qmouse_face, |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2929 w->buffer, end); |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2930 |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2931 /* Record this as the current active region. */ |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2932 fast_find_position (w, XFASTINT (before), |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2933 &mouse_face_beg_col, |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2934 &mouse_face_beg_row); |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2935 mouse_face_past_end |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2936 = !fast_find_position (w, XFASTINT (after), |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2937 &mouse_face_end_col, |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2938 &mouse_face_end_row); |
84968
85eb2660cbe3
(mouse_face_window): Rename from Qmouse_face_window. Update all users.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
84955
diff
changeset
|
2939 mouse_face_window = window; |
80979
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2940 |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2941 mouse_face_face_id |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2942 = face_at_buffer_position (w, pos, 0, 0, |
103114
fa8e2c663118
* xfaces.c (face_at_buffer_position): New arg base_face_id.
Chong Yidong <cyd@stupidchicken.com>
parents:
103048
diff
changeset
|
2943 &ignore, pos + 1, 1, -1); |
80979
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2944 |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2945 /* Display it as active. */ |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2946 term_show_mouse_face (DRAW_MOUSE_FACE); |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2947 } |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2948 } |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2949 |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2950 /* Look for a `help-echo' property. */ |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2951 { |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2952 Lisp_Object help; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2953 extern Lisp_Object Qhelp_echo; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2954 |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2955 /* Check overlays first. */ |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2956 help = Qnil; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2957 for (i = noverlays - 1; i >= 0 && NILP (help); --i) |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2958 { |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2959 overlay = overlay_vec[i]; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2960 help = Foverlay_get (overlay, Qhelp_echo); |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2961 } |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2962 |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2963 if (!NILP (help)) |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2964 { |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2965 help_echo_string = help; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2966 help_echo_window = window; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2967 help_echo_object = overlay; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2968 help_echo_pos = pos; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2969 } |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2970 /* Try text properties. */ |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2971 else if (NILP (help) |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2972 && ((STRINGP (glyph->object) |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2973 && glyph->charpos >= 0 |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2974 && glyph->charpos < SCHARS (glyph->object)) |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2975 || (BUFFERP (glyph->object) |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2976 && glyph->charpos >= BEGV |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2977 && glyph->charpos < ZV))) |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2978 { |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2979 help = Fget_text_property (make_number (glyph->charpos), |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2980 Qhelp_echo, glyph->object); |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2981 if (!NILP (help)) |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2982 { |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2983 help_echo_string = help; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2984 help_echo_window = window; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2985 help_echo_object = glyph->object; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2986 help_echo_pos = glyph->charpos; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2987 } |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2988 } |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2989 } |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2990 |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2991 BEGV = obegv; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2992 ZV = ozv; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2993 current_buffer = obuf; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2994 } |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2995 } |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2996 } |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2997 |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2998 static int |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
2999 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
|
3000 { |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3001 /* 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
|
3002 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
|
3003 { |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3004 frame->mouse_moved = 1; |
81127
d620b28641cd
(term_mouse_highlight): Remove unused variables.
Nick Roberts <nickrob@snap.net.nz>
parents:
81107
diff
changeset
|
3005 term_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
|
3006 /* Remember which glyph we're now on. */ |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3007 last_mouse_x = event->x; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3008 last_mouse_y = event->y; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3009 return 1; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3010 } |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3011 return 0; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3012 } |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3013 |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3014 /* Return the current position of the mouse. |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3015 |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3016 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
|
3017 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
|
3018 garbage. |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3019 |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3020 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
|
3021 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
|
3022 |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3023 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
|
3024 |
81127
d620b28641cd
(term_mouse_highlight): Remove unused variables.
Nick Roberts <nickrob@snap.net.nz>
parents:
81107
diff
changeset
|
3025 This clears mouse_moved until the next motion |
81102
a00e7c5f2faa
(mouse_face_window): Rename...
Nick Roberts <nickrob@snap.net.nz>
parents:
81083
diff
changeset
|
3026 event arrives. */ |
80979
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3027 static void |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3028 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
|
3029 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
|
3030 Lisp_Object *y, unsigned long *time) |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3031 { |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3032 struct timeval now; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3033 |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3034 *fp = SELECTED_FRAME (); |
81102
a00e7c5f2faa
(mouse_face_window): Rename...
Nick Roberts <nickrob@snap.net.nz>
parents:
81083
diff
changeset
|
3035 (*fp)->mouse_moved = 0; |
80979
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3036 |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3037 *bar_window = Qnil; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3038 *part = 0; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3039 |
81127
d620b28641cd
(term_mouse_highlight): Remove unused variables.
Nick Roberts <nickrob@snap.net.nz>
parents:
81107
diff
changeset
|
3040 XSETINT (*x, last_mouse_x); |
81102
a00e7c5f2faa
(mouse_face_window): Rename...
Nick Roberts <nickrob@snap.net.nz>
parents:
81083
diff
changeset
|
3041 XSETINT (*y, last_mouse_y); |
80979
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3042 gettimeofday(&now, 0); |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3043 *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
|
3044 } |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3045 |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3046 /* 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
|
3047 |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3048 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
|
3049 the mouse. */ |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3050 |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3051 static Lisp_Object |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3052 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
|
3053 struct frame *f) |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3054 { |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3055 struct timeval now; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3056 int i, j; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3057 |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3058 result->kind = GPM_CLICK_EVENT; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3059 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
|
3060 { |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3061 if (event->buttons & j) { |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3062 result->code = i; /* button number */ |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3063 break; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3064 } |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3065 } |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3066 gettimeofday(&now, 0); |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3067 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
|
3068 |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3069 if (event->type & GPM_UP) |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3070 result->modifiers = up_modifier; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3071 else if (event->type & GPM_DOWN) |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3072 result->modifiers = down_modifier; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3073 else |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3074 result->modifiers = 0; |
92281
4bf10a5a835d
(encode_terminal_code, produce_special_glyphs): Likewise.
Kim F. Storm <storm@cua.dk>
parents:
92237
diff
changeset
|
3075 |
80979
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3076 if (event->type & GPM_SINGLE) |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3077 result->modifiers |= click_modifier; |
92281
4bf10a5a835d
(encode_terminal_code, produce_special_glyphs): Likewise.
Kim F. Storm <storm@cua.dk>
parents:
92237
diff
changeset
|
3078 |
80979
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3079 if (event->type & GPM_DOUBLE) |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3080 result->modifiers |= double_modifier; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3081 |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3082 if (event->type & GPM_TRIPLE) |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3083 result->modifiers |= triple_modifier; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3084 |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3085 if (event->type & GPM_DRAG) |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3086 result->modifiers |= drag_modifier; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3087 |
81127
d620b28641cd
(term_mouse_highlight): Remove unused variables.
Nick Roberts <nickrob@snap.net.nz>
parents:
81107
diff
changeset
|
3088 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
|
3089 |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3090 /* 1 << KG_SHIFT */ |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3091 if (event->modifiers & (1 << 0)) |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3092 result->modifiers |= shift_modifier; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3093 |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3094 /* 1 << KG_CTRL */ |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3095 if (event->modifiers & (1 << 2)) |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3096 result->modifiers |= ctrl_modifier; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3097 |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3098 /* 1 << KG_ALT || KG_ALTGR */ |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3099 if (event->modifiers & (1 << 3) |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3100 || event->modifiers & (1 << 1)) |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3101 result->modifiers |= meta_modifier; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3102 } |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3103 |
81127
d620b28641cd
(term_mouse_highlight): Remove unused variables.
Nick Roberts <nickrob@snap.net.nz>
parents:
81107
diff
changeset
|
3104 XSETINT (result->x, event->x); |
d620b28641cd
(term_mouse_highlight): Remove unused variables.
Nick Roberts <nickrob@snap.net.nz>
parents:
81107
diff
changeset
|
3105 XSETINT (result->y, event->y); |
80979
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3106 XSETFRAME (result->frame_or_window, f); |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3107 result->arg = Qnil; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3108 return Qnil; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3109 } |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3110 |
92281
4bf10a5a835d
(encode_terminal_code, produce_special_glyphs): Likewise.
Kim F. Storm <storm@cua.dk>
parents:
92237
diff
changeset
|
3111 int |
83622 | 3112 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
|
3113 { |
83622 | 3114 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
|
3115 struct input_event ie; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3116 int do_help = 0; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3117 int count = 0; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3118 |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3119 EVENT_INIT (ie); |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3120 ie.kind = NO_EVENT; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3121 ie.arg = Qnil; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3122 |
81127
d620b28641cd
(term_mouse_highlight): Remove unused variables.
Nick Roberts <nickrob@snap.net.nz>
parents:
81107
diff
changeset
|
3123 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
|
3124 previous_help_echo_string = help_echo_string; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3125 help_echo_string = Qnil; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3126 |
84968
85eb2660cbe3
(mouse_face_window): Rename from Qmouse_face_window. Update all users.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
84955
diff
changeset
|
3127 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
|
3128 |
81127
d620b28641cd
(term_mouse_highlight): Remove unused variables.
Nick Roberts <nickrob@snap.net.nz>
parents:
81107
diff
changeset
|
3129 if (!term_mouse_movement (f, event)) |
d620b28641cd
(term_mouse_highlight): Remove unused variables.
Nick Roberts <nickrob@snap.net.nz>
parents:
81107
diff
changeset
|
3130 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
|
3131 |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3132 /* 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
|
3133 has changed, generate a HELP_EVENT. */ |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3134 if (!NILP (help_echo_string) |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3135 || !NILP (previous_help_echo_string)) |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3136 do_help = 1; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3137 |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3138 goto done; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3139 } |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3140 else { |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3141 f->mouse_moved = 0; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3142 term_mouse_click (&ie, event, f); |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3143 } |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3144 |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3145 done: |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3146 if (ie.kind != NO_EVENT) |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3147 { |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3148 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
|
3149 count++; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3150 } |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3151 |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3152 if (do_help |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3153 && !(hold_quit && hold_quit->kind != NO_EVENT)) |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3154 { |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3155 Lisp_Object frame; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3156 |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3157 if (f) |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3158 XSETFRAME (frame, f); |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3159 else |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3160 frame = Qnil; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3161 |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3162 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
|
3163 help_echo_object, help_echo_pos); |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3164 count++; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3165 } |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3166 |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3167 return count; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3168 } |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3169 |
84968
85eb2660cbe3
(mouse_face_window): Rename from Qmouse_face_window. Update all users.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
84955
diff
changeset
|
3170 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
|
3171 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
|
3172 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
|
3173 Gpm-mouse can only be activated for one tty at a time. */) |
80979
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3174 () |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3175 { |
84768
53194ec05789
* termhooks.h (term_gpm): Delete. Use gpm_tty's NULLness instead.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
84692
diff
changeset
|
3176 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
|
3177 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
|
3178 = ((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
|
3179 ? (f)->terminal->display_info.tty : NULL); |
80979
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3180 Gpm_Connect connection; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3181 |
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
|
3182 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
|
3183 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
|
3184 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
|
3185 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
|
3186 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
|
3187 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
|
3188 |
80979
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3189 connection.eventMask = ~0; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3190 connection.defaultMask = ~GPM_HARD; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3191 connection.maxMod = ~0; |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3192 connection.minMod = 0; |
81127
d620b28641cd
(term_mouse_highlight): Remove unused variables.
Nick Roberts <nickrob@snap.net.nz>
parents:
81107
diff
changeset
|
3193 gpm_zerobased = 1; |
80979
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3194 |
84768
53194ec05789
* termhooks.h (term_gpm): Delete. Use gpm_tty's NULLness instead.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
84692
diff
changeset
|
3195 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
|
3196 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
|
3197 else |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3198 { |
84768
53194ec05789
* termhooks.h (term_gpm): Delete. Use gpm_tty's NULLness instead.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
84692
diff
changeset
|
3199 gpm_tty = tty; |
84955
dfbee4931a6a
(Fterm_open_connection): Add comment.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
84849
diff
changeset
|
3200 /* `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
|
3201 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
|
3202 before calling init_sys_modes. */ |
83622 | 3203 reset_sys_modes (tty); |
3204 init_sys_modes (tty); | |
80979
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3205 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
|
3206 return Qnil; |
80979
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3207 } |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3208 } |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3209 |
98155
314662df7c17
* term.c (close_gpm): New fun extracted from Fgpm_mouse_stop.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
97830
diff
changeset
|
3210 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
|
3211 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
|
3212 { |
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
|
3213 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
|
3214 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
|
3215 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
|
3216 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
|
3217 } |
314662df7c17
* term.c (close_gpm): New fun extracted from Fgpm_mouse_stop.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
97830
diff
changeset
|
3218 |
84968
85eb2660cbe3
(mouse_face_window): Rename from Qmouse_face_window. Update all users.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
84955
diff
changeset
|
3219 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
|
3220 0, 0, 0, |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3221 doc: /* Close a connection to Gpm. */) |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3222 () |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3223 { |
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
|
3224 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
|
3225 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
|
3226 = ((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
|
3227 ? (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
|
3228 |
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
|
3229 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
|
3230 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
|
3231 |
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
|
3232 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
|
3233 return Qnil; |
80979
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3234 } |
80994
62b6aa7f8c37
Use HAVE_GPM instead of HAVE_GPM_H.
Nick Roberts <nickrob@snap.net.nz>
parents:
80979
diff
changeset
|
3235 #endif /* HAVE_GPM */ |
80979
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3236 |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3237 |
103617
9342805096db
(create_tty_output) [MSDOS]: #ifdef away.
Eli Zaretskii <eliz@gnu.org>
parents:
103605
diff
changeset
|
3238 #ifndef MSDOS |
25002 | 3239 /*********************************************************************** |
3240 Initialization | |
3241 ***********************************************************************/ | |
3242 | |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
3243 /* 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
|
3244 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
|
3245 |
21514 | 3246 void |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
3247 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
|
3248 { |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
3249 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
|
3250 |
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
3251 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
|
3252 abort (); |
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
3253 |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
3254 t = xmalloc (sizeof (struct tty_output)); |
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
3255 bzero (t, sizeof (struct tty_output)); |
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
3256 |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
3257 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
|
3258 |
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
3259 f->output_data.tty = t; |
53226
dd3018b4785b
Implemented multiple tty support.
Karoly Lorentey <lorentey@elte.hu>
parents:
53225
diff
changeset
|
3260 } |
dd3018b4785b
Implemented multiple tty support.
Karoly Lorentey <lorentey@elte.hu>
parents:
53225
diff
changeset
|
3261 |
100367
b6b22701e97c
(tty_free_frame_resources): Renamed from delete_tty_output; all
Chong Yidong <cyd@stupidchicken.com>
parents:
100276
diff
changeset
|
3262 /* 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
|
3263 |
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
3264 static void |
100367
b6b22701e97c
(tty_free_frame_resources): Renamed from delete_tty_output; all
Chong Yidong <cyd@stupidchicken.com>
parents:
100276
diff
changeset
|
3265 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
|
3266 { |
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
3267 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
|
3268 abort (); |
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
3269 |
100367
b6b22701e97c
(tty_free_frame_resources): Renamed from delete_tty_output; all
Chong Yidong <cyd@stupidchicken.com>
parents:
100276
diff
changeset
|
3270 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
|
3271 free_frame_faces (f); |
b6b22701e97c
(tty_free_frame_resources): Renamed from delete_tty_output; all
Chong Yidong <cyd@stupidchicken.com>
parents:
100276
diff
changeset
|
3272 |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
3273 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
|
3274 } |
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
3275 |
103617
9342805096db
(create_tty_output) [MSDOS]: #ifdef away.
Eli Zaretskii <eliz@gnu.org>
parents:
103605
diff
changeset
|
3276 #else /* MSDOS */ |
9342805096db
(create_tty_output) [MSDOS]: #ifdef away.
Eli Zaretskii <eliz@gnu.org>
parents:
103605
diff
changeset
|
3277 |
9342805096db
(create_tty_output) [MSDOS]: #ifdef away.
Eli Zaretskii <eliz@gnu.org>
parents:
103605
diff
changeset
|
3278 /* Delete frame F's face cache. */ |
9342805096db
(create_tty_output) [MSDOS]: #ifdef away.
Eli Zaretskii <eliz@gnu.org>
parents:
103605
diff
changeset
|
3279 |
9342805096db
(create_tty_output) [MSDOS]: #ifdef away.
Eli Zaretskii <eliz@gnu.org>
parents:
103605
diff
changeset
|
3280 static void |
9342805096db
(create_tty_output) [MSDOS]: #ifdef away.
Eli Zaretskii <eliz@gnu.org>
parents:
103605
diff
changeset
|
3281 tty_free_frame_resources (struct frame *f) |
9342805096db
(create_tty_output) [MSDOS]: #ifdef away.
Eli Zaretskii <eliz@gnu.org>
parents:
103605
diff
changeset
|
3282 { |
9342805096db
(create_tty_output) [MSDOS]: #ifdef away.
Eli Zaretskii <eliz@gnu.org>
parents:
103605
diff
changeset
|
3283 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
|
3284 abort (); |
9342805096db
(create_tty_output) [MSDOS]: #ifdef away.
Eli Zaretskii <eliz@gnu.org>
parents:
103605
diff
changeset
|
3285 |
9342805096db
(create_tty_output) [MSDOS]: #ifdef away.
Eli Zaretskii <eliz@gnu.org>
parents:
103605
diff
changeset
|
3286 if (FRAME_FACE_CACHE (f)) |
9342805096db
(create_tty_output) [MSDOS]: #ifdef away.
Eli Zaretskii <eliz@gnu.org>
parents:
103605
diff
changeset
|
3287 free_frame_faces (f); |
9342805096db
(create_tty_output) [MSDOS]: #ifdef away.
Eli Zaretskii <eliz@gnu.org>
parents:
103605
diff
changeset
|
3288 } |
9342805096db
(create_tty_output) [MSDOS]: #ifdef away.
Eli Zaretskii <eliz@gnu.org>
parents:
103605
diff
changeset
|
3289 #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
|
3290 |
84461
7ec30b352b6e
* xterm.c (x_create_terminal): Add comment.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
84359
diff
changeset
|
3291 /* 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
|
3292 |
83521
40a5d8a15056
Fix crashes in redisplay functions on suspended tty frames. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83512
diff
changeset
|
3293 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
|
3294 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
|
3295 { |
40a5d8a15056
Fix crashes in redisplay functions on suspended tty frames. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83512
diff
changeset
|
3296 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
|
3297 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
|
3298 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
|
3299 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
|
3300 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
|
3301 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
|
3302 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
|
3303 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
|
3304 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
|
3305 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
|
3306 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
|
3307 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
|
3308 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
|
3309 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
|
3310 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
|
3311 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
|
3312 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
|
3313 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
|
3314 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
|
3315 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
|
3316 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
|
3317 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
|
3318 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
|
3319 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
|
3320 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
|
3321 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
|
3322 |
40a5d8a15056
Fix crashes in redisplay functions on suspended tty frames. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83512
diff
changeset
|
3323 /* 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
|
3324 correctly. */ |
100367
b6b22701e97c
(tty_free_frame_resources): Renamed from delete_tty_output; all
Chong Yidong <cyd@stupidchicken.com>
parents:
100276
diff
changeset
|
3325 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
|
3326 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
|
3327 } |
40a5d8a15056
Fix crashes in redisplay functions on suspended tty frames. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83512
diff
changeset
|
3328 |
84461
7ec30b352b6e
* xterm.c (x_create_terminal): Add comment.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
84359
diff
changeset
|
3329 /* 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
|
3330 |
83521
40a5d8a15056
Fix crashes in redisplay functions on suspended tty frames. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83512
diff
changeset
|
3331 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
|
3332 set_tty_hooks (struct terminal *terminal) |
253 | 3333 { |
83521
40a5d8a15056
Fix crashes in redisplay functions on suspended tty frames. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83512
diff
changeset
|
3334 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
|
3335 |
40a5d8a15056
Fix crashes in redisplay functions on suspended tty frames. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83512
diff
changeset
|
3336 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
|
3337 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
|
3338 |
40a5d8a15056
Fix crashes in redisplay functions on suspended tty frames. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83512
diff
changeset
|
3339 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
|
3340 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
|
3341 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
|
3342 |
40a5d8a15056
Fix crashes in redisplay functions on suspended tty frames. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83512
diff
changeset
|
3343 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
|
3344 |
40a5d8a15056
Fix crashes in redisplay functions on suspended tty frames. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83512
diff
changeset
|
3345 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
|
3346 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
|
3347 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
|
3348 |
40a5d8a15056
Fix crashes in redisplay functions on suspended tty frames. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83512
diff
changeset
|
3349 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
|
3350 |
83521
40a5d8a15056
Fix crashes in redisplay functions on suspended tty frames. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83512
diff
changeset
|
3351 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
|
3352 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
|
3353 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
|
3354 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
|
3355 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
|
3356 |
40a5d8a15056
Fix crashes in redisplay functions on suspended tty frames. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83512
diff
changeset
|
3357 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
|
3358 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
|
3359 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
|
3360 |
40a5d8a15056
Fix crashes in redisplay functions on suspended tty frames. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83512
diff
changeset
|
3361 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
|
3362 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
|
3363 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
|
3364 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
|
3365 |
40a5d8a15056
Fix crashes in redisplay functions on suspended tty frames. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83512
diff
changeset
|
3366 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
|
3367 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
|
3368 |
100367
b6b22701e97c
(tty_free_frame_resources): Renamed from delete_tty_output; all
Chong Yidong <cyd@stupidchicken.com>
parents:
100276
diff
changeset
|
3369 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
|
3370 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
|
3371 } |
40a5d8a15056
Fix crashes in redisplay functions on suspended tty frames. (Reported by Dan Nicolaescu.)
Karoly Lorentey <lorentey@elte.hu>
parents:
83512
diff
changeset
|
3372 |
83086
347ce3d5d79c
Fix dropping of the controlling tty on Solaris (Dan Nicolaescu).
Karoly Lorentey <lorentey@elte.hu>
parents:
83082
diff
changeset
|
3373 /* 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
|
3374 static void |
83086
347ce3d5d79c
Fix dropping of the controlling tty on Solaris (Dan Nicolaescu).
Karoly Lorentey <lorentey@elte.hu>
parents:
83082
diff
changeset
|
3375 dissociate_if_controlling_tty (int fd) |
253 | 3376 { |
97658 | 3377 #ifndef DOS_NT |
83086
347ce3d5d79c
Fix dropping of the controlling tty on Solaris (Dan Nicolaescu).
Karoly Lorentey <lorentey@elte.hu>
parents:
83082
diff
changeset
|
3378 int pgid; |
83154
ae72b7a6c292
Dissociate from the controlling tty correctly on FreeBSD.
Karoly Lorentey <lorentey@elte.hu>
parents:
83147
diff
changeset
|
3379 EMACS_GET_TTY_PGRP (fd, &pgid); /* 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
|
3380 if (pgid != -1) |
347ce3d5d79c
Fix dropping of the controlling tty on Solaris (Dan Nicolaescu).
Karoly Lorentey <lorentey@elte.hu>
parents:
83082
diff
changeset
|
3381 { |
83154
ae72b7a6c292
Dissociate from the controlling tty correctly on FreeBSD.
Karoly Lorentey <lorentey@elte.hu>
parents:
83147
diff
changeset
|
3382 #if defined (USG) && !defined (BSD_PGRPS) |
83086
347ce3d5d79c
Fix dropping of the controlling tty on Solaris (Dan Nicolaescu).
Karoly Lorentey <lorentey@elte.hu>
parents:
83082
diff
changeset
|
3383 setpgrp (); |
347ce3d5d79c
Fix dropping of the controlling tty on Solaris (Dan Nicolaescu).
Karoly Lorentey <lorentey@elte.hu>
parents:
83082
diff
changeset
|
3384 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
|
3385 #elif defined (CYGWIN) |
b651dc7c54ac
* term.c (dissociate_if_controlling_tty): Call setsid on CYGWIN.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
83891
diff
changeset
|
3386 setsid (); |
b651dc7c54ac
* term.c (dissociate_if_controlling_tty): Call setsid on CYGWIN.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
83891
diff
changeset
|
3387 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
|
3388 #else |
347ce3d5d79c
Fix dropping of the controlling tty on Solaris (Dan Nicolaescu).
Karoly Lorentey <lorentey@elte.hu>
parents:
83082
diff
changeset
|
3389 #ifdef TIOCNOTTY /* Try BSD ioctls. */ |
83154
ae72b7a6c292
Dissociate from the controlling tty correctly on FreeBSD.
Karoly Lorentey <lorentey@elte.hu>
parents:
83147
diff
changeset
|
3390 sigblock (sigmask (SIGTTOU)); |
84779
67e430e38471
(DEV_TTY): New macro. Provide a definition for MS-Windows.
Eli Zaretskii <eliz@gnu.org>
parents:
84769
diff
changeset
|
3391 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
|
3392 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
|
3393 { |
ae72b7a6c292
Dissociate from the controlling tty correctly on FreeBSD.
Karoly Lorentey <lorentey@elte.hu>
parents:
83147
diff
changeset
|
3394 no_controlling_tty = 1; |
ae72b7a6c292
Dissociate from the controlling tty correctly on FreeBSD.
Karoly Lorentey <lorentey@elte.hu>
parents:
83147
diff
changeset
|
3395 } |
ae72b7a6c292
Dissociate from the controlling tty correctly on FreeBSD.
Karoly Lorentey <lorentey@elte.hu>
parents:
83147
diff
changeset
|
3396 if (fd != -1) |
ae72b7a6c292
Dissociate from the controlling tty correctly on FreeBSD.
Karoly Lorentey <lorentey@elte.hu>
parents:
83147
diff
changeset
|
3397 emacs_close (fd); |
ae72b7a6c292
Dissociate from the controlling tty correctly on FreeBSD.
Karoly Lorentey <lorentey@elte.hu>
parents:
83147
diff
changeset
|
3398 sigunblock (sigmask (SIGTTOU)); |
ae72b7a6c292
Dissociate from the controlling tty correctly on FreeBSD.
Karoly Lorentey <lorentey@elte.hu>
parents:
83147
diff
changeset
|
3399 #else |
ae72b7a6c292
Dissociate from the controlling tty correctly on FreeBSD.
Karoly Lorentey <lorentey@elte.hu>
parents:
83147
diff
changeset
|
3400 /* Unknown system. */ |
ae72b7a6c292
Dissociate from the controlling tty correctly on FreeBSD.
Karoly Lorentey <lorentey@elte.hu>
parents:
83147
diff
changeset
|
3401 croak (); |
ae72b7a6c292
Dissociate from the controlling tty correctly on FreeBSD.
Karoly Lorentey <lorentey@elte.hu>
parents:
83147
diff
changeset
|
3402 #endif /* ! TIOCNOTTY */ |
83158
f948c9fd910c
Fix parse error in term.c (ARISAWA Akihiro).
Karoly Lorentey <lorentey@elte.hu>
parents:
83154
diff
changeset
|
3403 #endif /* ! USG */ |
83086
347ce3d5d79c
Fix dropping of the controlling tty on Solaris (Dan Nicolaescu).
Karoly Lorentey <lorentey@elte.hu>
parents:
83082
diff
changeset
|
3404 } |
97658 | 3405 #endif /* !DOS_NT */ |
83086
347ce3d5d79c
Fix dropping of the controlling tty on Solaris (Dan Nicolaescu).
Karoly Lorentey <lorentey@elte.hu>
parents:
83082
diff
changeset
|
3406 } |
347ce3d5d79c
Fix dropping of the controlling tty on Solaris (Dan Nicolaescu).
Karoly Lorentey <lorentey@elte.hu>
parents:
83082
diff
changeset
|
3407 |
83338
5f293f92f85e
Fix compilation error in src/term.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83332
diff
changeset
|
3408 static void maybe_fatal(); |
5f293f92f85e
Fix compilation error in src/term.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83332
diff
changeset
|
3409 |
83008
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
3410 /* 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
|
3411 type. |
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
3412 |
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
|
3413 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
|
3414 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
|
3415 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
|
3416 |
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
3417 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
|
3418 |
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
3419 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
|
3420 |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
3421 struct terminal * |
83341
76e51706154e
Rename term_init to init_tty.
Karoly Lorentey <lorentey@elte.hu>
parents:
83338
diff
changeset
|
3422 init_tty (char *name, char *terminal_type, int must_succeed) |
253 | 3423 { |
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
|
3424 char *area = NULL; |
253 | 3425 char **address = &area; |
52314
529dd59ee898
(term_init): Remove `const' from buffer_size's declaration.
Eli Zaretskii <eliz@gnu.org>
parents:
52294
diff
changeset
|
3426 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
|
3427 register char *p = NULL; |
253 | 3428 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
|
3429 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
|
3430 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
|
3431 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
|
3432 |
83008
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
3433 if (!terminal_type) |
100276
8f4457a692c5
(encode_terminal_code): Free any previous memory blocks
Chong Yidong <cyd@stupidchicken.com>
parents:
98367
diff
changeset
|
3434 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
|
3435 "Unknown terminal type", |
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
3436 "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
|
3437 |
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
|
3438 if (name == NULL) |
84779
67e430e38471
(DEV_TTY): New macro. Provide a definition for MS-Windows.
Eli Zaretskii <eliz@gnu.org>
parents:
84769
diff
changeset
|
3439 name = DEV_TTY; |
67e430e38471
(DEV_TTY): New macro. Provide a definition for MS-Windows.
Eli Zaretskii <eliz@gnu.org>
parents:
84769
diff
changeset
|
3440 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
|
3441 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
|
3442 |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
3443 /* 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
|
3444 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
|
3445 /* 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
|
3446 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
|
3447 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
|
3448 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
|
3449 if (terminal) |
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
3450 return terminal; |
84779
67e430e38471
(DEV_TTY): New macro. Provide a definition for MS-Windows.
Eli Zaretskii <eliz@gnu.org>
parents:
84769
diff
changeset
|
3451 |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
3452 terminal = create_terminal (); |
97658 | 3453 #ifdef MSDOS |
3454 if (been_here > 0) | |
100276
8f4457a692c5
(encode_terminal_code): Free any previous memory blocks
Chong Yidong <cyd@stupidchicken.com>
parents:
98367
diff
changeset
|
3455 maybe_fatal (1, 0, "Attempt to create another terminal %s", "", |
97658 | 3456 name, ""); |
3457 been_here = 1; | |
3458 tty = &the_only_display_info; | |
3459 #else | |
83008
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
3460 tty = (struct tty_display_info *) xmalloc (sizeof (struct tty_display_info)); |
97658 | 3461 #endif |
83008
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
3462 bzero (tty, sizeof (struct tty_display_info)); |
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
3463 tty->next = tty_list; |
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
3464 tty_list = tty; |
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
3465 |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
3466 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
|
3467 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
|
3468 tty->terminal = terminal; |
53226
dd3018b4785b
Implemented multiple tty support.
Karoly Lorentey <lorentey@elte.hu>
parents:
53225
diff
changeset
|
3469 |
82991
2b26656ff804
MULTI_KBOARD support for ttys. Input-related bugfixes for X+tty sessions.
Karoly Lorentey <lorentey@elte.hu>
parents:
82990
diff
changeset
|
3470 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
|
3471 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
|
3472 |
97658 | 3473 #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
|
3474 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
|
3475 |
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
|
3476 { |
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
|
3477 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
|
3478 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
|
3479 |
b8237c556f0e
Fix the case when emacsclient is run on Emacs's controlling tty.
Karoly Lorentey <lorentey@elte.hu>
parents:
83027
diff
changeset
|
3480 #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
|
3481 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
|
3482 /* 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
|
3483 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
|
3484 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
|
3485 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
|
3486 else |
83032
b8237c556f0e
Fix the case when emacsclient is run on Emacs's controlling tty.
Karoly Lorentey <lorentey@elte.hu>
parents:
83027
diff
changeset
|
3487 #else |
83074
34a7a8f40548
Fix background-mode on terminal frames (Dan Nicolaescu).
Karoly Lorentey <lorentey@elte.hu>
parents:
83065
diff
changeset
|
3488 /* 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
|
3489 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
|
3490 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
|
3491 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
|
3492 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
|
3493 #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
|
3494 |
100370
c611d83003ce
(init_tty): Move setting the terminal name before the
Dan Nicolaescu <dann@ics.uci.edu>
parents:
100367
diff
changeset
|
3495 tty->name = xstrdup (name); |
c611d83003ce
(init_tty): Move setting the terminal name before the
Dan Nicolaescu <dann@ics.uci.edu>
parents:
100367
diff
changeset
|
3496 terminal->name = xstrdup (name); |
c611d83003ce
(init_tty): Move setting the terminal name before the
Dan Nicolaescu <dann@ics.uci.edu>
parents:
100367
diff
changeset
|
3497 |
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
|
3498 if (fd < 0) |
100276
8f4457a692c5
(encode_terminal_code): Free any previous memory blocks
Chong Yidong <cyd@stupidchicken.com>
parents:
98367
diff
changeset
|
3499 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
|
3500 "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
|
3501 "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
|
3502 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
|
3503 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
|
3504 { |
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
|
3505 close (fd); |
100276
8f4457a692c5
(encode_terminal_code): Free any previous memory blocks
Chong Yidong <cyd@stupidchicken.com>
parents:
98367
diff
changeset
|
3506 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
|
3507 "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
|
3508 "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
|
3509 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
|
3510 } |
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
|
3511 |
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
|
3512 #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
|
3513 if (!ctty) |
83086
347ce3d5d79c
Fix dropping of the controlling tty on Solaris (Dan Nicolaescu).
Karoly Lorentey <lorentey@elte.hu>
parents:
83082
diff
changeset
|
3514 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
|
3515 #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
|
3516 |
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
|
3517 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
|
3518 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
|
3519 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
|
3520 } |
84779
67e430e38471
(DEV_TTY): New macro. Provide a definition for MS-Windows.
Eli Zaretskii <eliz@gnu.org>
parents:
84769
diff
changeset
|
3521 |
82989
f3845715a5f6
Separate frame-local, tty-dependent parameters from tty-local parameters.
Karoly Lorentey <lorentey@elte.hu>
parents:
82988
diff
changeset
|
3522 tty->type = xstrdup (terminal_type); |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3523 |
82988
f82e3a6f5ccb
A few more bugfixes and new features.
Karoly Lorentey <lorentey@elte.hu>
parents:
82987
diff
changeset
|
3524 add_keyboard_wait_descriptor (fileno (tty->input)); |
253 | 3525 |
97658 | 3526 #endif /* !DOS_NT */ |
3527 | |
90059
9b0bfaaaec9c
Sync to the change in HEAD on 2004-11-30.
Kenichi Handa <handa@m17n.org>
parents:
90054
diff
changeset
|
3528 encode_terminal_src_size = 0; |
9b0bfaaaec9c
Sync to the change in HEAD on 2004-11-30.
Kenichi Handa <handa@m17n.org>
parents:
90054
diff
changeset
|
3529 encode_terminal_dst_size = 0; |
58638
67bea14002c3
(encode_terminal_buf, encode_terminal_bufsize): New
Kenichi Handa <handa@m17n.org>
parents:
54428
diff
changeset
|
3530 |
80994
62b6aa7f8c37
Use HAVE_GPM instead of HAVE_GPM_H.
Nick Roberts <nickrob@snap.net.nz>
parents:
80979
diff
changeset
|
3531 #ifdef HAVE_GPM |
83630
28201311b297
* term.c (init_tty): Use terminal specific mouse_position_hook.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
83629
diff
changeset
|
3532 terminal->mouse_position_hook = term_mouse_position; |
84968
85eb2660cbe3
(mouse_face_window): Rename from Qmouse_face_window. Update all users.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
84955
diff
changeset
|
3533 mouse_face_window = Qnil; |
80979
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3534 #endif |
3d81d0b44577
(write_glyphs_with_face): New function.
Nick Roberts <nickrob@snap.net.nz>
parents:
76627
diff
changeset
|
3535 |
97658 | 3536 #ifdef DOS_NT |
9797
05d9072c5a38
(term_init) [WINDOWSNT]: Do some Windows-specific
Richard M. Stallman <rms@gnu.org>
parents:
9658
diff
changeset
|
3537 #ifdef WINDOWSNT |
83883
cbc88cef4fca
(init_tty) [WINDOWSNT]: Pass terminal to
Jason Rumney <jasonr@gnu.org>
parents:
83875
diff
changeset
|
3538 initialize_w32_display (terminal); |
97658 | 3539 #else /* MSDOS */ |
3540 if (strcmp (terminal_type, "internal") == 0) | |
3541 terminal->type = output_msdos_raw; | |
3542 initialize_msdos_display (terminal); | |
3543 #endif /* MSDOS */ | |
3544 tty->output = stdout; | |
3545 tty->input = stdin; | |
83889
2855c55ba18b
(init_tty) [WINDOWSNT]: Add hooks that are not accessible
Jason Rumney <jasonr@gnu.org>
parents:
83883
diff
changeset
|
3546 /* The following two are inaccessible from w32console.c. */ |
100367
b6b22701e97c
(tty_free_frame_resources): Renamed from delete_tty_output; all
Chong Yidong <cyd@stupidchicken.com>
parents:
100276
diff
changeset
|
3547 terminal->delete_frame_hook = &tty_free_frame_resources; |
83889
2855c55ba18b
(init_tty) [WINDOWSNT]: Add hooks that are not accessible
Jason Rumney <jasonr@gnu.org>
parents:
83883
diff
changeset
|
3548 terminal->delete_terminal_hook = &delete_tty; |
9797
05d9072c5a38
(term_init) [WINDOWSNT]: Do some Windows-specific
Richard M. Stallman <rms@gnu.org>
parents:
9658
diff
changeset
|
3549 |
84779
67e430e38471
(DEV_TTY): New macro. Provide a definition for MS-Windows.
Eli Zaretskii <eliz@gnu.org>
parents:
84769
diff
changeset
|
3550 tty->name = xstrdup (name); |
67e430e38471
(DEV_TTY): New macro. Provide a definition for MS-Windows.
Eli Zaretskii <eliz@gnu.org>
parents:
84769
diff
changeset
|
3551 terminal->name = xstrdup (name); |
67e430e38471
(DEV_TTY): New macro. Provide a definition for MS-Windows.
Eli Zaretskii <eliz@gnu.org>
parents:
84769
diff
changeset
|
3552 tty->type = xstrdup (terminal_type); |
83616
b78afd4acd43
* term.c (init_tty): Better initialize ttys in windows.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
83582
diff
changeset
|
3553 |
97658 | 3554 #ifdef subprocesses |
83889
2855c55ba18b
(init_tty) [WINDOWSNT]: Add hooks that are not accessible
Jason Rumney <jasonr@gnu.org>
parents:
83883
diff
changeset
|
3555 add_keyboard_wait_descriptor (0); |
97658 | 3556 #endif |
83889
2855c55ba18b
(init_tty) [WINDOWSNT]: Add hooks that are not accessible
Jason Rumney <jasonr@gnu.org>
parents:
83883
diff
changeset
|
3557 |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3558 Wcm_clear (tty); |
9797
05d9072c5a38
(term_init) [WINDOWSNT]: Do some Windows-specific
Richard M. Stallman <rms@gnu.org>
parents:
9658
diff
changeset
|
3559 |
97658 | 3560 #ifdef WINDOWSNT |
83582
a6ca8e4443e4
(dissociate_if_controlling_tty) [WINDOWSNT]: Don't define function body.
Jason Rumney <jasonr@gnu.org>
parents:
83560
diff
changeset
|
3561 { |
a6ca8e4443e4
(dissociate_if_controlling_tty) [WINDOWSNT]: Don't define function body.
Jason Rumney <jasonr@gnu.org>
parents:
83560
diff
changeset
|
3562 struct frame *f = XFRAME (selected_frame); |
a6ca8e4443e4
(dissociate_if_controlling_tty) [WINDOWSNT]: Don't define function body.
Jason Rumney <jasonr@gnu.org>
parents:
83560
diff
changeset
|
3563 |
83889
2855c55ba18b
(init_tty) [WINDOWSNT]: Add hooks that are not accessible
Jason Rumney <jasonr@gnu.org>
parents:
83883
diff
changeset
|
3564 FrameRows (tty) = FRAME_LINES (f); |
2855c55ba18b
(init_tty) [WINDOWSNT]: Add hooks that are not accessible
Jason Rumney <jasonr@gnu.org>
parents:
83883
diff
changeset
|
3565 FrameCols (tty) = FRAME_COLS (f); |
2855c55ba18b
(init_tty) [WINDOWSNT]: Add hooks that are not accessible
Jason Rumney <jasonr@gnu.org>
parents:
83883
diff
changeset
|
3566 tty->specified_window = FRAME_LINES (f); |
2855c55ba18b
(init_tty) [WINDOWSNT]: Add hooks that are not accessible
Jason Rumney <jasonr@gnu.org>
parents:
83883
diff
changeset
|
3567 |
2855c55ba18b
(init_tty) [WINDOWSNT]: Add hooks that are not accessible
Jason Rumney <jasonr@gnu.org>
parents:
83883
diff
changeset
|
3568 FRAME_CAN_HAVE_SCROLL_BARS (f) = 0; |
2855c55ba18b
(init_tty) [WINDOWSNT]: Add hooks that are not accessible
Jason Rumney <jasonr@gnu.org>
parents:
83883
diff
changeset
|
3569 FRAME_VERTICAL_SCROLL_BAR_TYPE (f) = vertical_scroll_bar_none; |
83582
a6ca8e4443e4
(dissociate_if_controlling_tty) [WINDOWSNT]: Don't define function body.
Jason Rumney <jasonr@gnu.org>
parents:
83560
diff
changeset
|
3570 } |
97658 | 3571 #else /* MSDOS */ |
3572 { | |
3573 int height, width; | |
3574 get_tty_size (fileno (tty->input), &width, &height); | |
3575 FrameCols (tty) = width; | |
3576 FrameRows (tty) = height; | |
3577 } | |
3578 #endif /* MSDOS */ | |
83582
a6ca8e4443e4
(dissociate_if_controlling_tty) [WINDOWSNT]: Don't define function body.
Jason Rumney <jasonr@gnu.org>
parents:
83560
diff
changeset
|
3579 tty->delete_in_insert_mode = 1; |
82990
2ecd1f669db9
Fixed X support, preliminary support for X-tty combo sessions.
Karoly Lorentey <lorentey@elte.hu>
parents:
82989
diff
changeset
|
3580 |
2ecd1f669db9
Fixed X support, preliminary support for X-tty combo sessions.
Karoly Lorentey <lorentey@elte.hu>
parents:
82989
diff
changeset
|
3581 UseTabs (tty) = 0; |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
3582 terminal->scroll_region_ok = 0; |
83342
9216636c02fc
Rename `struct display' to `struct device'. Update function, parameter and variable names accordingly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83341
diff
changeset
|
3583 |
9216636c02fc
Rename `struct display' to `struct device'. Update function, parameter and variable names accordingly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83341
diff
changeset
|
3584 /* Seems to insert lines when it's not supposed to, messing up the |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
3585 display. In doing a trace, it didn't seem to be called much, so I |
83342
9216636c02fc
Rename `struct display' to `struct device'. Update function, parameter and variable names accordingly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83341
diff
changeset
|
3586 don't think we're losing anything by turning it off. */ |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
3587 terminal->line_ins_del_ok = 0; |
97658 | 3588 #ifdef WINDOWSNT |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
3589 terminal->char_ins_del_ok = 1; |
9797
05d9072c5a38
(term_init) [WINDOWSNT]: Do some Windows-specific
Richard M. Stallman <rms@gnu.org>
parents:
9658
diff
changeset
|
3590 baud_rate = 19200; |
97658 | 3591 #else /* MSDOS */ |
3592 terminal->char_ins_del_ok = 0; | |
3593 init_baud_rate (fileno (tty->input)); | |
3594 #endif /* MSDOS */ | |
9797
05d9072c5a38
(term_init) [WINDOWSNT]: Do some Windows-specific
Richard M. Stallman <rms@gnu.org>
parents:
9658
diff
changeset
|
3595 |
83582
a6ca8e4443e4
(dissociate_if_controlling_tty) [WINDOWSNT]: Don't define function body.
Jason Rumney <jasonr@gnu.org>
parents:
83560
diff
changeset
|
3596 tty->TN_max_colors = 16; /* Required to be non-zero for tty-display-color-p */ |
9797
05d9072c5a38
(term_init) [WINDOWSNT]: Do some Windows-specific
Richard M. Stallman <rms@gnu.org>
parents:
9658
diff
changeset
|
3597 |
97658 | 3598 #else /* not DOS_NT */ |
9797
05d9072c5a38
(term_init) [WINDOWSNT]: Do some Windows-specific
Richard M. Stallman <rms@gnu.org>
parents:
9658
diff
changeset
|
3599 |
53232
22aaf1e5fbe6
Full support for multiple terminal I/O (with some rough edges).
Karoly Lorentey <lorentey@elte.hu>
parents:
53229
diff
changeset
|
3600 Wcm_clear (tty); |
253 | 3601 |
100276
8f4457a692c5
(encode_terminal_code): Free any previous memory blocks
Chong Yidong <cyd@stupidchicken.com>
parents:
98367
diff
changeset
|
3602 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
|
3603 |
83086
347ce3d5d79c
Fix dropping of the controlling tty on Solaris (Dan Nicolaescu).
Karoly Lorentey <lorentey@elte.hu>
parents:
83082
diff
changeset
|
3604 /* 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
|
3605 terminal. */ |
347ce3d5d79c
Fix dropping of the controlling tty on Solaris (Dan Nicolaescu).
Karoly Lorentey <lorentey@elte.hu>
parents:
83082
diff
changeset
|
3606 sigblock (sigmask (SIGTTOU)); |
100276
8f4457a692c5
(encode_terminal_code): Free any previous memory blocks
Chong Yidong <cyd@stupidchicken.com>
parents:
98367
diff
changeset
|
3607 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
|
3608 sigunblock (sigmask (SIGTTOU)); |
84779
67e430e38471
(DEV_TTY): New macro. Provide a definition for MS-Windows.
Eli Zaretskii <eliz@gnu.org>
parents:
84769
diff
changeset
|
3609 |
253 | 3610 if (status < 0) |
10824
894369e950f5
(term_init) [TERMINFO]: Make error message more accurate.
Karl Heuer <kwzh@gnu.org>
parents:
10771
diff
changeset
|
3611 { |
894369e950f5
(term_init) [TERMINFO]: Make error message more accurate.
Karl Heuer <kwzh@gnu.org>
parents:
10771
diff
changeset
|
3612 #ifdef TERMINFO |
100276
8f4457a692c5
(encode_terminal_code): Free any previous memory blocks
Chong Yidong <cyd@stupidchicken.com>
parents:
98367
diff
changeset
|
3613 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
|
3614 "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
|
3615 "Cannot open terminfo database file"); |
10824
894369e950f5
(term_init) [TERMINFO]: Make error message more accurate.
Karl Heuer <kwzh@gnu.org>
parents:
10771
diff
changeset
|
3616 #else |
100276
8f4457a692c5
(encode_terminal_code): Free any previous memory blocks
Chong Yidong <cyd@stupidchicken.com>
parents:
98367
diff
changeset
|
3617 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
|
3618 "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
|
3619 "Cannot open termcap database file"); |
10824
894369e950f5
(term_init) [TERMINFO]: Make error message more accurate.
Karl Heuer <kwzh@gnu.org>
parents:
10771
diff
changeset
|
3620 #endif |
894369e950f5
(term_init) [TERMINFO]: Make error message more accurate.
Karl Heuer <kwzh@gnu.org>
parents:
10771
diff
changeset
|
3621 } |
253 | 3622 if (status == 0) |
10824
894369e950f5
(term_init) [TERMINFO]: Make error message more accurate.
Karl Heuer <kwzh@gnu.org>
parents:
10771
diff
changeset
|
3623 { |
100276
8f4457a692c5
(encode_terminal_code): Free any previous memory blocks
Chong Yidong <cyd@stupidchicken.com>
parents:
98367
diff
changeset
|
3624 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
|
3625 "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
|
3626 "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
|
3627 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
|
3628 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
|
3629 `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
|
3630 #ifdef TERMINFO |
e81bca2fba28
(init_tty): Move common text outside of #ifdef TERMINFO.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
107640
diff
changeset
|
3631 "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
|
3632 #else |
107847
e81bca2fba28
(init_tty): Move common text outside of #ifdef TERMINFO.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
107640
diff
changeset
|
3633 "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
|
3634 #endif |
83008
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
3635 terminal_type); |
10824
894369e950f5
(term_init) [TERMINFO]: Make error message more accurate.
Karl Heuer <kwzh@gnu.org>
parents:
10771
diff
changeset
|
3636 } |
52265
84e49afb2178
(term_init): Use a buffer of size 4096 for tgetent since
Richard M. Stallman <rms@gnu.org>
parents:
51212
diff
changeset
|
3637 |
52294
d9ae4cdf1ed1
(term_init): Fix previous change
Kenichi Handa <handa@m17n.org>
parents:
52293
diff
changeset
|
3638 #ifndef TERMINFO |
100276
8f4457a692c5
(encode_terminal_code): Free any previous memory blocks
Chong Yidong <cyd@stupidchicken.com>
parents:
98367
diff
changeset
|
3639 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
|
3640 abort (); |
100276
8f4457a692c5
(encode_terminal_code): Free any previous memory blocks
Chong Yidong <cyd@stupidchicken.com>
parents:
98367
diff
changeset
|
3641 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
|
3642 #endif |
100276
8f4457a692c5
(encode_terminal_code): Free any previous memory blocks
Chong Yidong <cyd@stupidchicken.com>
parents:
98367
diff
changeset
|
3643 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
|
3644 tty->TS_ins_line = tgetstr ("al", address); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3645 tty->TS_ins_multi_lines = tgetstr ("AL", address); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3646 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
|
3647 BackTab (tty) = tgetstr ("bt", address); |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3648 tty->TS_clr_to_bottom = tgetstr ("cd", address); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3649 tty->TS_clr_line = tgetstr ("ce", address); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3650 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
|
3651 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
|
3652 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
|
3653 CR (tty) = tgetstr ("cr", address); |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3654 tty->TS_set_scroll_region = tgetstr ("cs", address); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3655 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
|
3656 RowPosition (tty) = tgetstr ("cv", address); |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3657 tty->TS_del_char = tgetstr ("dc", address); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3658 tty->TS_del_multi_chars = tgetstr ("DC", address); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3659 tty->TS_del_line = tgetstr ("dl", address); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3660 tty->TS_del_multi_lines = tgetstr ("DL", address); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3661 tty->TS_delete_mode = tgetstr ("dm", address); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3662 tty->TS_end_delete_mode = tgetstr ("ed", address); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3663 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
|
3664 Home (tty) = tgetstr ("ho", address); |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3665 tty->TS_ins_char = tgetstr ("ic", address); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3666 tty->TS_ins_multi_chars = tgetstr ("IC", address); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3667 tty->TS_insert_mode = tgetstr ("im", address); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3668 tty->TS_pad_inserted_char = tgetstr ("ip", address); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3669 tty->TS_end_keypad_mode = tgetstr ("ke", address); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3670 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
|
3671 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
|
3672 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
|
3673 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
|
3674 if (!Down (tty)) |
22aaf1e5fbe6
Full support for multiple terminal I/O (with some rough edges).
Karoly Lorentey <lorentey@elte.hu>
parents:
53229
diff
changeset
|
3675 Down (tty) = tgetstr ("nl", address); /* Obsolete name for "do" */ |
253 | 3676 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
|
3677 Left (tty) = "\b"; /* can't possibly be longer! */ |
253 | 3678 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
|
3679 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
|
3680 if (!Left (tty)) |
22aaf1e5fbe6
Full support for multiple terminal I/O (with some rough edges).
Karoly Lorentey <lorentey@elte.hu>
parents:
53229
diff
changeset
|
3681 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
|
3682 tty->TS_pad_char = tgetstr ("pc", address); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3683 tty->TS_repeat = tgetstr ("rp", address); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3684 tty->TS_end_standout_mode = tgetstr ("se", address); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3685 tty->TS_fwd_scroll = tgetstr ("sf", address); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3686 tty->TS_standout_mode = tgetstr ("so", address); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3687 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
|
3688 tty->Wcm->cm_tab = tgetstr ("ta", address); |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3689 tty->TS_end_termcap_modes = tgetstr ("te", address); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3690 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
|
3691 Up (tty) = tgetstr ("up", address); |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3692 tty->TS_visible_bell = tgetstr ("vb", address); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3693 tty->TS_cursor_normal = tgetstr ("ve", address); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3694 tty->TS_cursor_visible = tgetstr ("vs", address); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3695 tty->TS_cursor_invisible = tgetstr ("vi", address); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3696 tty->TS_set_window = tgetstr ("wi", address); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3697 |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3698 tty->TS_enter_underline_mode = tgetstr ("us", address); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3699 tty->TS_exit_underline_mode = tgetstr ("ue", address); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3700 tty->TS_enter_bold_mode = tgetstr ("md", address); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3701 tty->TS_enter_dim_mode = tgetstr ("mh", address); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3702 tty->TS_enter_blink_mode = tgetstr ("mb", address); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3703 tty->TS_enter_reverse_mode = tgetstr ("mr", address); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3704 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
|
3705 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
|
3706 tty->TS_exit_attribute_mode = tgetstr ("me", address); |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
46559
diff
changeset
|
3707 |
53232
22aaf1e5fbe6
Full support for multiple terminal I/O (with some rough edges).
Karoly Lorentey <lorentey@elte.hu>
parents:
53229
diff
changeset
|
3708 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
|
3709 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
|
3710 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
|
3711 MultiRight (tty) = tgetstr ("RI", address); |
253 | 3712 |
26425
08c26156186a
(term_init): If "op" isn't available, don't support color
Gerd Moellmann <gerd@gnu.org>
parents:
25727
diff
changeset
|
3713 /* 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
|
3714 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
|
3715 background. */ |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3716 tty->TS_orig_pair = tgetstr ("op", address); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3717 if (tty->TS_orig_pair) |
25002 | 3718 { |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3719 tty->TS_set_foreground = tgetstr ("AF", address); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3720 tty->TS_set_background = tgetstr ("AB", address); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3721 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
|
3722 { |
08c26156186a
(term_init): If "op" isn't available, don't support color
Gerd Moellmann <gerd@gnu.org>
parents:
25727
diff
changeset
|
3723 /* SVr4. */ |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3724 tty->TS_set_foreground = tgetstr ("Sf", address); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3725 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
|
3726 } |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
46559
diff
changeset
|
3727 |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3728 tty->TN_max_colors = tgetnum ("Co"); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3729 tty->TN_max_pairs = tgetnum ("pa"); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3730 |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3731 tty->TN_no_color_video = tgetnum ("NC"); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3732 if (tty->TN_no_color_video == -1) |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3733 tty->TN_no_color_video = 0; |
25002 | 3734 } |
3735 | |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3736 tty_default_color_capabilities (tty, 1); |
42742
73fcf65b58d3
(tty_default_color_capabilities, tty_setup_colors)
Eli Zaretskii <eliz@gnu.org>
parents:
42122
diff
changeset
|
3737 |
53232
22aaf1e5fbe6
Full support for multiple terminal I/O (with some rough edges).
Karoly Lorentey <lorentey@elte.hu>
parents:
53229
diff
changeset
|
3738 MagicWrap (tty) = tgetflag ("xn"); |
11530
a265aaa699e0
(term_init): MagicWrap implies AutoWrap.
Karl Heuer <kwzh@gnu.org>
parents:
11235
diff
changeset
|
3739 /* 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
|
3740 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
|
3741 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
|
3742 terminal->memory_below_frame = tgetflag ("db"); |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3743 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
|
3744 terminal->must_write_spaces = tgetflag ("in"); |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3745 tty->meta_key = tgetflag ("km") || tgetflag ("MT"); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3746 tty->TF_insmode_motion = tgetflag ("mi"); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3747 tty->TF_standout_motion = tgetflag ("ms"); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3748 tty->TF_underscore = tgetflag ("ul"); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3749 tty->TF_teleray = tgetflag ("xt"); |
253 | 3750 |
97658 | 3751 #endif /* !DOS_NT */ |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
3752 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
|
3753 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
|
3754 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
|
3755 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
|
3756 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
|
3757 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
|
3758 /* 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
|
3759 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
|
3760 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
|
3761 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
|
3762 current_kboard = terminal->kboard; |
97658 | 3763 #ifndef DOS_NT |
83619
5da6a46ddbd6
* s/darwin.h (SYSTEM_PURESIZE_EXTRA): Define here.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
83616
diff
changeset
|
3764 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
|
3765 |
765 | 3766 /* 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
|
3767 { |
4c74d7f1cfa6
(term_init): Avoid type-mismatch calling get_frame_size.
Richard M. Stallman <rms@gnu.org>
parents:
15974
diff
changeset
|
3768 int height, width; |
83065
a871be7b26a5
Implemented suspending of emacsclient frames.
Karoly Lorentey <lorentey@elte.hu>
parents:
83050
diff
changeset
|
3769 get_tty_size (fileno (tty->input), &width, &height); |
53341 | 3770 FrameCols (tty) = width; |
3771 FrameRows (tty) = height; | |
16093
4c74d7f1cfa6
(term_init): Avoid type-mismatch calling get_frame_size.
Richard M. Stallman <rms@gnu.org>
parents:
15974
diff
changeset
|
3772 } |
4c74d7f1cfa6
(term_init): Avoid type-mismatch calling get_frame_size.
Richard M. Stallman <rms@gnu.org>
parents:
15974
diff
changeset
|
3773 |
53341 | 3774 if (FrameCols (tty) <= 0) |
3775 FrameCols (tty) = tgetnum ("co"); | |
3776 if (FrameRows (tty) <= 0) | |
3777 FrameRows (tty) = tgetnum ("li"); | |
3778 | |
3779 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
|
3780 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
|
3781 "Screen size %dx%d is too small" |
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
3782 "Screen size %dx%d is too small", |
53341 | 3783 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
|
3784 |
53232
22aaf1e5fbe6
Full support for multiple terminal I/O (with some rough edges).
Karoly Lorentey <lorentey@elte.hu>
parents:
53229
diff
changeset
|
3785 TabWidth (tty) = tgetnum ("tw"); |
253 | 3786 |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3787 if (!tty->TS_bell) |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3788 tty->TS_bell = "\07"; |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3789 |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3790 if (!tty->TS_fwd_scroll) |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3791 tty->TS_fwd_scroll = Down (tty); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3792 |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3793 PC = tty->TS_pad_char ? *tty->TS_pad_char : 0; |
253 | 3794 |
53232
22aaf1e5fbe6
Full support for multiple terminal I/O (with some rough edges).
Karoly Lorentey <lorentey@elte.hu>
parents:
53229
diff
changeset
|
3795 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
|
3796 TabWidth (tty) = 8; |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
46559
diff
changeset
|
3797 |
253 | 3798 /* Turned off since /etc/termcap seems to have :ta= for most terminals |
3799 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
|
3800 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
|
3801 tty->Wcm->cm_tab = "\t"; |
253 | 3802 */ |
3803 | |
40086
050b19294988
(TN_standout_width, TF_xs, TN_magic_cookie_glitch_ul): Variables removed.
Miles Bader <miles@gnu.org>
parents:
40081
diff
changeset
|
3804 /* 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
|
3805 turn off any that do. */ |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3806 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
|
3807 { |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3808 tty->TS_standout_mode = 0; |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3809 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
|
3810 } |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3811 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
|
3812 { |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3813 tty->TS_enter_underline_mode = 0; |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3814 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
|
3815 } |
050b19294988
(TN_standout_width, TF_xs, TN_magic_cookie_glitch_ul): Variables removed.
Miles Bader <miles@gnu.org>
parents:
40081
diff
changeset
|
3816 |
050b19294988
(TN_standout_width, TF_xs, TN_magic_cookie_glitch_ul): Variables removed.
Miles Bader <miles@gnu.org>
parents:
40081
diff
changeset
|
3817 /* 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
|
3818 if (tty->TS_standout_mode == 0) |
253 | 3819 { |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3820 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
|
3821 tty->TS_end_standout_mode = tty->TS_exit_underline_mode; |
253 | 3822 } |
3823 | |
5933
560cee2048ed
(term_init): If no `se', use `me';
Richard M. Stallman <rms@gnu.org>
parents:
5648
diff
changeset
|
3824 /* 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
|
3825 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
|
3826 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
|
3827 { |
8612
86065bec6fc9
(term_init): Added missing argument to tgetstr.
Richard M. Stallman <rms@gnu.org>
parents:
8027
diff
changeset
|
3828 char *s = tgetstr ("me", address); |
5933
560cee2048ed
(term_init): If no `se', use `me';
Richard M. Stallman <rms@gnu.org>
parents:
5648
diff
changeset
|
3829 if (s != 0) |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3830 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
|
3831 else |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3832 tty->TS_standout_mode = 0; |
5933
560cee2048ed
(term_init): If no `se', use `me';
Richard M. Stallman <rms@gnu.org>
parents:
5648
diff
changeset
|
3833 } |
560cee2048ed
(term_init): If no `se', use `me';
Richard M. Stallman <rms@gnu.org>
parents:
5648
diff
changeset
|
3834 |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3835 if (tty->TF_teleray) |
253 | 3836 { |
53232
22aaf1e5fbe6
Full support for multiple terminal I/O (with some rough edges).
Karoly Lorentey <lorentey@elte.hu>
parents:
53229
diff
changeset
|
3837 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
|
3838 /* 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
|
3839 tty->TS_standout_mode = 0; |
253 | 3840 /* 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
|
3841 CR (tty) = 0; |
253 | 3842 /* LF can't be trusted either -- can alter hpos */ |
3843 /* 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
|
3844 Down (tty) = 0; |
253 | 3845 } |
3846 | |
3847 /* Special handling for certain terminal types known to need it */ | |
3848 | |
3849 if (!strcmp (terminal_type, "supdup")) | |
3850 { | |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
3851 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
|
3852 tty->Wcm->cm_losewrap = 1; |
253 | 3853 } |
3854 if (!strncmp (terminal_type, "c10", 3) | |
3855 || !strcmp (terminal_type, "perq")) | |
3856 { | |
3857 /* Supply a makeshift :wi string. | |
3858 This string is not valid in general since it works only | |
3859 for windows starting at the upper left corner; | |
3860 but that is all Emacs uses. | |
3861 | |
765 | 3862 This string works only if the frame is using |
253 | 3863 the top of the video memory, because addressing is memory-relative. |
3864 So first check the :ti string to see if that is true. | |
3865 | |
3866 It would be simpler if the :wi string could go in the termcap | |
3867 entry, but it can't because it is not fully valid. | |
3868 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
|
3869 if (!tty->TS_set_window) |
253 | 3870 { |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3871 p = tty->TS_termcap_modes; |
253 | 3872 while (*p && strcmp (p, "\033v ")) |
3873 p++; | |
3874 if (*p) | |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3875 tty->TS_set_window = "\033v%C %C %C %C "; |
253 | 3876 } |
3877 /* 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
|
3878 terminal->must_write_spaces = 1; |
253 | 3879 /* :ti string typically fails to have \E^G! in it */ |
3880 /* 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
|
3881 strcpy (area, tty->TS_termcap_modes); |
253 | 3882 strcat (area, "\033\007!"); |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3883 tty->TS_termcap_modes = area; |
253 | 3884 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
|
3885 p = AbsPosition (tty); |
253 | 3886 /* Change all %+ parameters to %C, to handle |
53226
dd3018b4785b
Implemented multiple tty support.
Karoly Lorentey <lorentey@elte.hu>
parents:
53225
diff
changeset
|
3887 values above 96 correctly for the C100. */ |
253 | 3888 while (*p) |
53226
dd3018b4785b
Implemented multiple tty support.
Karoly Lorentey <lorentey@elte.hu>
parents:
53225
diff
changeset
|
3889 { |
dd3018b4785b
Implemented multiple tty support.
Karoly Lorentey <lorentey@elte.hu>
parents:
53225
diff
changeset
|
3890 if (p[0] == '%' && p[1] == '+') |
dd3018b4785b
Implemented multiple tty support.
Karoly Lorentey <lorentey@elte.hu>
parents:
53225
diff
changeset
|
3891 p[1] = 'C'; |
dd3018b4785b
Implemented multiple tty support.
Karoly Lorentey <lorentey@elte.hu>
parents:
53225
diff
changeset
|
3892 p++; |
dd3018b4785b
Implemented multiple tty support.
Karoly Lorentey <lorentey@elte.hu>
parents:
53225
diff
changeset
|
3893 } |
253 | 3894 } |
3895 | |
53341 | 3896 tty->specified_window = FrameRows (tty); |
253 | 3897 |
53232
22aaf1e5fbe6
Full support for multiple terminal I/O (with some rough edges).
Karoly Lorentey <lorentey@elte.hu>
parents:
53229
diff
changeset
|
3898 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
|
3899 { |
100276
8f4457a692c5
(encode_terminal_code): Free any previous memory blocks
Chong Yidong <cyd@stupidchicken.com>
parents:
98367
diff
changeset
|
3900 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
|
3901 "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
|
3902 "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
|
3903 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
|
3904 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
|
3905 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
|
3906 `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
|
3907 # ifdef TERMINFO |
e81bca2fba28
(init_tty): Move common text outside of #ifdef TERMINFO.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
107640
diff
changeset
|
3908 "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
|
3909 # else /* TERMCAP */ |
107847
e81bca2fba28
(init_tty): Move common text outside of #ifdef TERMINFO.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
107640
diff
changeset
|
3910 "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
|
3911 # endif /* TERMINFO */ |
83008
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
3912 terminal_type); |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3913 } |
82990
2ecd1f669db9
Fixed X support, preliminary support for X-tty combo sessions.
Karoly Lorentey <lorentey@elte.hu>
parents:
82989
diff
changeset
|
3914 |
53341 | 3915 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
|
3916 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
|
3917 "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
|
3918 "Could not determine the frame size"); |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3919 |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3920 tty->delete_in_insert_mode |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3921 = tty->TS_delete_mode && tty->TS_insert_mode |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3922 && !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
|
3923 |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3924 tty->se_is_so = (tty->TS_standout_mode |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3925 && tty->TS_end_standout_mode |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3926 && !strcmp (tty->TS_standout_mode, tty->TS_end_standout_mode)); |
253 | 3927 |
83065
a871be7b26a5
Implemented suspending of emacsclient frames.
Karoly Lorentey <lorentey@elte.hu>
parents:
83050
diff
changeset
|
3928 UseTabs (tty) = tabs_safe_p (fileno (tty->input)) && TabWidth (tty) == 8; |
253 | 3929 |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
3930 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
|
3931 = (tty->Wcm->cm_abs |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3932 && (tty->TS_set_window || tty->TS_set_scroll_region || tty->TS_set_scroll_region_1)); |
253 | 3933 |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
3934 terminal->line_ins_del_ok |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3935 = (((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
|
3936 && (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
|
3937 || (terminal->scroll_region_ok |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3938 && tty->TS_fwd_scroll && tty->TS_rev_scroll)); |
53226
dd3018b4785b
Implemented multiple tty support.
Karoly Lorentey <lorentey@elte.hu>
parents:
53225
diff
changeset
|
3939 |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
3940 terminal->char_ins_del_ok |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3941 = ((tty->TS_ins_char || tty->TS_insert_mode |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
3942 || 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
|
3943 && (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
|
3944 |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
3945 terminal->fast_clear_end_of_line = tty->TS_clr_line != 0; |
253 | 3946 |
83065
a871be7b26a5
Implemented suspending of emacsclient frames.
Karoly Lorentey <lorentey@elte.hu>
parents:
83050
diff
changeset
|
3947 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
|
3948 |
97658 | 3949 #endif /* not DOS_NT */ |
84849
ba20cee1aec0
(init_tty): Call init_sys_modes on WINDOWSNT also.
Jason Rumney <jasonr@gnu.org>
parents:
84779
diff
changeset
|
3950 |
53341 | 3951 /* Init system terminal modes (RAW or CBREAK, etc.). */ |
3952 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
|
3953 |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
3954 return terminal; |
253 | 3955 } |
3956 | |
83341
76e51706154e
Rename term_init to init_tty.
Karoly Lorentey <lorentey@elte.hu>
parents:
83338
diff
changeset
|
3957 /* 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
|
3958 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
|
3959 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
|
3960 |
83008
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
3961 static void |
100276
8f4457a692c5
(encode_terminal_code): Free any previous memory blocks
Chong Yidong <cyd@stupidchicken.com>
parents:
98367
diff
changeset
|
3962 maybe_fatal (must_succeed, terminal, str1, str2, arg1, arg2) |
83008
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
3963 int must_succeed; |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
3964 struct terminal *terminal; |
83008
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
3965 char *str1, *str2, *arg1, *arg2; |
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
3966 { |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
3967 if (terminal) |
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
3968 delete_tty (terminal); |
92281
4bf10a5a835d
(encode_terminal_code, produce_special_glyphs): Likewise.
Kim F. Storm <storm@cua.dk>
parents:
92237
diff
changeset
|
3969 |
83008
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
3970 if (must_succeed) |
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
3971 fatal (str2, arg1, arg2); |
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
3972 else |
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
3973 error (str1, arg1, arg2); |
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
3974 |
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
3975 abort (); |
253 | 3976 } |
3977 | |
21514 | 3978 void |
86288
145903731829
* term.c: Include stdarg.h.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
85614
diff
changeset
|
3979 fatal (const char *str, ...) |
253 | 3980 { |
86288
145903731829
* term.c: Include stdarg.h.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
85614
diff
changeset
|
3981 va_list ap; |
145903731829
* term.c: Include stdarg.h.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
85614
diff
changeset
|
3982 va_start (ap, str); |
253 | 3983 fprintf (stderr, "emacs: "); |
86288
145903731829
* term.c: Include stdarg.h.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
85614
diff
changeset
|
3984 vfprintf (stderr, str, ap); |
107191
7583dd319561
(fatal): Add a final \n if needed (bug#5596).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
106815
diff
changeset
|
3985 if (!(strlen (str) > 0 && str[strlen (str) - 1] == '\n')) |
7583dd319561
(fatal): Add a final \n if needed (bug#5596).
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
106815
diff
changeset
|
3986 fprintf (stderr, "\n"); |
86288
145903731829
* term.c: Include stdarg.h.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
85614
diff
changeset
|
3987 va_end (ap); |
253 | 3988 fflush (stderr); |
3989 exit (1); | |
3990 } | |
6752
f9236145bad7
(system_uses_terminfo): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
6652
diff
changeset
|
3991 |
82988
f82e3a6f5ccb
A few more bugfixes and new features.
Karoly Lorentey <lorentey@elte.hu>
parents:
82987
diff
changeset
|
3992 |
f82e3a6f5ccb
A few more bugfixes and new features.
Karoly Lorentey <lorentey@elte.hu>
parents:
82987
diff
changeset
|
3993 |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
3994 /* 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
|
3995 |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
3996 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
|
3997 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
|
3998 { |
83004
7900111db01c
Converted display hooks to be display-local. Plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
82995
diff
changeset
|
3999 struct tty_display_info *tty; |
92281
4bf10a5a835d
(encode_terminal_code, produce_special_glyphs): Likewise.
Kim F. Storm <storm@cua.dk>
parents:
92237
diff
changeset
|
4000 |
100666
dab9cf44bf3f
In comments, write delete_frame instead of Fdelete_frame.
Martin Rudalics <rudalics@gmx.at>
parents:
100370
diff
changeset
|
4001 /* 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
|
4002 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
|
4003 if (!terminal->name) |
53341 | 4004 return; |
4005 | |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
4006 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
|
4007 abort (); |
7900111db01c
Converted display hooks to be display-local. Plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
82995
diff
changeset
|
4008 |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
4009 tty = terminal->display_info.tty; |
92281
4bf10a5a835d
(encode_terminal_code, produce_special_glyphs): Likewise.
Kim F. Storm <storm@cua.dk>
parents:
92237
diff
changeset
|
4010 |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
4011 if (tty == tty_list) |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
4012 tty_list = tty->next; |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
4013 else |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
4014 { |
82989
f3845715a5f6
Separate frame-local, tty-dependent parameters from tty-local parameters.
Karoly Lorentey <lorentey@elte.hu>
parents:
82988
diff
changeset
|
4015 struct tty_display_info *p; |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
4016 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
|
4017 ; |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
4018 |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
4019 if (! p) |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
4020 /* This should not happen. */ |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
4021 abort (); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
4022 |
53341 | 4023 p->next = tty->next; |
4024 tty->next = 0; | |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
4025 } |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
4026 |
83342
9216636c02fc
Rename `struct display' to `struct device'. Update function, parameter and variable names accordingly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83341
diff
changeset
|
4027 /* 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
|
4028 before delete_terminal. */ |
83008
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
4029 reset_sys_modes (tty); |
040dd41ed7d0
Hookified termcap devices, added bootstrap display device, plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
83004
diff
changeset
|
4030 |
83431
76396de7f50a
Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents:
83420
diff
changeset
|
4031 delete_terminal (terminal); |
83004
7900111db01c
Converted display hooks to be display-local. Plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
82995
diff
changeset
|
4032 |
95481
4390d64d3328
Make "xfree (NULL)" a no-op; remove useless if-before-xfree.
Jim Meyering <jim@meyering.net>
parents:
94963
diff
changeset
|
4033 xfree (tty->name); |
4390d64d3328
Make "xfree (NULL)" a no-op; remove useless if-before-xfree.
Jim Meyering <jim@meyering.net>
parents:
94963
diff
changeset
|
4034 xfree (tty->type); |
82990
2ecd1f669db9
Fixed X support, preliminary support for X-tty combo sessions.
Karoly Lorentey <lorentey@elte.hu>
parents:
82989
diff
changeset
|
4035 |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
4036 if (tty->input) |
82988
f82e3a6f5ccb
A few more bugfixes and new features.
Karoly Lorentey <lorentey@elte.hu>
parents:
82987
diff
changeset
|
4037 { |
97658 | 4038 #ifdef subprocesses |
82988
f82e3a6f5ccb
A few more bugfixes and new features.
Karoly Lorentey <lorentey@elte.hu>
parents:
82987
diff
changeset
|
4039 delete_keyboard_wait_descriptor (fileno (tty->input)); |
97658 | 4040 #endif |
82988
f82e3a6f5ccb
A few more bugfixes and new features.
Karoly Lorentey <lorentey@elte.hu>
parents:
82987
diff
changeset
|
4041 if (tty->input != stdin) |
f82e3a6f5ccb
A few more bugfixes and new features.
Karoly Lorentey <lorentey@elte.hu>
parents:
82987
diff
changeset
|
4042 fclose (tty->input); |
f82e3a6f5ccb
A few more bugfixes and new features.
Karoly Lorentey <lorentey@elte.hu>
parents:
82987
diff
changeset
|
4043 } |
f82e3a6f5ccb
A few more bugfixes and new features.
Karoly Lorentey <lorentey@elte.hu>
parents:
82987
diff
changeset
|
4044 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
|
4045 fclose (tty->output); |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
4046 if (tty->termscript) |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
4047 fclose (tty->termscript); |
82990
2ecd1f669db9
Fixed X support, preliminary support for X-tty combo sessions.
Karoly Lorentey <lorentey@elte.hu>
parents:
82989
diff
changeset
|
4048 |
95481
4390d64d3328
Make "xfree (NULL)" a no-op; remove useless if-before-xfree.
Jim Meyering <jim@meyering.net>
parents:
94963
diff
changeset
|
4049 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
|
4050 xfree (tty->Wcm); |
103624
3e06f0e66062
Remove useless if-before-xfree tests.
Jim Meyering <jim@meyering.net>
parents:
103617
diff
changeset
|
4051 xfree (tty->termcap_strings_buffer); |
3e06f0e66062
Remove useless if-before-xfree tests.
Jim Meyering <jim@meyering.net>
parents:
103617
diff
changeset
|
4052 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
|
4053 |
82989
f3845715a5f6
Separate frame-local, tty-dependent parameters from tty-local parameters.
Karoly Lorentey <lorentey@elte.hu>
parents:
82988
diff
changeset
|
4054 bzero (tty, sizeof (struct tty_display_info)); |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
4055 xfree (tty); |
63549
bda22724fc82
(produce_special_glyphs): Use spec_glyph_lookup_face.
Richard M. Stallman <rms@gnu.org>
parents:
61591
diff
changeset
|
4056 } |
bda22724fc82
(produce_special_glyphs): Use spec_glyph_lookup_face.
Richard M. Stallman <rms@gnu.org>
parents:
61591
diff
changeset
|
4057 |
83004
7900111db01c
Converted display hooks to be display-local. Plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
82995
diff
changeset
|
4058 |
7900111db01c
Converted display hooks to be display-local. Plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
82995
diff
changeset
|
4059 |
82989
f3845715a5f6
Separate frame-local, tty-dependent parameters from tty-local parameters.
Karoly Lorentey <lorentey@elte.hu>
parents:
82988
diff
changeset
|
4060 /* 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
|
4061 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
|
4062 |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
4063 void |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
83416
diff
changeset
|
4064 mark_ttys (void) |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
4065 { |
82989
f3845715a5f6
Separate frame-local, tty-dependent parameters from tty-local parameters.
Karoly Lorentey <lorentey@elte.hu>
parents:
82988
diff
changeset
|
4066 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
|
4067 |
82988
f82e3a6f5ccb
A few more bugfixes and new features.
Karoly Lorentey <lorentey@elte.hu>
parents:
82987
diff
changeset
|
4068 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
|
4069 mark_object (tty->top_frame); |
53233
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
4070 } |
fe9b37bee5f7
Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents:
53232
diff
changeset
|
4071 |
83004
7900111db01c
Converted display hooks to be display-local. Plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
82995
diff
changeset
|
4072 |
7900111db01c
Converted display hooks to be display-local. Plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents:
82995
diff
changeset
|
4073 |
21514 | 4074 void |
6752
f9236145bad7
(system_uses_terminfo): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
6652
diff
changeset
|
4075 syms_of_term () |
f9236145bad7
(system_uses_terminfo): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
6652
diff
changeset
|
4076 { |
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39914
diff
changeset
|
4077 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
|
4078 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
|
4079 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
|
4080 #ifdef TERMINFO |
f9236145bad7
(system_uses_terminfo): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
6652
diff
changeset
|
4081 system_uses_terminfo = 1; |
f9236145bad7
(system_uses_terminfo): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
6652
diff
changeset
|
4082 #else |
f9236145bad7
(system_uses_terminfo): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
6652
diff
changeset
|
4083 system_uses_terminfo = 0; |
f9236145bad7
(system_uses_terminfo): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
6652
diff
changeset
|
4084 #endif |
15974
61249a8fe735
(Vring_bell_function): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
15094
diff
changeset
|
4085 |
83891
dab32bc3edc8
* server.el (server-start, server-unload-hook): Undo previous
Dan Nicolaescu <dann@ics.uci.edu>
parents:
83889
diff
changeset
|
4086 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
|
4087 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
|
4088 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
|
4089 See `suspend-tty'. */); |
83891
dab32bc3edc8
* server.el (server-start, server-unload-hook): Undo previous
Dan Nicolaescu <dann@ics.uci.edu>
parents:
83889
diff
changeset
|
4090 Vsuspend_tty_functions = Qnil; |
dab32bc3edc8
* server.el (server-start, server-unload-hook): Undo previous
Dan Nicolaescu <dann@ics.uci.edu>
parents:
83889
diff
changeset
|
4091 |
dab32bc3edc8
* server.el (server-start, server-unload-hook): Undo previous
Dan Nicolaescu <dann@ics.uci.edu>
parents:
83889
diff
changeset
|
4092 |
dab32bc3edc8
* server.el (server-start, server-unload-hook): Undo previous
Dan Nicolaescu <dann@ics.uci.edu>
parents:
83889
diff
changeset
|
4093 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
|
4094 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
|
4095 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
|
4096 See `resume-tty'. */); |
83891
dab32bc3edc8
* server.el (server-start, server-unload-hook): Undo previous
Dan Nicolaescu <dann@ics.uci.edu>
parents:
83889
diff
changeset
|
4097 Vresume_tty_functions = Qnil; |
25002 | 4098 |
67935
52bbc53dbce1
(visible_cursor): New boolean var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66238
diff
changeset
|
4099 DEFVAR_BOOL ("visible-cursor", &visible_cursor, |
52bbc53dbce1
(visible_cursor): New boolean var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66238
diff
changeset
|
4100 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
|
4101 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
|
4102 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
|
4103 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
|
4104 visible_cursor = 1; |
52bbc53dbce1
(visible_cursor): New boolean var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66238
diff
changeset
|
4105 |
25002 | 4106 defsubr (&Stty_display_color_p); |
42954
e514d4931d6f
(Ftty_display_color_cells): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
42808
diff
changeset
|
4107 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
|
4108 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
|
4109 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
|
4110 defsubr (&Scontrolling_tty_p); |
83065
a871be7b26a5
Implemented suspending of emacsclient frames.
Karoly Lorentey <lorentey@elte.hu>
parents:
83050
diff
changeset
|
4111 defsubr (&Ssuspend_tty); |
a871be7b26a5
Implemented suspending of emacsclient frames.
Karoly Lorentey <lorentey@elte.hu>
parents:
83050
diff
changeset
|
4112 defsubr (&Sresume_tty); |
80994
62b6aa7f8c37
Use HAVE_GPM instead of HAVE_GPM_H.
Nick Roberts <nickrob@snap.net.nz>
parents:
80979
diff
changeset
|
4113 #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
|
4114 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
|
4115 defsubr (&Sgpm_mouse_stop); |
85eb2660cbe3
(mouse_face_window): Rename from Qmouse_face_window. Update all users.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
84955
diff
changeset
|
4116 |
85eb2660cbe3
(mouse_face_window): Rename from Qmouse_face_window. Update all users.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
84955
diff
changeset
|
4117 staticpro (&mouse_face_window); |
80994
62b6aa7f8c37
Use HAVE_GPM instead of HAVE_GPM_H.
Nick Roberts <nickrob@snap.net.nz>
parents:
80979
diff
changeset
|
4118 #endif /* HAVE_GPM */ |
97021
fb376eec83a9
(syms_of_term): Initialize default_orig_pair, default_set_foreground,
Chong Yidong <cyd@stupidchicken.com>
parents:
96303
diff
changeset
|
4119 |
97658 | 4120 #ifndef DOS_NT |
97021
fb376eec83a9
(syms_of_term): Initialize default_orig_pair, default_set_foreground,
Chong Yidong <cyd@stupidchicken.com>
parents:
96303
diff
changeset
|
4121 default_orig_pair = NULL; |
fb376eec83a9
(syms_of_term): Initialize default_orig_pair, default_set_foreground,
Chong Yidong <cyd@stupidchicken.com>
parents:
96303
diff
changeset
|
4122 default_set_foreground = NULL; |
fb376eec83a9
(syms_of_term): Initialize default_orig_pair, default_set_foreground,
Chong Yidong <cyd@stupidchicken.com>
parents:
96303
diff
changeset
|
4123 default_set_background = NULL; |
97658 | 4124 #endif /* !DOS_NT */ |
100276
8f4457a692c5
(encode_terminal_code): Free any previous memory blocks
Chong Yidong <cyd@stupidchicken.com>
parents:
98367
diff
changeset
|
4125 |
8f4457a692c5
(encode_terminal_code): Free any previous memory blocks
Chong Yidong <cyd@stupidchicken.com>
parents:
98367
diff
changeset
|
4126 encode_terminal_src = NULL; |
8f4457a692c5
(encode_terminal_code): Free any previous memory blocks
Chong Yidong <cyd@stupidchicken.com>
parents:
98367
diff
changeset
|
4127 encode_terminal_dst = NULL; |
6752
f9236145bad7
(system_uses_terminfo): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
6652
diff
changeset
|
4128 } |
25002 | 4129 |
82988
f82e3a6f5ccb
A few more bugfixes and new features.
Karoly Lorentey <lorentey@elte.hu>
parents:
82987
diff
changeset
|
4130 |
f82e3a6f5ccb
A few more bugfixes and new features.
Karoly Lorentey <lorentey@elte.hu>
parents:
82987
diff
changeset
|
4131 |
52401 | 4132 /* arch-tag: 498e7449-6f2e-45e2-91dd-b7d4ca488193 |
4133 (do not change this comment) */ |