Mercurial > emacs
annotate src/w32console.c @ 99492:ee792794d888
(isearch-search-fun): Compare the length of the
current search string with the length of the string from the
previous search state to detect the situation when the user
adds or removes characters in the search string.
Use word-search-forward-lax and word-search-backward-lax in this
case, and otherwise word-search-forward and word-search-backward.
author | Juri Linkov <juri@jurta.org> |
---|---|
date | Tue, 11 Nov 2008 19:43:09 +0000 |
parents | 8971ddf55736 |
children | e038c1a8307c |
rev | line source |
---|---|
16883
d1d4d81f9ece
Change all uses of win95, winnt, and win32
Geoff Voelker <voelker@cs.washington.edu>
parents:
16593
diff
changeset
|
1 /* Terminal hooks for GNU Emacs on the Microsoft W32 API. |
94963
8971ddf55736
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
91327
diff
changeset
|
2 Copyright (C) 1992, 1999, 2001, 2002, 2003, 2004, 2005, 2006, 2007, |
8971ddf55736
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
91327
diff
changeset
|
3 2008 Free Software Foundation, Inc. |
9907 | 4 |
14186
ee40177f6c68
Update FSF's address in the preamble.
Erik Naggum <erik@naggum.no>
parents:
13424
diff
changeset
|
5 This file is part of GNU Emacs. |
9907 | 6 |
94963
8971ddf55736
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
91327
diff
changeset
|
7 GNU Emacs is free software: you can redistribute it and/or modify |
14186
ee40177f6c68
Update FSF's address in the preamble.
Erik Naggum <erik@naggum.no>
parents:
13424
diff
changeset
|
8 it under the terms of the GNU General Public License as published by |
94963
8971ddf55736
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
91327
diff
changeset
|
9 the Free Software Foundation, either version 3 of the License, or |
8971ddf55736
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
91327
diff
changeset
|
10 (at your option) any later version. |
9907 | 11 |
14186
ee40177f6c68
Update FSF's address in the preamble.
Erik Naggum <erik@naggum.no>
parents:
13424
diff
changeset
|
12 GNU Emacs is distributed in the hope that it will be useful, |
ee40177f6c68
Update FSF's address in the preamble.
Erik Naggum <erik@naggum.no>
parents:
13424
diff
changeset
|
13 but WITHOUT ANY WARRANTY; without even the implied warranty of |
ee40177f6c68
Update FSF's address in the preamble.
Erik Naggum <erik@naggum.no>
parents:
13424
diff
changeset
|
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
ee40177f6c68
Update FSF's address in the preamble.
Erik Naggum <erik@naggum.no>
parents:
13424
diff
changeset
|
15 GNU General Public License for more details. |
9907 | 16 |
14186
ee40177f6c68
Update FSF's address in the preamble.
Erik Naggum <erik@naggum.no>
parents:
13424
diff
changeset
|
17 You should have received a copy of the GNU General Public License |
94963
8971ddf55736
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
91327
diff
changeset
|
18 along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ |
9907 | 19 |
94963
8971ddf55736
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
91327
diff
changeset
|
20 /* |
9907 | 21 Tim Fleehart (apollo@online.com) 1-17-92 |
22 Geoff Voelker (voelker@cs.washington.edu) 9-12-93 | |
23 */ | |
24 | |
25 | |
12183
47685fb0fbd1
Include config.h before stdio.h.
Geoff Voelker <voelker@cs.washington.edu>
parents:
11942
diff
changeset
|
26 #include <config.h> |
47685fb0fbd1
Include config.h before stdio.h.
Geoff Voelker <voelker@cs.washington.edu>
parents:
11942
diff
changeset
|
27 |
9907 | 28 #include <stdlib.h> |
29 #include <stdio.h> | |
30 #include <windows.h> | |
27518
ff2e0205b5a0
(turn_on_face, turn_off_face): Removed.
Jason Rumney <jasonr@gnu.org>
parents:
27395
diff
changeset
|
31 #include <string.h> |
9907 | 32 |
33 #include "lisp.h" | |
88351
aac41b50c875
Include "character.h" instead of "charset.h".
Kenichi Handa <handa@m17n.org>
parents:
40962
diff
changeset
|
34 #include "character.h" |
27395
fe54558f20d8
(turn_on_face, turn_off_face): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
24938
diff
changeset
|
35 #include "coding.h" |
9907 | 36 #include "disptab.h" |
27892
1857b9695885
Only disable window system features for dispextern.h
Jason Rumney <jasonr@gnu.org>
parents:
27518
diff
changeset
|
37 #include "frame.h" |
9907 | 38 #include "termhooks.h" |
83573
b77b83741308
(w32con_move_cursor, w32con_clear_to_end):
Jason Rumney <jasonr@gnu.org>
parents:
75227
diff
changeset
|
39 #include "termchar.h" |
32668
3bdd8b545352
Do not undef HAVE_WINDOW_SYSTEM before
Jason Rumney <jasonr@gnu.org>
parents:
31109
diff
changeset
|
40 #include "dispextern.h" |
16593
4ed80eda6fac
Use new names for w32 files
Geoff Voelker <voelker@cs.washington.edu>
parents:
16588
diff
changeset
|
41 #include "w32inevt.h" |
9907 | 42 |
11389 | 43 /* from window.c */ |
9907 | 44 extern Lisp_Object Frecenter (); |
45 | |
46 /* from keyboard.c */ | |
47 extern int detect_input_pending (); | |
48 | |
49 /* from sysdep.c */ | |
50 extern int read_input_pending (); | |
51 | |
83573
b77b83741308
(w32con_move_cursor, w32con_clear_to_end):
Jason Rumney <jasonr@gnu.org>
parents:
75227
diff
changeset
|
52 static void w32con_move_cursor (struct frame *f, int row, int col); |
b77b83741308
(w32con_move_cursor, w32con_clear_to_end):
Jason Rumney <jasonr@gnu.org>
parents:
75227
diff
changeset
|
53 static void w32con_clear_to_end (struct frame *f); |
b77b83741308
(w32con_move_cursor, w32con_clear_to_end):
Jason Rumney <jasonr@gnu.org>
parents:
75227
diff
changeset
|
54 static void w32con_clear_frame (struct frame *f); |
b77b83741308
(w32con_move_cursor, w32con_clear_to_end):
Jason Rumney <jasonr@gnu.org>
parents:
75227
diff
changeset
|
55 static void w32con_clear_end_of_line (struct frame *f, int); |
b77b83741308
(w32con_move_cursor, w32con_clear_to_end):
Jason Rumney <jasonr@gnu.org>
parents:
75227
diff
changeset
|
56 static void w32con_ins_del_lines (struct frame *f, int vpos, int n); |
b77b83741308
(w32con_move_cursor, w32con_clear_to_end):
Jason Rumney <jasonr@gnu.org>
parents:
75227
diff
changeset
|
57 static void w32con_insert_glyphs (struct frame *f, struct glyph *start, int len); |
b77b83741308
(w32con_move_cursor, w32con_clear_to_end):
Jason Rumney <jasonr@gnu.org>
parents:
75227
diff
changeset
|
58 static void w32con_write_glyphs (struct frame *f, struct glyph *string, int len); |
b77b83741308
(w32con_move_cursor, w32con_clear_to_end):
Jason Rumney <jasonr@gnu.org>
parents:
75227
diff
changeset
|
59 static void w32con_delete_glyphs (struct frame *f, int n); |
b77b83741308
(w32con_move_cursor, w32con_clear_to_end):
Jason Rumney <jasonr@gnu.org>
parents:
75227
diff
changeset
|
60 static void w32con_reset_terminal_modes (struct terminal *t); |
b77b83741308
(w32con_move_cursor, w32con_clear_to_end):
Jason Rumney <jasonr@gnu.org>
parents:
75227
diff
changeset
|
61 static void w32con_set_terminal_modes (struct terminal *t); |
b77b83741308
(w32con_move_cursor, w32con_clear_to_end):
Jason Rumney <jasonr@gnu.org>
parents:
75227
diff
changeset
|
62 static void w32con_set_terminal_window (struct frame *f, int size); |
55670
d3274c878082
Prefix RIF functions with w32con_ to avoid namespace clash with term.c.
Jason Rumney <jasonr@gnu.org>
parents:
55644
diff
changeset
|
63 static void w32con_update_begin (struct frame * f); |
d3274c878082
Prefix RIF functions with w32con_ to avoid namespace clash with term.c.
Jason Rumney <jasonr@gnu.org>
parents:
55644
diff
changeset
|
64 static void w32con_update_end (struct frame * f); |
27518
ff2e0205b5a0
(turn_on_face, turn_off_face): Removed.
Jason Rumney <jasonr@gnu.org>
parents:
27395
diff
changeset
|
65 static WORD w32_face_attributes (struct frame *f, int face_id); |
9907 | 66 |
27518
ff2e0205b5a0
(turn_on_face, turn_off_face): Removed.
Jason Rumney <jasonr@gnu.org>
parents:
27395
diff
changeset
|
67 static COORD cursor_coords; |
ff2e0205b5a0
(turn_on_face, turn_off_face): Removed.
Jason Rumney <jasonr@gnu.org>
parents:
27395
diff
changeset
|
68 static HANDLE prev_screen, cur_screen; |
ff2e0205b5a0
(turn_on_face, turn_off_face): Removed.
Jason Rumney <jasonr@gnu.org>
parents:
27395
diff
changeset
|
69 static WORD char_attr_normal; |
ff2e0205b5a0
(turn_on_face, turn_off_face): Removed.
Jason Rumney <jasonr@gnu.org>
parents:
27395
diff
changeset
|
70 static DWORD prev_console_mode; |
9907 | 71 |
19706
e21b63afe61f
(DebPrint, reset_kbd, unset_kbd, take_console): Delete functions.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18507
diff
changeset
|
72 #ifndef USE_SEPARATE_SCREEN |
27518
ff2e0205b5a0
(turn_on_face, turn_off_face): Removed.
Jason Rumney <jasonr@gnu.org>
parents:
27395
diff
changeset
|
73 static CONSOLE_CURSOR_INFO prev_console_cursor; |
19706
e21b63afe61f
(DebPrint, reset_kbd, unset_kbd, take_console): Delete functions.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18507
diff
changeset
|
74 #endif |
e21b63afe61f
(DebPrint, reset_kbd, unset_kbd, take_console): Delete functions.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18507
diff
changeset
|
75 |
86834
ca4d8fae0af9
Leave HAVE_WINDOW_SYSTEM defined.
Jason Rumney <jasonr@gnu.org>
parents:
86271
diff
changeset
|
76 extern Lisp_Object Vtty_defined_color_alist; |
ca4d8fae0af9
Leave HAVE_WINDOW_SYSTEM defined.
Jason Rumney <jasonr@gnu.org>
parents:
86271
diff
changeset
|
77 |
24938
a4c871b96d4b
(w32_use_full_screen_buffer): New variable.
Andrew Innes <andrewi@gnu.org>
parents:
24755
diff
changeset
|
78 /* Determine whether to make frame dimensions match the screen buffer, |
a4c871b96d4b
(w32_use_full_screen_buffer): New variable.
Andrew Innes <andrewi@gnu.org>
parents:
24755
diff
changeset
|
79 or the current window size. The former is desirable when running |
a4c871b96d4b
(w32_use_full_screen_buffer): New variable.
Andrew Innes <andrewi@gnu.org>
parents:
24755
diff
changeset
|
80 over telnet, while the latter is more useful when working directly at |
a4c871b96d4b
(w32_use_full_screen_buffer): New variable.
Andrew Innes <andrewi@gnu.org>
parents:
24755
diff
changeset
|
81 the console with a large scroll-back buffer. */ |
a4c871b96d4b
(w32_use_full_screen_buffer): New variable.
Andrew Innes <andrewi@gnu.org>
parents:
24755
diff
changeset
|
82 int w32_use_full_screen_buffer; |
27518
ff2e0205b5a0
(turn_on_face, turn_off_face): Removed.
Jason Rumney <jasonr@gnu.org>
parents:
27395
diff
changeset
|
83 HANDLE keyboard_handle; |
24938
a4c871b96d4b
(w32_use_full_screen_buffer): New variable.
Andrew Innes <andrewi@gnu.org>
parents:
24755
diff
changeset
|
84 |
9907 | 85 |
86 /* Setting this as the ctrl handler prevents emacs from being killed when | |
12336
617f39b43557
(ctrl_c_handler): Ignore CTRL_BREAK_EVENT signals.
Richard M. Stallman <rms@gnu.org>
parents:
12183
diff
changeset
|
87 someone hits ^C in a 'suspended' session (child shell). |
617f39b43557
(ctrl_c_handler): Ignore CTRL_BREAK_EVENT signals.
Richard M. Stallman <rms@gnu.org>
parents:
12183
diff
changeset
|
88 Also ignore Ctrl-Break signals. */ |
617f39b43557
(ctrl_c_handler): Ignore CTRL_BREAK_EVENT signals.
Richard M. Stallman <rms@gnu.org>
parents:
12183
diff
changeset
|
89 |
9907 | 90 BOOL |
91 ctrl_c_handler (unsigned long type) | |
92 { | |
19706
e21b63afe61f
(DebPrint, reset_kbd, unset_kbd, take_console): Delete functions.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18507
diff
changeset
|
93 /* Only ignore "interrupt" events when running interactively. */ |
e21b63afe61f
(DebPrint, reset_kbd, unset_kbd, take_console): Delete functions.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18507
diff
changeset
|
94 return (!noninteractive |
e21b63afe61f
(DebPrint, reset_kbd, unset_kbd, take_console): Delete functions.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18507
diff
changeset
|
95 && (type == CTRL_C_EVENT || type == CTRL_BREAK_EVENT)); |
9907 | 96 } |
97 | |
98 | |
83573
b77b83741308
(w32con_move_cursor, w32con_clear_to_end):
Jason Rumney <jasonr@gnu.org>
parents:
75227
diff
changeset
|
99 /* Move the cursor to (ROW, COL) on FRAME. */ |
55644 | 100 static void |
83573
b77b83741308
(w32con_move_cursor, w32con_clear_to_end):
Jason Rumney <jasonr@gnu.org>
parents:
75227
diff
changeset
|
101 w32con_move_cursor (struct frame *f, int row, int col) |
9907 | 102 { |
103 cursor_coords.X = col; | |
104 cursor_coords.Y = row; | |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
40962
diff
changeset
|
105 |
83573
b77b83741308
(w32con_move_cursor, w32con_clear_to_end):
Jason Rumney <jasonr@gnu.org>
parents:
75227
diff
changeset
|
106 /* TODO: for multi-tty support, cur_screen should be replaced with a |
b77b83741308
(w32con_move_cursor, w32con_clear_to_end):
Jason Rumney <jasonr@gnu.org>
parents:
75227
diff
changeset
|
107 reference to the terminal for this frame. */ |
b77b83741308
(w32con_move_cursor, w32con_clear_to_end):
Jason Rumney <jasonr@gnu.org>
parents:
75227
diff
changeset
|
108 SetConsoleCursorPosition (cur_screen, cursor_coords); |
9907 | 109 } |
110 | |
111 /* Clear from cursor to end of screen. */ | |
55644 | 112 static void |
83573
b77b83741308
(w32con_move_cursor, w32con_clear_to_end):
Jason Rumney <jasonr@gnu.org>
parents:
75227
diff
changeset
|
113 w32con_clear_to_end (struct frame *f) |
9907 | 114 { |
83573
b77b83741308
(w32con_move_cursor, w32con_clear_to_end):
Jason Rumney <jasonr@gnu.org>
parents:
75227
diff
changeset
|
115 w32con_clear_end_of_line (f, FRAME_COLS (f) - 1); |
b77b83741308
(w32con_move_cursor, w32con_clear_to_end):
Jason Rumney <jasonr@gnu.org>
parents:
75227
diff
changeset
|
116 w32con_ins_del_lines (f, cursor_coords.Y, FRAME_LINES (f) - cursor_coords.Y - 1); |
9907 | 117 } |
118 | |
119 /* Clear the frame. */ | |
55670
d3274c878082
Prefix RIF functions with w32con_ to avoid namespace clash with term.c.
Jason Rumney <jasonr@gnu.org>
parents:
55644
diff
changeset
|
120 static void |
83573
b77b83741308
(w32con_move_cursor, w32con_clear_to_end):
Jason Rumney <jasonr@gnu.org>
parents:
75227
diff
changeset
|
121 w32con_clear_frame (struct frame *f) |
9907 | 122 { |
123 COORD dest; | |
31109 | 124 int n; |
125 DWORD r; | |
24755
3bb855a40bf6
(clear_frame): Remember that the window width might
Andrew Innes <andrewi@gnu.org>
parents:
23572
diff
changeset
|
126 CONSOLE_SCREEN_BUFFER_INFO info; |
3bb855a40bf6
(clear_frame): Remember that the window width might
Andrew Innes <andrewi@gnu.org>
parents:
23572
diff
changeset
|
127 |
3bb855a40bf6
(clear_frame): Remember that the window width might
Andrew Innes <andrewi@gnu.org>
parents:
23572
diff
changeset
|
128 GetConsoleScreenBufferInfo (GetStdHandle (STD_OUTPUT_HANDLE), &info); |
14244
493cff4d5960
(clear_frame): Use FillConsoleOutput* calls instead of
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
129 |
24755
3bb855a40bf6
(clear_frame): Remember that the window width might
Andrew Innes <andrewi@gnu.org>
parents:
23572
diff
changeset
|
130 /* Remember that the screen buffer might be wider than the window. */ |
51206
22a5614b558f
Make (few) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50247
diff
changeset
|
131 n = FRAME_LINES (f) * info.dwSize.X; |
14244
493cff4d5960
(clear_frame): Use FillConsoleOutput* calls instead of
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
132 dest.X = dest.Y = 0; |
493cff4d5960
(clear_frame): Use FillConsoleOutput* calls instead of
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
133 |
27518
ff2e0205b5a0
(turn_on_face, turn_off_face): Removed.
Jason Rumney <jasonr@gnu.org>
parents:
27395
diff
changeset
|
134 FillConsoleOutputAttribute (cur_screen, char_attr_normal, n, dest, &r); |
14244
493cff4d5960
(clear_frame): Use FillConsoleOutput* calls instead of
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
135 FillConsoleOutputCharacter (cur_screen, ' ', n, dest, &r); |
493cff4d5960
(clear_frame): Use FillConsoleOutput* calls instead of
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
136 |
83573
b77b83741308
(w32con_move_cursor, w32con_clear_to_end):
Jason Rumney <jasonr@gnu.org>
parents:
75227
diff
changeset
|
137 w32con_move_cursor (f, 0, 0); |
9907 | 138 } |
139 | |
140 | |
27395
fe54558f20d8
(turn_on_face, turn_off_face): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
24938
diff
changeset
|
141 static struct glyph glyph_base[256]; |
9907 | 142 static BOOL ceol_initialized = FALSE; |
143 | |
144 /* Clear from Cursor to end (what's "standout marker"?). */ | |
55670
d3274c878082
Prefix RIF functions with w32con_ to avoid namespace clash with term.c.
Jason Rumney <jasonr@gnu.org>
parents:
55644
diff
changeset
|
145 static void |
83573
b77b83741308
(w32con_move_cursor, w32con_clear_to_end):
Jason Rumney <jasonr@gnu.org>
parents:
75227
diff
changeset
|
146 w32con_clear_end_of_line (struct frame *f, int end) |
9907 | 147 { |
148 if (!ceol_initialized) | |
149 { | |
150 int i; | |
151 for (i = 0; i < 256; i++) | |
152 { | |
27395
fe54558f20d8
(turn_on_face, turn_off_face): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
24938
diff
changeset
|
153 memcpy (&glyph_base[i], &space_glyph, sizeof (struct glyph)); |
9907 | 154 } |
155 ceol_initialized = TRUE; | |
156 } | |
83573
b77b83741308
(w32con_move_cursor, w32con_clear_to_end):
Jason Rumney <jasonr@gnu.org>
parents:
75227
diff
changeset
|
157 w32con_write_glyphs (f, glyph_base, end - cursor_coords.X); /* fencepost ? */ |
9907 | 158 } |
159 | |
160 /* Insert n lines at vpos. if n is negative delete -n lines. */ | |
55670
d3274c878082
Prefix RIF functions with w32con_ to avoid namespace clash with term.c.
Jason Rumney <jasonr@gnu.org>
parents:
55644
diff
changeset
|
161 static void |
83573
b77b83741308
(w32con_move_cursor, w32con_clear_to_end):
Jason Rumney <jasonr@gnu.org>
parents:
75227
diff
changeset
|
162 w32con_ins_del_lines (struct frame *f, int vpos, int n) |
9907 | 163 { |
40079
e62d3694acdc
(reassert_line_highlight, change_line_highlight): Functions removed.
Miles Bader <miles@gnu.org>
parents:
39682
diff
changeset
|
164 int i, nb; |
9907 | 165 SMALL_RECT scroll; |
86876
24d5cc50cf7d
(w32con_ins_del_lines, scroll_line): Clip to window.
Jason Rumney <jasonr@gnu.org>
parents:
86834
diff
changeset
|
166 SMALL_RECT clip; |
9907 | 167 COORD dest; |
168 CHAR_INFO fill; | |
169 | |
170 if (n < 0) | |
171 { | |
172 scroll.Top = vpos - n; | |
51206
22a5614b558f
Make (few) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50247
diff
changeset
|
173 scroll.Bottom = FRAME_LINES (f); |
9907 | 174 dest.Y = vpos; |
175 } | |
176 else | |
177 { | |
178 scroll.Top = vpos; | |
51206
22a5614b558f
Make (few) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50247
diff
changeset
|
179 scroll.Bottom = FRAME_LINES (f) - n; |
9907 | 180 dest.Y = vpos + n; |
181 } | |
86876
24d5cc50cf7d
(w32con_ins_del_lines, scroll_line): Clip to window.
Jason Rumney <jasonr@gnu.org>
parents:
86834
diff
changeset
|
182 clip.Top = clip.Left = scroll.Left = 0; |
24d5cc50cf7d
(w32con_ins_del_lines, scroll_line): Clip to window.
Jason Rumney <jasonr@gnu.org>
parents:
86834
diff
changeset
|
183 clip.Right = scroll.Right = FRAME_COLS (f); |
24d5cc50cf7d
(w32con_ins_del_lines, scroll_line): Clip to window.
Jason Rumney <jasonr@gnu.org>
parents:
86834
diff
changeset
|
184 clip.Bottom = FRAME_LINES (f); |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
40962
diff
changeset
|
185 |
9907 | 186 dest.X = 0; |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
40962
diff
changeset
|
187 |
9907 | 188 fill.Char.AsciiChar = 0x20; |
27518
ff2e0205b5a0
(turn_on_face, turn_off_face): Removed.
Jason Rumney <jasonr@gnu.org>
parents:
27395
diff
changeset
|
189 fill.Attributes = char_attr_normal; |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
40962
diff
changeset
|
190 |
86876
24d5cc50cf7d
(w32con_ins_del_lines, scroll_line): Clip to window.
Jason Rumney <jasonr@gnu.org>
parents:
86834
diff
changeset
|
191 ScrollConsoleScreenBuffer (cur_screen, &scroll, &clip, dest, &fill); |
9907 | 192 |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16262
diff
changeset
|
193 /* Here we have to deal with a w32 console flake: If the scroll |
9907 | 194 region looks like abc and we scroll c to a and fill with d we get |
195 cbd... if we scroll block c one line at a time to a, we get cdd... | |
196 Emacs expects cdd consistently... So we have to deal with that | |
197 here... (this also occurs scrolling the same way in the other | |
198 direction. */ | |
199 | |
200 if (n > 0) | |
201 { | |
202 if (scroll.Bottom < dest.Y) | |
203 { | |
204 for (i = scroll.Bottom; i < dest.Y; i++) | |
205 { | |
83573
b77b83741308
(w32con_move_cursor, w32con_clear_to_end):
Jason Rumney <jasonr@gnu.org>
parents:
75227
diff
changeset
|
206 w32con_move_cursor (f, i, 0); |
b77b83741308
(w32con_move_cursor, w32con_clear_to_end):
Jason Rumney <jasonr@gnu.org>
parents:
75227
diff
changeset
|
207 w32con_clear_end_of_line (f, FRAME_COLS (f)); |
9907 | 208 } |
209 } | |
210 } | |
211 else | |
212 { | |
213 nb = dest.Y + (scroll.Bottom - scroll.Top) + 1; | |
214 | |
215 if (nb < scroll.Top) | |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
40962
diff
changeset
|
216 { |
9907 | 217 for (i = nb; i < scroll.Top; i++) |
218 { | |
83573
b77b83741308
(w32con_move_cursor, w32con_clear_to_end):
Jason Rumney <jasonr@gnu.org>
parents:
75227
diff
changeset
|
219 w32con_move_cursor (f, i, 0); |
b77b83741308
(w32con_move_cursor, w32con_clear_to_end):
Jason Rumney <jasonr@gnu.org>
parents:
75227
diff
changeset
|
220 w32con_clear_end_of_line (f, FRAME_COLS (f)); |
9907 | 221 } |
222 } | |
223 } | |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
40962
diff
changeset
|
224 |
9907 | 225 cursor_coords.X = 0; |
226 cursor_coords.Y = vpos; | |
227 } | |
228 | |
229 #undef LEFT | |
230 #undef RIGHT | |
231 #define LEFT 1 | |
232 #define RIGHT 0 | |
233 | |
55644 | 234 static void |
83573
b77b83741308
(w32con_move_cursor, w32con_clear_to_end):
Jason Rumney <jasonr@gnu.org>
parents:
75227
diff
changeset
|
235 scroll_line (struct frame *f, int dist, int direction) |
9907 | 236 { |
237 /* The idea here is to implement a horizontal scroll in one line to | |
238 implement delete and half of insert. */ | |
86876
24d5cc50cf7d
(w32con_ins_del_lines, scroll_line): Clip to window.
Jason Rumney <jasonr@gnu.org>
parents:
86834
diff
changeset
|
239 SMALL_RECT scroll, clip; |
9907 | 240 COORD dest; |
241 CHAR_INFO fill; | |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
40962
diff
changeset
|
242 |
86876
24d5cc50cf7d
(w32con_ins_del_lines, scroll_line): Clip to window.
Jason Rumney <jasonr@gnu.org>
parents:
86834
diff
changeset
|
243 clip.Top = scroll.Top = clip.Bottom = scroll.Bottom = cursor_coords.Y; |
24d5cc50cf7d
(w32con_ins_del_lines, scroll_line): Clip to window.
Jason Rumney <jasonr@gnu.org>
parents:
86834
diff
changeset
|
244 clip.Left = 0; |
24d5cc50cf7d
(w32con_ins_del_lines, scroll_line): Clip to window.
Jason Rumney <jasonr@gnu.org>
parents:
86834
diff
changeset
|
245 clip.Right = FRAME_COLS (f); |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
40962
diff
changeset
|
246 |
9907 | 247 if (direction == LEFT) |
248 { | |
249 scroll.Left = cursor_coords.X + dist; | |
51206
22a5614b558f
Make (few) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50247
diff
changeset
|
250 scroll.Right = FRAME_COLS (f) - 1; |
9907 | 251 } |
252 else | |
253 { | |
254 scroll.Left = cursor_coords.X; | |
51206
22a5614b558f
Make (few) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50247
diff
changeset
|
255 scroll.Right = FRAME_COLS (f) - dist - 1; |
9907 | 256 } |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
40962
diff
changeset
|
257 |
9907 | 258 dest.X = cursor_coords.X; |
259 dest.Y = cursor_coords.Y; | |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
40962
diff
changeset
|
260 |
9907 | 261 fill.Char.AsciiChar = 0x20; |
27518
ff2e0205b5a0
(turn_on_face, turn_off_face): Removed.
Jason Rumney <jasonr@gnu.org>
parents:
27395
diff
changeset
|
262 fill.Attributes = char_attr_normal; |
ff2e0205b5a0
(turn_on_face, turn_off_face): Removed.
Jason Rumney <jasonr@gnu.org>
parents:
27395
diff
changeset
|
263 |
86876
24d5cc50cf7d
(w32con_ins_del_lines, scroll_line): Clip to window.
Jason Rumney <jasonr@gnu.org>
parents:
86834
diff
changeset
|
264 ScrollConsoleScreenBuffer (cur_screen, &scroll, &clip, dest, &fill); |
9907 | 265 } |
266 | |
267 | |
268 /* If start is zero insert blanks instead of a string at start ?. */ | |
55670
d3274c878082
Prefix RIF functions with w32con_ to avoid namespace clash with term.c.
Jason Rumney <jasonr@gnu.org>
parents:
55644
diff
changeset
|
269 static void |
83573
b77b83741308
(w32con_move_cursor, w32con_clear_to_end):
Jason Rumney <jasonr@gnu.org>
parents:
75227
diff
changeset
|
270 w32con_insert_glyphs (struct frame *f, register struct glyph *start, register int len) |
9907 | 271 { |
83573
b77b83741308
(w32con_move_cursor, w32con_clear_to_end):
Jason Rumney <jasonr@gnu.org>
parents:
75227
diff
changeset
|
272 scroll_line (f, len, RIGHT); |
9907 | 273 |
274 /* Move len chars to the right starting at cursor_coords, fill with blanks */ | |
275 if (start) | |
276 { | |
277 /* Print the first len characters of start, cursor_coords.X adjusted | |
278 by write_glyphs. */ | |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
40962
diff
changeset
|
279 |
83573
b77b83741308
(w32con_move_cursor, w32con_clear_to_end):
Jason Rumney <jasonr@gnu.org>
parents:
75227
diff
changeset
|
280 w32con_write_glyphs (f, start, len); |
9907 | 281 } |
282 else | |
283 { | |
83573
b77b83741308
(w32con_move_cursor, w32con_clear_to_end):
Jason Rumney <jasonr@gnu.org>
parents:
75227
diff
changeset
|
284 w32con_clear_end_of_line (f, cursor_coords.X + len); |
9907 | 285 } |
286 } | |
287 | |
58700
222a7e1090c3
(w32con_write_glyphs): Decide coding here.
Kenichi Handa <handa@m17n.org>
parents:
55670
diff
changeset
|
288 extern unsigned char *encode_terminal_code P_ ((struct glyph *, int, |
58703
65309f66a561
(encode_terminal_code): Fix previous change.
Kenichi Handa <handa@m17n.org>
parents:
58700
diff
changeset
|
289 struct coding_system *)); |
58700
222a7e1090c3
(w32con_write_glyphs): Decide coding here.
Kenichi Handa <handa@m17n.org>
parents:
55670
diff
changeset
|
290 |
55670
d3274c878082
Prefix RIF functions with w32con_ to avoid namespace clash with term.c.
Jason Rumney <jasonr@gnu.org>
parents:
55644
diff
changeset
|
291 static void |
83573
b77b83741308
(w32con_move_cursor, w32con_clear_to_end):
Jason Rumney <jasonr@gnu.org>
parents:
75227
diff
changeset
|
292 w32con_write_glyphs (struct frame *f, register struct glyph *string, |
b77b83741308
(w32con_move_cursor, w32con_clear_to_end):
Jason Rumney <jasonr@gnu.org>
parents:
75227
diff
changeset
|
293 register int len) |
9907 | 294 { |
31109 | 295 DWORD r; |
27518
ff2e0205b5a0
(turn_on_face, turn_off_face): Removed.
Jason Rumney <jasonr@gnu.org>
parents:
27395
diff
changeset
|
296 WORD char_attr; |
58700
222a7e1090c3
(w32con_write_glyphs): Decide coding here.
Kenichi Handa <handa@m17n.org>
parents:
55670
diff
changeset
|
297 unsigned char *conversion_buffer; |
222a7e1090c3
(w32con_write_glyphs): Decide coding here.
Kenichi Handa <handa@m17n.org>
parents:
55670
diff
changeset
|
298 struct coding_system *coding; |
27518
ff2e0205b5a0
(turn_on_face, turn_off_face): Removed.
Jason Rumney <jasonr@gnu.org>
parents:
27395
diff
changeset
|
299 |
ff2e0205b5a0
(turn_on_face, turn_off_face): Removed.
Jason Rumney <jasonr@gnu.org>
parents:
27395
diff
changeset
|
300 if (len <= 0) |
ff2e0205b5a0
(turn_on_face, turn_off_face): Removed.
Jason Rumney <jasonr@gnu.org>
parents:
27395
diff
changeset
|
301 return; |
27395
fe54558f20d8
(turn_on_face, turn_off_face): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
24938
diff
changeset
|
302 |
58700
222a7e1090c3
(w32con_write_glyphs): Decide coding here.
Kenichi Handa <handa@m17n.org>
parents:
55670
diff
changeset
|
303 /* If terminal_coding does any conversion, use it, otherwise use |
222a7e1090c3
(w32con_write_glyphs): Decide coding here.
Kenichi Handa <handa@m17n.org>
parents:
55670
diff
changeset
|
304 safe_terminal_coding. We can't use CODING_REQUIRE_ENCODING here |
222a7e1090c3
(w32con_write_glyphs): Decide coding here.
Kenichi Handa <handa@m17n.org>
parents:
55670
diff
changeset
|
305 because it always return 1 if the member src_multibyte is 1. */ |
83573
b77b83741308
(w32con_move_cursor, w32con_clear_to_end):
Jason Rumney <jasonr@gnu.org>
parents:
75227
diff
changeset
|
306 coding = (FRAME_TERMINAL_CODING (f)->common_flags & CODING_REQUIRE_ENCODING_MASK |
b77b83741308
(w32con_move_cursor, w32con_clear_to_end):
Jason Rumney <jasonr@gnu.org>
parents:
75227
diff
changeset
|
307 ? FRAME_TERMINAL_CODING (f) : &safe_terminal_coding); |
27395
fe54558f20d8
(turn_on_face, turn_off_face): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
24938
diff
changeset
|
308 /* The mode bit CODING_MODE_LAST_BLOCK should be set to 1 only at |
fe54558f20d8
(turn_on_face, turn_off_face): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
24938
diff
changeset
|
309 the tail. */ |
83573
b77b83741308
(w32con_move_cursor, w32con_clear_to_end):
Jason Rumney <jasonr@gnu.org>
parents:
75227
diff
changeset
|
310 coding->mode &= ~CODING_MODE_LAST_BLOCK; |
14244
493cff4d5960
(clear_frame): Use FillConsoleOutput* calls instead of
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
311 |
27395
fe54558f20d8
(turn_on_face, turn_off_face): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
24938
diff
changeset
|
312 while (len > 0) |
9907 | 313 { |
27395
fe54558f20d8
(turn_on_face, turn_off_face): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
24938
diff
changeset
|
314 /* Identify a run of glyphs with the same face. */ |
fe54558f20d8
(turn_on_face, turn_off_face): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
24938
diff
changeset
|
315 int face_id = string->face_id; |
fe54558f20d8
(turn_on_face, turn_off_face): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
24938
diff
changeset
|
316 int n; |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
40962
diff
changeset
|
317 |
27395
fe54558f20d8
(turn_on_face, turn_off_face): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
24938
diff
changeset
|
318 for (n = 1; n < len; ++n) |
fe54558f20d8
(turn_on_face, turn_off_face): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
24938
diff
changeset
|
319 if (string[n].face_id != face_id) |
fe54558f20d8
(turn_on_face, turn_off_face): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
24938
diff
changeset
|
320 break; |
fe54558f20d8
(turn_on_face, turn_off_face): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
24938
diff
changeset
|
321 |
fe54558f20d8
(turn_on_face, turn_off_face): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
24938
diff
changeset
|
322 /* Turn appearance modes of the face of the run on. */ |
27518
ff2e0205b5a0
(turn_on_face, turn_off_face): Removed.
Jason Rumney <jasonr@gnu.org>
parents:
27395
diff
changeset
|
323 char_attr = w32_face_attributes (f, face_id); |
9907 | 324 |
58700
222a7e1090c3
(w32con_write_glyphs): Decide coding here.
Kenichi Handa <handa@m17n.org>
parents:
55670
diff
changeset
|
325 if (n == len) |
222a7e1090c3
(w32con_write_glyphs): Decide coding here.
Kenichi Handa <handa@m17n.org>
parents:
55670
diff
changeset
|
326 /* This is the last run. */ |
222a7e1090c3
(w32con_write_glyphs): Decide coding here.
Kenichi Handa <handa@m17n.org>
parents:
55670
diff
changeset
|
327 coding->mode |= CODING_MODE_LAST_BLOCK; |
222a7e1090c3
(w32con_write_glyphs): Decide coding here.
Kenichi Handa <handa@m17n.org>
parents:
55670
diff
changeset
|
328 conversion_buffer = encode_terminal_code (string, n, coding); |
222a7e1090c3
(w32con_write_glyphs): Decide coding here.
Kenichi Handa <handa@m17n.org>
parents:
55670
diff
changeset
|
329 if (coding->produced > 0) |
222a7e1090c3
(w32con_write_glyphs): Decide coding here.
Kenichi Handa <handa@m17n.org>
parents:
55670
diff
changeset
|
330 { |
222a7e1090c3
(w32con_write_glyphs): Decide coding here.
Kenichi Handa <handa@m17n.org>
parents:
55670
diff
changeset
|
331 /* Set the attribute for these characters. */ |
222a7e1090c3
(w32con_write_glyphs): Decide coding here.
Kenichi Handa <handa@m17n.org>
parents:
55670
diff
changeset
|
332 if (!FillConsoleOutputAttribute (cur_screen, char_attr, |
222a7e1090c3
(w32con_write_glyphs): Decide coding here.
Kenichi Handa <handa@m17n.org>
parents:
55670
diff
changeset
|
333 coding->produced, cursor_coords, |
222a7e1090c3
(w32con_write_glyphs): Decide coding here.
Kenichi Handa <handa@m17n.org>
parents:
55670
diff
changeset
|
334 &r)) |
27395
fe54558f20d8
(turn_on_face, turn_off_face): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
24938
diff
changeset
|
335 { |
58700
222a7e1090c3
(w32con_write_glyphs): Decide coding here.
Kenichi Handa <handa@m17n.org>
parents:
55670
diff
changeset
|
336 printf ("Failed writing console attributes: %d\n", |
222a7e1090c3
(w32con_write_glyphs): Decide coding here.
Kenichi Handa <handa@m17n.org>
parents:
55670
diff
changeset
|
337 GetLastError ()); |
222a7e1090c3
(w32con_write_glyphs): Decide coding here.
Kenichi Handa <handa@m17n.org>
parents:
55670
diff
changeset
|
338 fflush (stdout); |
222a7e1090c3
(w32con_write_glyphs): Decide coding here.
Kenichi Handa <handa@m17n.org>
parents:
55670
diff
changeset
|
339 } |
27395
fe54558f20d8
(turn_on_face, turn_off_face): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
24938
diff
changeset
|
340 |
58700
222a7e1090c3
(w32con_write_glyphs): Decide coding here.
Kenichi Handa <handa@m17n.org>
parents:
55670
diff
changeset
|
341 /* Write the characters. */ |
222a7e1090c3
(w32con_write_glyphs): Decide coding here.
Kenichi Handa <handa@m17n.org>
parents:
55670
diff
changeset
|
342 if (!WriteConsoleOutputCharacter (cur_screen, conversion_buffer, |
222a7e1090c3
(w32con_write_glyphs): Decide coding here.
Kenichi Handa <handa@m17n.org>
parents:
55670
diff
changeset
|
343 coding->produced, cursor_coords, |
222a7e1090c3
(w32con_write_glyphs): Decide coding here.
Kenichi Handa <handa@m17n.org>
parents:
55670
diff
changeset
|
344 &r)) |
222a7e1090c3
(w32con_write_glyphs): Decide coding here.
Kenichi Handa <handa@m17n.org>
parents:
55670
diff
changeset
|
345 { |
222a7e1090c3
(w32con_write_glyphs): Decide coding here.
Kenichi Handa <handa@m17n.org>
parents:
55670
diff
changeset
|
346 printf ("Failed writing console characters: %d\n", |
222a7e1090c3
(w32con_write_glyphs): Decide coding here.
Kenichi Handa <handa@m17n.org>
parents:
55670
diff
changeset
|
347 GetLastError ()); |
222a7e1090c3
(w32con_write_glyphs): Decide coding here.
Kenichi Handa <handa@m17n.org>
parents:
55670
diff
changeset
|
348 fflush (stdout); |
222a7e1090c3
(w32con_write_glyphs): Decide coding here.
Kenichi Handa <handa@m17n.org>
parents:
55670
diff
changeset
|
349 } |
9907 | 350 |
58700
222a7e1090c3
(w32con_write_glyphs): Decide coding here.
Kenichi Handa <handa@m17n.org>
parents:
55670
diff
changeset
|
351 cursor_coords.X += coding->produced; |
83573
b77b83741308
(w32con_move_cursor, w32con_clear_to_end):
Jason Rumney <jasonr@gnu.org>
parents:
75227
diff
changeset
|
352 w32con_move_cursor (f, cursor_coords.Y, cursor_coords.X); |
58700
222a7e1090c3
(w32con_write_glyphs): Decide coding here.
Kenichi Handa <handa@m17n.org>
parents:
55670
diff
changeset
|
353 } |
222a7e1090c3
(w32con_write_glyphs): Decide coding here.
Kenichi Handa <handa@m17n.org>
parents:
55670
diff
changeset
|
354 len -= n; |
222a7e1090c3
(w32con_write_glyphs): Decide coding here.
Kenichi Handa <handa@m17n.org>
parents:
55670
diff
changeset
|
355 string += n; |
9907 | 356 } |
357 } | |
358 | |
27395
fe54558f20d8
(turn_on_face, turn_off_face): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
24938
diff
changeset
|
359 |
55670
d3274c878082
Prefix RIF functions with w32con_ to avoid namespace clash with term.c.
Jason Rumney <jasonr@gnu.org>
parents:
55644
diff
changeset
|
360 static void |
83573
b77b83741308
(w32con_move_cursor, w32con_clear_to_end):
Jason Rumney <jasonr@gnu.org>
parents:
75227
diff
changeset
|
361 w32con_delete_glyphs (struct frame *f, int n) |
9907 | 362 { |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
40962
diff
changeset
|
363 /* delete chars means scroll chars from cursor_coords.X + n to |
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
40962
diff
changeset
|
364 cursor_coords.X, anything beyond the edge of the screen should |
9907 | 365 come out empty... */ |
366 | |
83573
b77b83741308
(w32con_move_cursor, w32con_clear_to_end):
Jason Rumney <jasonr@gnu.org>
parents:
75227
diff
changeset
|
367 scroll_line (f, n, LEFT); |
9907 | 368 } |
369 | |
11389 | 370 static unsigned int sound_type = 0xFFFFFFFF; |
23563
18c5f58b70b5
(Fset_message_beep): Recognize 'silent.
Geoff Voelker <voelker@cs.washington.edu>
parents:
22540
diff
changeset
|
371 #define MB_EMACS_SILENT (0xFFFFFFFF - 1) |
11389 | 372 |
9907 | 373 void |
83573
b77b83741308
(w32con_move_cursor, w32con_clear_to_end):
Jason Rumney <jasonr@gnu.org>
parents:
75227
diff
changeset
|
374 w32_sys_ring_bell (struct frame *f) |
9907 | 375 { |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
40962
diff
changeset
|
376 if (sound_type == 0xFFFFFFFF) |
23563
18c5f58b70b5
(Fset_message_beep): Recognize 'silent.
Geoff Voelker <voelker@cs.washington.edu>
parents:
22540
diff
changeset
|
377 { |
11389 | 378 Beep (666, 100); |
23563
18c5f58b70b5
(Fset_message_beep): Recognize 'silent.
Geoff Voelker <voelker@cs.washington.edu>
parents:
22540
diff
changeset
|
379 } |
18c5f58b70b5
(Fset_message_beep): Recognize 'silent.
Geoff Voelker <voelker@cs.washington.edu>
parents:
22540
diff
changeset
|
380 else if (sound_type == MB_EMACS_SILENT) |
18c5f58b70b5
(Fset_message_beep): Recognize 'silent.
Geoff Voelker <voelker@cs.washington.edu>
parents:
22540
diff
changeset
|
381 { |
18c5f58b70b5
(Fset_message_beep): Recognize 'silent.
Geoff Voelker <voelker@cs.washington.edu>
parents:
22540
diff
changeset
|
382 /* Do nothing. */ |
18c5f58b70b5
(Fset_message_beep): Recognize 'silent.
Geoff Voelker <voelker@cs.washington.edu>
parents:
22540
diff
changeset
|
383 } |
11389 | 384 else |
23563
18c5f58b70b5
(Fset_message_beep): Recognize 'silent.
Geoff Voelker <voelker@cs.washington.edu>
parents:
22540
diff
changeset
|
385 MessageBeep (sound_type); |
9907 | 386 } |
387 | |
11389 | 388 DEFUN ("set-message-beep", Fset_message_beep, Sset_message_beep, 1, 1, 0, |
40962
f66d09d1bb2f
Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents:
40656
diff
changeset
|
389 doc: /* Set the sound generated when the bell is rung. |
f66d09d1bb2f
Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents:
40656
diff
changeset
|
390 SOUND is 'asterisk, 'exclamation, 'hand, 'question, 'ok, or 'silent |
f66d09d1bb2f
Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents:
40656
diff
changeset
|
391 to use the corresponding system sound for the bell. The 'silent sound |
f66d09d1bb2f
Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents:
40656
diff
changeset
|
392 prevents Emacs from making any sound at all. |
f66d09d1bb2f
Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents:
40656
diff
changeset
|
393 SOUND is nil to use the normal beep. */) |
11389 | 394 (sound) |
395 Lisp_Object sound; | |
9907 | 396 { |
40656
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents:
40079
diff
changeset
|
397 CHECK_SYMBOL (sound); |
11389 | 398 |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
40962
diff
changeset
|
399 if (NILP (sound)) |
11389 | 400 sound_type = 0xFFFFFFFF; |
401 else if (EQ (sound, intern ("asterisk"))) | |
402 sound_type = MB_ICONASTERISK; | |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
40962
diff
changeset
|
403 else if (EQ (sound, intern ("exclamation"))) |
11389 | 404 sound_type = MB_ICONEXCLAMATION; |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
40962
diff
changeset
|
405 else if (EQ (sound, intern ("hand"))) |
11389 | 406 sound_type = MB_ICONHAND; |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
40962
diff
changeset
|
407 else if (EQ (sound, intern ("question"))) |
11389 | 408 sound_type = MB_ICONQUESTION; |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
40962
diff
changeset
|
409 else if (EQ (sound, intern ("ok"))) |
11389 | 410 sound_type = MB_OK; |
23563
18c5f58b70b5
(Fset_message_beep): Recognize 'silent.
Geoff Voelker <voelker@cs.washington.edu>
parents:
22540
diff
changeset
|
411 else if (EQ (sound, intern ("silent"))) |
18c5f58b70b5
(Fset_message_beep): Recognize 'silent.
Geoff Voelker <voelker@cs.washington.edu>
parents:
22540
diff
changeset
|
412 sound_type = MB_EMACS_SILENT; |
11389 | 413 else |
414 sound_type = 0xFFFFFFFF; | |
415 | |
416 return sound; | |
9907 | 417 } |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
40962
diff
changeset
|
418 |
55670
d3274c878082
Prefix RIF functions with w32con_ to avoid namespace clash with term.c.
Jason Rumney <jasonr@gnu.org>
parents:
55644
diff
changeset
|
419 static void |
83573
b77b83741308
(w32con_move_cursor, w32con_clear_to_end):
Jason Rumney <jasonr@gnu.org>
parents:
75227
diff
changeset
|
420 w32con_reset_terminal_modes (struct terminal *t) |
9907 | 421 { |
86876
24d5cc50cf7d
(w32con_ins_del_lines, scroll_line): Clip to window.
Jason Rumney <jasonr@gnu.org>
parents:
86834
diff
changeset
|
422 COORD dest; |
24d5cc50cf7d
(w32con_ins_del_lines, scroll_line): Clip to window.
Jason Rumney <jasonr@gnu.org>
parents:
86834
diff
changeset
|
423 CONSOLE_SCREEN_BUFFER_INFO info; |
24d5cc50cf7d
(w32con_ins_del_lines, scroll_line): Clip to window.
Jason Rumney <jasonr@gnu.org>
parents:
86834
diff
changeset
|
424 int n; |
24d5cc50cf7d
(w32con_ins_del_lines, scroll_line): Clip to window.
Jason Rumney <jasonr@gnu.org>
parents:
86834
diff
changeset
|
425 DWORD r; |
24d5cc50cf7d
(w32con_ins_del_lines, scroll_line): Clip to window.
Jason Rumney <jasonr@gnu.org>
parents:
86834
diff
changeset
|
426 |
24d5cc50cf7d
(w32con_ins_del_lines, scroll_line): Clip to window.
Jason Rumney <jasonr@gnu.org>
parents:
86834
diff
changeset
|
427 /* Clear the complete screen buffer. This is required because Emacs |
24d5cc50cf7d
(w32con_ins_del_lines, scroll_line): Clip to window.
Jason Rumney <jasonr@gnu.org>
parents:
86834
diff
changeset
|
428 sets the cursor position to the top of the buffer, but there might |
24d5cc50cf7d
(w32con_ins_del_lines, scroll_line): Clip to window.
Jason Rumney <jasonr@gnu.org>
parents:
86834
diff
changeset
|
429 be other output below the bottom of the Emacs frame if the screen buffer |
24d5cc50cf7d
(w32con_ins_del_lines, scroll_line): Clip to window.
Jason Rumney <jasonr@gnu.org>
parents:
86834
diff
changeset
|
430 is larger than the window size. */ |
24d5cc50cf7d
(w32con_ins_del_lines, scroll_line): Clip to window.
Jason Rumney <jasonr@gnu.org>
parents:
86834
diff
changeset
|
431 GetConsoleScreenBufferInfo (cur_screen, &info); |
24d5cc50cf7d
(w32con_ins_del_lines, scroll_line): Clip to window.
Jason Rumney <jasonr@gnu.org>
parents:
86834
diff
changeset
|
432 dest.X = 0; |
24d5cc50cf7d
(w32con_ins_del_lines, scroll_line): Clip to window.
Jason Rumney <jasonr@gnu.org>
parents:
86834
diff
changeset
|
433 dest.Y = 0; |
24d5cc50cf7d
(w32con_ins_del_lines, scroll_line): Clip to window.
Jason Rumney <jasonr@gnu.org>
parents:
86834
diff
changeset
|
434 n = info.dwSize.X * info.dwSize.Y; |
24d5cc50cf7d
(w32con_ins_del_lines, scroll_line): Clip to window.
Jason Rumney <jasonr@gnu.org>
parents:
86834
diff
changeset
|
435 |
24d5cc50cf7d
(w32con_ins_del_lines, scroll_line): Clip to window.
Jason Rumney <jasonr@gnu.org>
parents:
86834
diff
changeset
|
436 FillConsoleOutputAttribute (cur_screen, char_attr_normal, n, dest, &r); |
24d5cc50cf7d
(w32con_ins_del_lines, scroll_line): Clip to window.
Jason Rumney <jasonr@gnu.org>
parents:
86834
diff
changeset
|
437 FillConsoleOutputCharacter (cur_screen, ' ', n, dest, &r); |
24d5cc50cf7d
(w32con_ins_del_lines, scroll_line): Clip to window.
Jason Rumney <jasonr@gnu.org>
parents:
86834
diff
changeset
|
438 /* Now that the screen is clear, put the cursor at the top. */ |
24d5cc50cf7d
(w32con_ins_del_lines, scroll_line): Clip to window.
Jason Rumney <jasonr@gnu.org>
parents:
86834
diff
changeset
|
439 SetConsoleCursorPosition (cur_screen, dest); |
24d5cc50cf7d
(w32con_ins_del_lines, scroll_line): Clip to window.
Jason Rumney <jasonr@gnu.org>
parents:
86834
diff
changeset
|
440 |
19706
e21b63afe61f
(DebPrint, reset_kbd, unset_kbd, take_console): Delete functions.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18507
diff
changeset
|
441 #ifdef USE_SEPARATE_SCREEN |
9907 | 442 SetConsoleActiveScreenBuffer (prev_screen); |
19706
e21b63afe61f
(DebPrint, reset_kbd, unset_kbd, take_console): Delete functions.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18507
diff
changeset
|
443 #else |
e21b63afe61f
(DebPrint, reset_kbd, unset_kbd, take_console): Delete functions.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18507
diff
changeset
|
444 SetConsoleCursorInfo (prev_screen, &prev_console_cursor); |
e21b63afe61f
(DebPrint, reset_kbd, unset_kbd, take_console): Delete functions.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18507
diff
changeset
|
445 #endif |
86876
24d5cc50cf7d
(w32con_ins_del_lines, scroll_line): Clip to window.
Jason Rumney <jasonr@gnu.org>
parents:
86834
diff
changeset
|
446 |
19706
e21b63afe61f
(DebPrint, reset_kbd, unset_kbd, take_console): Delete functions.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18507
diff
changeset
|
447 SetConsoleMode (keyboard_handle, prev_console_mode); |
9907 | 448 } |
449 | |
55670
d3274c878082
Prefix RIF functions with w32con_ to avoid namespace clash with term.c.
Jason Rumney <jasonr@gnu.org>
parents:
55644
diff
changeset
|
450 static void |
83573
b77b83741308
(w32con_move_cursor, w32con_clear_to_end):
Jason Rumney <jasonr@gnu.org>
parents:
75227
diff
changeset
|
451 w32con_set_terminal_modes (struct terminal *t) |
9907 | 452 { |
453 CONSOLE_CURSOR_INFO cci; | |
454 | |
19706
e21b63afe61f
(DebPrint, reset_kbd, unset_kbd, take_console): Delete functions.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18507
diff
changeset
|
455 /* make cursor big and visible (100 on Win95 makes it disappear) */ |
e21b63afe61f
(DebPrint, reset_kbd, unset_kbd, take_console): Delete functions.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18507
diff
changeset
|
456 cci.dwSize = 99; |
e21b63afe61f
(DebPrint, reset_kbd, unset_kbd, take_console): Delete functions.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18507
diff
changeset
|
457 cci.bVisible = TRUE; |
e21b63afe61f
(DebPrint, reset_kbd, unset_kbd, take_console): Delete functions.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18507
diff
changeset
|
458 (void) SetConsoleCursorInfo (cur_screen, &cci); |
9907 | 459 |
19706
e21b63afe61f
(DebPrint, reset_kbd, unset_kbd, take_console): Delete functions.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18507
diff
changeset
|
460 SetConsoleActiveScreenBuffer (cur_screen); |
e21b63afe61f
(DebPrint, reset_kbd, unset_kbd, take_console): Delete functions.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18507
diff
changeset
|
461 |
e21b63afe61f
(DebPrint, reset_kbd, unset_kbd, take_console): Delete functions.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18507
diff
changeset
|
462 SetConsoleMode (keyboard_handle, ENABLE_MOUSE_INPUT | ENABLE_WINDOW_INPUT); |
9907 | 463 |
19706
e21b63afe61f
(DebPrint, reset_kbd, unset_kbd, take_console): Delete functions.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18507
diff
changeset
|
464 /* Initialize input mode: interrupt_input off, no flow control, allow |
e21b63afe61f
(DebPrint, reset_kbd, unset_kbd, take_console): Delete functions.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18507
diff
changeset
|
465 8 bit character input, standard quit char. */ |
e21b63afe61f
(DebPrint, reset_kbd, unset_kbd, take_console): Delete functions.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18507
diff
changeset
|
466 Fset_input_mode (Qnil, Qnil, make_number (2), Qnil); |
9907 | 467 } |
468 | |
469 /* hmmm... perhaps these let us bracket screen changes so that we can flush | |
470 clumps rather than one-character-at-a-time... | |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
40962
diff
changeset
|
471 |
9907 | 472 we'll start with not moving the cursor while an update is in progress. */ |
55670
d3274c878082
Prefix RIF functions with w32con_ to avoid namespace clash with term.c.
Jason Rumney <jasonr@gnu.org>
parents:
55644
diff
changeset
|
473 static void |
d3274c878082
Prefix RIF functions with w32con_ to avoid namespace clash with term.c.
Jason Rumney <jasonr@gnu.org>
parents:
55644
diff
changeset
|
474 w32con_update_begin (struct frame * f) |
9907 | 475 { |
476 } | |
477 | |
55670
d3274c878082
Prefix RIF functions with w32con_ to avoid namespace clash with term.c.
Jason Rumney <jasonr@gnu.org>
parents:
55644
diff
changeset
|
478 static void |
d3274c878082
Prefix RIF functions with w32con_ to avoid namespace clash with term.c.
Jason Rumney <jasonr@gnu.org>
parents:
55644
diff
changeset
|
479 w32con_update_end (struct frame * f) |
9907 | 480 { |
481 SetConsoleCursorPosition (cur_screen, cursor_coords); | |
482 } | |
483 | |
55670
d3274c878082
Prefix RIF functions with w32con_ to avoid namespace clash with term.c.
Jason Rumney <jasonr@gnu.org>
parents:
55644
diff
changeset
|
484 static void |
83573
b77b83741308
(w32con_move_cursor, w32con_clear_to_end):
Jason Rumney <jasonr@gnu.org>
parents:
75227
diff
changeset
|
485 w32con_set_terminal_window (struct frame *f, int size) |
9907 | 486 { |
487 } | |
488 | |
27395
fe54558f20d8
(turn_on_face, turn_off_face): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
24938
diff
changeset
|
489 /*********************************************************************** |
fe54558f20d8
(turn_on_face, turn_off_face): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
24938
diff
changeset
|
490 Faces |
fe54558f20d8
(turn_on_face, turn_off_face): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
24938
diff
changeset
|
491 ***********************************************************************/ |
fe54558f20d8
(turn_on_face, turn_off_face): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
24938
diff
changeset
|
492 |
fe54558f20d8
(turn_on_face, turn_off_face): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
24938
diff
changeset
|
493 |
fe54558f20d8
(turn_on_face, turn_off_face): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
24938
diff
changeset
|
494 /* Turn appearances of face FACE_ID on tty frame F on. */ |
fe54558f20d8
(turn_on_face, turn_off_face): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
24938
diff
changeset
|
495 |
27518
ff2e0205b5a0
(turn_on_face, turn_off_face): Removed.
Jason Rumney <jasonr@gnu.org>
parents:
27395
diff
changeset
|
496 static WORD |
ff2e0205b5a0
(turn_on_face, turn_off_face): Removed.
Jason Rumney <jasonr@gnu.org>
parents:
27395
diff
changeset
|
497 w32_face_attributes (f, face_id) |
27395
fe54558f20d8
(turn_on_face, turn_off_face): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
24938
diff
changeset
|
498 struct frame *f; |
fe54558f20d8
(turn_on_face, turn_off_face): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
24938
diff
changeset
|
499 int face_id; |
fe54558f20d8
(turn_on_face, turn_off_face): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
24938
diff
changeset
|
500 { |
27518
ff2e0205b5a0
(turn_on_face, turn_off_face): Removed.
Jason Rumney <jasonr@gnu.org>
parents:
27395
diff
changeset
|
501 WORD char_attr; |
27395
fe54558f20d8
(turn_on_face, turn_off_face): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
24938
diff
changeset
|
502 struct face *face = FACE_FROM_ID (f, face_id); |
fe54558f20d8
(turn_on_face, turn_off_face): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
24938
diff
changeset
|
503 |
fe54558f20d8
(turn_on_face, turn_off_face): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
24938
diff
changeset
|
504 xassert (face != NULL); |
fe54558f20d8
(turn_on_face, turn_off_face): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
24938
diff
changeset
|
505 |
fe54558f20d8
(turn_on_face, turn_off_face): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
24938
diff
changeset
|
506 char_attr = char_attr_normal; |
fe54558f20d8
(turn_on_face, turn_off_face): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
24938
diff
changeset
|
507 |
86880
a7773099c258
(w32_face_attributes): Don't use color indexes that are out of range.
Jason Rumney <jasonr@gnu.org>
parents:
86876
diff
changeset
|
508 /* Reverse the default color if requested. If background and |
a7773099c258
(w32_face_attributes): Don't use color indexes that are out of range.
Jason Rumney <jasonr@gnu.org>
parents:
86876
diff
changeset
|
509 foreground are specified, then they have been reversed already. */ |
40079
e62d3694acdc
(reassert_line_highlight, change_line_highlight): Functions removed.
Miles Bader <miles@gnu.org>
parents:
39682
diff
changeset
|
510 if (face->tty_reverse_p) |
27518
ff2e0205b5a0
(turn_on_face, turn_off_face): Removed.
Jason Rumney <jasonr@gnu.org>
parents:
27395
diff
changeset
|
511 char_attr = (char_attr & 0xff00) + ((char_attr & 0x000f) << 4) |
ff2e0205b5a0
(turn_on_face, turn_off_face): Removed.
Jason Rumney <jasonr@gnu.org>
parents:
27395
diff
changeset
|
512 + ((char_attr & 0x00f0) >> 4); |
ff2e0205b5a0
(turn_on_face, turn_off_face): Removed.
Jason Rumney <jasonr@gnu.org>
parents:
27395
diff
changeset
|
513 |
86880
a7773099c258
(w32_face_attributes): Don't use color indexes that are out of range.
Jason Rumney <jasonr@gnu.org>
parents:
86876
diff
changeset
|
514 /* Before the terminal is properly initialized, all colors map to 0. |
a7773099c258
(w32_face_attributes): Don't use color indexes that are out of range.
Jason Rumney <jasonr@gnu.org>
parents:
86876
diff
changeset
|
515 Don't try to resolve them. */ |
a7773099c258
(w32_face_attributes): Don't use color indexes that are out of range.
Jason Rumney <jasonr@gnu.org>
parents:
86876
diff
changeset
|
516 if (NILP (Vtty_defined_color_alist)) |
a7773099c258
(w32_face_attributes): Don't use color indexes that are out of range.
Jason Rumney <jasonr@gnu.org>
parents:
86876
diff
changeset
|
517 return char_attr; |
a7773099c258
(w32_face_attributes): Don't use color indexes that are out of range.
Jason Rumney <jasonr@gnu.org>
parents:
86876
diff
changeset
|
518 |
86907
0f135bf21932
(w32_face_attributes): Comment previous change.
Jason Rumney <jasonr@gnu.org>
parents:
86880
diff
changeset
|
519 /* Colors should be in the range 0...15 unless they are one of |
0f135bf21932
(w32_face_attributes): Comment previous change.
Jason Rumney <jasonr@gnu.org>
parents:
86880
diff
changeset
|
520 FACE_TTY_DEFAULT_COLOR, FACE_TTY_DEFAULT_FG_COLOR or |
0f135bf21932
(w32_face_attributes): Comment previous change.
Jason Rumney <jasonr@gnu.org>
parents:
86880
diff
changeset
|
521 FACE_TTY_DEFAULT_BG_COLOR. Other out of range colors are |
0f135bf21932
(w32_face_attributes): Comment previous change.
Jason Rumney <jasonr@gnu.org>
parents:
86880
diff
changeset
|
522 invalid, so it is better to use the default color if they ever |
0f135bf21932
(w32_face_attributes): Comment previous change.
Jason Rumney <jasonr@gnu.org>
parents:
86880
diff
changeset
|
523 get through to here. */ |
0f135bf21932
(w32_face_attributes): Comment previous change.
Jason Rumney <jasonr@gnu.org>
parents:
86880
diff
changeset
|
524 if (face->foreground >= 0 && face->foreground < 16) |
86880
a7773099c258
(w32_face_attributes): Don't use color indexes that are out of range.
Jason Rumney <jasonr@gnu.org>
parents:
86876
diff
changeset
|
525 char_attr = (char_attr & 0xfff0) + face->foreground; |
a7773099c258
(w32_face_attributes): Don't use color indexes that are out of range.
Jason Rumney <jasonr@gnu.org>
parents:
86876
diff
changeset
|
526 |
86907
0f135bf21932
(w32_face_attributes): Comment previous change.
Jason Rumney <jasonr@gnu.org>
parents:
86880
diff
changeset
|
527 if (face->background >= 0 && face->background < 16) |
86880
a7773099c258
(w32_face_attributes): Don't use color indexes that are out of range.
Jason Rumney <jasonr@gnu.org>
parents:
86876
diff
changeset
|
528 char_attr = (char_attr & 0xff0f) + (face->background << 4); |
a7773099c258
(w32_face_attributes): Don't use color indexes that are out of range.
Jason Rumney <jasonr@gnu.org>
parents:
86876
diff
changeset
|
529 |
27518
ff2e0205b5a0
(turn_on_face, turn_off_face): Removed.
Jason Rumney <jasonr@gnu.org>
parents:
27395
diff
changeset
|
530 return char_attr; |
27395
fe54558f20d8
(turn_on_face, turn_off_face): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
24938
diff
changeset
|
531 } |
fe54558f20d8
(turn_on_face, turn_off_face): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
24938
diff
changeset
|
532 |
fe54558f20d8
(turn_on_face, turn_off_face): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
24938
diff
changeset
|
533 |
fe54558f20d8
(turn_on_face, turn_off_face): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
24938
diff
changeset
|
534 |
27518
ff2e0205b5a0
(turn_on_face, turn_off_face): Removed.
Jason Rumney <jasonr@gnu.org>
parents:
27395
diff
changeset
|
535 /* Given a color index, return its standard name. */ |
ff2e0205b5a0
(turn_on_face, turn_off_face): Removed.
Jason Rumney <jasonr@gnu.org>
parents:
27395
diff
changeset
|
536 Lisp_Object |
ff2e0205b5a0
(turn_on_face, turn_off_face): Removed.
Jason Rumney <jasonr@gnu.org>
parents:
27395
diff
changeset
|
537 vga_stdcolor_name (int idx) |
27395
fe54558f20d8
(turn_on_face, turn_off_face): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
24938
diff
changeset
|
538 { |
27518
ff2e0205b5a0
(turn_on_face, turn_off_face): Removed.
Jason Rumney <jasonr@gnu.org>
parents:
27395
diff
changeset
|
539 /* Standard VGA colors, in the order of their standard numbering |
ff2e0205b5a0
(turn_on_face, turn_off_face): Removed.
Jason Rumney <jasonr@gnu.org>
parents:
27395
diff
changeset
|
540 in the default VGA palette. */ |
ff2e0205b5a0
(turn_on_face, turn_off_face): Removed.
Jason Rumney <jasonr@gnu.org>
parents:
27395
diff
changeset
|
541 static char *vga_colors[16] = { |
ff2e0205b5a0
(turn_on_face, turn_off_face): Removed.
Jason Rumney <jasonr@gnu.org>
parents:
27395
diff
changeset
|
542 "black", "blue", "green", "cyan", "red", "magenta", "brown", |
ff2e0205b5a0
(turn_on_face, turn_off_face): Removed.
Jason Rumney <jasonr@gnu.org>
parents:
27395
diff
changeset
|
543 "lightgray", "darkgray", "lightblue", "lightgreen", "lightcyan", |
ff2e0205b5a0
(turn_on_face, turn_off_face): Removed.
Jason Rumney <jasonr@gnu.org>
parents:
27395
diff
changeset
|
544 "lightred", "lightmagenta", "yellow", "white" |
ff2e0205b5a0
(turn_on_face, turn_off_face): Removed.
Jason Rumney <jasonr@gnu.org>
parents:
27395
diff
changeset
|
545 }; |
ff2e0205b5a0
(turn_on_face, turn_off_face): Removed.
Jason Rumney <jasonr@gnu.org>
parents:
27395
diff
changeset
|
546 |
ff2e0205b5a0
(turn_on_face, turn_off_face): Removed.
Jason Rumney <jasonr@gnu.org>
parents:
27395
diff
changeset
|
547 extern Lisp_Object Qunspecified; |
ff2e0205b5a0
(turn_on_face, turn_off_face): Removed.
Jason Rumney <jasonr@gnu.org>
parents:
27395
diff
changeset
|
548 |
ff2e0205b5a0
(turn_on_face, turn_off_face): Removed.
Jason Rumney <jasonr@gnu.org>
parents:
27395
diff
changeset
|
549 if (idx >= 0 && idx < sizeof (vga_colors) / sizeof (vga_colors[0])) |
ff2e0205b5a0
(turn_on_face, turn_off_face): Removed.
Jason Rumney <jasonr@gnu.org>
parents:
27395
diff
changeset
|
550 return build_string (vga_colors[idx]); |
ff2e0205b5a0
(turn_on_face, turn_off_face): Removed.
Jason Rumney <jasonr@gnu.org>
parents:
27395
diff
changeset
|
551 else |
ff2e0205b5a0
(turn_on_face, turn_off_face): Removed.
Jason Rumney <jasonr@gnu.org>
parents:
27395
diff
changeset
|
552 return Qunspecified; /* meaning the default */ |
27395
fe54558f20d8
(turn_on_face, turn_off_face): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
24938
diff
changeset
|
553 } |
27518
ff2e0205b5a0
(turn_on_face, turn_off_face): Removed.
Jason Rumney <jasonr@gnu.org>
parents:
27395
diff
changeset
|
554 |
9907 | 555 typedef int (*term_hook) (); |
556 | |
557 void | |
83882
c81c5bd99c21
(one_and_only_w32cons): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
83648
diff
changeset
|
558 initialize_w32_display (struct terminal *term) |
9907 | 559 { |
560 CONSOLE_SCREEN_BUFFER_INFO info; | |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
40962
diff
changeset
|
561 |
83892
fc43b930f905
(initialize_w32_display): Zero unused hooks.
Jason Rumney <jasonr@gnu.org>
parents:
83882
diff
changeset
|
562 term->rif = 0; /* No window based redisplay on the console. */ |
83573
b77b83741308
(w32con_move_cursor, w32con_clear_to_end):
Jason Rumney <jasonr@gnu.org>
parents:
75227
diff
changeset
|
563 term->cursor_to_hook = w32con_move_cursor; |
b77b83741308
(w32con_move_cursor, w32con_clear_to_end):
Jason Rumney <jasonr@gnu.org>
parents:
75227
diff
changeset
|
564 term->raw_cursor_to_hook = w32con_move_cursor; |
b77b83741308
(w32con_move_cursor, w32con_clear_to_end):
Jason Rumney <jasonr@gnu.org>
parents:
75227
diff
changeset
|
565 term->clear_to_end_hook = w32con_clear_to_end; |
b77b83741308
(w32con_move_cursor, w32con_clear_to_end):
Jason Rumney <jasonr@gnu.org>
parents:
75227
diff
changeset
|
566 term->clear_frame_hook = w32con_clear_frame; |
b77b83741308
(w32con_move_cursor, w32con_clear_to_end):
Jason Rumney <jasonr@gnu.org>
parents:
75227
diff
changeset
|
567 term->clear_end_of_line_hook = w32con_clear_end_of_line; |
b77b83741308
(w32con_move_cursor, w32con_clear_to_end):
Jason Rumney <jasonr@gnu.org>
parents:
75227
diff
changeset
|
568 term->ins_del_lines_hook = w32con_ins_del_lines; |
b77b83741308
(w32con_move_cursor, w32con_clear_to_end):
Jason Rumney <jasonr@gnu.org>
parents:
75227
diff
changeset
|
569 term->insert_glyphs_hook = w32con_insert_glyphs; |
b77b83741308
(w32con_move_cursor, w32con_clear_to_end):
Jason Rumney <jasonr@gnu.org>
parents:
75227
diff
changeset
|
570 term->write_glyphs_hook = w32con_write_glyphs; |
b77b83741308
(w32con_move_cursor, w32con_clear_to_end):
Jason Rumney <jasonr@gnu.org>
parents:
75227
diff
changeset
|
571 term->delete_glyphs_hook = w32con_delete_glyphs; |
b77b83741308
(w32con_move_cursor, w32con_clear_to_end):
Jason Rumney <jasonr@gnu.org>
parents:
75227
diff
changeset
|
572 term->ring_bell_hook = w32_sys_ring_bell; |
b77b83741308
(w32con_move_cursor, w32con_clear_to_end):
Jason Rumney <jasonr@gnu.org>
parents:
75227
diff
changeset
|
573 term->reset_terminal_modes_hook = w32con_reset_terminal_modes; |
b77b83741308
(w32con_move_cursor, w32con_clear_to_end):
Jason Rumney <jasonr@gnu.org>
parents:
75227
diff
changeset
|
574 term->set_terminal_modes_hook = w32con_set_terminal_modes; |
b77b83741308
(w32con_move_cursor, w32con_clear_to_end):
Jason Rumney <jasonr@gnu.org>
parents:
75227
diff
changeset
|
575 term->set_terminal_window_hook = w32con_set_terminal_window; |
b77b83741308
(w32con_move_cursor, w32con_clear_to_end):
Jason Rumney <jasonr@gnu.org>
parents:
75227
diff
changeset
|
576 term->update_begin_hook = w32con_update_begin; |
b77b83741308
(w32con_move_cursor, w32con_clear_to_end):
Jason Rumney <jasonr@gnu.org>
parents:
75227
diff
changeset
|
577 term->update_end_hook = w32con_update_end; |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
40962
diff
changeset
|
578 |
83573
b77b83741308
(w32con_move_cursor, w32con_clear_to_end):
Jason Rumney <jasonr@gnu.org>
parents:
75227
diff
changeset
|
579 term->read_socket_hook = w32_console_read_socket; |
b77b83741308
(w32con_move_cursor, w32con_clear_to_end):
Jason Rumney <jasonr@gnu.org>
parents:
75227
diff
changeset
|
580 term->mouse_position_hook = w32_console_mouse_position; |
19706
e21b63afe61f
(DebPrint, reset_kbd, unset_kbd, take_console): Delete functions.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18507
diff
changeset
|
581 |
83892
fc43b930f905
(initialize_w32_display): Zero unused hooks.
Jason Rumney <jasonr@gnu.org>
parents:
83882
diff
changeset
|
582 /* The following are not used on the console. */ |
fc43b930f905
(initialize_w32_display): Zero unused hooks.
Jason Rumney <jasonr@gnu.org>
parents:
83882
diff
changeset
|
583 term->frame_rehighlight_hook = 0; |
fc43b930f905
(initialize_w32_display): Zero unused hooks.
Jason Rumney <jasonr@gnu.org>
parents:
83882
diff
changeset
|
584 term->frame_raise_lower_hook = 0; |
fc43b930f905
(initialize_w32_display): Zero unused hooks.
Jason Rumney <jasonr@gnu.org>
parents:
83882
diff
changeset
|
585 term->set_vertical_scroll_bar_hook = 0; |
fc43b930f905
(initialize_w32_display): Zero unused hooks.
Jason Rumney <jasonr@gnu.org>
parents:
83882
diff
changeset
|
586 term->condemn_scroll_bars_hook = 0; |
fc43b930f905
(initialize_w32_display): Zero unused hooks.
Jason Rumney <jasonr@gnu.org>
parents:
83882
diff
changeset
|
587 term->redeem_scroll_bar_hook = 0; |
fc43b930f905
(initialize_w32_display): Zero unused hooks.
Jason Rumney <jasonr@gnu.org>
parents:
83882
diff
changeset
|
588 term->judge_scroll_bars_hook = 0; |
fc43b930f905
(initialize_w32_display): Zero unused hooks.
Jason Rumney <jasonr@gnu.org>
parents:
83882
diff
changeset
|
589 term->frame_up_to_date_hook = 0; |
19706
e21b63afe61f
(DebPrint, reset_kbd, unset_kbd, take_console): Delete functions.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18507
diff
changeset
|
590 |
22540
0e7c65caf1cb
(initialize_w32_display): Call init_crit to initialize
Andrew Innes <andrewi@gnu.org>
parents:
21828
diff
changeset
|
591 /* Initialize interrupt_handle. */ |
0e7c65caf1cb
(initialize_w32_display): Call init_crit to initialize
Andrew Innes <andrewi@gnu.org>
parents:
21828
diff
changeset
|
592 init_crit (); |
0e7c65caf1cb
(initialize_w32_display): Call init_crit to initialize
Andrew Innes <andrewi@gnu.org>
parents:
21828
diff
changeset
|
593 |
19706
e21b63afe61f
(DebPrint, reset_kbd, unset_kbd, take_console): Delete functions.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18507
diff
changeset
|
594 /* Remember original console settings. */ |
e21b63afe61f
(DebPrint, reset_kbd, unset_kbd, take_console): Delete functions.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18507
diff
changeset
|
595 keyboard_handle = GetStdHandle (STD_INPUT_HANDLE); |
e21b63afe61f
(DebPrint, reset_kbd, unset_kbd, take_console): Delete functions.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18507
diff
changeset
|
596 GetConsoleMode (keyboard_handle, &prev_console_mode); |
e21b63afe61f
(DebPrint, reset_kbd, unset_kbd, take_console): Delete functions.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18507
diff
changeset
|
597 |
9907 | 598 prev_screen = GetStdHandle (STD_OUTPUT_HANDLE); |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
40962
diff
changeset
|
599 |
19706
e21b63afe61f
(DebPrint, reset_kbd, unset_kbd, take_console): Delete functions.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18507
diff
changeset
|
600 #ifdef USE_SEPARATE_SCREEN |
e21b63afe61f
(DebPrint, reset_kbd, unset_kbd, take_console): Delete functions.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18507
diff
changeset
|
601 cur_screen = CreateConsoleScreenBuffer (GENERIC_READ | GENERIC_WRITE, |
e21b63afe61f
(DebPrint, reset_kbd, unset_kbd, take_console): Delete functions.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18507
diff
changeset
|
602 0, NULL, |
e21b63afe61f
(DebPrint, reset_kbd, unset_kbd, take_console): Delete functions.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18507
diff
changeset
|
603 CONSOLE_TEXTMODE_BUFFER, |
e21b63afe61f
(DebPrint, reset_kbd, unset_kbd, take_console): Delete functions.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18507
diff
changeset
|
604 NULL); |
e21b63afe61f
(DebPrint, reset_kbd, unset_kbd, take_console): Delete functions.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18507
diff
changeset
|
605 |
e21b63afe61f
(DebPrint, reset_kbd, unset_kbd, take_console): Delete functions.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18507
diff
changeset
|
606 if (cur_screen == INVALID_HANDLE_VALUE) |
e21b63afe61f
(DebPrint, reset_kbd, unset_kbd, take_console): Delete functions.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18507
diff
changeset
|
607 { |
e21b63afe61f
(DebPrint, reset_kbd, unset_kbd, take_console): Delete functions.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18507
diff
changeset
|
608 printf ("CreateConsoleScreenBuffer failed in ResetTerm\n"); |
e21b63afe61f
(DebPrint, reset_kbd, unset_kbd, take_console): Delete functions.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18507
diff
changeset
|
609 printf ("LastError = 0x%lx\n", GetLastError ()); |
e21b63afe61f
(DebPrint, reset_kbd, unset_kbd, take_console): Delete functions.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18507
diff
changeset
|
610 fflush (stdout); |
e21b63afe61f
(DebPrint, reset_kbd, unset_kbd, take_console): Delete functions.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18507
diff
changeset
|
611 exit (0); |
e21b63afe61f
(DebPrint, reset_kbd, unset_kbd, take_console): Delete functions.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18507
diff
changeset
|
612 } |
e21b63afe61f
(DebPrint, reset_kbd, unset_kbd, take_console): Delete functions.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18507
diff
changeset
|
613 #else |
e21b63afe61f
(DebPrint, reset_kbd, unset_kbd, take_console): Delete functions.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18507
diff
changeset
|
614 cur_screen = prev_screen; |
e21b63afe61f
(DebPrint, reset_kbd, unset_kbd, take_console): Delete functions.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18507
diff
changeset
|
615 GetConsoleCursorInfo (prev_screen, &prev_console_cursor); |
e21b63afe61f
(DebPrint, reset_kbd, unset_kbd, take_console): Delete functions.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18507
diff
changeset
|
616 #endif |
e21b63afe61f
(DebPrint, reset_kbd, unset_kbd, take_console): Delete functions.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18507
diff
changeset
|
617 |
24938
a4c871b96d4b
(w32_use_full_screen_buffer): New variable.
Andrew Innes <andrewi@gnu.org>
parents:
24755
diff
changeset
|
618 /* Respect setting of LINES and COLUMNS environment variables. */ |
a4c871b96d4b
(w32_use_full_screen_buffer): New variable.
Andrew Innes <andrewi@gnu.org>
parents:
24755
diff
changeset
|
619 { |
a4c871b96d4b
(w32_use_full_screen_buffer): New variable.
Andrew Innes <andrewi@gnu.org>
parents:
24755
diff
changeset
|
620 char * lines = getenv("LINES"); |
a4c871b96d4b
(w32_use_full_screen_buffer): New variable.
Andrew Innes <andrewi@gnu.org>
parents:
24755
diff
changeset
|
621 char * columns = getenv("COLUMNS"); |
a4c871b96d4b
(w32_use_full_screen_buffer): New variable.
Andrew Innes <andrewi@gnu.org>
parents:
24755
diff
changeset
|
622 |
a4c871b96d4b
(w32_use_full_screen_buffer): New variable.
Andrew Innes <andrewi@gnu.org>
parents:
24755
diff
changeset
|
623 if (lines != NULL && columns != NULL) |
a4c871b96d4b
(w32_use_full_screen_buffer): New variable.
Andrew Innes <andrewi@gnu.org>
parents:
24755
diff
changeset
|
624 { |
a4c871b96d4b
(w32_use_full_screen_buffer): New variable.
Andrew Innes <andrewi@gnu.org>
parents:
24755
diff
changeset
|
625 SMALL_RECT new_win_dims; |
a4c871b96d4b
(w32_use_full_screen_buffer): New variable.
Andrew Innes <andrewi@gnu.org>
parents:
24755
diff
changeset
|
626 COORD new_size; |
a4c871b96d4b
(w32_use_full_screen_buffer): New variable.
Andrew Innes <andrewi@gnu.org>
parents:
24755
diff
changeset
|
627 |
a4c871b96d4b
(w32_use_full_screen_buffer): New variable.
Andrew Innes <andrewi@gnu.org>
parents:
24755
diff
changeset
|
628 new_size.X = atoi (columns); |
a4c871b96d4b
(w32_use_full_screen_buffer): New variable.
Andrew Innes <andrewi@gnu.org>
parents:
24755
diff
changeset
|
629 new_size.Y = atoi (lines); |
a4c871b96d4b
(w32_use_full_screen_buffer): New variable.
Andrew Innes <andrewi@gnu.org>
parents:
24755
diff
changeset
|
630 |
a4c871b96d4b
(w32_use_full_screen_buffer): New variable.
Andrew Innes <andrewi@gnu.org>
parents:
24755
diff
changeset
|
631 GetConsoleScreenBufferInfo (cur_screen, &info); |
a4c871b96d4b
(w32_use_full_screen_buffer): New variable.
Andrew Innes <andrewi@gnu.org>
parents:
24755
diff
changeset
|
632 |
a4c871b96d4b
(w32_use_full_screen_buffer): New variable.
Andrew Innes <andrewi@gnu.org>
parents:
24755
diff
changeset
|
633 /* Shrink the window first, so the buffer dimensions can be |
a4c871b96d4b
(w32_use_full_screen_buffer): New variable.
Andrew Innes <andrewi@gnu.org>
parents:
24755
diff
changeset
|
634 reduced if necessary. */ |
a4c871b96d4b
(w32_use_full_screen_buffer): New variable.
Andrew Innes <andrewi@gnu.org>
parents:
24755
diff
changeset
|
635 new_win_dims.Top = 0; |
a4c871b96d4b
(w32_use_full_screen_buffer): New variable.
Andrew Innes <andrewi@gnu.org>
parents:
24755
diff
changeset
|
636 new_win_dims.Left = 0; |
a4c871b96d4b
(w32_use_full_screen_buffer): New variable.
Andrew Innes <andrewi@gnu.org>
parents:
24755
diff
changeset
|
637 new_win_dims.Bottom = min (new_size.Y, info.dwSize.Y) - 1; |
a4c871b96d4b
(w32_use_full_screen_buffer): New variable.
Andrew Innes <andrewi@gnu.org>
parents:
24755
diff
changeset
|
638 new_win_dims.Right = min (new_size.X, info.dwSize.X) - 1; |
a4c871b96d4b
(w32_use_full_screen_buffer): New variable.
Andrew Innes <andrewi@gnu.org>
parents:
24755
diff
changeset
|
639 SetConsoleWindowInfo (cur_screen, TRUE, &new_win_dims); |
a4c871b96d4b
(w32_use_full_screen_buffer): New variable.
Andrew Innes <andrewi@gnu.org>
parents:
24755
diff
changeset
|
640 |
a4c871b96d4b
(w32_use_full_screen_buffer): New variable.
Andrew Innes <andrewi@gnu.org>
parents:
24755
diff
changeset
|
641 SetConsoleScreenBufferSize (cur_screen, new_size); |
a4c871b96d4b
(w32_use_full_screen_buffer): New variable.
Andrew Innes <andrewi@gnu.org>
parents:
24755
diff
changeset
|
642 |
a4c871b96d4b
(w32_use_full_screen_buffer): New variable.
Andrew Innes <andrewi@gnu.org>
parents:
24755
diff
changeset
|
643 /* Set the window size to match the buffer dimension. */ |
a4c871b96d4b
(w32_use_full_screen_buffer): New variable.
Andrew Innes <andrewi@gnu.org>
parents:
24755
diff
changeset
|
644 new_win_dims.Top = 0; |
a4c871b96d4b
(w32_use_full_screen_buffer): New variable.
Andrew Innes <andrewi@gnu.org>
parents:
24755
diff
changeset
|
645 new_win_dims.Left = 0; |
a4c871b96d4b
(w32_use_full_screen_buffer): New variable.
Andrew Innes <andrewi@gnu.org>
parents:
24755
diff
changeset
|
646 new_win_dims.Bottom = new_size.Y - 1; |
a4c871b96d4b
(w32_use_full_screen_buffer): New variable.
Andrew Innes <andrewi@gnu.org>
parents:
24755
diff
changeset
|
647 new_win_dims.Right = new_size.X - 1; |
a4c871b96d4b
(w32_use_full_screen_buffer): New variable.
Andrew Innes <andrewi@gnu.org>
parents:
24755
diff
changeset
|
648 SetConsoleWindowInfo (cur_screen, TRUE, &new_win_dims); |
a4c871b96d4b
(w32_use_full_screen_buffer): New variable.
Andrew Innes <andrewi@gnu.org>
parents:
24755
diff
changeset
|
649 } |
a4c871b96d4b
(w32_use_full_screen_buffer): New variable.
Andrew Innes <andrewi@gnu.org>
parents:
24755
diff
changeset
|
650 } |
a4c871b96d4b
(w32_use_full_screen_buffer): New variable.
Andrew Innes <andrewi@gnu.org>
parents:
24755
diff
changeset
|
651 |
9907 | 652 GetConsoleScreenBufferInfo (cur_screen, &info); |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
40962
diff
changeset
|
653 |
27518
ff2e0205b5a0
(turn_on_face, turn_off_face): Removed.
Jason Rumney <jasonr@gnu.org>
parents:
27395
diff
changeset
|
654 char_attr_normal = info.wAttributes; |
23572
1fa5f9f5c92e
(initialize_w32_display): Use buffer coords
Geoff Voelker <voelker@cs.washington.edu>
parents:
23563
diff
changeset
|
655 |
64111
a948ecc89102
(initialize_w32_display): Detect when the console
Jason Rumney <jasonr@gnu.org>
parents:
64084
diff
changeset
|
656 /* Determine if the info returned by GetConsoleScreenBufferInfo |
a948ecc89102
(initialize_w32_display): Detect when the console
Jason Rumney <jasonr@gnu.org>
parents:
64084
diff
changeset
|
657 is realistic. Old MS Telnet servers used to only fill out |
a948ecc89102
(initialize_w32_display): Detect when the console
Jason Rumney <jasonr@gnu.org>
parents:
64084
diff
changeset
|
658 the dwSize portion, even modern one fill the whole struct with |
a948ecc89102
(initialize_w32_display): Detect when the console
Jason Rumney <jasonr@gnu.org>
parents:
64084
diff
changeset
|
659 garbage when using non-MS telnet clients. */ |
a948ecc89102
(initialize_w32_display): Detect when the console
Jason Rumney <jasonr@gnu.org>
parents:
64084
diff
changeset
|
660 if ((w32_use_full_screen_buffer |
a948ecc89102
(initialize_w32_display): Detect when the console
Jason Rumney <jasonr@gnu.org>
parents:
64084
diff
changeset
|
661 && (info.dwSize.Y < 20 || info.dwSize.Y > 100 |
a948ecc89102
(initialize_w32_display): Detect when the console
Jason Rumney <jasonr@gnu.org>
parents:
64084
diff
changeset
|
662 || info.dwSize.X < 40 || info.dwSize.X > 200)) |
a948ecc89102
(initialize_w32_display): Detect when the console
Jason Rumney <jasonr@gnu.org>
parents:
64084
diff
changeset
|
663 || (!w32_use_full_screen_buffer |
a948ecc89102
(initialize_w32_display): Detect when the console
Jason Rumney <jasonr@gnu.org>
parents:
64084
diff
changeset
|
664 && (info.srWindow.Bottom - info.srWindow.Top < 20 |
a948ecc89102
(initialize_w32_display): Detect when the console
Jason Rumney <jasonr@gnu.org>
parents:
64084
diff
changeset
|
665 || info.srWindow.Bottom - info.srWindow.Top > 100 |
a948ecc89102
(initialize_w32_display): Detect when the console
Jason Rumney <jasonr@gnu.org>
parents:
64084
diff
changeset
|
666 || info.srWindow.Right - info.srWindow.Left < 40 |
a948ecc89102
(initialize_w32_display): Detect when the console
Jason Rumney <jasonr@gnu.org>
parents:
64084
diff
changeset
|
667 || info.srWindow.Right - info.srWindow.Left > 100))) |
a948ecc89102
(initialize_w32_display): Detect when the console
Jason Rumney <jasonr@gnu.org>
parents:
64084
diff
changeset
|
668 { |
a948ecc89102
(initialize_w32_display): Detect when the console
Jason Rumney <jasonr@gnu.org>
parents:
64084
diff
changeset
|
669 FRAME_LINES (SELECTED_FRAME ()) = 25; |
a948ecc89102
(initialize_w32_display): Detect when the console
Jason Rumney <jasonr@gnu.org>
parents:
64084
diff
changeset
|
670 SET_FRAME_COLS (SELECTED_FRAME (), 80); |
a948ecc89102
(initialize_w32_display): Detect when the console
Jason Rumney <jasonr@gnu.org>
parents:
64084
diff
changeset
|
671 } |
a948ecc89102
(initialize_w32_display): Detect when the console
Jason Rumney <jasonr@gnu.org>
parents:
64084
diff
changeset
|
672 |
a948ecc89102
(initialize_w32_display): Detect when the console
Jason Rumney <jasonr@gnu.org>
parents:
64084
diff
changeset
|
673 else if (w32_use_full_screen_buffer) |
24938
a4c871b96d4b
(w32_use_full_screen_buffer): New variable.
Andrew Innes <andrewi@gnu.org>
parents:
24755
diff
changeset
|
674 { |
51206
22a5614b558f
Make (few) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50247
diff
changeset
|
675 FRAME_LINES (SELECTED_FRAME ()) = info.dwSize.Y; /* lines per page */ |
22a5614b558f
Make (few) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50247
diff
changeset
|
676 SET_FRAME_COLS (SELECTED_FRAME (), info.dwSize.X); /* characters per line */ |
24938
a4c871b96d4b
(w32_use_full_screen_buffer): New variable.
Andrew Innes <andrewi@gnu.org>
parents:
24755
diff
changeset
|
677 } |
a4c871b96d4b
(w32_use_full_screen_buffer): New variable.
Andrew Innes <andrewi@gnu.org>
parents:
24755
diff
changeset
|
678 else |
a4c871b96d4b
(w32_use_full_screen_buffer): New variable.
Andrew Innes <andrewi@gnu.org>
parents:
24755
diff
changeset
|
679 { |
a4c871b96d4b
(w32_use_full_screen_buffer): New variable.
Andrew Innes <andrewi@gnu.org>
parents:
24755
diff
changeset
|
680 /* Lines per page. Use buffer coords instead of buffer size. */ |
51206
22a5614b558f
Make (few) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50247
diff
changeset
|
681 FRAME_LINES (SELECTED_FRAME ()) = 1 + info.srWindow.Bottom - |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
40962
diff
changeset
|
682 info.srWindow.Top; |
24938
a4c871b96d4b
(w32_use_full_screen_buffer): New variable.
Andrew Innes <andrewi@gnu.org>
parents:
24755
diff
changeset
|
683 /* Characters per line. Use buffer coords instead of buffer size. */ |
51206
22a5614b558f
Make (few) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50247
diff
changeset
|
684 SET_FRAME_COLS (SELECTED_FRAME (), 1 + info.srWindow.Right - |
24938
a4c871b96d4b
(w32_use_full_screen_buffer): New variable.
Andrew Innes <andrewi@gnu.org>
parents:
24755
diff
changeset
|
685 info.srWindow.Left); |
a4c871b96d4b
(w32_use_full_screen_buffer): New variable.
Andrew Innes <andrewi@gnu.org>
parents:
24755
diff
changeset
|
686 } |
27892
1857b9695885
Only disable window system features for dispextern.h
Jason Rumney <jasonr@gnu.org>
parents:
27518
diff
changeset
|
687 |
1857b9695885
Only disable window system features for dispextern.h
Jason Rumney <jasonr@gnu.org>
parents:
27518
diff
changeset
|
688 /* Setup w32_display_info structure for this frame. */ |
1857b9695885
Only disable window system features for dispextern.h
Jason Rumney <jasonr@gnu.org>
parents:
27518
diff
changeset
|
689 |
1857b9695885
Only disable window system features for dispextern.h
Jason Rumney <jasonr@gnu.org>
parents:
27518
diff
changeset
|
690 w32_initialize_display_info (build_string ("Console")); |
1857b9695885
Only disable window system features for dispextern.h
Jason Rumney <jasonr@gnu.org>
parents:
27518
diff
changeset
|
691 |
9907 | 692 } |
693 | |
83573
b77b83741308
(w32con_move_cursor, w32con_clear_to_end):
Jason Rumney <jasonr@gnu.org>
parents:
75227
diff
changeset
|
694 |
9907 | 695 DEFUN ("set-screen-color", Fset_screen_color, Sset_screen_color, 2, 2, 0, |
40962
f66d09d1bb2f
Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents:
40656
diff
changeset
|
696 doc: /* Set screen colors. */) |
9907 | 697 (foreground, background) |
698 Lisp_Object foreground; | |
699 Lisp_Object background; | |
700 { | |
701 char_attr_normal = XFASTINT (foreground) + (XFASTINT (background) << 4); | |
702 | |
703 Frecenter (Qnil); | |
704 return Qt; | |
705 } | |
706 | |
707 DEFUN ("set-cursor-size", Fset_cursor_size, Sset_cursor_size, 1, 1, 0, | |
40962
f66d09d1bb2f
Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents:
40656
diff
changeset
|
708 doc: /* Set cursor size. */) |
9907 | 709 (size) |
710 Lisp_Object size; | |
711 { | |
712 CONSOLE_CURSOR_INFO cci; | |
713 cci.dwSize = XFASTINT (size); | |
714 cci.bVisible = TRUE; | |
715 (void) SetConsoleCursorInfo (cur_screen, &cci); | |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
40962
diff
changeset
|
716 |
9907 | 717 return Qt; |
718 } | |
719 | |
11389 | 720 void |
9907 | 721 syms_of_ntterm () |
722 { | |
24938
a4c871b96d4b
(w32_use_full_screen_buffer): New variable.
Andrew Innes <andrewi@gnu.org>
parents:
24755
diff
changeset
|
723 DEFVAR_BOOL ("w32-use-full-screen-buffer", |
a4c871b96d4b
(w32_use_full_screen_buffer): New variable.
Andrew Innes <andrewi@gnu.org>
parents:
24755
diff
changeset
|
724 &w32_use_full_screen_buffer, |
40962
f66d09d1bb2f
Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents:
40656
diff
changeset
|
725 doc: /* Non-nil means make terminal frames use the full screen buffer dimensions. |
71534
cb66cca12fa5
(syms_of_ntterm) <w32-use-full-screen-buffer>: Doc fix - default value changed.
John Paul Wallington <jpw@pobox.com>
parents:
68651
diff
changeset
|
726 This is desirable when running Emacs over telnet. |
40962
f66d09d1bb2f
Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents:
40656
diff
changeset
|
727 A value of nil means use the current console window dimensions; this |
f66d09d1bb2f
Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents:
40656
diff
changeset
|
728 may be preferrable when working directly at the console with a large |
f66d09d1bb2f
Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents:
40656
diff
changeset
|
729 scroll-back buffer. */); |
64111
a948ecc89102
(initialize_w32_display): Detect when the console
Jason Rumney <jasonr@gnu.org>
parents:
64084
diff
changeset
|
730 w32_use_full_screen_buffer = 0; |
24938
a4c871b96d4b
(w32_use_full_screen_buffer): New variable.
Andrew Innes <andrewi@gnu.org>
parents:
24755
diff
changeset
|
731 |
9907 | 732 defsubr (&Sset_screen_color); |
733 defsubr (&Sset_cursor_size); | |
11389 | 734 defsubr (&Sset_message_beep); |
9907 | 735 } |
52401 | 736 |
737 /* arch-tag: a390a07f-f661-42bc-aeb4-e6d8bf860337 | |
738 (do not change this comment) */ |