annotate src/keyboard.h @ 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 80acedef7417
children e038c1a8307c
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
518
3a316f923456 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1 /* Declarations useful when processing input.
75227
e90d04cd455a Update copyright for years from Emacs 21 to present (mainly adding
Glenn Morris <rgm@gnu.org>
parents: 74612
diff changeset
2 Copyright (C) 1985, 1986, 1987, 1993, 2001, 2002, 2003, 2004,
79759
fc2bcd2a8aad Add 2008 to copyright years.
Glenn Morris <rgm@gnu.org>
parents: 78695
diff changeset
3 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
518
3a316f923456 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4
3a316f923456 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5 This file is part of GNU Emacs.
3a316f923456 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
6
94994
29adfc9354e7 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 87649
diff changeset
7 GNU Emacs is free software: you can redistribute it and/or modify
518
3a316f923456 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
8 it under the terms of the GNU General Public License as published by
94994
29adfc9354e7 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 87649
diff changeset
9 the Free Software Foundation, either version 3 of the License, or
29adfc9354e7 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 87649
diff changeset
10 (at your option) any later version.
518
3a316f923456 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
11
3a316f923456 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
12 GNU Emacs is distributed in the hope that it will be useful,
3a316f923456 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
3a316f923456 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
3a316f923456 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
15 GNU General Public License for more details.
3a316f923456 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
16
3a316f923456 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
17 You should have received a copy of the GNU General Public License
94994
29adfc9354e7 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 87649
diff changeset
18 along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
518
3a316f923456 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
19
72134
594b286900a3 * keyboard.h: Include systime.h. Update read_char prototype.
Chong Yidong <cyd@stupidchicken.com>
parents: 68651
diff changeset
20 #include "systime.h" /* for EMACS_TIME */
95648
946366db5ee6 Relocate platform-independent menu definitions from xmenu.c.
Chong Yidong <cyd@stupidchicken.com>
parents: 94994
diff changeset
21 #include "coding.h" /* for ENCODE_UTF_8 and ENCODE_SYSTEM */
72134
594b286900a3 * keyboard.h: Include systime.h. Update read_char prototype.
Chong Yidong <cyd@stupidchicken.com>
parents: 68651
diff changeset
22
11349
3b1d5cf74c93 (single_kboard): Renamed from kboard_locked. All refs renamed.
Richard M. Stallman <rms@gnu.org>
parents: 9141
diff changeset
23 /* Length of echobuf field in each KBOARD. */
3b1d5cf74c93 (single_kboard): Renamed from kboard_locked. All refs renamed.
Richard M. Stallman <rms@gnu.org>
parents: 9141
diff changeset
24
83431
76396de7f50a Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents: 83429
diff changeset
25 /* Each KBOARD represents one logical input stream from which Emacs
76396de7f50a Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents: 83429
diff changeset
26 gets input. If we are using ordinary terminals, it has one KBOARD
76396de7f50a Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents: 83429
diff changeset
27 object for each terminal device.
11349
3b1d5cf74c93 (single_kboard): Renamed from kboard_locked. All refs renamed.
Richard M. Stallman <rms@gnu.org>
parents: 9141
diff changeset
28 Usually each X display screen has its own KBOARD,
3b1d5cf74c93 (single_kboard): Renamed from kboard_locked. All refs renamed.
Richard M. Stallman <rms@gnu.org>
parents: 9141
diff changeset
29 but when two of them are on the same X server,
3b1d5cf74c93 (single_kboard): Renamed from kboard_locked. All refs renamed.
Richard M. Stallman <rms@gnu.org>
parents: 9141
diff changeset
30 we assume they share a keyboard and give them one KBOARD in common.
3b1d5cf74c93 (single_kboard): Renamed from kboard_locked. All refs renamed.
Richard M. Stallman <rms@gnu.org>
parents: 9141
diff changeset
31
3b1d5cf74c93 (single_kboard): Renamed from kboard_locked. All refs renamed.
Richard M. Stallman <rms@gnu.org>
parents: 9141
diff changeset
32 Some Lisp variables are per-kboard; they are stored in the KBOARD structure
3b1d5cf74c93 (single_kboard): Renamed from kboard_locked. All refs renamed.
Richard M. Stallman <rms@gnu.org>
parents: 9141
diff changeset
33 and accessed indirectly via a Lisp_Misc_Kboard_Objfwd object.
3b1d5cf74c93 (single_kboard): Renamed from kboard_locked. All refs renamed.
Richard M. Stallman <rms@gnu.org>
parents: 9141
diff changeset
34
3b1d5cf74c93 (single_kboard): Renamed from kboard_locked. All refs renamed.
Richard M. Stallman <rms@gnu.org>
parents: 9141
diff changeset
35 So that definition of keyboard macros, and reading of prefix arguments,
3b1d5cf74c93 (single_kboard): Renamed from kboard_locked. All refs renamed.
Richard M. Stallman <rms@gnu.org>
parents: 9141
diff changeset
36 can happen in parallel on various KBOARDs at once,
3b1d5cf74c93 (single_kboard): Renamed from kboard_locked. All refs renamed.
Richard M. Stallman <rms@gnu.org>
parents: 9141
diff changeset
37 the state information for those activities is stored in the KBOARD.
3b1d5cf74c93 (single_kboard): Renamed from kboard_locked. All refs renamed.
Richard M. Stallman <rms@gnu.org>
parents: 9141
diff changeset
38
3b1d5cf74c93 (single_kboard): Renamed from kboard_locked. All refs renamed.
Richard M. Stallman <rms@gnu.org>
parents: 9141
diff changeset
39 Emacs has two states for reading input:
3b1d5cf74c93 (single_kboard): Renamed from kboard_locked. All refs renamed.
Richard M. Stallman <rms@gnu.org>
parents: 9141
diff changeset
40
3b1d5cf74c93 (single_kboard): Renamed from kboard_locked. All refs renamed.
Richard M. Stallman <rms@gnu.org>
parents: 9141
diff changeset
41 ** Any kboard. Emacs can accept input from any KBOARD,
3b1d5cf74c93 (single_kboard): Renamed from kboard_locked. All refs renamed.
Richard M. Stallman <rms@gnu.org>
parents: 9141
diff changeset
42 and as soon as any of them provides a complete command, Emacs can run it.
3b1d5cf74c93 (single_kboard): Renamed from kboard_locked. All refs renamed.
Richard M. Stallman <rms@gnu.org>
parents: 9141
diff changeset
43
3b1d5cf74c93 (single_kboard): Renamed from kboard_locked. All refs renamed.
Richard M. Stallman <rms@gnu.org>
parents: 9141
diff changeset
44 ** Single kboard. Then Emacs is running a command for one KBOARD
3b1d5cf74c93 (single_kboard): Renamed from kboard_locked. All refs renamed.
Richard M. Stallman <rms@gnu.org>
parents: 9141
diff changeset
45 and can only read input from that KBOARD.
3b1d5cf74c93 (single_kboard): Renamed from kboard_locked. All refs renamed.
Richard M. Stallman <rms@gnu.org>
parents: 9141
diff changeset
46
3b1d5cf74c93 (single_kboard): Renamed from kboard_locked. All refs renamed.
Richard M. Stallman <rms@gnu.org>
parents: 9141
diff changeset
47 All input, from all KBOARDs, goes together in a single event queue
3b1d5cf74c93 (single_kboard): Renamed from kboard_locked. All refs renamed.
Richard M. Stallman <rms@gnu.org>
parents: 9141
diff changeset
48 at interrupt level. read_char sees the events sequentially,
3b1d5cf74c93 (single_kboard): Renamed from kboard_locked. All refs renamed.
Richard M. Stallman <rms@gnu.org>
parents: 9141
diff changeset
49 but deals with them in accord with the current input state.
3b1d5cf74c93 (single_kboard): Renamed from kboard_locked. All refs renamed.
Richard M. Stallman <rms@gnu.org>
parents: 9141
diff changeset
50
3b1d5cf74c93 (single_kboard): Renamed from kboard_locked. All refs renamed.
Richard M. Stallman <rms@gnu.org>
parents: 9141
diff changeset
51 In the any-kboard state, read_key_sequence processes input from any KBOARD
3b1d5cf74c93 (single_kboard): Renamed from kboard_locked. All refs renamed.
Richard M. Stallman <rms@gnu.org>
parents: 9141
diff changeset
52 immediately. When a new event comes in from a particular KBOARD,
3b1d5cf74c93 (single_kboard): Renamed from kboard_locked. All refs renamed.
Richard M. Stallman <rms@gnu.org>
parents: 9141
diff changeset
53 read_key_sequence switches to that KBOARD. As a result,
3b1d5cf74c93 (single_kboard): Renamed from kboard_locked. All refs renamed.
Richard M. Stallman <rms@gnu.org>
parents: 9141
diff changeset
54 as soon as a complete key arrives from some KBOARD or other,
3b1d5cf74c93 (single_kboard): Renamed from kboard_locked. All refs renamed.
Richard M. Stallman <rms@gnu.org>
parents: 9141
diff changeset
55 Emacs starts executing that key's binding. It switches to the
3b1d5cf74c93 (single_kboard): Renamed from kboard_locked. All refs renamed.
Richard M. Stallman <rms@gnu.org>
parents: 9141
diff changeset
56 single-kboard state for the execution of that command,
3b1d5cf74c93 (single_kboard): Renamed from kboard_locked. All refs renamed.
Richard M. Stallman <rms@gnu.org>
parents: 9141
diff changeset
57 so that that command can get input only from its own KBOARD.
3b1d5cf74c93 (single_kboard): Renamed from kboard_locked. All refs renamed.
Richard M. Stallman <rms@gnu.org>
parents: 9141
diff changeset
58
3b1d5cf74c93 (single_kboard): Renamed from kboard_locked. All refs renamed.
Richard M. Stallman <rms@gnu.org>
parents: 9141
diff changeset
59 While in the single-kboard state, read_char can consider input only
3b1d5cf74c93 (single_kboard): Renamed from kboard_locked. All refs renamed.
Richard M. Stallman <rms@gnu.org>
parents: 9141
diff changeset
60 from the current KBOARD. If events come from other KBOARDs, they
3b1d5cf74c93 (single_kboard): Renamed from kboard_locked. All refs renamed.
Richard M. Stallman <rms@gnu.org>
parents: 9141
diff changeset
61 are put aside for later in the KBOARDs' kbd_queue lists.
3b1d5cf74c93 (single_kboard): Renamed from kboard_locked. All refs renamed.
Richard M. Stallman <rms@gnu.org>
parents: 9141
diff changeset
62 The flag kbd_queue_has_data in a KBOARD is 1 if this has happened.
43279
de1b20c65a5e Fix typos.
Pavel Janík <Pavel@Janik.cz>
parents: 41162
diff changeset
63 When Emacs goes back to the any-kboard state, it looks at all the KBOARDs
11349
3b1d5cf74c93 (single_kboard): Renamed from kboard_locked. All refs renamed.
Richard M. Stallman <rms@gnu.org>
parents: 9141
diff changeset
64 to find those; and it tries processing their input right away. */
3b1d5cf74c93 (single_kboard): Renamed from kboard_locked. All refs renamed.
Richard M. Stallman <rms@gnu.org>
parents: 9141
diff changeset
65
3b1d5cf74c93 (single_kboard): Renamed from kboard_locked. All refs renamed.
Richard M. Stallman <rms@gnu.org>
parents: 9141
diff changeset
66 typedef struct kboard KBOARD;
3b1d5cf74c93 (single_kboard): Renamed from kboard_locked. All refs renamed.
Richard M. Stallman <rms@gnu.org>
parents: 9141
diff changeset
67 struct kboard
3b1d5cf74c93 (single_kboard): Renamed from kboard_locked. All refs renamed.
Richard M. Stallman <rms@gnu.org>
parents: 9141
diff changeset
68 {
3b1d5cf74c93 (single_kboard): Renamed from kboard_locked. All refs renamed.
Richard M. Stallman <rms@gnu.org>
parents: 9141
diff changeset
69 KBOARD *next_kboard;
3b1d5cf74c93 (single_kboard): Renamed from kboard_locked. All refs renamed.
Richard M. Stallman <rms@gnu.org>
parents: 9141
diff changeset
70
12259
572f267636d5 (struct kboard): Add Voverriding_terminal_local_map.
Karl Heuer <kwzh@gnu.org>
parents: 12174
diff changeset
71 /* If non-nil, a keymap that overrides all others but applies only to
572f267636d5 (struct kboard): Add Voverriding_terminal_local_map.
Karl Heuer <kwzh@gnu.org>
parents: 12174
diff changeset
72 this KBOARD. Lisp code that uses this instead of calling read-char
572f267636d5 (struct kboard): Add Voverriding_terminal_local_map.
Karl Heuer <kwzh@gnu.org>
parents: 12174
diff changeset
73 can effectively wait for input in the any-kboard state, and hence
572f267636d5 (struct kboard): Add Voverriding_terminal_local_map.
Karl Heuer <kwzh@gnu.org>
parents: 12174
diff changeset
74 avoid blocking out the other KBOARDs. See universal-argument in
572f267636d5 (struct kboard): Add Voverriding_terminal_local_map.
Karl Heuer <kwzh@gnu.org>
parents: 12174
diff changeset
75 lisp/simple.el for an example. */
572f267636d5 (struct kboard): Add Voverriding_terminal_local_map.
Karl Heuer <kwzh@gnu.org>
parents: 12174
diff changeset
76 Lisp_Object Voverriding_terminal_local_map;
572f267636d5 (struct kboard): Add Voverriding_terminal_local_map.
Karl Heuer <kwzh@gnu.org>
parents: 12174
diff changeset
77
12161
32f80fdaeed9 (struct kboard): New member Vlast_command.
Karl Heuer <kwzh@gnu.org>
parents: 12143
diff changeset
78 /* Last command executed by the editor command loop, not counting
32f80fdaeed9 (struct kboard): New member Vlast_command.
Karl Heuer <kwzh@gnu.org>
parents: 12143
diff changeset
79 commands that set the prefix argument. */
32f80fdaeed9 (struct kboard): New member Vlast_command.
Karl Heuer <kwzh@gnu.org>
parents: 12143
diff changeset
80 Lisp_Object Vlast_command;
32f80fdaeed9 (struct kboard): New member Vlast_command.
Karl Heuer <kwzh@gnu.org>
parents: 12143
diff changeset
81
85614
9f3a25157e4f Make `window-system' into a keyboard-local variable (rather than
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85114
diff changeset
82 /* Normally same as last-command, but never modified by other commands. */
22385
15200c139d9f (struct kboard): New elts Vreal_last_command and Vlast_prefix_arg.
Richard M. Stallman <rms@gnu.org>
parents: 21515
diff changeset
83 Lisp_Object Vreal_last_command;
15200c139d9f (struct kboard): New elts Vreal_last_command and Vlast_prefix_arg.
Richard M. Stallman <rms@gnu.org>
parents: 21515
diff changeset
84
83391
e99392472e41 Change `keyboard-translate-table' to be terminal-local.
Karoly Lorentey <lorentey@elte.hu>
parents: 83374
diff changeset
85 /* User-supplied table to translate input characters through. */
e99392472e41 Change `keyboard-translate-table' to be terminal-local.
Karoly Lorentey <lorentey@elte.hu>
parents: 83374
diff changeset
86 Lisp_Object Vkeyboard_translate_table;
e99392472e41 Change `keyboard-translate-table' to be terminal-local.
Karoly Lorentey <lorentey@elte.hu>
parents: 83374
diff changeset
87
78695
4492556ec35d (struct kboard): New elt Vlast_repeatable_command.
Martin Rudalics <rudalics@gmx.at>
parents: 78501
diff changeset
88 /* Last command that may be repeated by `repeat'. */
4492556ec35d (struct kboard): New elt Vlast_repeatable_command.
Martin Rudalics <rudalics@gmx.at>
parents: 78501
diff changeset
89 Lisp_Object Vlast_repeatable_command;
4492556ec35d (struct kboard): New elt Vlast_repeatable_command.
Martin Rudalics <rudalics@gmx.at>
parents: 78501
diff changeset
90
12115
bd5ac643a900 (struct kboard): member Vprefix_arg restored, replacing
Karl Heuer <kwzh@gnu.org>
parents: 11778
diff changeset
91 /* The prefix argument for the next command, in raw form. */
bd5ac643a900 (struct kboard): member Vprefix_arg restored, replacing
Karl Heuer <kwzh@gnu.org>
parents: 11778
diff changeset
92 Lisp_Object Vprefix_arg;
11349
3b1d5cf74c93 (single_kboard): Renamed from kboard_locked. All refs renamed.
Richard M. Stallman <rms@gnu.org>
parents: 9141
diff changeset
93
22385
15200c139d9f (struct kboard): New elts Vreal_last_command and Vlast_prefix_arg.
Richard M. Stallman <rms@gnu.org>
parents: 21515
diff changeset
94 /* Saved prefix argument for the last command, in raw form. */
15200c139d9f (struct kboard): New elts Vreal_last_command and Vlast_prefix_arg.
Richard M. Stallman <rms@gnu.org>
parents: 21515
diff changeset
95 Lisp_Object Vlast_prefix_arg;
15200c139d9f (struct kboard): New elts Vreal_last_command and Vlast_prefix_arg.
Richard M. Stallman <rms@gnu.org>
parents: 21515
diff changeset
96
11349
3b1d5cf74c93 (single_kboard): Renamed from kboard_locked. All refs renamed.
Richard M. Stallman <rms@gnu.org>
parents: 9141
diff changeset
97 /* Unread events specific to this kboard. */
3b1d5cf74c93 (single_kboard): Renamed from kboard_locked. All refs renamed.
Richard M. Stallman <rms@gnu.org>
parents: 9141
diff changeset
98 Lisp_Object kbd_queue;
3b1d5cf74c93 (single_kboard): Renamed from kboard_locked. All refs renamed.
Richard M. Stallman <rms@gnu.org>
parents: 9141
diff changeset
99
3b1d5cf74c93 (single_kboard): Renamed from kboard_locked. All refs renamed.
Richard M. Stallman <rms@gnu.org>
parents: 9141
diff changeset
100 /* Non-nil while a kbd macro is being defined. */
3b1d5cf74c93 (single_kboard): Renamed from kboard_locked. All refs renamed.
Richard M. Stallman <rms@gnu.org>
parents: 9141
diff changeset
101 Lisp_Object defining_kbd_macro;
3b1d5cf74c93 (single_kboard): Renamed from kboard_locked. All refs renamed.
Richard M. Stallman <rms@gnu.org>
parents: 9141
diff changeset
102
3b1d5cf74c93 (single_kboard): Renamed from kboard_locked. All refs renamed.
Richard M. Stallman <rms@gnu.org>
parents: 9141
diff changeset
103 /* The start of storage for the current keyboard macro. */
3b1d5cf74c93 (single_kboard): Renamed from kboard_locked. All refs renamed.
Richard M. Stallman <rms@gnu.org>
parents: 9141
diff changeset
104 Lisp_Object *kbd_macro_buffer;
3b1d5cf74c93 (single_kboard): Renamed from kboard_locked. All refs renamed.
Richard M. Stallman <rms@gnu.org>
parents: 9141
diff changeset
105
3b1d5cf74c93 (single_kboard): Renamed from kboard_locked. All refs renamed.
Richard M. Stallman <rms@gnu.org>
parents: 9141
diff changeset
106 /* Where to store the next keystroke of the macro. */
3b1d5cf74c93 (single_kboard): Renamed from kboard_locked. All refs renamed.
Richard M. Stallman <rms@gnu.org>
parents: 9141
diff changeset
107 Lisp_Object *kbd_macro_ptr;
3b1d5cf74c93 (single_kboard): Renamed from kboard_locked. All refs renamed.
Richard M. Stallman <rms@gnu.org>
parents: 9141
diff changeset
108
3b1d5cf74c93 (single_kboard): Renamed from kboard_locked. All refs renamed.
Richard M. Stallman <rms@gnu.org>
parents: 9141
diff changeset
109 /* The finalized section of the macro starts at kbd_macro_buffer and
3b1d5cf74c93 (single_kboard): Renamed from kboard_locked. All refs renamed.
Richard M. Stallman <rms@gnu.org>
parents: 9141
diff changeset
110 ends before this. This is not the same as kbd_macro_ptr, because
3b1d5cf74c93 (single_kboard): Renamed from kboard_locked. All refs renamed.
Richard M. Stallman <rms@gnu.org>
parents: 9141
diff changeset
111 we advance this to kbd_macro_ptr when a key's command is complete.
3b1d5cf74c93 (single_kboard): Renamed from kboard_locked. All refs renamed.
Richard M. Stallman <rms@gnu.org>
parents: 9141
diff changeset
112 This way, the keystrokes for "end-kbd-macro" are not included in the
39188
9b80cbcb8915 More commentary about the role of kbd_macro_end.
Eli Zaretskii <eliz@gnu.org>
parents: 32988
diff changeset
113 macro. This also allows us to throw away the events added to the
9b80cbcb8915 More commentary about the role of kbd_macro_end.
Eli Zaretskii <eliz@gnu.org>
parents: 32988
diff changeset
114 macro by the last command: all the events between kbd_macro_end and
9b80cbcb8915 More commentary about the role of kbd_macro_end.
Eli Zaretskii <eliz@gnu.org>
parents: 32988
diff changeset
115 kbd_macro_ptr belong to the last command; see
9b80cbcb8915 More commentary about the role of kbd_macro_end.
Eli Zaretskii <eliz@gnu.org>
parents: 32988
diff changeset
116 cancel-kbd-macro-events. */
11349
3b1d5cf74c93 (single_kboard): Renamed from kboard_locked. All refs renamed.
Richard M. Stallman <rms@gnu.org>
parents: 9141
diff changeset
117 Lisp_Object *kbd_macro_end;
3b1d5cf74c93 (single_kboard): Renamed from kboard_locked. All refs renamed.
Richard M. Stallman <rms@gnu.org>
parents: 9141
diff changeset
118
3b1d5cf74c93 (single_kboard): Renamed from kboard_locked. All refs renamed.
Richard M. Stallman <rms@gnu.org>
parents: 9141
diff changeset
119 /* Allocated size of kbd_macro_buffer. */
3b1d5cf74c93 (single_kboard): Renamed from kboard_locked. All refs renamed.
Richard M. Stallman <rms@gnu.org>
parents: 9141
diff changeset
120 int kbd_macro_bufsize;
3b1d5cf74c93 (single_kboard): Renamed from kboard_locked. All refs renamed.
Richard M. Stallman <rms@gnu.org>
parents: 9141
diff changeset
121
3b1d5cf74c93 (single_kboard): Renamed from kboard_locked. All refs renamed.
Richard M. Stallman <rms@gnu.org>
parents: 9141
diff changeset
122 /* Last anonymous kbd macro defined. */
3b1d5cf74c93 (single_kboard): Renamed from kboard_locked. All refs renamed.
Richard M. Stallman <rms@gnu.org>
parents: 9141
diff changeset
123 Lisp_Object Vlast_kbd_macro;
3b1d5cf74c93 (single_kboard): Renamed from kboard_locked. All refs renamed.
Richard M. Stallman <rms@gnu.org>
parents: 9141
diff changeset
124
11542
08bca45303e3 (struct kboard): New member Vsystem_key_alist.
Karl Heuer <kwzh@gnu.org>
parents: 11367
diff changeset
125 /* Alist of system-specific X windows key symbols. */
08bca45303e3 (struct kboard): New member Vsystem_key_alist.
Karl Heuer <kwzh@gnu.org>
parents: 11367
diff changeset
126 Lisp_Object Vsystem_key_alist;
08bca45303e3 (struct kboard): New member Vsystem_key_alist.
Karl Heuer <kwzh@gnu.org>
parents: 11367
diff changeset
127
12174
13759a6c745b (struct kboard): New member system_key_syms.
Karl Heuer <kwzh@gnu.org>
parents: 12161
diff changeset
128 /* Cache for modify_event_symbol. */
13759a6c745b (struct kboard): New member system_key_syms.
Karl Heuer <kwzh@gnu.org>
parents: 12161
diff changeset
129 Lisp_Object system_key_syms;
13759a6c745b (struct kboard): New member system_key_syms.
Karl Heuer <kwzh@gnu.org>
parents: 12161
diff changeset
130
85614
9f3a25157e4f Make `window-system' into a keyboard-local variable (rather than
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85114
diff changeset
131 /* The kind of display: x, w32, ... */
9f3a25157e4f Make `window-system' into a keyboard-local variable (rather than
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85114
diff changeset
132 Lisp_Object Vwindow_system;
9f3a25157e4f Make `window-system' into a keyboard-local variable (rather than
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85114
diff changeset
133
85106
fd282fb888de Add new `input-decode-map' keymap and use it for temrinal
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 83652
diff changeset
134 /* Keymap mapping keys to alternative preferred forms.
fd282fb888de Add new `input-decode-map' keymap and use it for temrinal
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 83652
diff changeset
135 See the DEFVAR for more documentation. */
83346
7372c2f9daac Rename function-key-map to local-function-key-map, and global-function-key-map to function-key-map. Same for key-translation-map.
Karoly Lorentey <lorentey@elte.hu>
parents: 83342
diff changeset
136 Lisp_Object Vlocal_function_key_map;
83315
13371344a3ba Make function-key-map a terminal-local variable (move it inside the kboard struct).
Karoly Lorentey <lorentey@elte.hu>
parents: 83224
diff changeset
137
85106
fd282fb888de Add new `input-decode-map' keymap and use it for temrinal
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 83652
diff changeset
138 /* Keymap mapping ASCII function key sequences onto their preferred
fd282fb888de Add new `input-decode-map' keymap and use it for temrinal
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 83652
diff changeset
139 forms. Initialized by the terminal-specific lisp files. See the
fd282fb888de Add new `input-decode-map' keymap and use it for temrinal
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 83652
diff changeset
140 DEFVAR for more documentation. */
fd282fb888de Add new `input-decode-map' keymap and use it for temrinal
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 83652
diff changeset
141 Lisp_Object Vinput_decode_map;
fd282fb888de Add new `input-decode-map' keymap and use it for temrinal
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 83652
diff changeset
142
11778
37cb8613ee69 (struct kboard): New member Vdefault_minibuffer_frame.
Karl Heuer <kwzh@gnu.org>
parents: 11542
diff changeset
143 /* Minibufferless frames on this display use this frame's minibuffer. */
37cb8613ee69 (struct kboard): New member Vdefault_minibuffer_frame.
Karl Heuer <kwzh@gnu.org>
parents: 11542
diff changeset
144 Lisp_Object Vdefault_minibuffer_frame;
37cb8613ee69 (struct kboard): New member Vdefault_minibuffer_frame.
Karl Heuer <kwzh@gnu.org>
parents: 11542
diff changeset
145
11349
3b1d5cf74c93 (single_kboard): Renamed from kboard_locked. All refs renamed.
Richard M. Stallman <rms@gnu.org>
parents: 9141
diff changeset
146 /* Number of displays using this KBOARD. Normally 1, but can be
3b1d5cf74c93 (single_kboard): Renamed from kboard_locked. All refs renamed.
Richard M. Stallman <rms@gnu.org>
parents: 9141
diff changeset
147 larger when you have multiple screens on a single X display. */
3b1d5cf74c93 (single_kboard): Renamed from kboard_locked. All refs renamed.
Richard M. Stallman <rms@gnu.org>
parents: 9141
diff changeset
148 int reference_count;
3b1d5cf74c93 (single_kboard): Renamed from kboard_locked. All refs renamed.
Richard M. Stallman <rms@gnu.org>
parents: 9141
diff changeset
149
3b1d5cf74c93 (single_kboard): Renamed from kboard_locked. All refs renamed.
Richard M. Stallman <rms@gnu.org>
parents: 9141
diff changeset
150 /* The text we're echoing in the modeline - partial key sequences,
43749
0df5bec3cfdf (ECHOBUFSIZE): Removed.
Gerd Moellmann <gerd@gnu.org>
parents: 43713
diff changeset
151 usually. This is nil when not echoing. */
0df5bec3cfdf (ECHOBUFSIZE): Removed.
Gerd Moellmann <gerd@gnu.org>
parents: 43713
diff changeset
152 Lisp_Object echo_string;
11349
3b1d5cf74c93 (single_kboard): Renamed from kboard_locked. All refs renamed.
Richard M. Stallman <rms@gnu.org>
parents: 9141
diff changeset
153
3b1d5cf74c93 (single_kboard): Renamed from kboard_locked. All refs renamed.
Richard M. Stallman <rms@gnu.org>
parents: 9141
diff changeset
154 /* This flag indicates that events were put into kbd_queue
3b1d5cf74c93 (single_kboard): Renamed from kboard_locked. All refs renamed.
Richard M. Stallman <rms@gnu.org>
parents: 9141
diff changeset
155 while Emacs was running for some other KBOARD.
3b1d5cf74c93 (single_kboard): Renamed from kboard_locked. All refs renamed.
Richard M. Stallman <rms@gnu.org>
parents: 9141
diff changeset
156 The flag means that, when Emacs goes into the any-kboard state again,
3b1d5cf74c93 (single_kboard): Renamed from kboard_locked. All refs renamed.
Richard M. Stallman <rms@gnu.org>
parents: 9141
diff changeset
157 it should check this KBOARD to see if there is a complete command
3b1d5cf74c93 (single_kboard): Renamed from kboard_locked. All refs renamed.
Richard M. Stallman <rms@gnu.org>
parents: 9141
diff changeset
158 waiting.
3b1d5cf74c93 (single_kboard): Renamed from kboard_locked. All refs renamed.
Richard M. Stallman <rms@gnu.org>
parents: 9141
diff changeset
159
3b1d5cf74c93 (single_kboard): Renamed from kboard_locked. All refs renamed.
Richard M. Stallman <rms@gnu.org>
parents: 9141
diff changeset
160 Note that the kbd_queue field can be non-nil even when
3b1d5cf74c93 (single_kboard): Renamed from kboard_locked. All refs renamed.
Richard M. Stallman <rms@gnu.org>
parents: 9141
diff changeset
161 kbd_queue_has_data is 0. When we push back an incomplete
3b1d5cf74c93 (single_kboard): Renamed from kboard_locked. All refs renamed.
Richard M. Stallman <rms@gnu.org>
parents: 9141
diff changeset
162 command, then this flag is 0, meaning we don't want to try
3b1d5cf74c93 (single_kboard): Renamed from kboard_locked. All refs renamed.
Richard M. Stallman <rms@gnu.org>
parents: 9141
diff changeset
163 reading from this KBOARD again until more input arrives. */
3b1d5cf74c93 (single_kboard): Renamed from kboard_locked. All refs renamed.
Richard M. Stallman <rms@gnu.org>
parents: 9141
diff changeset
164 char kbd_queue_has_data;
3b1d5cf74c93 (single_kboard): Renamed from kboard_locked. All refs renamed.
Richard M. Stallman <rms@gnu.org>
parents: 9141
diff changeset
165
3b1d5cf74c93 (single_kboard): Renamed from kboard_locked. All refs renamed.
Richard M. Stallman <rms@gnu.org>
parents: 9141
diff changeset
166 /* Nonzero means echo each character as typed. */
3b1d5cf74c93 (single_kboard): Renamed from kboard_locked. All refs renamed.
Richard M. Stallman <rms@gnu.org>
parents: 9141
diff changeset
167 char immediate_echo;
3b1d5cf74c93 (single_kboard): Renamed from kboard_locked. All refs renamed.
Richard M. Stallman <rms@gnu.org>
parents: 9141
diff changeset
168
3b1d5cf74c93 (single_kboard): Renamed from kboard_locked. All refs renamed.
Richard M. Stallman <rms@gnu.org>
parents: 9141
diff changeset
169 /* If we have echoed a prompt string specified by the user,
43749
0df5bec3cfdf (ECHOBUFSIZE): Removed.
Gerd Moellmann <gerd@gnu.org>
parents: 43713
diff changeset
170 this is its length in characters. Otherwise this is -1. */
11349
3b1d5cf74c93 (single_kboard): Renamed from kboard_locked. All refs renamed.
Richard M. Stallman <rms@gnu.org>
parents: 9141
diff changeset
171 char echo_after_prompt;
3b1d5cf74c93 (single_kboard): Renamed from kboard_locked. All refs renamed.
Richard M. Stallman <rms@gnu.org>
parents: 9141
diff changeset
172 };
3b1d5cf74c93 (single_kboard): Renamed from kboard_locked. All refs renamed.
Richard M. Stallman <rms@gnu.org>
parents: 9141
diff changeset
173
82991
2b26656ff804 MULTI_KBOARD support for ttys. Input-related bugfixes for X+tty sessions.
Karoly Lorentey <lorentey@elte.hu>
parents: 53179
diff changeset
174 /* Temporarily used before a frame has been opened. */
11349
3b1d5cf74c93 (single_kboard): Renamed from kboard_locked. All refs renamed.
Richard M. Stallman <rms@gnu.org>
parents: 9141
diff changeset
175 extern KBOARD *initial_kboard;
3b1d5cf74c93 (single_kboard): Renamed from kboard_locked. All refs renamed.
Richard M. Stallman <rms@gnu.org>
parents: 9141
diff changeset
176
3b1d5cf74c93 (single_kboard): Renamed from kboard_locked. All refs renamed.
Richard M. Stallman <rms@gnu.org>
parents: 9141
diff changeset
177 /* In the single-kboard state, this is the kboard
3b1d5cf74c93 (single_kboard): Renamed from kboard_locked. All refs renamed.
Richard M. Stallman <rms@gnu.org>
parents: 9141
diff changeset
178 from which input is accepted.
3b1d5cf74c93 (single_kboard): Renamed from kboard_locked. All refs renamed.
Richard M. Stallman <rms@gnu.org>
parents: 9141
diff changeset
179
3b1d5cf74c93 (single_kboard): Renamed from kboard_locked. All refs renamed.
Richard M. Stallman <rms@gnu.org>
parents: 9141
diff changeset
180 In the any-kboard state, this is the kboard from which we are
3b1d5cf74c93 (single_kboard): Renamed from kboard_locked. All refs renamed.
Richard M. Stallman <rms@gnu.org>
parents: 9141
diff changeset
181 right now considering input. We can consider input from another
3b1d5cf74c93 (single_kboard): Renamed from kboard_locked. All refs renamed.
Richard M. Stallman <rms@gnu.org>
parents: 9141
diff changeset
182 kboard, but doing so requires throwing to wrong_kboard_jmpbuf. */
3b1d5cf74c93 (single_kboard): Renamed from kboard_locked. All refs renamed.
Richard M. Stallman <rms@gnu.org>
parents: 9141
diff changeset
183 extern KBOARD *current_kboard;
3b1d5cf74c93 (single_kboard): Renamed from kboard_locked. All refs renamed.
Richard M. Stallman <rms@gnu.org>
parents: 9141
diff changeset
184
3b1d5cf74c93 (single_kboard): Renamed from kboard_locked. All refs renamed.
Richard M. Stallman <rms@gnu.org>
parents: 9141
diff changeset
185 /* A list of all kboard objects, linked through next_kboard. */
3b1d5cf74c93 (single_kboard): Renamed from kboard_locked. All refs renamed.
Richard M. Stallman <rms@gnu.org>
parents: 9141
diff changeset
186 extern KBOARD *all_kboards;
3b1d5cf74c93 (single_kboard): Renamed from kboard_locked. All refs renamed.
Richard M. Stallman <rms@gnu.org>
parents: 9141
diff changeset
187
3b1d5cf74c93 (single_kboard): Renamed from kboard_locked. All refs renamed.
Richard M. Stallman <rms@gnu.org>
parents: 9141
diff changeset
188 /* Nonzero in the single-kboard state, 0 in the any-kboard state. */
3b1d5cf74c93 (single_kboard): Renamed from kboard_locked. All refs renamed.
Richard M. Stallman <rms@gnu.org>
parents: 9141
diff changeset
189 extern int single_kboard;
3b1d5cf74c93 (single_kboard): Renamed from kboard_locked. All refs renamed.
Richard M. Stallman <rms@gnu.org>
parents: 9141
diff changeset
190
518
3a316f923456 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
191 /* Total number of times read_char has returned. */
17875
66e8848c9c49 (num_input_events, num_nonmacro_input_events):
Richard M. Stallman <rms@gnu.org>
parents: 16051
diff changeset
192 extern int num_input_events;
518
3a316f923456 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
193
1191
4a1b4379eb53 * keyboard.h (num_nonmacro_input_chars): Added extern declaration
Jim Blandy <jimb@redhat.com>
parents: 1113
diff changeset
194 /* Total number of times read_char has returned, outside of macros. */
43713
f92c4d87863a Change defvar_int def and vars to use EMACS_INT instead of just int.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43279
diff changeset
195 extern EMACS_INT num_nonmacro_input_events;
1191
4a1b4379eb53 * keyboard.h (num_nonmacro_input_chars): Added extern declaration
Jim Blandy <jimb@redhat.com>
parents: 1113
diff changeset
196
3591
507f64624555 Apply typo patches from Paul Eggert.
Jim Blandy <jimb@redhat.com>
parents: 2961
diff changeset
197 /* Nonzero means polling for input is temporarily suppressed. */
518
3a316f923456 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
198 extern int poll_suppress_count;
3a316f923456 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
199
1440
8c27b145955a * keyboard.h (this_command_keys): Extern declaration changed. Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 1387
diff changeset
200 /* Vector holding the key sequence that invoked the current command.
8c27b145955a * keyboard.h (this_command_keys): Extern declaration changed. Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 1387
diff changeset
201 It is reused for each command, and it may be longer than the current
8c27b145955a * keyboard.h (this_command_keys): Extern declaration changed. Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 1387
diff changeset
202 sequence; this_command_key_count indicates how many elements
8c27b145955a * keyboard.h (this_command_keys): Extern declaration changed. Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 1387
diff changeset
203 actually mean something. */
8c27b145955a * keyboard.h (this_command_keys): Extern declaration changed. Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 1387
diff changeset
204 extern Lisp_Object this_command_keys;
8c27b145955a * keyboard.h (this_command_keys): Extern declaration changed. Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 1387
diff changeset
205 extern int this_command_key_count;
1387
774897fea33a * keyboard.h (Qswitch_frame): Declare this extern.
Jim Blandy <jimb@redhat.com>
parents: 1313
diff changeset
206
1989
b1c1ab20f810 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1821
diff changeset
207 /* The frame in which the last input event occurred, or Qmacro if the
b1c1ab20f810 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1821
diff changeset
208 last event came from a macro. We use this to determine when to
b1c1ab20f810 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1821
diff changeset
209 generate switch-frame events. This may be cleared by functions
b1c1ab20f810 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1821
diff changeset
210 like Fselect_frame, to make sure that a switch-frame event is
b1c1ab20f810 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1821
diff changeset
211 generated by the next character. */
2172
9e84120ecc0a * keyboard.h (internal_last_event_frame): This should be extern,
Jim Blandy <jimb@redhat.com>
parents: 1989
diff changeset
212 extern Lisp_Object internal_last_event_frame;
518
3a316f923456 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
213
95648
946366db5ee6 Relocate platform-independent menu definitions from xmenu.c.
Chong Yidong <cyd@stupidchicken.com>
parents: 94994
diff changeset
214 /* Menu items. */
946366db5ee6 Relocate platform-independent menu definitions from xmenu.c.
Chong Yidong <cyd@stupidchicken.com>
parents: 94994
diff changeset
215
946366db5ee6 Relocate platform-independent menu definitions from xmenu.c.
Chong Yidong <cyd@stupidchicken.com>
parents: 94994
diff changeset
216 extern Lisp_Object Vlucid_menu_bar_dirty_flag;
946366db5ee6 Relocate platform-independent menu definitions from xmenu.c.
Chong Yidong <cyd@stupidchicken.com>
parents: 94994
diff changeset
217 extern Lisp_Object Qrecompute_lucid_menubar, Qactivate_menubar_hook;
946366db5ee6 Relocate platform-independent menu definitions from xmenu.c.
Chong Yidong <cyd@stupidchicken.com>
parents: 94994
diff changeset
218
21297
41ed45a73873 (item_properties): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 20318
diff changeset
219 /* This holds a Lisp vector that holds the properties of a single
41ed45a73873 (item_properties): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 20318
diff changeset
220 menu item while decoding it in parse_menu_item.
41ed45a73873 (item_properties): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 20318
diff changeset
221 Using a Lisp vector to hold this information while we decode it
41ed45a73873 (item_properties): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 20318
diff changeset
222 takes care of protecting all the data from GC. */
41ed45a73873 (item_properties): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 20318
diff changeset
223 extern Lisp_Object item_properties;
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 43749
diff changeset
224
21297
41ed45a73873 (item_properties): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 20318
diff changeset
225 /* This describes the elements of item_properties.
41ed45a73873 (item_properties): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 20318
diff changeset
226 The first element is not a property, it is a pointer to the item properties
41ed45a73873 (item_properties): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 20318
diff changeset
227 that is saved for GC protection. */
41ed45a73873 (item_properties): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 20318
diff changeset
228 #define ITEM_PROPERTY_ITEM 0
41ed45a73873 (item_properties): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 20318
diff changeset
229 /* The item string. */
41ed45a73873 (item_properties): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 20318
diff changeset
230 #define ITEM_PROPERTY_NAME 1
43279
de1b20c65a5e Fix typos.
Pavel Janík <Pavel@Janik.cz>
parents: 41162
diff changeset
231 /* Start of initialize to nil */
21297
41ed45a73873 (item_properties): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 20318
diff changeset
232 /* The binding: nil, a command or a keymap. */
41ed45a73873 (item_properties): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 20318
diff changeset
233 #define ITEM_PROPERTY_DEF 2
41ed45a73873 (item_properties): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 20318
diff changeset
234 /* The keymap if the binding is a keymap, otherwise nil. */
41ed45a73873 (item_properties): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 20318
diff changeset
235 #define ITEM_PROPERTY_MAP 3
41ed45a73873 (item_properties): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 20318
diff changeset
236 /* Nil, :radio or :toggle. */
41ed45a73873 (item_properties): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 20318
diff changeset
237 #define ITEM_PROPERTY_TYPE 4
41ed45a73873 (item_properties): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 20318
diff changeset
238 /* Nil or a string describing an equivalent key binding. */
41ed45a73873 (item_properties): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 20318
diff changeset
239 #define ITEM_PROPERTY_KEYEQ 5
41ed45a73873 (item_properties): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 20318
diff changeset
240 /* Not nil if a selected toggle box or radio button, otherwise nil. */
41ed45a73873 (item_properties): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 20318
diff changeset
241 #define ITEM_PROPERTY_SELECTED 6
41ed45a73873 (item_properties): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 20318
diff changeset
242 /* Place for a help string. Not yet used. */
41ed45a73873 (item_properties): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 20318
diff changeset
243 #define ITEM_PROPERTY_HELP 7
43279
de1b20c65a5e Fix typos.
Pavel Janík <Pavel@Janik.cz>
parents: 41162
diff changeset
244 /* Start of initialize to t */
21297
41ed45a73873 (item_properties): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 20318
diff changeset
245 /* Last property. */
41ed45a73873 (item_properties): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 20318
diff changeset
246 /* Not nil if item is enabled. */
41ed45a73873 (item_properties): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 20318
diff changeset
247 #define ITEM_PROPERTY_ENABLE 8
95648
946366db5ee6 Relocate platform-independent menu definitions from xmenu.c.
Chong Yidong <cyd@stupidchicken.com>
parents: 94994
diff changeset
248
946366db5ee6 Relocate platform-independent menu definitions from xmenu.c.
Chong Yidong <cyd@stupidchicken.com>
parents: 94994
diff changeset
249 /* This holds a Lisp vector that holds the results of decoding
946366db5ee6 Relocate platform-independent menu definitions from xmenu.c.
Chong Yidong <cyd@stupidchicken.com>
parents: 94994
diff changeset
250 the keymaps or alist-of-alists that specify a menu.
946366db5ee6 Relocate platform-independent menu definitions from xmenu.c.
Chong Yidong <cyd@stupidchicken.com>
parents: 94994
diff changeset
251
946366db5ee6 Relocate platform-independent menu definitions from xmenu.c.
Chong Yidong <cyd@stupidchicken.com>
parents: 94994
diff changeset
252 It describes the panes and items within the panes.
946366db5ee6 Relocate platform-independent menu definitions from xmenu.c.
Chong Yidong <cyd@stupidchicken.com>
parents: 94994
diff changeset
253
946366db5ee6 Relocate platform-independent menu definitions from xmenu.c.
Chong Yidong <cyd@stupidchicken.com>
parents: 94994
diff changeset
254 Each pane is described by 3 elements in the vector:
946366db5ee6 Relocate platform-independent menu definitions from xmenu.c.
Chong Yidong <cyd@stupidchicken.com>
parents: 94994
diff changeset
255 t, the pane name, the pane's prefix key.
946366db5ee6 Relocate platform-independent menu definitions from xmenu.c.
Chong Yidong <cyd@stupidchicken.com>
parents: 94994
diff changeset
256 Then follow the pane's items, with 5 elements per item:
946366db5ee6 Relocate platform-independent menu definitions from xmenu.c.
Chong Yidong <cyd@stupidchicken.com>
parents: 94994
diff changeset
257 the item string, the enable flag, the item's value,
946366db5ee6 Relocate platform-independent menu definitions from xmenu.c.
Chong Yidong <cyd@stupidchicken.com>
parents: 94994
diff changeset
258 the definition, and the equivalent keyboard key's description string.
946366db5ee6 Relocate platform-independent menu definitions from xmenu.c.
Chong Yidong <cyd@stupidchicken.com>
parents: 94994
diff changeset
259
946366db5ee6 Relocate platform-independent menu definitions from xmenu.c.
Chong Yidong <cyd@stupidchicken.com>
parents: 94994
diff changeset
260 In some cases, multiple levels of menus may be described.
946366db5ee6 Relocate platform-independent menu definitions from xmenu.c.
Chong Yidong <cyd@stupidchicken.com>
parents: 94994
diff changeset
261 A single vector slot containing nil indicates the start of a submenu.
946366db5ee6 Relocate platform-independent menu definitions from xmenu.c.
Chong Yidong <cyd@stupidchicken.com>
parents: 94994
diff changeset
262 A single vector slot containing lambda indicates the end of a submenu.
946366db5ee6 Relocate platform-independent menu definitions from xmenu.c.
Chong Yidong <cyd@stupidchicken.com>
parents: 94994
diff changeset
263 The submenu follows a menu item which is the way to reach the submenu.
946366db5ee6 Relocate platform-independent menu definitions from xmenu.c.
Chong Yidong <cyd@stupidchicken.com>
parents: 94994
diff changeset
264
946366db5ee6 Relocate platform-independent menu definitions from xmenu.c.
Chong Yidong <cyd@stupidchicken.com>
parents: 94994
diff changeset
265 A single vector slot containing quote indicates that the
946366db5ee6 Relocate platform-independent menu definitions from xmenu.c.
Chong Yidong <cyd@stupidchicken.com>
parents: 94994
diff changeset
266 following items should appear on the right of a dialog box.
946366db5ee6 Relocate platform-independent menu definitions from xmenu.c.
Chong Yidong <cyd@stupidchicken.com>
parents: 94994
diff changeset
267
946366db5ee6 Relocate platform-independent menu definitions from xmenu.c.
Chong Yidong <cyd@stupidchicken.com>
parents: 94994
diff changeset
268 Using a Lisp vector to hold this information while we decode it
946366db5ee6 Relocate platform-independent menu definitions from xmenu.c.
Chong Yidong <cyd@stupidchicken.com>
parents: 94994
diff changeset
269 takes care of protecting all the data from GC. */
946366db5ee6 Relocate platform-independent menu definitions from xmenu.c.
Chong Yidong <cyd@stupidchicken.com>
parents: 94994
diff changeset
270 extern Lisp_Object menu_items;
946366db5ee6 Relocate platform-independent menu definitions from xmenu.c.
Chong Yidong <cyd@stupidchicken.com>
parents: 94994
diff changeset
271
946366db5ee6 Relocate platform-independent menu definitions from xmenu.c.
Chong Yidong <cyd@stupidchicken.com>
parents: 94994
diff changeset
272 /* If non-nil, means that the global vars defined here are already in use.
946366db5ee6 Relocate platform-independent menu definitions from xmenu.c.
Chong Yidong <cyd@stupidchicken.com>
parents: 94994
diff changeset
273 Used to detect cases where we try to re-enter this non-reentrant code. */
946366db5ee6 Relocate platform-independent menu definitions from xmenu.c.
Chong Yidong <cyd@stupidchicken.com>
parents: 94994
diff changeset
274 extern Lisp_Object menu_items_inuse;
946366db5ee6 Relocate platform-independent menu definitions from xmenu.c.
Chong Yidong <cyd@stupidchicken.com>
parents: 94994
diff changeset
275
946366db5ee6 Relocate platform-independent menu definitions from xmenu.c.
Chong Yidong <cyd@stupidchicken.com>
parents: 94994
diff changeset
276 /* Number of slots currently allocated in menu_items. */
946366db5ee6 Relocate platform-independent menu definitions from xmenu.c.
Chong Yidong <cyd@stupidchicken.com>
parents: 94994
diff changeset
277 extern int menu_items_allocated;
946366db5ee6 Relocate platform-independent menu definitions from xmenu.c.
Chong Yidong <cyd@stupidchicken.com>
parents: 94994
diff changeset
278
946366db5ee6 Relocate platform-independent menu definitions from xmenu.c.
Chong Yidong <cyd@stupidchicken.com>
parents: 94994
diff changeset
279 /* This is the index in menu_items of the first empty slot. */
946366db5ee6 Relocate platform-independent menu definitions from xmenu.c.
Chong Yidong <cyd@stupidchicken.com>
parents: 94994
diff changeset
280 extern int menu_items_used;
946366db5ee6 Relocate platform-independent menu definitions from xmenu.c.
Chong Yidong <cyd@stupidchicken.com>
parents: 94994
diff changeset
281
946366db5ee6 Relocate platform-independent menu definitions from xmenu.c.
Chong Yidong <cyd@stupidchicken.com>
parents: 94994
diff changeset
282 /* The number of panes currently recorded in menu_items,
946366db5ee6 Relocate platform-independent menu definitions from xmenu.c.
Chong Yidong <cyd@stupidchicken.com>
parents: 94994
diff changeset
283 excluding those within submenus. */
946366db5ee6 Relocate platform-independent menu definitions from xmenu.c.
Chong Yidong <cyd@stupidchicken.com>
parents: 94994
diff changeset
284 extern int menu_items_n_panes;
946366db5ee6 Relocate platform-independent menu definitions from xmenu.c.
Chong Yidong <cyd@stupidchicken.com>
parents: 94994
diff changeset
285
946366db5ee6 Relocate platform-independent menu definitions from xmenu.c.
Chong Yidong <cyd@stupidchicken.com>
parents: 94994
diff changeset
286 #define MENU_ITEMS_PANE_NAME 1
946366db5ee6 Relocate platform-independent menu definitions from xmenu.c.
Chong Yidong <cyd@stupidchicken.com>
parents: 94994
diff changeset
287 #define MENU_ITEMS_PANE_PREFIX 2
946366db5ee6 Relocate platform-independent menu definitions from xmenu.c.
Chong Yidong <cyd@stupidchicken.com>
parents: 94994
diff changeset
288 #define MENU_ITEMS_PANE_LENGTH 3
946366db5ee6 Relocate platform-independent menu definitions from xmenu.c.
Chong Yidong <cyd@stupidchicken.com>
parents: 94994
diff changeset
289
946366db5ee6 Relocate platform-independent menu definitions from xmenu.c.
Chong Yidong <cyd@stupidchicken.com>
parents: 94994
diff changeset
290 enum menu_item_idx
946366db5ee6 Relocate platform-independent menu definitions from xmenu.c.
Chong Yidong <cyd@stupidchicken.com>
parents: 94994
diff changeset
291 {
946366db5ee6 Relocate platform-independent menu definitions from xmenu.c.
Chong Yidong <cyd@stupidchicken.com>
parents: 94994
diff changeset
292 MENU_ITEMS_ITEM_NAME = 0,
946366db5ee6 Relocate platform-independent menu definitions from xmenu.c.
Chong Yidong <cyd@stupidchicken.com>
parents: 94994
diff changeset
293 MENU_ITEMS_ITEM_ENABLE,
946366db5ee6 Relocate platform-independent menu definitions from xmenu.c.
Chong Yidong <cyd@stupidchicken.com>
parents: 94994
diff changeset
294 MENU_ITEMS_ITEM_VALUE,
946366db5ee6 Relocate platform-independent menu definitions from xmenu.c.
Chong Yidong <cyd@stupidchicken.com>
parents: 94994
diff changeset
295 MENU_ITEMS_ITEM_EQUIV_KEY,
946366db5ee6 Relocate platform-independent menu definitions from xmenu.c.
Chong Yidong <cyd@stupidchicken.com>
parents: 94994
diff changeset
296 MENU_ITEMS_ITEM_DEFINITION,
946366db5ee6 Relocate platform-independent menu definitions from xmenu.c.
Chong Yidong <cyd@stupidchicken.com>
parents: 94994
diff changeset
297 MENU_ITEMS_ITEM_TYPE,
946366db5ee6 Relocate platform-independent menu definitions from xmenu.c.
Chong Yidong <cyd@stupidchicken.com>
parents: 94994
diff changeset
298 MENU_ITEMS_ITEM_SELECTED,
946366db5ee6 Relocate platform-independent menu definitions from xmenu.c.
Chong Yidong <cyd@stupidchicken.com>
parents: 94994
diff changeset
299 MENU_ITEMS_ITEM_HELP,
946366db5ee6 Relocate platform-independent menu definitions from xmenu.c.
Chong Yidong <cyd@stupidchicken.com>
parents: 94994
diff changeset
300 MENU_ITEMS_ITEM_LENGTH
946366db5ee6 Relocate platform-independent menu definitions from xmenu.c.
Chong Yidong <cyd@stupidchicken.com>
parents: 94994
diff changeset
301 };
946366db5ee6 Relocate platform-independent menu definitions from xmenu.c.
Chong Yidong <cyd@stupidchicken.com>
parents: 94994
diff changeset
302
946366db5ee6 Relocate platform-independent menu definitions from xmenu.c.
Chong Yidong <cyd@stupidchicken.com>
parents: 94994
diff changeset
303 extern Lisp_Object unuse_menu_items P_ ((Lisp_Object dummy));
946366db5ee6 Relocate platform-independent menu definitions from xmenu.c.
Chong Yidong <cyd@stupidchicken.com>
parents: 94994
diff changeset
304
946366db5ee6 Relocate platform-independent menu definitions from xmenu.c.
Chong Yidong <cyd@stupidchicken.com>
parents: 94994
diff changeset
305 /* This is how to deal with multibyte text if HAVE_MULTILINGUAL_MENU
946366db5ee6 Relocate platform-independent menu definitions from xmenu.c.
Chong Yidong <cyd@stupidchicken.com>
parents: 94994
diff changeset
306 isn't defined. The use of HAVE_MULTILINGUAL_MENU could probably be
946366db5ee6 Relocate platform-independent menu definitions from xmenu.c.
Chong Yidong <cyd@stupidchicken.com>
parents: 94994
diff changeset
307 confined to an extended version of this with sections of code below
946366db5ee6 Relocate platform-independent menu definitions from xmenu.c.
Chong Yidong <cyd@stupidchicken.com>
parents: 94994
diff changeset
308 using it unconditionally. */
95655
9a50a852d447 * Makefile.in (obj): Always add menu.o
Andreas Schwab <schwab@suse.de>
parents: 95648
diff changeset
309 #ifndef HAVE_NTGUI
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 95655
diff changeset
310 #if defined (USE_GTK) || defined (HAVE_NS)
95648
946366db5ee6 Relocate platform-independent menu definitions from xmenu.c.
Chong Yidong <cyd@stupidchicken.com>
parents: 94994
diff changeset
311 # define ENCODE_MENU_STRING(str) ENCODE_UTF_8 (str)
946366db5ee6 Relocate platform-independent menu definitions from xmenu.c.
Chong Yidong <cyd@stupidchicken.com>
parents: 94994
diff changeset
312 #elif defined HAVE_X_I18N
946366db5ee6 Relocate platform-independent menu definitions from xmenu.c.
Chong Yidong <cyd@stupidchicken.com>
parents: 94994
diff changeset
313 #define ENCODE_MENU_STRING(str) ENCODE_SYSTEM (str)
946366db5ee6 Relocate platform-independent menu definitions from xmenu.c.
Chong Yidong <cyd@stupidchicken.com>
parents: 94994
diff changeset
314 #else
946366db5ee6 Relocate platform-independent menu definitions from xmenu.c.
Chong Yidong <cyd@stupidchicken.com>
parents: 94994
diff changeset
315 #define ENCODE_MENU_STRING(str) string_make_unibyte (str)
946366db5ee6 Relocate platform-independent menu definitions from xmenu.c.
Chong Yidong <cyd@stupidchicken.com>
parents: 94994
diff changeset
316 #endif /* USE_GTK */
95655
9a50a852d447 * Makefile.in (obj): Always add menu.o
Andreas Schwab <schwab@suse.de>
parents: 95648
diff changeset
317 #else /* HAVE_NTGUI */
95648
946366db5ee6 Relocate platform-independent menu definitions from xmenu.c.
Chong Yidong <cyd@stupidchicken.com>
parents: 94994
diff changeset
318 #define ENCODE_MENU_STRING(str) (str)
946366db5ee6 Relocate platform-independent menu definitions from xmenu.c.
Chong Yidong <cyd@stupidchicken.com>
parents: 94994
diff changeset
319 #endif
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 95655
diff changeset
320
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 95655
diff changeset
321 #if defined (HAVE_NS) || defined (HAVE_NTGUI)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 95655
diff changeset
322
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 95655
diff changeset
323 typedef void * XtPointer;
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 95655
diff changeset
324 typedef unsigned char Boolean;
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 95655
diff changeset
325
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 95655
diff changeset
326 /* Definitions copied from lwlib.h */
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 95655
diff changeset
327
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 95655
diff changeset
328 enum button_type
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 95655
diff changeset
329 {
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 95655
diff changeset
330 BUTTON_TYPE_NONE,
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 95655
diff changeset
331 BUTTON_TYPE_TOGGLE,
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 95655
diff changeset
332 BUTTON_TYPE_RADIO
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 95655
diff changeset
333 };
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 95655
diff changeset
334
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 95655
diff changeset
335 /* This structure is based on the one in ../lwlib/lwlib.h, with unused portions
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 95655
diff changeset
336 removed. No term uses these. */
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 95655
diff changeset
337 typedef struct _widget_value
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 95655
diff changeset
338 {
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 95655
diff changeset
339 /* name of widget */
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 95655
diff changeset
340 Lisp_Object lname;
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 95655
diff changeset
341 char* name;
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 95655
diff changeset
342 /* value (meaning depend on widget type) */
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 95655
diff changeset
343 char* value;
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 95655
diff changeset
344 /* keyboard equivalent. no implications for XtTranslations */
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 95655
diff changeset
345 Lisp_Object lkey;
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 95655
diff changeset
346 char* key;
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 95655
diff changeset
347 /* Help string or nil if none.
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 95655
diff changeset
348 GC finds this string through the frame's menu_bar_vector
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 95655
diff changeset
349 or through menu_items. */
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 95655
diff changeset
350 Lisp_Object help;
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 95655
diff changeset
351 /* true if enabled */
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 95655
diff changeset
352 Boolean enabled;
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 95655
diff changeset
353 /* true if selected */
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 95655
diff changeset
354 Boolean selected;
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 95655
diff changeset
355 /* The type of a button. */
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 95655
diff changeset
356 enum button_type button_type;
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 95655
diff changeset
357 #if defined (HAVE_NTGUI)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 95655
diff changeset
358 /* true if menu title */
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 95655
diff changeset
359 Boolean title;
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 95655
diff changeset
360 #endif
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 95655
diff changeset
361 /* Contents of the sub-widgets, also selected slot for checkbox */
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 95655
diff changeset
362 struct _widget_value* contents;
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 95655
diff changeset
363 /* data passed to callback */
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 95655
diff changeset
364 XtPointer call_data;
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 95655
diff changeset
365 /* next one in the list */
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 95655
diff changeset
366 struct _widget_value* next;
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 95655
diff changeset
367 } widget_value;
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 95655
diff changeset
368
97198
cf43f4e3ecc8 clear warnings and clean up NS port
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 97141
diff changeset
369 extern widget_value *xmalloc_widget_value P_ ((void));
cf43f4e3ecc8 clear warnings and clean up NS port
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 97141
diff changeset
370 extern widget_value *digest_single_submenu P_ ((int, int, int));
97266
80acedef7417 cleanup in s/darwin.h, define DARWIN_OS and use it instead of DARWIN and/or MAC_OSX; also, nsterm.m: small unrelated cleanups
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 97202
diff changeset
371 #endif /* HAVE_NS || HAVE_NTGUI */
97198
cf43f4e3ecc8 clear warnings and clean up NS port
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 97141
diff changeset
372
21297
41ed45a73873 (item_properties): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 20318
diff changeset
373
518
3a316f923456 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
374 /* Macros for dealing with lispy events. */
3a316f923456 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
375
78501
1677cf1c2509 Replace `iff' in comments.
Glenn Morris <rgm@gnu.org>
parents: 78260
diff changeset
376 /* True if EVENT has data fields describing it (i.e. a mouse click). */
9141
e309bb9ccdc0 (EVENT_HAS_PARAMETERS): Use type test macros.
Karl Heuer <kwzh@gnu.org>
parents: 8654
diff changeset
377 #define EVENT_HAS_PARAMETERS(event) (CONSP (event))
1311
339a82d29dfa * keyboard.h (EVENT_HAS_PARAMETERS): Definition changed - all events
Jim Blandy <jimb@redhat.com>
parents: 1191
diff changeset
378
1313
ddbcabc6dcc9 Doc fixes.
Jim Blandy <jimb@redhat.com>
parents: 1311
diff changeset
379 /* Extract the head from an event.
ddbcabc6dcc9 Doc fixes.
Jim Blandy <jimb@redhat.com>
parents: 1311
diff changeset
380 This works on composite and simple events. */
1311
339a82d29dfa * keyboard.h (EVENT_HAS_PARAMETERS): Definition changed - all events
Jim Blandy <jimb@redhat.com>
parents: 1191
diff changeset
381 #define EVENT_HEAD(event) \
25640
69c2d34eb25c Use XCAR and XCDR.
Ken Raeburn <raeburn@raeburn.org>
parents: 25546
diff changeset
382 (EVENT_HAS_PARAMETERS (event) ? XCAR (event) : (event))
518
3a316f923456 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
383
1313
ddbcabc6dcc9 Doc fixes.
Jim Blandy <jimb@redhat.com>
parents: 1311
diff changeset
384 /* Extract the starting and ending positions from a composite event. */
25640
69c2d34eb25c Use XCAR and XCDR.
Ken Raeburn <raeburn@raeburn.org>
parents: 25546
diff changeset
385 #define EVENT_START(event) (XCAR (XCDR (event)))
69c2d34eb25c Use XCAR and XCDR.
Ken Raeburn <raeburn@raeburn.org>
parents: 25546
diff changeset
386 #define EVENT_END(event) (XCAR (XCDR (XCDR (event))))
1311
339a82d29dfa * keyboard.h (EVENT_HAS_PARAMETERS): Definition changed - all events
Jim Blandy <jimb@redhat.com>
parents: 1191
diff changeset
387
3990
8ef557c6a30a * keyboard.h (EVENT_CLICK_COUNT, POSN_SCROLLBAR_PART): New
Jim Blandy <jimb@redhat.com>
parents: 3591
diff changeset
388 /* Extract the click count from a multi-click event. */
53179
388eeb8e7158 (EVENT_CLICK_COUNT, POSN_SCROLLBAR_PART): Fix defines.
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
389 #define EVENT_CLICK_COUNT(event) (Fnth (make_number (2), (event)))
3990
8ef557c6a30a * keyboard.h (EVENT_CLICK_COUNT, POSN_SCROLLBAR_PART): New
Jim Blandy <jimb@redhat.com>
parents: 3591
diff changeset
390
1313
ddbcabc6dcc9 Doc fixes.
Jim Blandy <jimb@redhat.com>
parents: 1311
diff changeset
391 /* Extract the fields of a position. */
25640
69c2d34eb25c Use XCAR and XCDR.
Ken Raeburn <raeburn@raeburn.org>
parents: 25546
diff changeset
392 #define POSN_WINDOW(posn) (XCAR (posn))
53516
d8b5f748ccdd (POSN_POSN, POSN_SET_POSN): Rename macros from
Kim F. Storm <storm@cua.dk>
parents: 53179
diff changeset
393 #define POSN_POSN(posn) (XCAR (XCDR (posn)))
d8b5f748ccdd (POSN_POSN, POSN_SET_POSN): Rename macros from
Kim F. Storm <storm@cua.dk>
parents: 53179
diff changeset
394 #define POSN_SET_POSN(posn,x) (XSETCAR (XCDR (posn), (x)))
25640
69c2d34eb25c Use XCAR and XCDR.
Ken Raeburn <raeburn@raeburn.org>
parents: 25546
diff changeset
395 #define POSN_WINDOW_POSN(posn) (XCAR (XCDR (XCDR (posn))))
53516
d8b5f748ccdd (POSN_POSN, POSN_SET_POSN): Rename macros from
Kim F. Storm <storm@cua.dk>
parents: 53179
diff changeset
396 #define POSN_TIMESTAMP(posn) (XCAR (XCDR (XCDR (XCDR (posn)))))
53179
388eeb8e7158 (EVENT_CLICK_COUNT, POSN_SCROLLBAR_PART): Fix defines.
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
397 #define POSN_SCROLLBAR_PART(posn) (Fnth (make_number (4), (posn)))
518
3a316f923456 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
398
25020
b4fa5b2f7e8c (POSN_STRING): New.
Gerd Moellmann <gerd@gnu.org>
parents: 23799
diff changeset
399 /* A cons (STRING . STRING-CHARPOS), or nil in mouse-click events.
b4fa5b2f7e8c (POSN_STRING): New.
Gerd Moellmann <gerd@gnu.org>
parents: 23799
diff changeset
400 It's a cons if the click is over a string in the mode line. */
b4fa5b2f7e8c (POSN_STRING): New.
Gerd Moellmann <gerd@gnu.org>
parents: 23799
diff changeset
401
53516
d8b5f748ccdd (POSN_POSN, POSN_SET_POSN): Rename macros from
Kim F. Storm <storm@cua.dk>
parents: 53179
diff changeset
402 #define POSN_STRING(posn) (Fnth (make_number (4), (posn)))
d8b5f748ccdd (POSN_POSN, POSN_SET_POSN): Rename macros from
Kim F. Storm <storm@cua.dk>
parents: 53179
diff changeset
403
d8b5f748ccdd (POSN_POSN, POSN_SET_POSN): Rename macros from
Kim F. Storm <storm@cua.dk>
parents: 53179
diff changeset
404 /* If POSN_STRING is nil, event refers to buffer location. */
d8b5f748ccdd (POSN_POSN, POSN_SET_POSN): Rename macros from
Kim F. Storm <storm@cua.dk>
parents: 53179
diff changeset
405
d8b5f748ccdd (POSN_POSN, POSN_SET_POSN): Rename macros from
Kim F. Storm <storm@cua.dk>
parents: 53179
diff changeset
406 #define POSN_INBUFFER_P(posn) (NILP (POSN_STRING (posn)))
d8b5f748ccdd (POSN_POSN, POSN_SET_POSN): Rename macros from
Kim F. Storm <storm@cua.dk>
parents: 53179
diff changeset
407 #define POSN_BUFFER_POSN(posn) (Fnth (make_number (5), (posn)))
25020
b4fa5b2f7e8c (POSN_STRING): New.
Gerd Moellmann <gerd@gnu.org>
parents: 23799
diff changeset
408
518
3a316f923456 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
409 /* Some of the event heads. */
1387
774897fea33a * keyboard.h (Qswitch_frame): Declare this extern.
Jim Blandy <jimb@redhat.com>
parents: 1313
diff changeset
410 extern Lisp_Object Qswitch_frame;
518
3a316f923456 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
411
3a316f923456 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
412 /* Properties on event heads. */
1311
339a82d29dfa * keyboard.h (EVENT_HAS_PARAMETERS): Definition changed - all events
Jim Blandy <jimb@redhat.com>
parents: 1191
diff changeset
413 extern Lisp_Object Qevent_kind, Qevent_symbol_elements;
518
3a316f923456 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
414
3a316f923456 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
415 /* Getting an unmodified version of an event head. */
3a316f923456 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
416 #define EVENT_HEAD_UNMODIFIED(event_head) \
1311
339a82d29dfa * keyboard.h (EVENT_HAS_PARAMETERS): Definition changed - all events
Jim Blandy <jimb@redhat.com>
parents: 1191
diff changeset
417 (Fcar (Fget ((event_head), Qevent_symbol_elements)))
518
3a316f923456 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
418
3a316f923456 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
419 /* The values of Qevent_kind properties. */
3a316f923456 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
420 extern Lisp_Object Qfunction_key, Qmouse_click, Qmouse_movement;
1989
b1c1ab20f810 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1821
diff changeset
421 extern Lisp_Object Qscroll_bar_movement;
518
3a316f923456 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
422
3a316f923456 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
423 /* Getting the kind of an event head. */
3a316f923456 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
424 #define EVENT_HEAD_KIND(event_head) \
3a316f923456 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
425 (Fget ((event_head), Qevent_kind))
3a316f923456 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
426
3a316f923456 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
427 /* Symbols to use for non-text mouse positions. */
25546
Gerd Moellmann <gerd@gnu.org>
parents: 25020
diff changeset
428 extern Lisp_Object Qmode_line, Qvertical_line, Qheader_line;
518
3a316f923456 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
429
20318
1507c5324f4c Add prototypes and more function declarations.
Andreas Schwab <schwab@suse.de>
parents: 17875
diff changeset
430 /* Forward declaration for prototypes. */
1507c5324f4c Add prototypes and more function declarations.
Andreas Schwab <schwab@suse.de>
parents: 17875
diff changeset
431 struct input_event;
1507c5324f4c Add prototypes and more function declarations.
Andreas Schwab <schwab@suse.de>
parents: 17875
diff changeset
432
23799
0bf811ce5c67 (parse_modifiers): Declare prototype.
Geoff Voelker <voelker@cs.washington.edu>
parents: 22385
diff changeset
433 extern Lisp_Object parse_modifiers P_ ((Lisp_Object));
20318
1507c5324f4c Add prototypes and more function declarations.
Andreas Schwab <schwab@suse.de>
parents: 17875
diff changeset
434 extern Lisp_Object reorder_modifiers P_ ((Lisp_Object));
72134
594b286900a3 * keyboard.h: Include systime.h. Update read_char prototype.
Chong Yidong <cyd@stupidchicken.com>
parents: 68651
diff changeset
435 extern Lisp_Object read_char P_ ((int, int, Lisp_Object *, Lisp_Object,
594b286900a3 * keyboard.h: Include systime.h. Update read_char prototype.
Chong Yidong <cyd@stupidchicken.com>
parents: 68651
diff changeset
436 int *, EMACS_TIME *));
96747
ebf3bd5f0017 * keymap.c: Remove all NS-specific code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96675
diff changeset
437 extern int parse_solitary_modifier (Lisp_Object symbol);
83533
02e39decdc84 Merged from emacs@sv.gnu.org
Karoly Lorentey <lorentey@elte.hu>
parents: 83468 72134
diff changeset
438
1113
0ffcf74fb8ad entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
439
83346
7372c2f9daac Rename function-key-map to local-function-key-map, and global-function-key-map to function-key-map. Same for key-translation-map.
Karoly Lorentey <lorentey@elte.hu>
parents: 83342
diff changeset
440 /* Parent keymap of terminal-local function-key-map instances. */
7372c2f9daac Rename function-key-map to local-function-key-map, and global-function-key-map to function-key-map. Same for key-translation-map.
Karoly Lorentey <lorentey@elte.hu>
parents: 83342
diff changeset
441 extern Lisp_Object Vfunction_key_map;
7372c2f9daac Rename function-key-map to local-function-key-map, and global-function-key-map to function-key-map. Same for key-translation-map.
Karoly Lorentey <lorentey@elte.hu>
parents: 83342
diff changeset
442
85106
fd282fb888de Add new `input-decode-map' keymap and use it for temrinal
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 83652
diff changeset
443 /* Keymap of key translations that can override keymaps. */
83346
7372c2f9daac Rename function-key-map to local-function-key-map, and global-function-key-map to function-key-map. Same for key-translation-map.
Karoly Lorentey <lorentey@elte.hu>
parents: 83342
diff changeset
444 extern Lisp_Object Vkey_translation_map;
1113
0ffcf74fb8ad entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
445
21515
fb4c986db0e2 Add more prototypes.
Andreas Schwab <schwab@suse.de>
parents: 21297
diff changeset
446 extern int parse_menu_item P_ ((Lisp_Object, int, int));
21297
41ed45a73873 (item_properties): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 20318
diff changeset
447
20318
1507c5324f4c Add prototypes and more function declarations.
Andreas Schwab <schwab@suse.de>
parents: 17875
diff changeset
448 extern void echo_now P_ ((void));
1507c5324f4c Add prototypes and more function declarations.
Andreas Schwab <schwab@suse.de>
parents: 17875
diff changeset
449 extern void init_kboard P_ ((KBOARD *));
1507c5324f4c Add prototypes and more function declarations.
Andreas Schwab <schwab@suse.de>
parents: 17875
diff changeset
450 extern void delete_kboard P_ ((KBOARD *));
56526
6740a7016dea (not_single_kboard_state): Declared.
Richard M. Stallman <rms@gnu.org>
parents: 54164
diff changeset
451 extern void not_single_kboard_state P_ ((KBOARD *));
83374
0b75ace4f7ad Fix crash after y-or-n-p prompt triggered by emacsclient. (Reported by Han Boetes, analysis by Kalle Olavi Niemitalo.)
Karoly Lorentey <lorentey@elte.hu>
parents: 83353
diff changeset
452 extern void push_kboard P_ ((struct kboard *));
20318
1507c5324f4c Add prototypes and more function declarations.
Andreas Schwab <schwab@suse.de>
parents: 17875
diff changeset
453 extern void push_frame_kboard P_ ((struct frame *));
83374
0b75ace4f7ad Fix crash after y-or-n-p prompt triggered by emacsclient. (Reported by Han Boetes, analysis by Kalle Olavi Niemitalo.)
Karoly Lorentey <lorentey@elte.hu>
parents: 83353
diff changeset
454 extern void pop_kboard P_ ((void));
83449
ff74a86c2b16 Overhaul and simplify single_kboard API. Allow calls to `recursive-edit' in process filters. Small fixes.
Karoly Lorentey <lorentey@elte.hu>
parents: 83431
diff changeset
455 extern void temporarily_switch_to_single_kboard P_ ((struct frame *));
20318
1507c5324f4c Add prototypes and more function declarations.
Andreas Schwab <schwab@suse.de>
parents: 17875
diff changeset
456 extern void record_asynch_buffer_change P_ ((void));
1507c5324f4c Add prototypes and more function declarations.
Andreas Schwab <schwab@suse.de>
parents: 17875
diff changeset
457 extern SIGTYPE input_poll_signal P_ ((int));
1507c5324f4c Add prototypes and more function declarations.
Andreas Schwab <schwab@suse.de>
parents: 17875
diff changeset
458 extern void start_polling P_ ((void));
1507c5324f4c Add prototypes and more function declarations.
Andreas Schwab <schwab@suse.de>
parents: 17875
diff changeset
459 extern void stop_polling P_ ((void));
1507c5324f4c Add prototypes and more function declarations.
Andreas Schwab <schwab@suse.de>
parents: 17875
diff changeset
460 extern void set_poll_suppress_count P_ ((int));
1507c5324f4c Add prototypes and more function declarations.
Andreas Schwab <schwab@suse.de>
parents: 17875
diff changeset
461 extern void gobble_input P_ ((int));
1507c5324f4c Add prototypes and more function declarations.
Andreas Schwab <schwab@suse.de>
parents: 17875
diff changeset
462 extern int input_polling_used P_ ((void));
1507c5324f4c Add prototypes and more function declarations.
Andreas Schwab <schwab@suse.de>
parents: 17875
diff changeset
463 extern void clear_input_pending P_ ((void));
1507c5324f4c Add prototypes and more function declarations.
Andreas Schwab <schwab@suse.de>
parents: 17875
diff changeset
464 extern int requeued_events_pending_p P_ ((void));
1507c5324f4c Add prototypes and more function declarations.
Andreas Schwab <schwab@suse.de>
parents: 17875
diff changeset
465 extern void bind_polling_period P_ ((int));
1507c5324f4c Add prototypes and more function declarations.
Andreas Schwab <schwab@suse.de>
parents: 17875
diff changeset
466 extern void stuff_buffered_input P_ ((Lisp_Object));
1507c5324f4c Add prototypes and more function declarations.
Andreas Schwab <schwab@suse.de>
parents: 17875
diff changeset
467 extern void clear_waiting_for_input P_ ((void));
1507c5324f4c Add prototypes and more function declarations.
Andreas Schwab <schwab@suse.de>
parents: 17875
diff changeset
468 extern void swallow_events P_ ((int));
1507c5324f4c Add prototypes and more function declarations.
Andreas Schwab <schwab@suse.de>
parents: 17875
diff changeset
469 extern int help_char_p P_ ((Lisp_Object));
31873
3440ceda4745 (quit_throw_to_read_char): Declare NO_RETURN.
Gerd Moellmann <gerd@gnu.org>
parents: 31012
diff changeset
470 extern void quit_throw_to_read_char P_ ((void)) NO_RETURN;
20318
1507c5324f4c Add prototypes and more function declarations.
Andreas Schwab <schwab@suse.de>
parents: 17875
diff changeset
471 extern void cmd_error_internal P_ ((Lisp_Object, char *));
1507c5324f4c Add prototypes and more function declarations.
Andreas Schwab <schwab@suse.de>
parents: 17875
diff changeset
472 extern int lucid_event_type_list_p P_ ((Lisp_Object));
1507c5324f4c Add prototypes and more function declarations.
Andreas Schwab <schwab@suse.de>
parents: 17875
diff changeset
473 extern void kbd_buffer_store_event P_ ((struct input_event *));
54164
fe5d50158fb4 (kbd_buffer_store_event_hold): Add prototype.
Kim F. Storm <storm@cua.dk>
parents: 53516
diff changeset
474 extern void kbd_buffer_store_event_hold P_ ((struct input_event *,
fe5d50158fb4 (kbd_buffer_store_event_hold): Add prototype.
Kim F. Storm <storm@cua.dk>
parents: 53516
diff changeset
475 struct input_event *));
57951
fbbae2d9a2f4 (kbd_buffer_unget_event): Add prototype.
Kim F. Storm <storm@cua.dk>
parents: 57411
diff changeset
476 extern void kbd_buffer_unget_event P_ ((struct input_event *));
29783
6ddcb068053d (poll_for_input_1): Declare.
Dave Love <fx@gnu.org>
parents: 27424
diff changeset
477 #ifdef POLL_FOR_INPUT
6ddcb068053d (poll_for_input_1): Declare.
Dave Love <fx@gnu.org>
parents: 27424
diff changeset
478 extern void poll_for_input_1 P_ ((void));
6ddcb068053d (poll_for_input_1): Declare.
Dave Love <fx@gnu.org>
parents: 27424
diff changeset
479 #endif
30301
5584f2db8500 (show_help_echo, gen_help_event): Change prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 30213
diff changeset
480 extern void show_help_echo P_ ((Lisp_Object, Lisp_Object, Lisp_Object,
5584f2db8500 (show_help_echo, gen_help_event): Change prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 30213
diff changeset
481 Lisp_Object, int));
54164
fe5d50158fb4 (kbd_buffer_store_event_hold): Add prototype.
Kim F. Storm <storm@cua.dk>
parents: 53516
diff changeset
482 extern void gen_help_event P_ ((Lisp_Object, Lisp_Object, Lisp_Object,
fe5d50158fb4 (kbd_buffer_store_event_hold): Add prototype.
Kim F. Storm <storm@cua.dk>
parents: 53516
diff changeset
483 Lisp_Object, int));
30213
a6cb500e4bc6 (gen_help_event, kbd_buffer_store_help_event):
Gerd Moellmann <gerd@gnu.org>
parents: 30143
diff changeset
484 extern void kbd_buffer_store_help_event P_ ((Lisp_Object, Lisp_Object));
30676
13034314ea4c (menu_item_eval_property): Declare.
Ken Raeburn <raeburn@raeburn.org>
parents: 30301
diff changeset
485 extern Lisp_Object menu_item_eval_property P_ ((Lisp_Object));
30710
17973241c0d2 (kbd_buffer_events_waiting): Add prototype.
Eli Zaretskii <eliz@gnu.org>
parents: 30676
diff changeset
486 extern int kbd_buffer_events_waiting P_ ((int));
74612
e0cd1d7ea60c (add_user_signals): Add extern.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 72541
diff changeset
487 extern void add_user_signals P_ ((int, const char *));
52401
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 49600
diff changeset
488
83431
76396de7f50a Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents: 83429
diff changeset
489 extern int tty_read_avail_input P_ ((struct terminal *, int,
83067
b44978264e1d Merged in changes from CVS HEAD
Karoly Lorentey <lorentey@elte.hu>
parents: 83011 54164
diff changeset
490 struct input_event *));
83011
c4d4cbf86260 Changed tty input code to use read_socket_hook.
Karoly Lorentey <lorentey@elte.hu>
parents: 83010
diff changeset
491
52401
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 49600
diff changeset
492 /* arch-tag: 769cbade-1ba9-4950-b886-db265b061aa3
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 49600
diff changeset
493 (do not change this comment) */