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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
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
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
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
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
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
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
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
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
19
94963
8971ddf55736 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 91327
diff changeset
20 /*
9907
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
21 Tim Fleehart (apollo@online.com) 1-17-92
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
22 Geoff Voelker (voelker@cs.washington.edu) 9-12-93
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
23 */
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
24
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
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
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
28 #include <stdlib.h>
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
29 #include <stdio.h>
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
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
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
32
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
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
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
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
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
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
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
42
11389
4a8836398f3e (Fset_message_beep): Defined.
Karl Heuer <kwzh@gnu.org>
parents: 9907
diff changeset
43 /* from window.c */
9907
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
44 extern Lisp_Object Frecenter ();
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
45
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
46 /* from keyboard.c */
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
47 extern int detect_input_pending ();
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
48
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
49 /* from sysdep.c */
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
50 extern int read_input_pending ();
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
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
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
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
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
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
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
85
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
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
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
90 BOOL
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
91 ctrl_c_handler (unsigned long type)
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
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
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
96 }
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
97
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
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
fa1998970a4d Use static consistently.
Jason Rumney <jasonr@gnu.org>
parents: 52401
diff changeset
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
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
102 {
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
103 cursor_coords.X = col;
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
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
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
109 }
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
110
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
111 /* Clear from cursor to end of screen. */
55644
fa1998970a4d Use static consistently.
Jason Rumney <jasonr@gnu.org>
parents: 52401
diff changeset
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
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
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
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
117 }
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
118
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
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
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
122 {
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
123 COORD dest;
31109
88608fbaf4eb (min): Define macro.
Andrew Innes <andrewi@gnu.org>
parents: 30837
diff changeset
124 int n;
88608fbaf4eb (min): Define macro.
Andrew Innes <andrewi@gnu.org>
parents: 30837
diff changeset
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
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
138 }
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
139
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
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
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
142 static BOOL ceol_initialized = FALSE;
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
143
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
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
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
147 {
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
148 if (!ceol_initialized)
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
149 {
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
150 int i;
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
151 for (i = 0; i < 256; i++)
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
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
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
154 }
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
155 ceol_initialized = TRUE;
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
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
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
158 }
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
159
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
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
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
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
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
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
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
167 COORD dest;
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
168 CHAR_INFO fill;
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
169
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
170 if (n < 0)
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
171 {
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
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
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
174 dest.Y = vpos;
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
175 }
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
176 else
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
177 {
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
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
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
180 dest.Y = vpos + n;
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
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
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
186 dest.X = 0;
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 40962
diff changeset
187
9907
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
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
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
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
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
194 region looks like abc and we scroll c to a and fill with d we get
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
195 cbd... if we scroll block c one line at a time to a, we get cdd...
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
196 Emacs expects cdd consistently... So we have to deal with that
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
197 here... (this also occurs scrolling the same way in the other
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
198 direction. */
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
199
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
200 if (n > 0)
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
201 {
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
202 if (scroll.Bottom < dest.Y)
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
203 {
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
204 for (i = scroll.Bottom; i < dest.Y; i++)
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
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
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
208 }
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
209 }
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
210 }
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
211 else
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
212 {
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
213 nb = dest.Y + (scroll.Bottom - scroll.Top) + 1;
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
214
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
215 if (nb < scroll.Top)
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 40962
diff changeset
216 {
9907
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
217 for (i = nb; i < scroll.Top; i++)
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
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
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
221 }
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
222 }
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
223 }
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 40962
diff changeset
224
9907
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
225 cursor_coords.X = 0;
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
226 cursor_coords.Y = vpos;
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
227 }
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
228
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
229 #undef LEFT
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
230 #undef RIGHT
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
231 #define LEFT 1
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
232 #define RIGHT 0
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
233
55644
fa1998970a4d Use static consistently.
Jason Rumney <jasonr@gnu.org>
parents: 52401
diff changeset
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
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
236 {
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
237 /* The idea here is to implement a horizontal scroll in one line to
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
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
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
240 COORD dest;
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
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
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
247 if (direction == LEFT)
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
248 {
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
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
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
251 }
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
252 else
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
253 {
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
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
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
256 }
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 40962
diff changeset
257
9907
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
258 dest.X = cursor_coords.X;
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
259 dest.Y = cursor_coords.Y;
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 40962
diff changeset
260
9907
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
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
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
265 }
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
266
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
267
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
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
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
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
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
273
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
274 /* Move len chars to the right starting at cursor_coords, fill with blanks */
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
275 if (start)
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
276 {
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
277 /* Print the first len characters of start, cursor_coords.X adjusted
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
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
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
281 }
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
282 else
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
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
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
285 }
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
286 }
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
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
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
294 {
31109
88608fbaf4eb (min): Define macro.
Andrew Innes <andrewi@gnu.org>
parents: 30837
diff changeset
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
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
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
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
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
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
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
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
356 }
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
357 }
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
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
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
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
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
365 come out empty... */
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
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
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
368 }
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
369
11389
4a8836398f3e (Fset_message_beep): Defined.
Karl Heuer <kwzh@gnu.org>
parents: 9907
diff changeset
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
4a8836398f3e (Fset_message_beep): Defined.
Karl Heuer <kwzh@gnu.org>
parents: 9907
diff changeset
372
9907
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
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
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
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
4a8836398f3e (Fset_message_beep): Defined.
Karl Heuer <kwzh@gnu.org>
parents: 9907
diff changeset
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
4a8836398f3e (Fset_message_beep): Defined.
Karl Heuer <kwzh@gnu.org>
parents: 9907
diff changeset
384 else
23563
18c5f58b70b5 (Fset_message_beep): Recognize 'silent.
Geoff Voelker <voelker@cs.washington.edu>
parents: 22540
diff changeset
385 MessageBeep (sound_type);
9907
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
386 }
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
387
11389
4a8836398f3e (Fset_message_beep): Defined.
Karl Heuer <kwzh@gnu.org>
parents: 9907
diff changeset
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
4a8836398f3e (Fset_message_beep): Defined.
Karl Heuer <kwzh@gnu.org>
parents: 9907
diff changeset
394 (sound)
4a8836398f3e (Fset_message_beep): Defined.
Karl Heuer <kwzh@gnu.org>
parents: 9907
diff changeset
395 Lisp_Object sound;
9907
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
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
4a8836398f3e (Fset_message_beep): Defined.
Karl Heuer <kwzh@gnu.org>
parents: 9907
diff changeset
398
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 40962
diff changeset
399 if (NILP (sound))
11389
4a8836398f3e (Fset_message_beep): Defined.
Karl Heuer <kwzh@gnu.org>
parents: 9907
diff changeset
400 sound_type = 0xFFFFFFFF;
4a8836398f3e (Fset_message_beep): Defined.
Karl Heuer <kwzh@gnu.org>
parents: 9907
diff changeset
401 else if (EQ (sound, intern ("asterisk")))
4a8836398f3e (Fset_message_beep): Defined.
Karl Heuer <kwzh@gnu.org>
parents: 9907
diff changeset
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
4a8836398f3e (Fset_message_beep): Defined.
Karl Heuer <kwzh@gnu.org>
parents: 9907
diff changeset
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
4a8836398f3e (Fset_message_beep): Defined.
Karl Heuer <kwzh@gnu.org>
parents: 9907
diff changeset
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
4a8836398f3e (Fset_message_beep): Defined.
Karl Heuer <kwzh@gnu.org>
parents: 9907
diff changeset
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
4a8836398f3e (Fset_message_beep): Defined.
Karl Heuer <kwzh@gnu.org>
parents: 9907
diff changeset
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
4a8836398f3e (Fset_message_beep): Defined.
Karl Heuer <kwzh@gnu.org>
parents: 9907
diff changeset
413 else
4a8836398f3e (Fset_message_beep): Defined.
Karl Heuer <kwzh@gnu.org>
parents: 9907
diff changeset
414 sound_type = 0xFFFFFFFF;
4a8836398f3e (Fset_message_beep): Defined.
Karl Heuer <kwzh@gnu.org>
parents: 9907
diff changeset
415
4a8836398f3e (Fset_message_beep): Defined.
Karl Heuer <kwzh@gnu.org>
parents: 9907
diff changeset
416 return sound;
9907
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
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
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
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
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
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
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
448 }
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
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
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
452 {
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
453 CONSOLE_CURSOR_INFO cci;
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
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
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
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
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
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
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
467 }
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
468
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
469 /* hmmm... perhaps these let us bracket screen changes so that we can flush
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
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
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
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
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
475 {
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
476 }
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
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
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
480 {
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
481 SetConsoleCursorPosition (cur_screen, cursor_coords);
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
482 }
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
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
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
486 {
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
487 }
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
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
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
555 typedef int (*term_hook) ();
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
556
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
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
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
559 {
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
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
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
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
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
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
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
692 }
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
693
83573
b77b83741308 (w32con_move_cursor, w32con_clear_to_end):
Jason Rumney <jasonr@gnu.org>
parents: 75227
diff changeset
694
9907
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
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
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
697 (foreground, background)
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
698 Lisp_Object foreground;
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
699 Lisp_Object background;
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
700 {
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
701 char_attr_normal = XFASTINT (foreground) + (XFASTINT (background) << 4);
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
702
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
703 Frecenter (Qnil);
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
704 return Qt;
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
705 }
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
706
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
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
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
709 (size)
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
710 Lisp_Object size;
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
711 {
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
712 CONSOLE_CURSOR_INFO cci;
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
713 cci.dwSize = XFASTINT (size);
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
714 cci.bVisible = TRUE;
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
715 (void) SetConsoleCursorInfo (cur_screen, &cci);
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 40962
diff changeset
716
9907
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
717 return Qt;
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
718 }
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
719
11389
4a8836398f3e (Fset_message_beep): Defined.
Karl Heuer <kwzh@gnu.org>
parents: 9907
diff changeset
720 void
9907
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
721 syms_of_ntterm ()
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
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
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
732 defsubr (&Sset_screen_color);
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
733 defsubr (&Sset_cursor_size);
11389
4a8836398f3e (Fset_message_beep): Defined.
Karl Heuer <kwzh@gnu.org>
parents: 9907
diff changeset
734 defsubr (&Sset_message_beep);
9907
2e5a14f7c44e Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
735 }
52401
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 51206
diff changeset
736
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 51206
diff changeset
737 /* arch-tag: a390a07f-f661-42bc-aeb4-e6d8bf860337
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 51206
diff changeset
738 (do not change this comment) */