annotate src/term.c @ 1015:58c373be762c

* term.c (term_get_fkeys): Some systems define `static' to be the empty string, which means that you can't have constant initialized arrays inside a function. So move the `keys' array outside of the function. * term.c (keys): Include definitions for "K2" (the center key on an IBM keypad), "F1" (F11), and "F2" (F12). Handle "k0" and "k;" specially; see the code for details. * term.c (clear_end_of_line): Remember that on some systems, "static" gets defined to be the null string, so we can't declare an array to be static and then initialize it. Since the array in question (buf) is only one element long, just make it a scalar rather than an array; it can then be initialized, even if it's not static.
author Jim Blandy <jimb@redhat.com>
date Wed, 19 Aug 1992 06:38:40 +0000
parents 16649ee21625
children aa7d6d57504b
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
253
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1 /* terminal control module for terminals described by TERMCAP
621
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 533
diff changeset
2 Copyright (C) 1985, 1986, 1987, 1992 Free Software Foundation, Inc.
253
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4 This file is part of GNU Emacs.
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
6 GNU Emacs is free software; you can redistribute it and/or modify
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
7 it under the terms of the GNU General Public License as published by
621
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 533
diff changeset
8 the Free Software Foundation; either version 2, or (at your option)
253
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
9 any later version.
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
10
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
11 GNU Emacs is distributed in the hope that it will be useful,
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
14 GNU General Public License for more details.
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
15
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
16 You should have received a copy of the GNU General Public License
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
17 along with GNU Emacs; see the file COPYING. If not, write to
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
18 the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
19
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
20
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
21 #include <stdio.h>
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
22 #include <ctype.h>
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
23 #include "config.h"
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
24 #include "termchar.h"
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
25 #include "termopts.h"
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
26 #include "cm.h"
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
27 #undef NULL
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
28 #include "lisp.h"
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
29 #include "frame.h"
253
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
30 #include "disptab.h"
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
31 #include "termhooks.h"
533
31e638e8fe93 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 425
diff changeset
32 #include "keyboard.h"
253
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
33
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
34 #define max(a, b) ((a) > (b) ? (a) : (b))
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
35 #define min(a, b) ((a) < (b) ? (a) : (b))
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
36
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
37 #define OUTPUT(a) tputs (a, FRAME_HEIGHT (selected_frame) - curY, cmputc)
253
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
38 #define OUTPUT1(a) tputs (a, 1, cmputc)
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
39 #define OUTPUTL(a, lines) tputs (a, lines, cmputc)
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
40 #define OUTPUT_IF(a) { if (a) tputs (a, FRAME_HEIGHT (selected_frame) - curY, cmputc); }
253
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
41 #define OUTPUT1_IF(a) { if (a) tputs (a, 1, cmputc); }
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
42
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
43 /* Terminal charateristics that higher levels want to look at.
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
44 These are all extern'd in termchar.h */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
45
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
46 int must_write_spaces; /* Nonzero means spaces in the text
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
47 must actually be output; can't just skip
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
48 over some columns to leave them blank. */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
49 int min_padding_speed; /* Speed below which no padding necessary */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
50
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
51 int line_ins_del_ok; /* Terminal can insert and delete lines */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
52 int char_ins_del_ok; /* Terminal can insert and delete chars */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
53 int scroll_region_ok; /* Terminal supports setting the
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
54 scroll window */
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
55 int memory_below_frame; /* Terminal remembers lines
253
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
56 scrolled off bottom */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
57 int fast_clear_end_of_line; /* Terminal has a `ce' string */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
58
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
59 int dont_calculate_costs; /* Nonzero means don't bother computing */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
60 /* various cost tables; we won't use them. */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
61
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
62 /* Nonzero means no need to redraw the entire frame on resuming
253
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
63 a suspended Emacs. This is useful on terminals with multiple pages,
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
64 where one page is used for Emacs and another for all else. */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
65 int no_redraw_on_reenter;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
66
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
67 /* Hook functions that you can set to snap out the functions in this file.
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
68 These are all extern'd in termhooks.h */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
69
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
70 int (*cursor_to_hook) ();
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
71 int (*raw_cursor_to_hook) ();
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
72
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
73 int (*clear_to_end_hook) ();
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
74 int (*clear_frame_hook) ();
253
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
75 int (*clear_end_of_line_hook) ();
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
76
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
77 int (*ins_del_lines_hook) ();
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
78
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
79 int (*change_line_highlight_hook) ();
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
80 int (*reassert_line_highlight_hook) ();
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
81
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
82 int (*insert_glyphs_hook) ();
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
83 int (*write_glyphs_hook) ();
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
84 int (*delete_glyphs_hook) ();
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
85
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
86 int (*ring_bell_hook) ();
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
87
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
88 int (*reset_terminal_modes_hook) ();
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
89 int (*set_terminal_modes_hook) ();
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
90 int (*update_begin_hook) ();
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
91 int (*update_end_hook) ();
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
92 int (*set_terminal_window_hook) ();
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
93
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
94 int (*read_socket_hook) ();
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
95
425
ff8fa788745a *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 340
diff changeset
96 /* Return the current position of the mouse. This should clear
ff8fa788745a *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 340
diff changeset
97 mouse_moved until the next motion event arrives. */
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
98 void (*mouse_position_hook) ( /* FRAME_PTR *f,
425
ff8fa788745a *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 340
diff changeset
99 Lisp_Object *x,
ff8fa788745a *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 340
diff changeset
100 Lisp_Object *y,
732
a8d94735277e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 621
diff changeset
101 unsigned long *time */ );
253
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
102
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
103 /* When reading from a minibuffer in a different frame, Emacs wants
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
104 to shift the highlight from the selected frame to the minibuffer's
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
105 frame; under X, this means it lies about where the focus is.
339
1c12a86018cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 253
diff changeset
106 This hook tells the window system code to re-decide where to put
1c12a86018cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 253
diff changeset
107 the highlight. */
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
108 void (*frame_rehighlight_hook) ( /* FRAME_PTR f */ );
339
1c12a86018cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 253
diff changeset
109
253
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
110 /* Strings, numbers and flags taken from the termcap entry. */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
111
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
112 char *TS_ins_line; /* termcap "al" */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
113 char *TS_ins_multi_lines; /* "AL" (one parameter, # lines to insert) */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
114 char *TS_bell; /* "bl" */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
115 char *TS_clr_to_bottom; /* "cd" */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
116 char *TS_clr_line; /* "ce", clear to end of line */
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
117 char *TS_clr_frame; /* "cl" */
253
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
118 char *TS_set_scroll_region; /* "cs" (2 params, first line and last line) */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
119 char *TS_set_scroll_region_1; /* "cS" (4 params: total lines,
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
120 lines above scroll region, lines below it,
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
121 total lines again) */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
122 char *TS_del_char; /* "dc" */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
123 char *TS_del_multi_chars; /* "DC" (one parameter, # chars to delete) */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
124 char *TS_del_line; /* "dl" */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
125 char *TS_del_multi_lines; /* "DL" (one parameter, # lines to delete) */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
126 char *TS_delete_mode; /* "dm", enter character-delete mode */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
127 char *TS_end_delete_mode; /* "ed", leave character-delete mode */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
128 char *TS_end_insert_mode; /* "ei", leave character-insert mode */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
129 char *TS_ins_char; /* "ic" */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
130 char *TS_ins_multi_chars; /* "IC" (one parameter, # chars to insert) */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
131 char *TS_insert_mode; /* "im", enter character-insert mode */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
132 char *TS_pad_inserted_char; /* "ip". Just padding, no commands. */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
133 char *TS_end_keypad_mode; /* "ke" */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
134 char *TS_keypad_mode; /* "ks" */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
135 char *TS_pad_char; /* "pc", char to use as padding */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
136 char *TS_repeat; /* "rp" (2 params, # times to repeat
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
137 and character to be repeated) */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
138 char *TS_end_standout_mode; /* "se" */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
139 char *TS_fwd_scroll; /* "sf" */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
140 char *TS_standout_mode; /* "so" */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
141 char *TS_rev_scroll; /* "sr" */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
142 char *TS_end_termcap_modes; /* "te" */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
143 char *TS_termcap_modes; /* "ti" */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
144 char *TS_visible_bell; /* "vb" */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
145 char *TS_end_visual_mode; /* "ve" */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
146 char *TS_visual_mode; /* "vi" */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
147 char *TS_set_window; /* "wi" (4 params, start and end of window,
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
148 each as vpos and hpos) */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
149
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
150 int TF_hazeltine; /* termcap hz flag. */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
151 int TF_insmode_motion; /* termcap mi flag: can move while in insert mode. */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
152 int TF_standout_motion; /* termcap mi flag: can move while in standout mode. */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
153 int TF_underscore; /* termcap ul flag: _ underlines if overstruck on
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
154 nonblank position. Must clear before writing _. */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
155 int TF_teleray; /* termcap xt flag: many weird consequences.
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
156 For t1061. */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
157
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
158 int TF_xs; /* Nonzero for "xs". If set together with
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
159 TN_standout_width == 0, it means don't bother
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
160 to write any end-standout cookies. */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
161
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
162 int TN_standout_width; /* termcap sg number: width occupied by standout
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
163 markers */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
164
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
165 static int RPov; /* # chars to start a TS_repeat */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
166
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
167 static int delete_in_insert_mode; /* delete mode == insert mode */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
168
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
169 static int se_is_so; /* 1 if same string both enters and leaves
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
170 standout mode */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
171
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
172 /* internal state */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
173
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
174 /* Number of chars of space used for standout marker at beginning of line,
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
175 or'd with 0100. Zero if no standout marker at all.
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
176
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
177 Used IFF TN_standout_width >= 0. */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
178
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
179 static char *chars_wasted;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
180 static char *copybuf;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
181
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
182 /* nonzero means supposed to write text in standout mode. */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
183 int standout_requested;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
184
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
185 int insert_mode; /* Nonzero when in insert mode. */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
186 int standout_mode; /* Nonzero when in standout mode. */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
187
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
188 /* Size of window specified by higher levels.
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
189 This is the number of lines, from the top of frame downwards,
253
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
190 which can participate in insert-line/delete-line operations.
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
191
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
192 Effectively it excludes the bottom frame_height - specified_window_size
253
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
193 lines from those operations. */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
194
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
195 int specified_window;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
196
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
197 /* Frame currently being redisplayed; 0 if not currently redisplaying.
253
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
198 (Direct output does not count). */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
199
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
200 FRAME_PTR updating_frame;
253
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
201
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
202 char *tparam ();
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
203
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
204 ring_bell ()
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
205 {
969
16649ee21625 * term.c (FRAME_IS_TERMCAP, FRAME_IS_X, FRAME_HAS_MINIBUF):
Jim Blandy <jimb@redhat.com>
parents: 797
diff changeset
206 if (! FRAME_TERMCAP_P (selected_frame))
253
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
207 {
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
208 (*ring_bell_hook) ();
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
209 return;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
210 }
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
211 OUTPUT (TS_visible_bell && visible_bell ? TS_visible_bell : TS_bell);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
212 }
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
213
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
214 set_terminal_modes ()
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
215 {
969
16649ee21625 * term.c (FRAME_IS_TERMCAP, FRAME_IS_X, FRAME_HAS_MINIBUF):
Jim Blandy <jimb@redhat.com>
parents: 797
diff changeset
216 if (! FRAME_TERMCAP_P (selected_frame))
253
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
217 {
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
218 (*set_terminal_modes_hook) ();
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
219 return;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
220 }
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
221 OUTPUT_IF (TS_termcap_modes);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
222 OUTPUT_IF (TS_visual_mode);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
223 OUTPUT_IF (TS_keypad_mode);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
224 losecursor ();
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
225 }
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
226
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
227 reset_terminal_modes ()
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
228 {
969
16649ee21625 * term.c (FRAME_IS_TERMCAP, FRAME_IS_X, FRAME_HAS_MINIBUF):
Jim Blandy <jimb@redhat.com>
parents: 797
diff changeset
229 if (! FRAME_TERMCAP_P (selected_frame))
253
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
230 {
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
231 (*reset_terminal_modes_hook) ();
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
232 return;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
233 }
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
234 if (TN_standout_width < 0)
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
235 turn_off_highlight ();
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
236 turn_off_insert ();
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
237 OUTPUT_IF (TS_end_keypad_mode);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
238 OUTPUT_IF (TS_end_visual_mode);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
239 OUTPUT_IF (TS_end_termcap_modes);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
240 /* Output raw CR so kernel can track the cursor hpos. */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
241 /* But on magic-cookie terminals this can erase an end-standout marker and
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
242 cause the rest of the frame to be in standout, so move down first. */
253
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
243 if (TN_standout_width >= 0)
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
244 cmputc ('\n');
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
245 cmputc ('\r');
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
246 }
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
247
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
248 update_begin (f)
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
249 FRAME_PTR f;
253
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
250 {
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
251 updating_frame = f;
969
16649ee21625 * term.c (FRAME_IS_TERMCAP, FRAME_IS_X, FRAME_HAS_MINIBUF):
Jim Blandy <jimb@redhat.com>
parents: 797
diff changeset
252 if (! FRAME_TERMCAP_P (updating_frame))
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
253 (*update_begin_hook) (f);
253
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
254 }
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
255
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
256 update_end (f)
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
257 FRAME_PTR f;
253
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
258 {
969
16649ee21625 * term.c (FRAME_IS_TERMCAP, FRAME_IS_X, FRAME_HAS_MINIBUF):
Jim Blandy <jimb@redhat.com>
parents: 797
diff changeset
259 if (! FRAME_TERMCAP_P (updating_frame))
253
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
260 {
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
261 (*update_end_hook) (f);
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
262 updating_frame = 0;
253
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
263 return;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
264 }
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
265 turn_off_insert ();
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
266 background_highlight ();
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
267 standout_requested = 0;
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
268 updating_frame = 0;
253
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
269 }
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
270
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
271 set_terminal_window (size)
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
272 int size;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
273 {
969
16649ee21625 * term.c (FRAME_IS_TERMCAP, FRAME_IS_X, FRAME_HAS_MINIBUF):
Jim Blandy <jimb@redhat.com>
parents: 797
diff changeset
274 if (! FRAME_TERMCAP_P (updating_frame))
253
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
275 {
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
276 (*set_terminal_window_hook) (size);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
277 return;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
278 }
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
279 specified_window = size ? size : FRAME_HEIGHT (selected_frame);
253
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
280 if (!scroll_region_ok)
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
281 return;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
282 set_scroll_region (0, specified_window);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
283 }
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
284
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
285 set_scroll_region (start, stop)
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
286 int start, stop;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
287 {
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
288 char *buf;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
289 if (TS_set_scroll_region)
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
290 {
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
291 buf = tparam (TS_set_scroll_region, 0, 0, start, stop - 1);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
292 }
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
293 else if (TS_set_scroll_region_1)
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
294 {
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
295 buf = tparam (TS_set_scroll_region_1, 0, 0,
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
296 FRAME_HEIGHT (selected_frame), start,
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
297 FRAME_HEIGHT (selected_frame) - stop,
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
298 FRAME_HEIGHT (selected_frame));
253
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
299 }
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
300 else
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
301 {
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
302 buf = tparam (TS_set_window, 0, 0, start, 0, stop, FRAME_WIDTH (selected_frame));
253
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
303 }
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
304 OUTPUT (buf);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
305 free (buf);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
306 losecursor ();
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
307 }
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
308
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
309 turn_on_insert ()
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
310 {
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
311 if (!insert_mode)
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
312 OUTPUT (TS_insert_mode);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
313 insert_mode = 1;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
314 }
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
315
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
316 turn_off_insert ()
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
317 {
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
318 if (insert_mode)
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
319 OUTPUT (TS_end_insert_mode);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
320 insert_mode = 0;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
321 }
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
322
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
323 /* Handle highlighting when TN_standout_width (termcap sg) is not specified.
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
324 In these terminals, output is affected by the value of standout
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
325 mode when the output is written.
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
326
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
327 These functions are called on all terminals, but do nothing
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
328 on terminals whose standout mode does not work that way. */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
329
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
330 turn_off_highlight ()
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
331 {
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
332 if (TN_standout_width < 0)
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
333 {
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
334 if (standout_mode)
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
335 OUTPUT_IF (TS_end_standout_mode);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
336 standout_mode = 0;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
337 }
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
338 }
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
339
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
340 turn_on_highlight ()
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
341 {
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
342 if (TN_standout_width < 0)
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
343 {
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
344 if (!standout_mode)
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
345 OUTPUT_IF (TS_standout_mode);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
346 standout_mode = 1;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
347 }
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
348 }
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
349
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
350 /* Set standout mode to the state it should be in for
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
351 empty space inside windows. What this is,
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
352 depends on the user option inverse-video. */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
353
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
354 background_highlight ()
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
355 {
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
356 if (TN_standout_width >= 0)
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
357 return;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
358 if (inverse_video)
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
359 turn_on_highlight ();
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
360 else
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
361 turn_off_highlight ();
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
362 }
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
363
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
364 /* Set standout mode to the mode specified for the text to be output. */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
365
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
366 static
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
367 highlight_if_desired ()
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
368 {
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
369 if (TN_standout_width >= 0)
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
370 return;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
371 if (!inverse_video == !standout_requested)
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
372 turn_off_highlight ();
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
373 else
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
374 turn_on_highlight ();
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
375 }
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
376
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
377 /* Handle standout mode for terminals in which TN_standout_width >= 0.
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
378 On these terminals, standout is controlled by markers that
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
379 live inside the terminal's memory. TN_standout_width is the width
253
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
380 that the marker occupies in memory. Standout runs from the marker
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
381 to the end of the line on some terminals, or to the next
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
382 turn-off-standout marker (TS_end_standout_mode) string
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
383 on other terminals. */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
384
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
385 /* Write a standout marker or end-standout marker at the front of the line
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
386 at vertical position vpos. */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
387
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
388 write_standout_marker (flag, vpos)
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
389 int flag, vpos;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
390 {
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
391 if (flag || (TS_end_standout_mode && !TF_teleray && !se_is_so
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
392 && !(TF_xs && TN_standout_width == 0)))
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
393 {
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
394 cmgoto (vpos, 0);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
395 cmplus (TN_standout_width);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
396 OUTPUT (flag ? TS_standout_mode : TS_end_standout_mode);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
397 chars_wasted[curY] = TN_standout_width | 0100;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
398 }
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
399 }
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
400
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
401 /* External interface to control of standout mode.
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
402 Call this when about to modify line at position VPOS
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
403 and not change whether it is highlighted. */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
404
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
405 reassert_line_highlight (highlight, vpos)
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
406 int highlight;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
407 int vpos;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
408 {
969
16649ee21625 * term.c (FRAME_IS_TERMCAP, FRAME_IS_X, FRAME_HAS_MINIBUF):
Jim Blandy <jimb@redhat.com>
parents: 797
diff changeset
409 if (! FRAME_TERMCAP_P ((updating_frame ? updating_frame : selected_frame)))
253
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
410 {
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
411 (*reassert_line_highlight_hook) (highlight, vpos);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
412 return;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
413 }
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
414 if (TN_standout_width < 0)
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
415 /* Handle terminals where standout takes affect at output time */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
416 standout_requested = highlight;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
417 else if (chars_wasted[vpos] == 0)
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
418 /* For terminals with standout markers, write one on this line
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
419 if there isn't one already. */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
420 write_standout_marker (highlight, vpos);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
421 }
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
422
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
423 /* Call this when about to modify line at position VPOS
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
424 and change whether it is highlighted. */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
425
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
426 change_line_highlight (new_highlight, vpos, first_unused_hpos)
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
427 int new_highlight, vpos, first_unused_hpos;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
428 {
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
429 standout_requested = new_highlight;
969
16649ee21625 * term.c (FRAME_IS_TERMCAP, FRAME_IS_X, FRAME_HAS_MINIBUF):
Jim Blandy <jimb@redhat.com>
parents: 797
diff changeset
430 if (! FRAME_TERMCAP_P (updating_frame))
253
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
431 {
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
432 (*change_line_highlight_hook) (new_highlight, vpos, first_unused_hpos);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
433 return;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
434 }
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
435
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
436 cursor_to (vpos, 0);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
437
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
438 if (TN_standout_width < 0)
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
439 background_highlight ();
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
440 /* If line starts with a marker, delete the marker */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
441 else if (TS_clr_line && chars_wasted[curY])
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
442 {
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
443 turn_off_insert ();
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
444 /* On Teleray, make sure to erase the SO marker. */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
445 if (TF_teleray)
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
446 {
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
447 cmgoto (curY - 1, FRAME_WIDTH (selected_frame) - 4);
253
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
448 OUTPUT ("\033S");
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
449 curY++; /* ESC S moves to next line where the TS_standout_mode was */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
450 curX = 0;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
451 }
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
452 else
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
453 cmgoto (curY, 0); /* reposition to kill standout marker */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
454 }
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
455 clear_end_of_line_raw (first_unused_hpos);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
456 reassert_line_highlight (new_highlight, curY);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
457 }
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
458
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
459
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
460 /* Move to absolute position, specified origin 0 */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
461
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
462 cursor_to (row, col)
621
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 533
diff changeset
463 int row, col;
253
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
464 {
969
16649ee21625 * term.c (FRAME_IS_TERMCAP, FRAME_IS_X, FRAME_HAS_MINIBUF):
Jim Blandy <jimb@redhat.com>
parents: 797
diff changeset
465 if (! FRAME_TERMCAP_P ((updating_frame
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
466 ? updating_frame
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
467 : selected_frame))
253
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
468 && cursor_to_hook)
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
469 {
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
470 (*cursor_to_hook) (row, col);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
471 return;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
472 }
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
473
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
474 col += chars_wasted[row] & 077;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
475 if (curY == row && curX == col)
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
476 return;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
477 if (!TF_standout_motion)
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
478 background_highlight ();
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
479 if (!TF_insmode_motion)
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
480 turn_off_insert ();
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
481 cmgoto (row, col);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
482 }
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
483
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
484 /* Similar but don't take any account of the wasted characters. */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
485
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
486 raw_cursor_to (row, col)
621
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 533
diff changeset
487 int row, col;
253
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
488 {
969
16649ee21625 * term.c (FRAME_IS_TERMCAP, FRAME_IS_X, FRAME_HAS_MINIBUF):
Jim Blandy <jimb@redhat.com>
parents: 797
diff changeset
489 if (! FRAME_TERMCAP_P ((updating_frame ? updating_frame : selected_frame)))
253
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
490 {
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
491 (*raw_cursor_to_hook) (row, col);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
492 return;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
493 }
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
494 if (curY == row && curX == col)
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
495 return;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
496 if (!TF_standout_motion)
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
497 background_highlight ();
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
498 if (!TF_insmode_motion)
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
499 turn_off_insert ();
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
500 cmgoto (row, col);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
501 }
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
502
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
503 /* Erase operations */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
504
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
505 /* clear from cursor to end of frame */
253
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
506 clear_to_end ()
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
507 {
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
508 register int i;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
509
969
16649ee21625 * term.c (FRAME_IS_TERMCAP, FRAME_IS_X, FRAME_HAS_MINIBUF):
Jim Blandy <jimb@redhat.com>
parents: 797
diff changeset
510 if (clear_to_end_hook && FRAME_TERMCAP_P (updating_frame))
253
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
511 {
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
512 (*clear_to_end_hook) ();
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
513 return;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
514 }
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
515 if (TS_clr_to_bottom)
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
516 {
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
517 background_highlight ();
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
518 OUTPUT (TS_clr_to_bottom);
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
519 bzero (chars_wasted + curY, FRAME_HEIGHT (selected_frame) - curY);
253
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
520 }
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
521 else
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
522 {
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
523 for (i = curY; i < FRAME_HEIGHT (selected_frame); i++)
253
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
524 {
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
525 cursor_to (i, 0);
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
526 clear_end_of_line_raw (FRAME_WIDTH (selected_frame));
253
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
527 }
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
528 }
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
529 }
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
530
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
531 /* Clear entire frame */
253
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
532
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
533 clear_frame ()
253
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
534 {
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
535 if (clear_frame_hook
969
16649ee21625 * term.c (FRAME_IS_TERMCAP, FRAME_IS_X, FRAME_HAS_MINIBUF):
Jim Blandy <jimb@redhat.com>
parents: 797
diff changeset
536 && ! FRAME_TERMCAP_P ((updating_frame ? updating_frame : selected_frame)))
253
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
537 {
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
538 (*clear_frame_hook) ();
253
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
539 return;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
540 }
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
541 if (TS_clr_frame)
253
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
542 {
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
543 background_highlight ();
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
544 OUTPUT (TS_clr_frame);
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
545 bzero (chars_wasted, FRAME_HEIGHT (selected_frame));
253
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
546 cmat (0, 0);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
547 }
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
548 else
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
549 {
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
550 cursor_to (0, 0);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
551 clear_to_end ();
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
552 }
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
553 }
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
554
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
555 /* Clear to end of line, but do not clear any standout marker.
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
556 Assumes that the cursor is positioned at a character of real text,
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
557 which implies it cannot be before a standout marker
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
558 unless the marker has zero width.
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
559
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
560 Note that the cursor may be moved. */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
561
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
562 clear_end_of_line (first_unused_hpos)
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
563 int first_unused_hpos;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
564 {
1015
58c373be762c * term.c (term_get_fkeys): Some systems define `static' to be the
Jim Blandy <jimb@redhat.com>
parents: 969
diff changeset
565 static GLYPH buf = SPACEGLYPH;
969
16649ee21625 * term.c (FRAME_IS_TERMCAP, FRAME_IS_X, FRAME_HAS_MINIBUF):
Jim Blandy <jimb@redhat.com>
parents: 797
diff changeset
566 if (FRAME_TERMCAP_P (selected_frame)
253
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
567 && TN_standout_width == 0 && curX == 0 && chars_wasted[curY] != 0)
1015
58c373be762c * term.c (term_get_fkeys): Some systems define `static' to be the
Jim Blandy <jimb@redhat.com>
parents: 969
diff changeset
568 write_glyphs (&buf, 1);
253
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
569 clear_end_of_line_raw (first_unused_hpos);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
570 }
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
571
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
572 /* Clear from cursor to end of line.
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
573 Assume that the line is already clear starting at column first_unused_hpos.
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
574 If the cursor is at a standout marker, erase the marker.
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
575
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
576 Note that the cursor may be moved, on terminals lacking a `ce' string. */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
577
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
578 clear_end_of_line_raw (first_unused_hpos)
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
579 int first_unused_hpos;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
580 {
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
581 register int i;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
582
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
583 if (clear_end_of_line_hook
969
16649ee21625 * term.c (FRAME_IS_TERMCAP, FRAME_IS_X, FRAME_HAS_MINIBUF):
Jim Blandy <jimb@redhat.com>
parents: 797
diff changeset
584 && ! FRAME_TERMCAP_P ((updating_frame
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
585 ? updating_frame
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
586 : selected_frame)))
253
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
587 {
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
588 (*clear_end_of_line_hook) (first_unused_hpos);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
589 return;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
590 }
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
591
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
592 first_unused_hpos += chars_wasted[curY] & 077;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
593 if (curX >= first_unused_hpos)
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
594 return;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
595 /* Notice if we are erasing a magic cookie */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
596 if (curX == 0)
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
597 chars_wasted[curY] = 0;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
598 background_highlight ();
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
599 if (TS_clr_line)
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
600 {
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
601 OUTPUT1 (TS_clr_line);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
602 }
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
603 else
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
604 { /* have to do it the hard way */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
605 turn_off_insert ();
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
606
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
607 /* Do not write in last row last col with Autowrap on. */
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
608 if (AutoWrap && curY == FRAME_HEIGHT (selected_frame) - 1
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
609 && first_unused_hpos == FRAME_WIDTH (selected_frame))
253
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
610 first_unused_hpos--;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
611
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
612 for (i = curX; i < first_unused_hpos; i++)
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
613 {
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
614 if (termscript)
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
615 fputc (' ', termscript);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
616 putchar (' ');
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
617 }
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
618 cmplus (first_unused_hpos - curX);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
619 }
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
620 }
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
621
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
622
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
623 write_glyphs (string, len)
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
624 register GLYPH *string;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
625 register int len;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
626 {
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
627 register GLYPH g;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
628 register int tlen = GLYPH_TABLE_LENGTH;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
629 register Lisp_Object *tbase = GLYPH_TABLE_BASE;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
630
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
631 if (write_glyphs_hook
969
16649ee21625 * term.c (FRAME_IS_TERMCAP, FRAME_IS_X, FRAME_HAS_MINIBUF):
Jim Blandy <jimb@redhat.com>
parents: 797
diff changeset
632 && ! FRAME_TERMCAP_P ((updating_frame ? updating_frame : selected_frame)))
253
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
633 {
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
634 (*write_glyphs_hook) (string, len);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
635 return;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
636 }
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
637
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
638 highlight_if_desired ();
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
639 turn_off_insert ();
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
640
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
641 /* Don't dare write in last column of bottom line, if AutoWrap,
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
642 since that would scroll the whole frame on some terminals. */
253
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
643
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
644 if (AutoWrap
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
645 && curY + 1 == FRAME_HEIGHT (selected_frame)
253
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
646 && (curX + len - (chars_wasted[curY] & 077)
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
647 == FRAME_WIDTH (selected_frame)))
253
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
648 len --;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
649
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
650 cmplus (len);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
651 while (--len >= 0)
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
652 {
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
653 g = *string++;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
654 /* Check quickly for G beyond length of table.
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
655 That implies it isn't an alias and is simple. */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
656 if (g >= tlen)
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
657 {
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
658 simple:
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
659 putc (g & 0xff, stdout);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
660 if (ferror (stdout))
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
661 clearerr (stdout);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
662 if (termscript)
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
663 putc (g & 0xff, termscript);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
664 }
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
665 else
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
666 {
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
667 /* G has an entry in Vglyph_table,
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
668 so process any alias and then test for simpleness. */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
669 while (GLYPH_ALIAS_P (tbase, tlen, g))
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
670 g = GLYPH_ALIAS (tbase, g);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
671 if (GLYPH_SIMPLE_P (tbase, tlen, g))
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
672 goto simple;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
673 else
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
674 {
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
675 /* Here if G (or its definition as an alias) is not simple. */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
676 fwrite (GLYPH_STRING (tbase, g), 1, GLYPH_LENGTH (tbase, g),
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
677 stdout);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
678 if (ferror (stdout))
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
679 clearerr (stdout);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
680 if (termscript)
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
681 fwrite (GLYPH_STRING (tbase, g), 1, GLYPH_LENGTH (tbase, g),
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
682 termscript);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
683 }
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
684 }
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
685 }
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
686 }
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
687
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
688 /* If start is zero, insert blanks instead of a string at start */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
689
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
690 insert_glyphs (start, len)
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
691 register GLYPH *start;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
692 register int len;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
693 {
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
694 char *buf;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
695 register GLYPH g;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
696 register int tlen = GLYPH_TABLE_LENGTH;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
697 register Lisp_Object *tbase = GLYPH_TABLE_BASE;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
698
969
16649ee21625 * term.c (FRAME_IS_TERMCAP, FRAME_IS_X, FRAME_HAS_MINIBUF):
Jim Blandy <jimb@redhat.com>
parents: 797
diff changeset
699 if (insert_glyphs_hook && ! FRAME_TERMCAP_P (updating_frame))
253
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
700 {
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
701 (*insert_glyphs_hook) (start, len);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
702 return;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
703 }
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
704 highlight_if_desired ();
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
705
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
706 if (TS_ins_multi_chars)
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
707 {
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
708 buf = tparam (TS_ins_multi_chars, 0, 0, len);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
709 OUTPUT1 (buf);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
710 free (buf);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
711 if (start)
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
712 write_glyphs (start, len);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
713 return;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
714 }
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
715
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
716 turn_on_insert ();
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
717 cmplus (len);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
718 while (--len >= 0)
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
719 {
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
720 OUTPUT1_IF (TS_ins_char);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
721 if (!start)
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
722 g = SPACEGLYPH;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
723 else
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
724 g = *start++;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
725
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
726 if (GLYPH_SIMPLE_P (tbase, tlen, g))
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
727 {
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
728 putc (g & 0xff, stdout);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
729 if (ferror (stdout))
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
730 clearerr (stdout);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
731 if (termscript)
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
732 putc (g & 0xff, termscript);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
733 }
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
734 else
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
735 {
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
736 fwrite (GLYPH_STRING (tbase, g), 1, GLYPH_LENGTH (tbase, g), stdout);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
737 if (ferror (stdout))
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
738 clearerr (stdout);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
739 if (termscript)
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
740 fwrite (GLYPH_STRING (tbase, g), 1, GLYPH_LENGTH (tbase, g),
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
741 termscript);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
742 }
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
743
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
744 OUTPUT1_IF (TS_pad_inserted_char);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
745 }
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
746 }
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
747
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
748 delete_glyphs (n)
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
749 register int n;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
750 {
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
751 char *buf;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
752 register int i;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
753
969
16649ee21625 * term.c (FRAME_IS_TERMCAP, FRAME_IS_X, FRAME_HAS_MINIBUF):
Jim Blandy <jimb@redhat.com>
parents: 797
diff changeset
754 if (delete_glyphs_hook && ! FRAME_TERMCAP_P (updating_frame))
253
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
755 {
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
756 (*delete_glyphs_hook) (n);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
757 return;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
758 }
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
759
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
760 if (delete_in_insert_mode)
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
761 {
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
762 turn_on_insert ();
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
763 }
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
764 else
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
765 {
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
766 turn_off_insert ();
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
767 OUTPUT_IF (TS_delete_mode);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
768 }
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
769
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
770 if (TS_del_multi_chars)
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
771 {
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
772 buf = tparam (TS_del_multi_chars, 0, 0, n);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
773 OUTPUT1 (buf);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
774 free (buf);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
775 }
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
776 else
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
777 for (i = 0; i < n; i++)
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
778 OUTPUT1 (TS_del_char);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
779 if (!delete_in_insert_mode)
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
780 OUTPUT_IF (TS_end_delete_mode);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
781 }
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
782
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
783 /* Insert N lines at vpos VPOS. If N is negative, delete -N lines. */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
784
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
785 ins_del_lines (vpos, n)
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
786 int vpos, n;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
787 {
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
788 char *multi = n > 0 ? TS_ins_multi_lines : TS_del_multi_lines;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
789 char *single = n > 0 ? TS_ins_line : TS_del_line;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
790 char *scroll = n > 0 ? TS_rev_scroll : TS_fwd_scroll;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
791
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
792 register int i = n > 0 ? n : -n;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
793 register char *buf;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
794
969
16649ee21625 * term.c (FRAME_IS_TERMCAP, FRAME_IS_X, FRAME_HAS_MINIBUF):
Jim Blandy <jimb@redhat.com>
parents: 797
diff changeset
795 if (ins_del_lines_hook && ! FRAME_TERMCAP_P (updating_frame))
253
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
796 {
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
797 (*ins_del_lines_hook) (vpos, n);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
798 return;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
799 }
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
800
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
801 /* If the lines below the insertion are being pushed
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
802 into the end of the window, this is the same as clearing;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
803 and we know the lines are already clear, since the matching
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
804 deletion has already been done. So can ignore this. */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
805 /* If the lines below the deletion are blank lines coming
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
806 out of the end of the window, don't bother,
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
807 as there will be a matching inslines later that will flush them. */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
808 if (scroll_region_ok && vpos + i >= specified_window)
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
809 return;
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
810 if (!memory_below_frame && vpos + i >= FRAME_HEIGHT (selected_frame))
253
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
811 return;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
812
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
813 if (multi)
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
814 {
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
815 raw_cursor_to (vpos, 0);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
816 background_highlight ();
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
817 buf = tparam (multi, 0, 0, i);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
818 OUTPUT (buf);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
819 free (buf);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
820 }
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
821 else if (single)
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
822 {
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
823 raw_cursor_to (vpos, 0);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
824 background_highlight ();
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
825 while (--i >= 0)
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
826 OUTPUT (single);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
827 if (TF_teleray)
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
828 curX = 0;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
829 }
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
830 else
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
831 {
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
832 set_scroll_region (vpos, specified_window);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
833 if (n < 0)
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
834 raw_cursor_to (specified_window - 1, 0);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
835 else
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
836 raw_cursor_to (vpos, 0);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
837 background_highlight ();
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
838 while (--i >= 0)
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
839 OUTPUTL (scroll, specified_window - vpos);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
840 set_scroll_region (0, specified_window);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
841 }
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
842
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
843 if (TN_standout_width >= 0)
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
844 {
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
845 register lower_limit
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
846 = (scroll_region_ok
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
847 ? specified_window
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
848 : FRAME_HEIGHT (selected_frame));
253
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
849
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
850 if (n < 0)
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
851 {
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
852 bcopy (&chars_wasted[vpos - n], &chars_wasted[vpos],
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
853 lower_limit - vpos + n);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
854 bzero (&chars_wasted[lower_limit + n], - n);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
855 }
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
856 else
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
857 {
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
858 bcopy (&chars_wasted[vpos], &copybuf[vpos], lower_limit - vpos - n);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
859 bcopy (&copybuf[vpos], &chars_wasted[vpos + n],
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
860 lower_limit - vpos - n);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
861 bzero (&chars_wasted[vpos], n);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
862 }
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
863 }
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
864 if (!scroll_region_ok && memory_below_frame && n < 0)
253
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
865 {
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
866 cursor_to (FRAME_HEIGHT (selected_frame) + n, 0);
253
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
867 clear_to_end ();
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
868 }
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
869 }
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
870
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
871 /* Compute cost of sending "str", in characters,
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
872 not counting any line-dependent padding. */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
873
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
874 int
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
875 string_cost (str)
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
876 char *str;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
877 {
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
878 cost = 0;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
879 if (str)
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
880 tputs (str, 0, evalcost);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
881 return cost;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
882 }
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
883
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
884 /* Compute cost of sending "str", in characters,
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
885 counting any line-dependent padding at one line. */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
886
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
887 static int
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
888 string_cost_one_line (str)
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
889 char *str;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
890 {
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
891 cost = 0;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
892 if (str)
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
893 tputs (str, 1, evalcost);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
894 return cost;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
895 }
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
896
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
897 /* Compute per line amount of line-dependent padding,
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
898 in tenths of characters. */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
899
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
900 int
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
901 per_line_cost (str)
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
902 register char *str;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
903 {
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
904 cost = 0;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
905 if (str)
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
906 tputs (str, 0, evalcost);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
907 cost = - cost;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
908 if (str)
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
909 tputs (str, 10, evalcost);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
910 return cost;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
911 }
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
912
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
913 #ifndef old
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
914 /* char_ins_del_cost[n] is cost of inserting N characters.
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
915 char_ins_del_cost[-n] is cost of deleting N characters. */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
916
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
917 int *char_ins_del_vector;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
918
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
919 #define char_ins_del_cost(f) (&char_ins_del_vector[FRAME_WIDTH ((f))])
253
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
920 #endif
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
921
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
922 /* ARGSUSED */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
923 static void
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
924 calculate_ins_del_char_costs (frame)
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
925 FRAME_PTR frame;
253
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
926 {
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
927 int ins_startup_cost, del_startup_cost;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
928 int ins_cost_per_char, del_cost_per_char;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
929 register int i;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
930 register int *p;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
931
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
932 if (TS_ins_multi_chars)
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
933 {
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
934 ins_cost_per_char = 0;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
935 ins_startup_cost = string_cost_one_line (TS_ins_multi_chars);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
936 }
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
937 else if (TS_ins_char || TS_pad_inserted_char
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
938 || (TS_insert_mode && TS_end_insert_mode))
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
939 {
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
940 ins_startup_cost = (30 * (string_cost (TS_insert_mode)
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
941 + string_cost (TS_end_insert_mode))) / 100;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
942 ins_cost_per_char = (string_cost_one_line (TS_ins_char)
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
943 + string_cost_one_line (TS_pad_inserted_char));
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
944 }
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
945 else
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
946 {
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
947 ins_startup_cost = 9999;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
948 ins_cost_per_char = 0;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
949 }
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
950
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
951 if (TS_del_multi_chars)
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
952 {
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
953 del_cost_per_char = 0;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
954 del_startup_cost = string_cost_one_line (TS_del_multi_chars);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
955 }
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
956 else if (TS_del_char)
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
957 {
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
958 del_startup_cost = (string_cost (TS_delete_mode)
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
959 + string_cost (TS_end_delete_mode));
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
960 if (delete_in_insert_mode)
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
961 del_startup_cost /= 2;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
962 del_cost_per_char = string_cost_one_line (TS_del_char);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
963 }
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
964 else
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
965 {
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
966 del_startup_cost = 9999;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
967 del_cost_per_char = 0;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
968 }
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
969
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
970 /* Delete costs are at negative offsets */
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
971 p = &char_ins_del_cost (frame)[0];
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
972 for (i = FRAME_WIDTH (selected_frame); --i >= 0;)
253
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
973 *--p = (del_startup_cost += del_cost_per_char);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
974
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
975 /* Doing nothing is free */
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
976 p = &char_ins_del_cost (frame)[0];
253
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
977 *p++ = 0;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
978
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
979 /* Insert costs are at positive offsets */
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
980 for (i = FRAME_WIDTH (frame); --i >= 0;)
253
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
981 *p++ = (ins_startup_cost += ins_cost_per_char);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
982 }
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
983
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
984 #ifdef HAVE_X_WINDOWS
797
ecc182062509 entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 765
diff changeset
985 extern int x_screen_planes;
253
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
986 #endif
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
987
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
988 calculate_costs (frame)
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
989 FRAME_PTR frame;
253
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
990 {
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
991 register char *f = TS_set_scroll_region ?
253
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
992 TS_set_scroll_region
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
993 : TS_set_scroll_region_1;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
994
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
995 if (dont_calculate_costs)
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
996 return;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
997
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
998 #ifdef HAVE_X_WINDOWS
969
16649ee21625 * term.c (FRAME_IS_TERMCAP, FRAME_IS_X, FRAME_HAS_MINIBUF):
Jim Blandy <jimb@redhat.com>
parents: 797
diff changeset
999 if (FRAME_X_P (frame))
253
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1000 {
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
1001 do_line_insertion_deletion_costs (frame, 0, ".5*", 0, ".5*",
797
ecc182062509 entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 765
diff changeset
1002 0, 0, x_screen_planes);
253
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1003 return;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1004 }
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1005 #endif
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1006
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1007 /* These variables are only used for terminal stuff. They are allocated
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
1008 once for the terminal frame of X-windows emacs, but not used afterwards.
253
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1009
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1010 char_ins_del_vector (i.e., char_ins_del_cost) isn't used because
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1011 X turns off char_ins_del_ok.
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1012
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1013 chars_wasted and copybuf are only used here in term.c in cases where
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1014 the term hook isn't called. */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1015
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1016 if (chars_wasted != 0)
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
1017 chars_wasted = (char *) xrealloc (chars_wasted, FRAME_HEIGHT (frame));
253
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1018 else
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
1019 chars_wasted = (char *) xmalloc (FRAME_HEIGHT (frame));
253
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1020
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1021 if (copybuf != 0)
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
1022 copybuf = (char *) xrealloc (copybuf, FRAME_HEIGHT (frame));
253
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1023 else
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
1024 copybuf = (char *) xmalloc (FRAME_HEIGHT (frame));
253
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1025
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1026 if (char_ins_del_vector != 0)
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1027 char_ins_del_vector
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1028 = (int *) xrealloc (char_ins_del_vector,
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1029 (sizeof (int)
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
1030 + 2 * FRAME_WIDTH (frame) * sizeof (int)));
253
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1031 else
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1032 char_ins_del_vector
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1033 = (int *) xmalloc (sizeof (int)
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
1034 + 2 * FRAME_WIDTH (frame) * sizeof (int));
253
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1035
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
1036 bzero (chars_wasted, FRAME_HEIGHT (frame));
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
1037 bzero (copybuf, FRAME_HEIGHT (frame));
253
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1038 bzero (char_ins_del_vector, (sizeof (int)
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
1039 + 2 * FRAME_WIDTH (frame) * sizeof (int)));
253
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1040
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
1041 if (f && (!TS_ins_line && !TS_del_line))
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
1042 do_line_insertion_deletion_costs (frame,
253
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1043 TS_rev_scroll, TS_ins_multi_lines,
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1044 TS_fwd_scroll, TS_del_multi_lines,
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
1045 f, f, 1);
253
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1046 else
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
1047 do_line_insertion_deletion_costs (frame,
253
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1048 TS_ins_line, TS_ins_multi_lines,
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1049 TS_del_line, TS_del_multi_lines,
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1050 0, 0, 1);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1051
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
1052 calculate_ins_del_char_costs (frame);
253
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1053
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1054 /* Don't use TS_repeat if its padding is worse than sending the chars */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1055 if (TS_repeat && per_line_cost (TS_repeat) * baud_rate < 9000)
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1056 RPov = string_cost (TS_repeat);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1057 else
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
1058 RPov = FRAME_WIDTH (frame) * 2;
253
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1059
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1060 cmcostinit (); /* set up cursor motion costs */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1061 }
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1062
533
31e638e8fe93 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 425
diff changeset
1063 /* Find the escape codes sent by the function keys for Vfunction_key_map.
31e638e8fe93 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 425
diff changeset
1064 This function scans the termcap function key sequence entries, and
31e638e8fe93 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 425
diff changeset
1065 adds entries to Vfunction_key_map for each function key it finds. */
31e638e8fe93 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 425
diff changeset
1066
1015
58c373be762c * term.c (term_get_fkeys): Some systems define `static' to be the
Jim Blandy <jimb@redhat.com>
parents: 969
diff changeset
1067 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
1068 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
1069 };
58c373be762c * term.c (term_get_fkeys): Some systems define `static' to be the
Jim Blandy <jimb@redhat.com>
parents: 969
diff changeset
1070
58c373be762c * term.c (term_get_fkeys): Some systems define `static' to be the
Jim Blandy <jimb@redhat.com>
parents: 969
diff changeset
1071 static struct fkey_table keys[] = {
58c373be762c * term.c (term_get_fkeys): Some systems define `static' to be the
Jim Blandy <jimb@redhat.com>
parents: 969
diff changeset
1072 "kl", "left",
58c373be762c * term.c (term_get_fkeys): Some systems define `static' to be the
Jim Blandy <jimb@redhat.com>
parents: 969
diff changeset
1073 "kr", "right",
58c373be762c * term.c (term_get_fkeys): Some systems define `static' to be the
Jim Blandy <jimb@redhat.com>
parents: 969
diff changeset
1074 "ku", "up",
58c373be762c * term.c (term_get_fkeys): Some systems define `static' to be the
Jim Blandy <jimb@redhat.com>
parents: 969
diff changeset
1075 "kd", "down",
58c373be762c * term.c (term_get_fkeys): Some systems define `static' to be the
Jim Blandy <jimb@redhat.com>
parents: 969
diff changeset
1076 "K2", "center",
58c373be762c * term.c (term_get_fkeys): Some systems define `static' to be the
Jim Blandy <jimb@redhat.com>
parents: 969
diff changeset
1077 "k1", "f1",
58c373be762c * term.c (term_get_fkeys): Some systems define `static' to be the
Jim Blandy <jimb@redhat.com>
parents: 969
diff changeset
1078 "k2", "f2",
58c373be762c * term.c (term_get_fkeys): Some systems define `static' to be the
Jim Blandy <jimb@redhat.com>
parents: 969
diff changeset
1079 "k3", "f3",
58c373be762c * term.c (term_get_fkeys): Some systems define `static' to be the
Jim Blandy <jimb@redhat.com>
parents: 969
diff changeset
1080 "k4", "f4",
58c373be762c * term.c (term_get_fkeys): Some systems define `static' to be the
Jim Blandy <jimb@redhat.com>
parents: 969
diff changeset
1081 "k5", "f5",
58c373be762c * term.c (term_get_fkeys): Some systems define `static' to be the
Jim Blandy <jimb@redhat.com>
parents: 969
diff changeset
1082 "k6", "f6",
58c373be762c * term.c (term_get_fkeys): Some systems define `static' to be the
Jim Blandy <jimb@redhat.com>
parents: 969
diff changeset
1083 "k7", "f7",
58c373be762c * term.c (term_get_fkeys): Some systems define `static' to be the
Jim Blandy <jimb@redhat.com>
parents: 969
diff changeset
1084 "k8", "f8",
58c373be762c * term.c (term_get_fkeys): Some systems define `static' to be the
Jim Blandy <jimb@redhat.com>
parents: 969
diff changeset
1085 "k9", "f9",
58c373be762c * term.c (term_get_fkeys): Some systems define `static' to be the
Jim Blandy <jimb@redhat.com>
parents: 969
diff changeset
1086 "F1", "f11",
58c373be762c * term.c (term_get_fkeys): Some systems define `static' to be the
Jim Blandy <jimb@redhat.com>
parents: 969
diff changeset
1087 "F2", "f12",
58c373be762c * term.c (term_get_fkeys): Some systems define `static' to be the
Jim Blandy <jimb@redhat.com>
parents: 969
diff changeset
1088 "kh", "home",
58c373be762c * term.c (term_get_fkeys): Some systems define `static' to be the
Jim Blandy <jimb@redhat.com>
parents: 969
diff changeset
1089 "kH", "home-down",
58c373be762c * term.c (term_get_fkeys): Some systems define `static' to be the
Jim Blandy <jimb@redhat.com>
parents: 969
diff changeset
1090 "ka", "clear-tabs",
58c373be762c * term.c (term_get_fkeys): Some systems define `static' to be the
Jim Blandy <jimb@redhat.com>
parents: 969
diff changeset
1091 "kt", "clear-tab",
58c373be762c * term.c (term_get_fkeys): Some systems define `static' to be the
Jim Blandy <jimb@redhat.com>
parents: 969
diff changeset
1092 "kT", "set-tab",
58c373be762c * term.c (term_get_fkeys): Some systems define `static' to be the
Jim Blandy <jimb@redhat.com>
parents: 969
diff changeset
1093 "kC", "clear",
58c373be762c * term.c (term_get_fkeys): Some systems define `static' to be the
Jim Blandy <jimb@redhat.com>
parents: 969
diff changeset
1094 "kL", "deleteline",
58c373be762c * term.c (term_get_fkeys): Some systems define `static' to be the
Jim Blandy <jimb@redhat.com>
parents: 969
diff changeset
1095 "kM", "exit-insert",
58c373be762c * term.c (term_get_fkeys): Some systems define `static' to be the
Jim Blandy <jimb@redhat.com>
parents: 969
diff changeset
1096 "kE", "clear-eol",
58c373be762c * term.c (term_get_fkeys): Some systems define `static' to be the
Jim Blandy <jimb@redhat.com>
parents: 969
diff changeset
1097 "kS", "clear-eos",
58c373be762c * term.c (term_get_fkeys): Some systems define `static' to be the
Jim Blandy <jimb@redhat.com>
parents: 969
diff changeset
1098 "kI", "insert",
58c373be762c * term.c (term_get_fkeys): Some systems define `static' to be the
Jim Blandy <jimb@redhat.com>
parents: 969
diff changeset
1099 "kA", "insertline",
58c373be762c * term.c (term_get_fkeys): Some systems define `static' to be the
Jim Blandy <jimb@redhat.com>
parents: 969
diff changeset
1100 "kN", "next",
58c373be762c * term.c (term_get_fkeys): Some systems define `static' to be the
Jim Blandy <jimb@redhat.com>
parents: 969
diff changeset
1101 "kP", "prior",
58c373be762c * term.c (term_get_fkeys): Some systems define `static' to be the
Jim Blandy <jimb@redhat.com>
parents: 969
diff changeset
1102 "kF", "scroll-forward",
58c373be762c * term.c (term_get_fkeys): Some systems define `static' to be the
Jim Blandy <jimb@redhat.com>
parents: 969
diff changeset
1103 "kR", "scroll-reverse"
58c373be762c * term.c (term_get_fkeys): Some systems define `static' to be the
Jim Blandy <jimb@redhat.com>
parents: 969
diff changeset
1104 };
58c373be762c * term.c (term_get_fkeys): Some systems define `static' to be the
Jim Blandy <jimb@redhat.com>
parents: 969
diff changeset
1105
533
31e638e8fe93 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 425
diff changeset
1106 void
31e638e8fe93 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 425
diff changeset
1107 term_get_fkeys (address)
31e638e8fe93 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 425
diff changeset
1108 char **address;
31e638e8fe93 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 425
diff changeset
1109 {
31e638e8fe93 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 425
diff changeset
1110 extern char *tgetstr ();
31e638e8fe93 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 425
diff changeset
1111 int i;
31e638e8fe93 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 425
diff changeset
1112
31e638e8fe93 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 425
diff changeset
1113 for (i = 0; i < (sizeof (keys)/sizeof (keys[0])); i++)
31e638e8fe93 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 425
diff changeset
1114 {
31e638e8fe93 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 425
diff changeset
1115 char *sequence = tgetstr (keys[i].cap, address);
31e638e8fe93 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 425
diff changeset
1116 if (sequence)
31e638e8fe93 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 425
diff changeset
1117 Fdefine_key (Vfunction_key_map,
31e638e8fe93 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 425
diff changeset
1118 build_string (sequence),
31e638e8fe93 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 425
diff changeset
1119 Fmake_vector (make_number (1), intern (keys[i].name)));
31e638e8fe93 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 425
diff changeset
1120 }
1015
58c373be762c * term.c (term_get_fkeys): Some systems define `static' to be the
Jim Blandy <jimb@redhat.com>
parents: 969
diff changeset
1121
58c373be762c * term.c (term_get_fkeys): Some systems define `static' to be the
Jim Blandy <jimb@redhat.com>
parents: 969
diff changeset
1122 /* 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
1123 describes F10, whereas othertimes it describes F0 and "k;" describes F10.
58c373be762c * term.c (term_get_fkeys): Some systems define `static' to be the
Jim Blandy <jimb@redhat.com>
parents: 969
diff changeset
1124 We will attempt to politely accomodate both systems by testing for
58c373be762c * term.c (term_get_fkeys): Some systems define `static' to be the
Jim Blandy <jimb@redhat.com>
parents: 969
diff changeset
1125 "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
1126 */
58c373be762c * term.c (term_get_fkeys): Some systems define `static' to be the
Jim Blandy <jimb@redhat.com>
parents: 969
diff changeset
1127 {
58c373be762c * term.c (term_get_fkeys): Some systems define `static' to be the
Jim Blandy <jimb@redhat.com>
parents: 969
diff changeset
1128 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
1129 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
1130 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
1131
58c373be762c * term.c (term_get_fkeys): Some systems define `static' to be the
Jim Blandy <jimb@redhat.com>
parents: 969
diff changeset
1132 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
1133 {
58c373be762c * term.c (term_get_fkeys): Some systems define `static' to be the
Jim Blandy <jimb@redhat.com>
parents: 969
diff changeset
1134 Fdefine_key (Vfunction_key_map,
58c373be762c * term.c (term_get_fkeys): Some systems define `static' to be the
Jim Blandy <jimb@redhat.com>
parents: 969
diff changeset
1135 build_string (k_semi),
58c373be762c * term.c (term_get_fkeys): Some systems define `static' to be the
Jim Blandy <jimb@redhat.com>
parents: 969
diff changeset
1136 Fmake_vector (make_number (1), intern ("f10")));
58c373be762c * term.c (term_get_fkeys): Some systems define `static' to be the
Jim Blandy <jimb@redhat.com>
parents: 969
diff changeset
1137 k0_name = "f0";
58c373be762c * term.c (term_get_fkeys): Some systems define `static' to be the
Jim Blandy <jimb@redhat.com>
parents: 969
diff changeset
1138 }
58c373be762c * term.c (term_get_fkeys): Some systems define `static' to be the
Jim Blandy <jimb@redhat.com>
parents: 969
diff changeset
1139
58c373be762c * term.c (term_get_fkeys): Some systems define `static' to be the
Jim Blandy <jimb@redhat.com>
parents: 969
diff changeset
1140 if (k0)
58c373be762c * term.c (term_get_fkeys): Some systems define `static' to be the
Jim Blandy <jimb@redhat.com>
parents: 969
diff changeset
1141 Fdefine_key (Vfunction_key_map,
58c373be762c * term.c (term_get_fkeys): Some systems define `static' to be the
Jim Blandy <jimb@redhat.com>
parents: 969
diff changeset
1142 build_string (k0),
58c373be762c * term.c (term_get_fkeys): Some systems define `static' to be the
Jim Blandy <jimb@redhat.com>
parents: 969
diff changeset
1143 Fmake_vector (make_number (1), intern (k0_name)));
58c373be762c * term.c (term_get_fkeys): Some systems define `static' to be the
Jim Blandy <jimb@redhat.com>
parents: 969
diff changeset
1144 }
533
31e638e8fe93 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 425
diff changeset
1145 }
31e638e8fe93 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 425
diff changeset
1146
31e638e8fe93 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 425
diff changeset
1147
253
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1148 term_init (terminal_type)
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1149 char *terminal_type;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1150 {
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1151 char *area;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1152 char **address = &area;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1153 char buffer[2044];
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1154 register char *p;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1155 int status;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1156
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1157 extern char *tgetstr ();
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1158
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1159 Wcm_clear ();
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1160 dont_calculate_costs = 0;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1161
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1162 status = tgetent (buffer, terminal_type);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1163 if (status < 0)
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1164 fatal ("Cannot open termcap database file.\n");
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1165 if (status == 0)
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1166 fatal ("Terminal type %s is not defined.\n", terminal_type);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1167
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1168 #ifdef TERMINFO
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1169 area = (char *) malloc (2044);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1170 #else
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1171 area = (char *) malloc (strlen (buffer));
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1172 #endif /* not TERMINFO */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1173 if (area == 0)
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1174 abort ();
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1175
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1176 TS_ins_line = tgetstr ("al", address);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1177 TS_ins_multi_lines = tgetstr ("AL", address);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1178 TS_bell = tgetstr ("bl", address);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1179 BackTab = tgetstr ("bt", address);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1180 TS_clr_to_bottom = tgetstr ("cd", address);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1181 TS_clr_line = tgetstr ("ce", address);
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
1182 TS_clr_frame = tgetstr ("cl", address);
253
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1183 ColPosition = tgetstr ("ch", address);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1184 AbsPosition = tgetstr ("cm", address);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1185 CR = tgetstr ("cr", address);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1186 TS_set_scroll_region = tgetstr ("cs", address);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1187 TS_set_scroll_region_1 = tgetstr ("cS", address);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1188 RowPosition = tgetstr ("cv", address);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1189 TS_del_char = tgetstr ("dc", address);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1190 TS_del_multi_chars = tgetstr ("DC", address);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1191 TS_del_line = tgetstr ("dl", address);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1192 TS_del_multi_lines = tgetstr ("DL", address);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1193 TS_delete_mode = tgetstr ("dm", address);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1194 TS_end_delete_mode = tgetstr ("ed", address);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1195 TS_end_insert_mode = tgetstr ("ei", address);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1196 Home = tgetstr ("ho", address);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1197 TS_ins_char = tgetstr ("ic", address);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1198 TS_ins_multi_chars = tgetstr ("IC", address);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1199 TS_insert_mode = tgetstr ("im", address);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1200 TS_pad_inserted_char = tgetstr ("ip", address);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1201 TS_end_keypad_mode = tgetstr ("ke", address);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1202 TS_keypad_mode = tgetstr ("ks", address);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1203 LastLine = tgetstr ("ll", address);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1204 Right = tgetstr ("nd", address);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1205 Down = tgetstr ("do", address);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1206 if (!Down)
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1207 Down = tgetstr ("nl", address); /* Obsolete name for "do" */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1208 #ifdef VMS
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1209 /* VMS puts a carriage return before each linefeed,
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1210 so it is not safe to use linefeeds. */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1211 if (Down && Down[0] == '\n' && Down[1] == '\0')
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1212 Down = 0;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1213 #endif /* VMS */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1214 if (tgetflag ("bs"))
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1215 Left = "\b"; /* can't possibly be longer! */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1216 else /* (Actually, "bs" is obsolete...) */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1217 Left = tgetstr ("le", address);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1218 if (!Left)
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1219 Left = tgetstr ("bc", address); /* Obsolete name for "le" */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1220 TS_pad_char = tgetstr ("pc", address);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1221 TS_repeat = tgetstr ("rp", address);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1222 TS_end_standout_mode = tgetstr ("se", address);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1223 TS_fwd_scroll = tgetstr ("sf", address);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1224 TS_standout_mode = tgetstr ("so", address);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1225 TS_rev_scroll = tgetstr ("sr", address);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1226 Wcm.cm_tab = tgetstr ("ta", address);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1227 TS_end_termcap_modes = tgetstr ("te", address);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1228 TS_termcap_modes = tgetstr ("ti", address);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1229 Up = tgetstr ("up", address);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1230 TS_visible_bell = tgetstr ("vb", address);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1231 TS_end_visual_mode = tgetstr ("ve", address);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1232 TS_visual_mode = tgetstr ("vs", address);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1233 TS_set_window = tgetstr ("wi", address);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1234 MultiUp = tgetstr ("UP", address);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1235 MultiDown = tgetstr ("DO", address);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1236 MultiLeft = tgetstr ("LE", address);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1237 MultiRight = tgetstr ("RI", address);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1238
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1239 AutoWrap = tgetflag ("am");
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
1240 memory_below_frame = tgetflag ("db");
253
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1241 TF_hazeltine = tgetflag ("hz");
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1242 must_write_spaces = tgetflag ("in");
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1243 meta_key = tgetflag ("km") || tgetflag ("MT");
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1244 TF_insmode_motion = tgetflag ("mi");
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1245 TF_standout_motion = tgetflag ("ms");
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1246 TF_underscore = tgetflag ("ul");
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1247 MagicWrap = tgetflag ("xn");
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1248 TF_xs = tgetflag ("xs");
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1249 TF_teleray = tgetflag ("xt");
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1250
533
31e638e8fe93 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 425
diff changeset
1251 term_get_fkeys (address);
31e638e8fe93 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 425
diff changeset
1252
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
1253 /* Get frame size from system, or else from termcap. */
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
1254 get_frame_size (&FRAME_WIDTH (selected_frame),
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
1255 &FRAME_HEIGHT (selected_frame));
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
1256 if (FRAME_WIDTH (selected_frame) <= 0)
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
1257 FRAME_WIDTH (selected_frame) = tgetnum ("co");
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
1258 if (FRAME_HEIGHT (selected_frame) <= 0)
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
1259 FRAME_HEIGHT (selected_frame) = tgetnum ("li");
253
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1260
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1261 min_padding_speed = tgetnum ("pb");
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1262 TN_standout_width = tgetnum ("sg");
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1263 TabWidth = tgetnum ("tw");
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1264
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1265 #ifdef VMS
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1266 /* These capabilities commonly use ^J.
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1267 I don't know why, but sending them on VMS does not work;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1268 it causes following spaces to be lost, sometimes.
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1269 For now, the simplest fix is to avoid using these capabilities ever. */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1270 if (Down && Down[0] == '\n')
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1271 Down = 0;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1272 #endif /* VMS */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1273
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1274 if (!TS_bell)
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1275 TS_bell = "\07";
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1276
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1277 if (!TS_fwd_scroll)
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1278 TS_fwd_scroll = Down;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1279
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1280 PC = TS_pad_char ? *TS_pad_char : 0;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1281
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1282 if (TabWidth < 0)
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1283 TabWidth = 8;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1284
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1285 /* Turned off since /etc/termcap seems to have :ta= for most terminals
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1286 and newer termcap doc does not seem to say there is a default.
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1287 if (!Wcm.cm_tab)
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1288 Wcm.cm_tab = "\t";
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1289 */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1290
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1291 if (TS_standout_mode == 0)
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1292 {
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1293 TN_standout_width = tgetnum ("ug");
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1294 TS_end_standout_mode = tgetstr ("ue", address);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1295 TS_standout_mode = tgetstr ("us", address);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1296 }
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1297
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1298 if (TF_teleray)
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1299 {
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1300 Wcm.cm_tab = 0;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1301 /* Teleray: most programs want a space in front of TS_standout_mode,
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1302 but Emacs can do without it (and give one extra column). */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1303 TS_standout_mode = "\033RD";
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1304 TN_standout_width = 1;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1305 /* But that means we cannot rely on ^M to go to column zero! */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1306 CR = 0;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1307 /* LF can't be trusted either -- can alter hpos */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1308 /* if move at column 0 thru a line with TS_standout_mode */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1309 Down = 0;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1310 }
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1311
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1312 /* Special handling for certain terminal types known to need it */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1313
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1314 if (!strcmp (terminal_type, "supdup"))
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1315 {
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
1316 memory_below_frame = 1;
253
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1317 Wcm.cm_losewrap = 1;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1318 }
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1319 if (!strncmp (terminal_type, "c10", 3)
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1320 || !strcmp (terminal_type, "perq"))
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1321 {
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1322 /* Supply a makeshift :wi string.
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1323 This string is not valid in general since it works only
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1324 for windows starting at the upper left corner;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1325 but that is all Emacs uses.
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1326
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
1327 This string works only if the frame is using
253
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1328 the top of the video memory, because addressing is memory-relative.
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1329 So first check the :ti string to see if that is true.
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1330
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1331 It would be simpler if the :wi string could go in the termcap
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1332 entry, but it can't because it is not fully valid.
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1333 If it were in the termcap entry, it would confuse other programs. */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1334 if (!TS_set_window)
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1335 {
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1336 p = TS_termcap_modes;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1337 while (*p && strcmp (p, "\033v "))
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1338 p++;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1339 if (*p)
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1340 TS_set_window = "\033v%C %C %C %C ";
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1341 }
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1342 /* Termcap entry often fails to have :in: flag */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1343 must_write_spaces = 1;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1344 /* :ti string typically fails to have \E^G! in it */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1345 /* This limits scope of insert-char to one line. */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1346 strcpy (area, TS_termcap_modes);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1347 strcat (area, "\033\007!");
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1348 TS_termcap_modes = area;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1349 area += strlen (area) + 1;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1350 p = AbsPosition;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1351 /* Change all %+ parameters to %C, to handle
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1352 values above 96 correctly for the C100. */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1353 while (*p)
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1354 {
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1355 if (p[0] == '%' && p[1] == '+')
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1356 p[1] = 'C';
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1357 p++;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1358 }
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1359 }
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1360
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
1361 FrameRows = FRAME_HEIGHT (selected_frame);
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
1362 FrameCols = FRAME_WIDTH (selected_frame);
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
1363 specified_window = FRAME_HEIGHT (selected_frame);
253
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1364
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1365 if (Wcm_init () == -1) /* can't do cursor motion */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1366 #ifdef VMS
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1367 fatal ("Terminal type \"%s\" is not powerful enough to run Emacs.\n\
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1368 It lacks the ability to position the cursor.\n\
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1369 If that is not the actual type of terminal you have, use either the\n\
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1370 DCL command `SET TERMINAL/DEVICE= ...' for DEC-compatible terminals,\n\
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1371 or `define EMACS_TERM \"terminal type\"' for non-DEC terminals.\n",
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1372 terminal_type);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1373 #else
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1374 fatal ("Terminal type \"%s\" is not powerful enough to run Emacs.\n\
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1375 It lacks the ability to position the cursor.\n\
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1376 If that is not the actual type of terminal you have,\n\
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1377 use the C-shell command `setenv TERM ...' to specify the correct type.\n\
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1378 It may be necessary to do `unsetenv TERMCAP' as well.\n",
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1379 terminal_type);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1380 #endif
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
1381 if (FRAME_HEIGHT (selected_frame) <= 0
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
1382 || FRAME_WIDTH (selected_frame) <= 0)
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
1383 fatal ("The frame size has not been specified.");
253
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1384
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1385 delete_in_insert_mode
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1386 = TS_delete_mode && TS_insert_mode
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1387 && !strcmp (TS_delete_mode, TS_insert_mode);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1388
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1389 se_is_so = (TS_standout_mode
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1390 && TS_end_standout_mode
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1391 && !strcmp (TS_standout_mode, TS_end_standout_mode));
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1392
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1393 /* Remove width of standout marker from usable width of line */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1394 if (TN_standout_width > 0)
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
1395 FRAME_WIDTH (selected_frame) -= TN_standout_width;
253
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1396
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1397 UseTabs = tabs_safe_p () && TabWidth == 8;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1398
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1399 scroll_region_ok
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1400 = (Wcm.cm_abs
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1401 && (TS_set_window || TS_set_scroll_region || TS_set_scroll_region_1));
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1402
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1403 line_ins_del_ok = (((TS_ins_line || TS_ins_multi_lines)
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1404 && (TS_del_line || TS_del_multi_lines))
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1405 || (scroll_region_ok && TS_fwd_scroll && TS_rev_scroll));
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1406
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1407 char_ins_del_ok = ((TS_ins_char || TS_insert_mode
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1408 || TS_pad_inserted_char || TS_ins_multi_chars)
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1409 && (TS_del_char || TS_del_multi_chars));
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1410
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1411 fast_clear_end_of_line = TS_clr_line != 0;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1412
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1413 init_baud_rate ();
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1414 if (read_socket_hook) /* Baudrate is somewhat */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1415 /* meaningless in this case */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1416 baud_rate = 9600;
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1417 }
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1418
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1419 /* VARARGS 1 */
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1420 fatal (str, arg1, arg2)
621
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 533
diff changeset
1421 char *str, *arg1, *arg2;
253
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1422 {
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1423 fprintf (stderr, "emacs: ");
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1424 fprintf (stderr, str, arg1, arg2);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1425 fflush (stderr);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1426 exit (1);
96e7be36ffe5 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1427 }