aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorKenichi Handa2011-07-07 08:28:00 +0900
committerKenichi Handa2011-07-07 08:28:00 +0900
commitd2a0a50628933d3cdb09818eee2e17f55e22531f (patch)
treed19c8e71eb63eb6ccd204c2f36f406e4cf853154 /src
parentc805dec0b5fa81b5c9f2b724e2ec12a17d723aca (diff)
parent354cf0ba0b20108c9776be1d868458893bc2cd54 (diff)
downloademacs-d2a0a50628933d3cdb09818eee2e17f55e22531f.tar.gz
emacs-d2a0a50628933d3cdb09818eee2e17f55e22531f.zip
merge trunk
Diffstat (limited to 'src')
-rw-r--r--src/ChangeLog432
-rw-r--r--src/ChangeLog.92
-rw-r--r--src/Makefile.in8
-rw-r--r--src/alloc.c13
-rw-r--r--src/bidi.c4
-rw-r--r--src/buffer.c66
-rw-r--r--src/buffer.h4
-rw-r--r--src/bytecode.c6
-rw-r--r--src/callint.c56
-rw-r--r--src/casefiddle.c3
-rw-r--r--src/casetab.c6
-rw-r--r--src/category.c12
-rw-r--r--src/ccl.c23
-rw-r--r--src/character.h3
-rw-r--r--src/cmds.c19
-rw-r--r--src/coding.c2
-rw-r--r--src/composite.c10
-rw-r--r--src/dbusbind.c144
-rw-r--r--src/dired.c22
-rw-r--r--src/dispnew.c7
-rw-r--r--src/doc.c3
-rw-r--r--src/editfns.c23
-rw-r--r--src/emacs.c6
-rw-r--r--src/emacsgtkfixed.c101
-rw-r--r--src/emacsgtkfixed.h8
-rw-r--r--src/eval.c106
-rw-r--r--src/fileio.c157
-rw-r--r--src/fns.c86
-rw-r--r--src/frame.c145
-rw-r--r--src/fringe.c18
-rw-r--r--src/gnutls.c83
-rw-r--r--src/gtkutil.c16
-rw-r--r--src/image.c2
-rw-r--r--src/insdel.c3
-rw-r--r--src/keyboard.c17
-rw-r--r--src/keyboard.h2
-rw-r--r--src/keymap.c569
-rw-r--r--src/lisp.h8
-rw-r--r--src/lread.c267
-rw-r--r--src/macros.c25
-rw-r--r--src/makefile.w32-in1679
-rw-r--r--src/minibuf.c96
-rw-r--r--src/msdos.c3
-rw-r--r--src/print.c52
-rw-r--r--src/process.c261
-rw-r--r--src/search.c6
-rw-r--r--src/sound.c12
-rw-r--r--src/syntax.c9
-rw-r--r--src/sysdep.c42
-rw-r--r--src/terminal.c6
-rw-r--r--src/textprop.c64
-rw-r--r--src/undo.c7
-rw-r--r--src/w32.c3
-rw-r--r--src/w32fns.c4
-rw-r--r--src/w32menu.c1
-rw-r--r--src/w32proc.c1
-rw-r--r--src/w32select.c1
-rw-r--r--src/window.c231
-rw-r--r--src/window.h4
-rw-r--r--src/xdisp.c207
-rw-r--r--src/xfaces.c227
-rw-r--r--src/xfns.c23
-rw-r--r--src/xgselect.c10
-rw-r--r--src/xmenu.c3
-rw-r--r--src/xsettings.c433
-rw-r--r--src/xterm.c10
66 files changed, 2692 insertions, 3190 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index 1a56298ee20..a3536cda7a4 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -40,6 +40,426 @@
40 * font.c (font_range): Adjusted for the change of 40 * font.c (font_range): Adjusted for the change of
41 Vunicode_category_table. 41 Vunicode_category_table.
42 42
432011-07-06 Paul Eggert <eggert@cs.ucla.edu>
44
45 Remove unportable assumption about struct layout (Bug#8884).
46 * alloc.c (mark_buffer):
47 * buffer.c (reset_buffer_local_variables, Fbuffer_local_variables)
48 (clone_per_buffer_values): Don't assume that
49 sizeof (struct buffer) is a multiple of sizeof (Lisp_Object).
50 This isn't true in general, and it's particularly not true
51 if Emacs is configured with --with-wide-int.
52 * buffer.h (FIRST_FIELD_PER_BUFFER, LAST_FIELD_PER_BUFFER):
53 New macros, used in the buffer.c change.
54
552011-07-05 Jan Djärv <jan.h.d@swipnet.se>
56
57 * xsettings.c: Use both GConf and GSettings if both are available.
58 (store_config_changed_event): Add comment.
59 (dpyinfo_valid, store_font_name_changed, map_tool_bar_style)
60 (store_tool_bar_style_changed): New functions.
61 (store_monospaced_changed): Add comment. Call dpyinfo_valid.
62 (struct xsettings): Move font inside HAVE_XFT.
63 (GSETTINGS_TOOL_BAR_STYLE, GSETTINGS_FONT_NAME): New defines.
64 (GSETTINGS_MONO_FONT): Renamed from SYSTEM_MONO_FONT.
65 Move inside HAVE_XFT.
66 (something_changed_gsettingsCB): Renamed from something_changedCB.
67 Check for changes in GSETTINGS_TOOL_BAR_STYLE and GSETTINGS_FONT_NAME
68 also.
69 (GCONF_TOOL_BAR_STYLE, GCONF_FONT_NAME): New defines.
70 (GCONF_MONO_FONT): Renamed from SYSTEM_MONO_FONT. Move inside HAVE_XFT.
71 (something_changed_gconfCB): Renamed from something_changedCB.
72 Check for changes in GCONF_TOOL_BAR_STYLE and GCONF_FONT_NAME also.
73 (parse_settings): Move check for font inside HAVE_XFT.
74 (read_settings, apply_xft_settings): Add comment.
75 (read_and_apply_settings): Add comment. Call map_tool_bar_style and
76 store_tool_bar_style_changed. Move check for font inside HAVE_XFT and
77 call store_font_name_changed.
78 (xft_settings_event): Add comment.
79 (init_gsettings): Add comment. Get values for GSETTINGS_TOOL_BAR_STYLE
80 and GSETTINGS_FONT_NAME. Move check for fonts within HAVE_XFT.
81 (init_gconf): Add comment. Get values for GCONF_TOOL_BAR_STYLE
82 and GCONF_FONT_NAME. Move check for fonts within HAVE_XFT.
83 (xsettings_initialize): Call init_gsettings last.
84 (xsettings_get_system_font, xsettings_get_system_normal_font): Add
85 comment.
86
872011-07-05 Paul Eggert <eggert@cs.ucla.edu>
88
89 Random fixes. E.g., (random) never returned negative values.
90 * fns.c (Frandom): Use GET_EMACS_TIME for random seed, and add the
91 subseconds part to the entropy, as that's a bit more random.
92 Prefer signed to unsigned, since the signedness doesn't matter and
93 in general we prefer signed. When given a limit, use a
94 denominator equal to INTMASK + 1, not to VALMASK + 1, because the
95 latter isn't right if USE_2_TAGS_FOR_INTS.
96 * sysdep.c (get_random): Return a value in the range 0..INTMASK,
97 not 0..VALMASK. Don't discard "excess" bits that random () returns.
98
992011-07-04 Stefan Monnier <monnier@iro.umontreal.ca>
100
101 * textprop.c (text_property_stickiness):
102 Obey Vtext_property_default_nonsticky.
103 (syms_of_textprop): Add `display' to Vtext_property_default_nonsticky.
104 * w32fns.c (syms_of_w32fns):
105 * xfns.c (syms_of_xfns): Don't Add `display' since it's there by default.
106
1072011-07-04 Paul Eggert <eggert@cs.ucla.edu>
108
109 * fileio.c (barf_or_query_if_file_exists): Use S_ISDIR.
110 This is more efficient than Ffile_directory_p and avoids a minor race.
111
1122011-07-04 Lars Magne Ingebrigtsen <larsi@gnus.org>
113
114 * buffer.c (Foverlay_put): Say what the return value is
115 (bug#7835).
116
117 * fileio.c (barf_or_query_if_file_exists): Check first if the file
118 is a directory before asking whether to use the file name
119 (bug#7564).
120 (barf_or_query_if_file_exists): Make the "File is a directory"
121 error be more correct.
122
123 * fns.c (Frequire): Remove the mention of the .gz files, since
124 that's installation-specific, but keep the mention of
125 `get-load-suffixes'.
126
1272011-07-04 Paul Eggert <eggert@cs.ucla.edu>
128
129 * editfns.c (Fformat_time_string): Don't assume strlen fits in int.
130 Report string overflow if the output is too long.
131
1322011-07-04 Juanma Barranquero <lekktu@gmail.com>
133
134 * gnutls.c (Fgnutls_boot): Don't mention :verify-error.
135 (syms_of_gnutls): Remove duplicate DEFSYM for
136 Qgnutls_bootprop_verify_hostname_error, an error for
137 Qgnutls_bootprop_verify_error (which is no longer used).
138
139 * eval.c (find_handler_clause): Remove parameters `sig' and `data',
140 unused since 2011-01-26T20:02:07Z!monnier@iro.umontreal.ca. All callers changed.
141 Also (re)move comments that are misplaced or no longer relevant.
142
1432011-07-03 Lars Magne Ingebrigtsen <larsi@gnus.org>
144
145 * callint.c (Finteractive): Clarify the meaning of "@" (bug#8813).
146
1472011-07-03 Chong Yidong <cyd@stupidchicken.com>
148
149 * xfaces.c (Finternal_merge_in_global_face): Modify the foreground
150 and background color parameters if they have been changed.
151
1522011-07-03 Lars Magne Ingebrigtsen <larsi@gnus.org>
153
154 * editfns.c (Fformat): Clarify the - and 0 flags (bug#6659).
155
1562011-07-03 Paul Eggert <eggert@cs.ucla.edu>
157
158 * xsettings.c (SYSTEM_FONT): Define only when used.
159 No need to define when HAVE_GSETTINGS || !HAVE_XFT.
160
161 * keymap.c (access_keymap_1): Now static.
162
1632011-07-02 Chong Yidong <cyd@stupidchicken.com>
164
165 * keyboard.c (command_loop_1): If a down-mouse event is unbound,
166 leave any prefix arg for the up event (Bug#1586).
167
1682011-07-02 Lars Magne Ingebrigtsen <larsi@gnus.org>
169
170 * lread.c (syms_of_lread): Mention single symbols defined by
171 `defvar' or `defconst' (bug#7154).
172
173 * fns.c (Frequire): Mention .el.gz files (bug#7314).
174 (Frequire): Mention get-load-suffixes.
175
1762011-07-02 Martin Rudalics <rudalics@gmx.at>
177
178 * window.h (window): Remove clone_number slot.
179 * window.c (Fwindow_clone_number, Fset_window_clone_number):
180 Remove.
181 (make_parent_window, make_window, saved_window)
182 (Fset_window_configuration, save_window_save): Don't deal with
183 clone numbers.
184 * buffer.c (Qclone_number): Remove declaration.
185 (sort_overlays, overlay_strings): Don't deal with clone numbers.
186
1872011-07-02 Stefan Monnier <monnier@iro.umontreal.ca>
188
189 Add multiple inheritance to keymaps.
190 * keymap.c (Fmake_composed_keymap): New function.
191 (Fset_keymap_parent): Simplify.
192 (fix_submap_inheritance): Remove.
193 (access_keymap_1): New function extracted from access_keymap to handle
194 embedded parents and handle lists of maps.
195 (access_keymap): Use it.
196 (Fkeymap_prompt, map_keymap_internal, map_keymap, store_in_keymap)
197 (Fcopy_keymap): Handle embedded parents.
198 (Fcommand_remapping, define_as_prefix): Simplify.
199 (Fkey_binding): Simplify.
200 (syms_of_keymap): Move minibuffer-local-completion-map,
201 minibuffer-local-filename-completion-map,
202 minibuffer-local-must-match-map, and
203 minibuffer-local-filename-must-match-map to Elisp.
204 (syms_of_keymap): Defsubr make-composed-keymap.
205 * keyboard.c (menu_bar_items): Use map_keymap_canonical.
206 (parse_menu_item): Trivial simplification.
207
2082011-07-01 Glenn Morris <rgm@gnu.org>
209
210 * Makefile.in (SETTINGS_LIBS): Fix typo.
211
2122011-07-01 Kazuhiro Ito <kzhr@d1.dion.ne.jp> (tiny patch)
213
214 * coding.c (Fencode_coding_string): Record the last coding system
215 used, as the function doc string says (bug#8738).
216
2172011-07-01 Jan Djärv <jan.h.d@swipnet.se>
218
219 * xsettings.c (store_monospaced_changed): Take new font as arg and
220 check for change against current_mono_font.
221 (EMACS_TYPE_SETTINGS): Remove this and related defines.
222 (emacs_settings_constructor, emacs_settings_get_property)
223 (emacs_settings_set_property, emacs_settings_class_init)
224 (emacs_settings_init, gsettings_obj): Remove.
225 (something_changedCB): New function for HAVE_GSETTINGS.
226 (something_changedCB): HAVE_GCONF: Call store_monospaced_changed
227 with value as argument.
228 (init_gsettings): Check that GSETTINGS_SCHEMA exists before calling
229 g_settings_new (Bug#8967). Do not create gsettings_obj.
230 Remove calls to g_settings_bind. Connect something_changedCB to
231 "changed".
232
233 * xgselect.c: Add defined (HAVE_GSETTINGS).
234 (xgselect_initialize): Ditto.
235
236 * process.c: Add defined (HAVE_GSETTINGS) for xgselect.h
237 (wait_reading_process_output): Add defined (HAVE_GSETTINGS) for
238 xg_select.
239
2402011-07-01 Paul Eggert <eggert@cs.ucla.edu>
241
242 * eval.c (struct backtrace): Simplify and port the data structure.
243 Do not assume that "int nargs : BITS_PER_INT - 2;" produces a
244 signed bit field, as this assumption is not portable and it makes
245 Emacs crash when compiled with Sun C 5.8 on sparc. Do not use
246 "char debug_on_exit : 1" as this is not portable either; instead,
247 use the portable "unsigned int debug_on_exit : 1". Remove unused
248 member evalargs. Remove obsolete comments about cc bombing out.
249
2502011-06-30 Jan Djärv <jan.h.d@swipnet.se>
251
252 * xsettings.c: Include glib-object.h, gio/gio.h if HAVE_GSETTINGS.
253 Let HAVE_GSETTINGS override HAVE_GCONF.
254 (store_monospaced_changed): New function.
255 (EMACS_SETTINGS): A new type derived from GObject to handle
256 GSettings notifications.
257 (emacs_settings_constructor, emacs_settings_get_property)
258 (emacs_settings_set_property, emacs_settings_class_init):
259 New functions.
260 (gsettings_client, gsettings_obj): New variables.
261 (GSETTINGS_SCHEMA): New define.
262 (something_changedCB): Call store_monospaced_changed.
263 (init_gsettings): New function.
264 (xsettings_initialize): Call init_gsettings.
265 (syms_of_xsettings): Initialize gsettings_client, gsettings_obj
266 to NULL.
267
268 * Makefile.in (SETTINGS_CFLAGS, SETTINGS_LIBS): Renamed from
269 GCONF_CFLAGS/LIBS.
270
2712011-06-29 Martin Rudalics <rudalics@gmx.at>
272
273 * window.c (resize_root_window, grow_mini_window)
274 (shrink_mini_window): Rename Qresize_root_window to
275 Qwindow_resize_root_window and Qresize_root_window_vertically to
276 Qwindow_resize_root_window_vertically.
277
2782011-06-28 Paul Eggert <eggert@cs.ucla.edu>
279
280 * gnutls.c (Qgnutls_bootprop_verify_error): Remove unused var.
281
2822011-06-27 Juanma Barranquero <lekktu@gmail.com>
283
284 * makefile.w32-in: Redesign dependencies so they reflect more
285 clearly which files are directly included by each source file,
286 and not through other includes.
287
2882011-06-27 Martin Rudalics <rudalics@gmx.at>
289
290 * buffer.c (Qclone_number): Declare static and DEFSYM it.
291 (sort_overlays, overlay_strings): When an overlay's clone number
292 matches the window's clone number process the overlay even if
293 the overlay's window property doesn't match the current window.
294
295 * window.c (Fwindow_vchild): Rename to Fwindow_top_child.
296 (Fwindow_hchild): Rename to Fwindow_left_child.
297 (Fwindow_next): Rename to Fwindow_next_sibling.
298 (Fwindow_prev): Rename to Fwindow_prev_sibling.
299 (resize_window_check): Rename to window_resize_check.
300 (resize_window_apply): Rename to window_resize_apply.
301 (Fresize_window_apply): Rename to Fwindow_resize_apply.
302 (Fdelete_other_windows_internal, resize_frame_windows)
303 (Fsplit_window_internal, Fdelete_window_internal)
304 (grow_mini_window, shrink_mini_window)
305 (Fresize_mini_window_internal): Fix callers accordingly.
306
3072011-06-26 Jan Djärv <jan.h.d@swipnet.se>
308
309 * emacsgtkfixed.h: State that this is only used with Gtk+3.
310 (emacs_fixed_set_min_size): Remove.
311 (emacs_fixed_new): Take frame as argument.
312
313 * emacsgtkfixed.c: State that this is only used with Gtk+3.
314 (_EmacsFixedPrivate): Remove minwidth/height.
315 Add struct frame *f.
316 (emacs_fixed_init): Initialize priv->f.
317 (get_parent_class, emacs_fixed_set_min_size): Remove.
318 (emacs_fixed_new): Set priv->f to argument.
319 (emacs_fixed_get_preferred_width)
320 (emacs_fixed_get_preferred_height): Use min_width/height from
321 frames size_hint to set minimum and natural (Bug#8919).
322 (XSetWMSizeHints, XSetWMNormalHints): Override these functions
323 and use min_width/height from frames size_hint to set
324 min_width/height (Bug#8919).
325
326 * gtkutil.c (xg_create_frame_widgets): Pass f to emacs_fixed_new.
327 (x_wm_set_size_hint): Remove call to emacs_fixed_set_min_size.
328 Fix indentation.
329
3302011-06-26 Eli Zaretskii <eliz@gnu.org>
331
332 * bidi.c (bidi_paragraph_init): Test for ZV_BYTE before calling
333 bidi_at_paragraph_end, since fast_looking_at doesn't like to be
334 called at ZV.
335
3362011-06-26 Chong Yidong <cyd@stupidchicken.com>
337
338 * process.c (wait_reading_process_output): Bypass select if
339 waiting for a cell while ignoring keyboard input, and input is
340 pending. Suggested by Jan Djärv (Bug#8869).
341
3422011-06-25 Paul Eggert <eggert@cs.ucla.edu>
343
344 Use gnulib's dup2 module instead of rolling our own.
345 * sysdep.c (dup2) [!HAVE_DUP2]: Remove; gnulib now does this.
346
3472011-06-25 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
348
349 * dispnew.c (scrolling_window): Before scrolling, turn off a
350 mouse-highlight in the window being scrolled.
351
3522011-06-24 Juanma Barranquero <lekktu@gmail.com>
353
354 Move DEFSYM to lisp.h and use everywhere.
355
356 * character.h (DEFSYM): Move declaration...
357 * lisp.h (DEFSYM): ...here.
358
359 * gnutls.c:
360 * minibuf.c:
361 * w32menu.c:
362 * w32proc.c:
363 * w32select.c: Don't include character.h.
364
365 * alloc.c (syms_of_alloc):
366 * buffer.c (syms_of_buffer):
367 * bytecode.c (syms_of_bytecode):
368 * callint.c (syms_of_callint):
369 * casefiddle.c (syms_of_casefiddle):
370 * casetab.c (init_casetab_once):
371 * category.c (init_category_once, syms_of_category):
372 * ccl.c (syms_of_ccl):
373 * cmds.c (syms_of_cmds):
374 * composite.c (syms_of_composite):
375 * dbusbind.c (syms_of_dbusbind):
376 * dired.c (syms_of_dired):
377 * dispnew.c (syms_of_display):
378 * doc.c (syms_of_doc):
379 * editfns.c (syms_of_editfns):
380 * emacs.c (syms_of_emacs):
381 * eval.c (syms_of_eval):
382 * fileio.c (syms_of_fileio):
383 * fns.c (syms_of_fns):
384 * frame.c (syms_of_frame):
385 * fringe.c (syms_of_fringe):
386 * insdel.c (syms_of_insdel):
387 * keymap.c (syms_of_keymap):
388 * lread.c (init_obarray, syms_of_lread):
389 * macros.c (syms_of_macros):
390 * msdos.c (syms_of_msdos):
391 * print.c (syms_of_print):
392 * process.c (syms_of_process):
393 * search.c (syms_of_search):
394 * sound.c (syms_of_sound):
395 * syntax.c (init_syntax_once, syms_of_syntax):
396 * terminal.c (syms_of_terminal):
397 * textprop.c (syms_of_textprop):
398 * undo.c (syms_of_undo):
399 * w32.c (globals_of_w32):
400 * window.c (syms_of_window):
401 * xdisp.c (syms_of_xdisp):
402 * xfaces.c (syms_of_xfaces):
403 * xfns.c (syms_of_xfns):
404 * xmenu.c (syms_of_xmenu):
405 * xsettings.c (syms_of_xsettings):
406 * xterm.c (syms_of_xterm): Use DEFSYM.
407
4082011-06-24 Teodor Zlatanov <tzz@lifelogs.com>
409
410 * gnutls.c (syms_of_gnutls): Use the DEFSYM macro from character.h.
411
4122011-06-23 Paul Eggert <eggert@cs.ucla.edu>
413
414 Integer and buffer overflow fixes (Bug#8873).
415
416 * print.c (printchar, strout): Check for string overflow.
417 (PRINTPREPARE, printchar, strout):
418 Don't set size unless allocation succeeds.
419
420 * minibuf.c (read_minibuf_noninteractive): Use ptrdiff_t, not int,
421 for sizes. Check for string overflow more accurately.
422 Simplify newline removal at end; this suppresses a GCC 4.6.0 warning.
423
424 * macros.c: Integer and buffer overflow fixes.
425 * keyboard.h (struct keyboard.kbd_macro_bufsize):
426 * macros.c (Fstart_kbd_macro, store_kbd_macro_char):
427 Use ptrdiff_t, not int, for sizes.
428 Don't increment bufsize until after realloc succeeds.
429 Check for size-calculation overflow.
430 (Fstart_kbd_macro): Use EMACS_INT, not int, for XINT result.
431
432 * lisp.h (DEFVAR_KBOARD): Use offsetof instead of char * finagling.
433
434 * lread.c: Integer overflow fixes.
435 (read_integer): Radix is now EMACS_INT, not int,
436 to improve quality of diagnostics for out-of-range radices.
437 Calculate buffer size correctly for out-of-range radices.
438 (read1): Check for integer overflow in radices, and in
439 read-circle numbers.
440 (read_escape): Avoid int overflow.
441 (Fload, openp, read_buffer_size, read1)
442 (substitute_object_recurse, read_vector, read_list, map_obarray):
443 Use ptrdiff_t, not int, for sizes.
444 (read1): Use EMACS_INT, not int, for sizes.
445 Check for size overflow.
446
447 * image.c (cache_image): Check for size arithmetic overflow.
448
449 * lread.c: Integer overflow issues.
450 (saved_doc_string_size, saved_doc_string_length)
451 (prev_saved_doc_string_size, prev_saved_doc_string_length):
452 Now ptrdiff_t, not int.
453 (read1): Don't assume doc string length fits in int. Check for
454 out-of-range doc string lengths.
455 (read_list): Don't assume file position fits in int.
456 (read_escape): Check for hex character overflow.
457
4582011-06-22 Leo Liu <sdl.web@gmail.com>
459
460 * minibuf.c (Fcompleting_read_default, Vcompleting_read_function):
461 Move to minibuffer.el.
462
432011-06-22 Paul Eggert <eggert@cs.ucla.edu> 4632011-06-22 Paul Eggert <eggert@cs.ucla.edu>
44 464
45 Fixes for GLYPH_DEBUG found by GCC 4.6.0 static checking. 465 Fixes for GLYPH_DEBUG found by GCC 4.6.0 static checking.
@@ -272,7 +692,7 @@
272 692
2732011-06-22 Jim Meyering <meyering@redhat.com> 6932011-06-22 Jim Meyering <meyering@redhat.com>
274 694
275 don't leak an XBM-image-sized buffer 695 Don't leak an XBM-image-sized buffer
276 * image.c (xbm_load): Free the image buffer after using it. 696 * image.c (xbm_load): Free the image buffer after using it.
277 697
2782011-06-21 Paul Eggert <eggert@cs.ucla.edu> 6982011-06-21 Paul Eggert <eggert@cs.ucla.edu>
@@ -292,7 +712,7 @@
292 712
293 * fns.c (secure_hash): Rename from crypto_hash_function and change 713 * fns.c (secure_hash): Rename from crypto_hash_function and change
294 the first arg to accept symbols. 714 the first arg to accept symbols.
295 (Fsecure_hash): New primtive. 715 (Fsecure_hash): New primitive.
296 (syms_of_fns): New symbols. 716 (syms_of_fns): New symbols.
297 717
2982011-06-20 Deniz Dogan <deniz@dogan.se> 7182011-06-20 Deniz Dogan <deniz@dogan.se>
@@ -1466,7 +1886,7 @@
1466 and %.0c. Fix bug with strchr succeeding on '\0' when looking for 1886 and %.0c. Fix bug with strchr succeeding on '\0' when looking for
1467 flags. Fix bug with (format "%c" 256.0). Avoid integer overflow when 1887 flags. Fix bug with (format "%c" 256.0). Avoid integer overflow when
1468 formatting out-of-range floating point numbers with int 1888 formatting out-of-range floating point numbers with int
1469 formats. (Bug#8668) 1889 formats. (Bug#8668)
1470 1890
1471 * lisp.h (FIXNUM_OVERFLOW_P): Work even if arg is a NaN. 1891 * lisp.h (FIXNUM_OVERFLOW_P): Work even if arg is a NaN.
1472 1892
@@ -2430,9 +2850,9 @@
2430 :verify-hostname-error, :verify-error, and :verify-flags 2850 :verify-hostname-error, :verify-error, and :verify-flags
2431 parameters of `gnutls-boot' and documented those parameters in the 2851 parameters of `gnutls-boot' and documented those parameters in the
2432 docstring. Start callback support. 2852 docstring. Start callback support.
2433 (emacs_gnutls_handshake): Add Woe32 support. Retry handshake 2853 (emacs_gnutls_handshake): Add Woe32 support. Retry handshake
2434 unless a fatal error occured. Call gnutls_alert_send_appropriate 2854 unless a fatal error occurred. Call gnutls_alert_send_appropriate
2435 on error. Return error code. 2855 on error. Return error code.
2436 (emacs_gnutls_write): Call emacs_gnutls_handle_error. 2856 (emacs_gnutls_write): Call emacs_gnutls_handle_error.
2437 (emacs_gnutls_read): Likewise. 2857 (emacs_gnutls_read): Likewise.
2438 (Fgnutls_boot): Return handshake error code. 2858 (Fgnutls_boot): Return handshake error code.
diff --git a/src/ChangeLog.9 b/src/ChangeLog.9
index 0c39de74a6a..f25434087c1 100644
--- a/src/ChangeLog.9
+++ b/src/ChangeLog.9
@@ -5985,7 +5985,7 @@
5985 GC_PROTECT_MALLOC_STATE]: New function. 5985 GC_PROTECT_MALLOC_STATE]: New function.
5986 (PROTECT_MALLOC_STATE): New macro. 5986 (PROTECT_MALLOC_STATE): New macro.
5987 (__malloc_initialize, morecore, _malloc_internal) 5987 (__malloc_initialize, morecore, _malloc_internal)
5988 (_free_internal) _realloc_internal): Use it to make _heapinfo 5988 (_free_internal, _realloc_internal): Use it to make _heapinfo
5989 read-only outside of gmalloc. 5989 read-only outside of gmalloc.
5990 5990
5991 * keymap.c: Update copyright. 5991 * keymap.c: Update copyright.
diff --git a/src/Makefile.in b/src/Makefile.in
index c4250b90633..f628c321f70 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -152,8 +152,8 @@ DBUS_LIBS = @DBUS_LIBS@
152## dbusbind.o if HAVE_DBUS, else empty. 152## dbusbind.o if HAVE_DBUS, else empty.
153DBUS_OBJ = @DBUS_OBJ@ 153DBUS_OBJ = @DBUS_OBJ@
154 154
155GCONF_CFLAGS = @GCONF_CFLAGS@ 155SETTINGS_CFLAGS = @SETTINGS_CFLAGS@
156GCONF_LIBS = @GCONF_LIBS@ 156SETTINGS_LIBS = @SETTINGS_LIBS@
157 157
158## gtkutil.o if USE_GTK, else empty. 158## gtkutil.o if USE_GTK, else empty.
159GTK_OBJ=@GTK_OBJ@ 159GTK_OBJ=@GTK_OBJ@
@@ -305,7 +305,7 @@ ALL_CFLAGS=-Demacs -DHAVE_CONFIG_H $(MYCPPFLAGS) -I. -I$(srcdir) \
305 $(C_SWITCH_MACHINE) $(C_SWITCH_SYSTEM) $(C_SWITCH_X_SITE) \ 305 $(C_SWITCH_MACHINE) $(C_SWITCH_SYSTEM) $(C_SWITCH_X_SITE) \
306 $(C_SWITCH_X_SYSTEM) $(CFLAGS_SOUND) $(RSVG_CFLAGS) $(IMAGEMAGICK_CFLAGS) \ 306 $(C_SWITCH_X_SYSTEM) $(CFLAGS_SOUND) $(RSVG_CFLAGS) $(IMAGEMAGICK_CFLAGS) \
307 $(LIBXML2_CFLAGS) $(DBUS_CFLAGS) \ 307 $(LIBXML2_CFLAGS) $(DBUS_CFLAGS) \
308 $(GCONF_CFLAGS) $(FREETYPE_CFLAGS) $(FONTCONFIG_CFLAGS) \ 308 $(SETTINGS_CFLAGS) $(FREETYPE_CFLAGS) $(FONTCONFIG_CFLAGS) \
309 $(LIBOTF_CFLAGS) $(M17N_FLT_CFLAGS) $(DEPFLAGS) $(PROFILING_CFLAGS) \ 309 $(LIBOTF_CFLAGS) $(M17N_FLT_CFLAGS) $(DEPFLAGS) $(PROFILING_CFLAGS) \
310 $(LIBGNUTLS_CFLAGS) \ 310 $(LIBGNUTLS_CFLAGS) \
311 $(C_WARNINGS_SWITCH) $(CFLAGS) 311 $(C_WARNINGS_SWITCH) $(CFLAGS)
@@ -381,7 +381,7 @@ otherobj= $(TERMCAP_OBJ) $(PRE_ALLOC_OBJ) $(GMALLOC_OBJ) $(RALLOC_OBJ) \
381LIBES = $(LIBS) $(LIBX_BASE) $(LIBX_OTHER) $(LIBSOUND) \ 381LIBES = $(LIBS) $(LIBX_BASE) $(LIBX_OTHER) $(LIBSOUND) \
382 $(RSVG_LIBS) $(IMAGEMAGICK_LIBS) $(DBUS_LIBS) \ 382 $(RSVG_LIBS) $(IMAGEMAGICK_LIBS) $(DBUS_LIBS) \
383 $(LIBXML2_LIBS) $(LIBGPM) $(LIBRESOLV) $(LIBS_SYSTEM) \ 383 $(LIBXML2_LIBS) $(LIBGPM) $(LIBRESOLV) $(LIBS_SYSTEM) \
384 $(LIBS_TERMCAP) $(GETLOADAVG_LIBS) $(GCONF_LIBS) $(LIBSELINUX_LIBS) \ 384 $(LIBS_TERMCAP) $(GETLOADAVG_LIBS) $(SETTINGS_LIBS) $(LIBSELINUX_LIBS) \
385 $(FREETYPE_LIBS) $(FONTCONFIG_LIBS) $(LIBOTF_LIBS) $(M17N_FLT_LIBS) \ 385 $(FREETYPE_LIBS) $(FONTCONFIG_LIBS) $(LIBOTF_LIBS) $(M17N_FLT_LIBS) \
386 $(LIBGNUTLS_LIBS) \ 386 $(LIBGNUTLS_LIBS) \
387 $(LIB_GCC) $(LIB_MATH) $(LIB_STANDARD) $(LIB_GCC) 387 $(LIB_GCC) $(LIB_MATH) $(LIB_STANDARD) $(LIB_GCC)
diff --git a/src/alloc.c b/src/alloc.c
index 69623d103c3..f679787e95c 100644
--- a/src/alloc.c
+++ b/src/alloc.c
@@ -5619,7 +5619,8 @@ mark_buffer (Lisp_Object buf)
5619 /* buffer-local Lisp variables start at `undo_list', 5619 /* buffer-local Lisp variables start at `undo_list',
5620 tho only the ones from `name' on are GC'd normally. */ 5620 tho only the ones from `name' on are GC'd normally. */
5621 for (ptr = &buffer->BUFFER_INTERNAL_FIELD (name); 5621 for (ptr = &buffer->BUFFER_INTERNAL_FIELD (name);
5622 (char *)ptr < (char *)buffer + sizeof (struct buffer); 5622 ptr <= &PER_BUFFER_VALUE (buffer,
5623 PER_BUFFER_VAR_OFFSET (LAST_FIELD_PER_BUFFER));
5623 ptr++) 5624 ptr++)
5624 mark_object (*ptr); 5625 mark_object (*ptr);
5625 5626
@@ -6251,8 +6252,7 @@ do hash-consing of the objects allocated to pure space. */);
6251 DEFVAR_LISP ("post-gc-hook", Vpost_gc_hook, 6252 DEFVAR_LISP ("post-gc-hook", Vpost_gc_hook,
6252 doc: /* Hook run after garbage collection has finished. */); 6253 doc: /* Hook run after garbage collection has finished. */);
6253 Vpost_gc_hook = Qnil; 6254 Vpost_gc_hook = Qnil;
6254 Qpost_gc_hook = intern_c_string ("post-gc-hook"); 6255 DEFSYM (Qpost_gc_hook, "post-gc-hook");
6255 staticpro (&Qpost_gc_hook);
6256 6256
6257 DEFVAR_LISP ("memory-signal-data", Vmemory_signal_data, 6257 DEFVAR_LISP ("memory-signal-data", Vmemory_signal_data,
6258 doc: /* Precomputed `signal' argument for memory-full error. */); 6258 doc: /* Precomputed `signal' argument for memory-full error. */);
@@ -6266,11 +6266,8 @@ do hash-consing of the objects allocated to pure space. */);
6266 doc: /* Non-nil means Emacs cannot get much more Lisp memory. */); 6266 doc: /* Non-nil means Emacs cannot get much more Lisp memory. */);
6267 Vmemory_full = Qnil; 6267 Vmemory_full = Qnil;
6268 6268
6269 staticpro (&Qgc_cons_threshold); 6269 DEFSYM (Qgc_cons_threshold, "gc-cons-threshold");
6270 Qgc_cons_threshold = intern_c_string ("gc-cons-threshold"); 6270 DEFSYM (Qchar_table_extra_slots, "char-table-extra-slots");
6271
6272 staticpro (&Qchar_table_extra_slots);
6273 Qchar_table_extra_slots = intern_c_string ("char-table-extra-slots");
6274 6271
6275 DEFVAR_LISP ("gc-elapsed", Vgc_elapsed, 6272 DEFVAR_LISP ("gc-elapsed", Vgc_elapsed,
6276 doc: /* Accumulated time elapsed in garbage collections. 6273 doc: /* Accumulated time elapsed in garbage collections.
diff --git a/src/bidi.c b/src/bidi.c
index 1f3b196d5a4..469afdb3819 100644
--- a/src/bidi.c
+++ b/src/bidi.c
@@ -744,8 +744,6 @@ bidi_paragraph_init (bidi_dir_t dir, struct bidi_it *bidi_it, int no_default_p)
744 || type == LRE || type == LRO)); 744 || type == LRE || type == LRO));
745 type = bidi_get_type (ch, NEUTRAL_DIR)) 745 type = bidi_get_type (ch, NEUTRAL_DIR))
746 { 746 {
747 if (type == NEUTRAL_B && bidi_at_paragraph_end (pos, bytepos) >= -1)
748 break;
749 if (bytepos >= ZV_BYTE) 747 if (bytepos >= ZV_BYTE)
750 { 748 {
751 /* Pretend there's a paragraph separator at end of 749 /* Pretend there's a paragraph separator at end of
@@ -753,6 +751,8 @@ bidi_paragraph_init (bidi_dir_t dir, struct bidi_it *bidi_it, int no_default_p)
753 type = NEUTRAL_B; 751 type = NEUTRAL_B;
754 break; 752 break;
755 } 753 }
754 if (type == NEUTRAL_B && bidi_at_paragraph_end (pos, bytepos) >= -1)
755 break;
756 /* Fetch next character and advance to get past it. */ 756 /* Fetch next character and advance to get past it. */
757 ch = bidi_fetch_char (bytepos, pos, &disp_pos, 757 ch = bidi_fetch_char (bytepos, pos, &disp_pos,
758 bidi_it->frame_window_p, &ch_len, &nchars); 758 bidi_it->frame_window_p, &ch_len, &nchars);
diff --git a/src/buffer.c b/src/buffer.c
index 238923a2ba0..e2f34d629e9 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -471,8 +471,8 @@ clone_per_buffer_values (struct buffer *from, struct buffer *to)
471 471
472 /* buffer-local Lisp variables start at `undo_list', 472 /* buffer-local Lisp variables start at `undo_list',
473 tho only the ones from `name' on are GC'd normally. */ 473 tho only the ones from `name' on are GC'd normally. */
474 for (offset = PER_BUFFER_VAR_OFFSET (undo_list); 474 for (offset = PER_BUFFER_VAR_OFFSET (FIRST_FIELD_PER_BUFFER);
475 offset < sizeof *to; 475 offset <= PER_BUFFER_VAR_OFFSET (LAST_FIELD_PER_BUFFER);
476 offset += sizeof (Lisp_Object)) 476 offset += sizeof (Lisp_Object))
477 { 477 {
478 Lisp_Object obj; 478 Lisp_Object obj;
@@ -830,8 +830,8 @@ reset_buffer_local_variables (register struct buffer *b, int permanent_too)
830 830
831 /* buffer-local Lisp variables start at `undo_list', 831 /* buffer-local Lisp variables start at `undo_list',
832 tho only the ones from `name' on are GC'd normally. */ 832 tho only the ones from `name' on are GC'd normally. */
833 for (offset = PER_BUFFER_VAR_OFFSET (undo_list); 833 for (offset = PER_BUFFER_VAR_OFFSET (FIRST_FIELD_PER_BUFFER);
834 offset < sizeof *b; 834 offset <= PER_BUFFER_VAR_OFFSET (LAST_FIELD_PER_BUFFER);
835 offset += sizeof (Lisp_Object)) 835 offset += sizeof (Lisp_Object))
836 { 836 {
837 int idx = PER_BUFFER_IDX (offset); 837 int idx = PER_BUFFER_IDX (offset);
@@ -1055,8 +1055,8 @@ No argument or nil as argument means use current buffer as BUFFER. */)
1055 1055
1056 /* buffer-local Lisp variables start at `undo_list', 1056 /* buffer-local Lisp variables start at `undo_list',
1057 tho only the ones from `name' on are GC'd normally. */ 1057 tho only the ones from `name' on are GC'd normally. */
1058 for (offset = PER_BUFFER_VAR_OFFSET (undo_list); 1058 for (offset = PER_BUFFER_VAR_OFFSET (FIRST_FIELD_PER_BUFFER);
1059 offset < sizeof (struct buffer); 1059 offset <= PER_BUFFER_VAR_OFFSET (LAST_FIELD_PER_BUFFER);
1060 /* sizeof EMACS_INT == sizeof Lisp_Object */ 1060 /* sizeof EMACS_INT == sizeof Lisp_Object */
1061 offset += (sizeof (EMACS_INT))) 1061 offset += (sizeof (EMACS_INT)))
1062 { 1062 {
@@ -4056,7 +4056,8 @@ DEFUN ("overlay-get", Foverlay_get, Soverlay_get, 2, 2, 0,
4056} 4056}
4057 4057
4058DEFUN ("overlay-put", Foverlay_put, Soverlay_put, 3, 3, 0, 4058DEFUN ("overlay-put", Foverlay_put, Soverlay_put, 3, 3, 0,
4059 doc: /* Set one property of overlay OVERLAY: give property PROP value VALUE. */) 4059 doc: /* Set one property of overlay OVERLAY: give property PROP value VALUE.
4060VALUE will be returned.*/)
4060 (Lisp_Object overlay, Lisp_Object prop, Lisp_Object value) 4061 (Lisp_Object overlay, Lisp_Object prop, Lisp_Object value)
4061{ 4062{
4062 Lisp_Object tail, buffer; 4063 Lisp_Object tail, buffer;
@@ -5209,39 +5210,26 @@ syms_of_buffer (void)
5209 staticpro (&Vbuffer_alist); 5210 staticpro (&Vbuffer_alist);
5210 staticpro (&Qprotected_field); 5211 staticpro (&Qprotected_field);
5211 staticpro (&Qpermanent_local); 5212 staticpro (&Qpermanent_local);
5212 Qpermanent_local_hook = intern_c_string ("permanent-local-hook");
5213 staticpro (&Qpermanent_local_hook);
5214 staticpro (&Qkill_buffer_hook); 5213 staticpro (&Qkill_buffer_hook);
5215 Qoverlayp = intern_c_string ("overlayp"); 5214
5216 staticpro (&Qoverlayp); 5215 DEFSYM (Qpermanent_local_hook, "permanent-local-hook");
5217 Qevaporate = intern_c_string ("evaporate"); 5216 DEFSYM (Qoverlayp, "overlayp");
5218 staticpro (&Qevaporate); 5217 DEFSYM (Qevaporate, "evaporate");
5219 Qmodification_hooks = intern_c_string ("modification-hooks"); 5218 DEFSYM (Qmodification_hooks, "modification-hooks");
5220 staticpro (&Qmodification_hooks); 5219 DEFSYM (Qinsert_in_front_hooks, "insert-in-front-hooks");
5221 Qinsert_in_front_hooks = intern_c_string ("insert-in-front-hooks"); 5220 DEFSYM (Qinsert_behind_hooks, "insert-behind-hooks");
5222 staticpro (&Qinsert_in_front_hooks); 5221 DEFSYM (Qget_file_buffer, "get-file-buffer");
5223 Qinsert_behind_hooks = intern_c_string ("insert-behind-hooks"); 5222 DEFSYM (Qpriority, "priority");
5224 staticpro (&Qinsert_behind_hooks); 5223 DEFSYM (Qbefore_string, "before-string");
5225 Qget_file_buffer = intern_c_string ("get-file-buffer"); 5224 DEFSYM (Qafter_string, "after-string");
5226 staticpro (&Qget_file_buffer); 5225 DEFSYM (Qfirst_change_hook, "first-change-hook");
5227 Qpriority = intern_c_string ("priority"); 5226 DEFSYM (Qbefore_change_functions, "before-change-functions");
5228 staticpro (&Qpriority); 5227 DEFSYM (Qafter_change_functions, "after-change-functions");
5229 Qbefore_string = intern_c_string ("before-string"); 5228 DEFSYM (Qkill_buffer_query_functions, "kill-buffer-query-functions");
5230 staticpro (&Qbefore_string); 5229
5231 Qafter_string = intern_c_string ("after-string");
5232 staticpro (&Qafter_string);
5233 Qfirst_change_hook = intern_c_string ("first-change-hook");
5234 staticpro (&Qfirst_change_hook);
5235 Qbefore_change_functions = intern_c_string ("before-change-functions");
5236 staticpro (&Qbefore_change_functions);
5237 Qafter_change_functions = intern_c_string ("after-change-functions");
5238 staticpro (&Qafter_change_functions);
5239 /* The next one is initialized in init_buffer_once. */ 5230 /* The next one is initialized in init_buffer_once. */
5240 staticpro (&Qucs_set_table_for_input); 5231 staticpro (&Qucs_set_table_for_input);
5241 5232
5242 Qkill_buffer_query_functions = intern_c_string ("kill-buffer-query-functions");
5243 staticpro (&Qkill_buffer_query_functions);
5244
5245 Fput (Qprotected_field, Qerror_conditions, 5233 Fput (Qprotected_field, Qerror_conditions,
5246 pure_cons (Qprotected_field, pure_cons (Qerror, Qnil))); 5234 pure_cons (Qprotected_field, pure_cons (Qerror, Qnil)));
5247 Fput (Qprotected_field, Qerror_message, 5235 Fput (Qprotected_field, Qerror_message,
@@ -6035,8 +6023,7 @@ If any of them returns nil, the buffer is not killed. */);
6035 doc: /* Normal hook run before changing the major mode of a buffer. 6023 doc: /* Normal hook run before changing the major mode of a buffer.
6036The function `kill-all-local-variables' runs this before doing anything else. */); 6024The function `kill-all-local-variables' runs this before doing anything else. */);
6037 Vchange_major_mode_hook = Qnil; 6025 Vchange_major_mode_hook = Qnil;
6038 Qchange_major_mode_hook = intern_c_string ("change-major-mode-hook"); 6026 DEFSYM (Qchange_major_mode_hook, "change-major-mode-hook");
6039 staticpro (&Qchange_major_mode_hook);
6040 6027
6041 DEFVAR_LISP ("buffer-list-update-hook", Vbuffer_list_update_hook, 6028 DEFVAR_LISP ("buffer-list-update-hook", Vbuffer_list_update_hook,
6042 doc: /* Hook run when the buffer list changes. 6029 doc: /* Hook run when the buffer list changes.
@@ -6044,8 +6031,7 @@ Functions running this hook are `get-buffer-create',
6044`make-indirect-buffer', `rename-buffer', `kill-buffer', 6031`make-indirect-buffer', `rename-buffer', `kill-buffer',
6045`record-buffer' and `unrecord-buffer'. */); 6032`record-buffer' and `unrecord-buffer'. */);
6046 Vbuffer_list_update_hook = Qnil; 6033 Vbuffer_list_update_hook = Qnil;
6047 Qbuffer_list_update_hook = intern_c_string ("buffer-list-update-hook"); 6034 DEFSYM (Qbuffer_list_update_hook, "buffer-list-update-hook");
6048 staticpro (&Qbuffer_list_update_hook);
6049 6035
6050 defsubr (&Sbuffer_live_p); 6036 defsubr (&Sbuffer_live_p);
6051 defsubr (&Sbuffer_list); 6037 defsubr (&Sbuffer_list);
diff --git a/src/buffer.h b/src/buffer.h
index 4643e0d9d0e..06864dd5789 100644
--- a/src/buffer.h
+++ b/src/buffer.h
@@ -612,6 +612,7 @@ struct buffer
612 /* Everything from here down must be a Lisp_Object. */ 612 /* Everything from here down must be a Lisp_Object. */
613 /* buffer-local Lisp variables start at `undo_list', 613 /* buffer-local Lisp variables start at `undo_list',
614 tho only the ones from `name' on are GC'd normally. */ 614 tho only the ones from `name' on are GC'd normally. */
615 #define FIRST_FIELD_PER_BUFFER undo_list
615 616
616 /* Changes in the buffer are recorded here for undo. 617 /* Changes in the buffer are recorded here for undo.
617 t means don't record anything. 618 t means don't record anything.
@@ -846,6 +847,9 @@ struct buffer
846 t means to use hollow box cursor. 847 t means to use hollow box cursor.
847 See `cursor-type' for other values. */ 848 See `cursor-type' for other values. */
848 Lisp_Object BUFFER_INTERNAL_FIELD (cursor_in_non_selected_windows); 849 Lisp_Object BUFFER_INTERNAL_FIELD (cursor_in_non_selected_windows);
850
851 /* This must be the last field in the above list. */
852 #define LAST_FIELD_PER_BUFFER cursor_in_non_selected_windows
849}; 853};
850 854
851 855
diff --git a/src/bytecode.c b/src/bytecode.c
index 58b26c79b84..9ed29e94b54 100644
--- a/src/bytecode.c
+++ b/src/bytecode.c
@@ -1840,8 +1840,7 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth,
1840void 1840void
1841syms_of_bytecode (void) 1841syms_of_bytecode (void)
1842{ 1842{
1843 Qbytecode = intern_c_string ("byte-code"); 1843 DEFSYM (Qbytecode, "byte-code");
1844 staticpro (&Qbytecode);
1845 1844
1846 defsubr (&Sbyte_code); 1845 defsubr (&Sbyte_code);
1847 1846
@@ -1863,8 +1862,7 @@ integer, it is incremented each time that symbol's function is called. */);
1863 1862
1864 byte_metering_on = 0; 1863 byte_metering_on = 0;
1865 Vbyte_code_meter = Fmake_vector (make_number (256), make_number (0)); 1864 Vbyte_code_meter = Fmake_vector (make_number (256), make_number (0));
1866 Qbyte_code_meter = intern_c_string ("byte-code-meter"); 1865 DEFSYM (Qbyte_code_meter, "byte-code-meter");
1867 staticpro (&Qbyte_code_meter);
1868 { 1866 {
1869 int i = 256; 1867 int i = 256;
1870 while (i--) 1868 while (i--)
diff --git a/src/callint.c b/src/callint.c
index dc5e6a4c37a..1371b403e4b 100644
--- a/src/callint.c
+++ b/src/callint.c
@@ -105,9 +105,10 @@ Z -- Coding system, nil if no prefix arg.
105 105
106In addition, if the string begins with `*', an error is signaled if 106In addition, if the string begins with `*', an error is signaled if
107 the buffer is read-only. 107 the buffer is read-only.
108If the string begins with `@', Emacs searches the key sequence which 108If `@' appears at the beginning of the string, and if the key sequence
109 invoked the command for its first mouse click (or any other event 109 used to invoke the command includes any mouse events, then the window
110 which specifies a window). 110 associated with the first of those events is selected before the
111 command is run.
111If the string begins with `^' and `shift-select-mode' is non-nil, 112If the string begins with `^' and `shift-select-mode' is non-nil,
112 Emacs first calls the function `handle-shift-selection'. 113 Emacs first calls the function `handle-shift-selection'.
113You may use `@', `*', and `^' together. They are processed in the 114You may use `@', `*', and `^' together. They are processed in the
@@ -896,41 +897,20 @@ syms_of_callint (void)
896 pure_cons (intern_c_string ("point"), 897 pure_cons (intern_c_string ("point"),
897 pure_cons (intern_c_string ("mark"), Qnil)))); 898 pure_cons (intern_c_string ("mark"), Qnil))));
898 899
899 Qlist = intern_c_string ("list"); 900 DEFSYM (Qlist, "list");
900 staticpro (&Qlist); 901 DEFSYM (Qlet, "let");
901 Qlet = intern_c_string ("let"); 902 DEFSYM (Qif, "if");
902 staticpro (&Qlet); 903 DEFSYM (Qwhen, "when");
903 Qif = intern_c_string ("if"); 904 DEFSYM (Qletx, "let*");
904 staticpro (&Qif); 905 DEFSYM (Qsave_excursion, "save-excursion");
905 Qwhen = intern_c_string ("when"); 906 DEFSYM (Qprogn, "progn");
906 staticpro (&Qwhen); 907 DEFSYM (Qminus, "-");
907 Qletx = intern_c_string ("let*"); 908 DEFSYM (Qplus, "+");
908 staticpro (&Qletx); 909 DEFSYM (Qhandle_shift_selection, "handle-shift-selection");
909 Qsave_excursion = intern_c_string ("save-excursion"); 910 DEFSYM (Qcall_interactively, "call-interactively");
910 staticpro (&Qsave_excursion); 911 DEFSYM (Qcommand_debug_status, "command-debug-status");
911 Qprogn = intern_c_string ("progn"); 912 DEFSYM (Qenable_recursive_minibuffers, "enable-recursive-minibuffers");
912 staticpro (&Qprogn); 913 DEFSYM (Qmouse_leave_buffer_hook, "mouse-leave-buffer-hook");
913
914 Qminus = intern_c_string ("-");
915 staticpro (&Qminus);
916
917 Qplus = intern_c_string ("+");
918 staticpro (&Qplus);
919
920 Qhandle_shift_selection = intern_c_string ("handle-shift-selection");
921 staticpro (&Qhandle_shift_selection);
922
923 Qcall_interactively = intern_c_string ("call-interactively");
924 staticpro (&Qcall_interactively);
925
926 Qcommand_debug_status = intern_c_string ("command-debug-status");
927 staticpro (&Qcommand_debug_status);
928
929 Qenable_recursive_minibuffers = intern_c_string ("enable-recursive-minibuffers");
930 staticpro (&Qenable_recursive_minibuffers);
931
932 Qmouse_leave_buffer_hook = intern_c_string ("mouse-leave-buffer-hook");
933 staticpro (&Qmouse_leave_buffer_hook);
934 914
935 DEFVAR_KBOARD ("prefix-arg", Vprefix_arg, 915 DEFVAR_KBOARD ("prefix-arg", Vprefix_arg,
936 doc: /* The value of the prefix argument for the next editing command. 916 doc: /* The value of the prefix argument for the next editing command.
diff --git a/src/casefiddle.c b/src/casefiddle.c
index 1a0a62f273c..50ad4eeda74 100644
--- a/src/casefiddle.c
+++ b/src/casefiddle.c
@@ -417,8 +417,7 @@ With negative argument, capitalize previous words but do not move. */)
417void 417void
418syms_of_casefiddle (void) 418syms_of_casefiddle (void)
419{ 419{
420 Qidentity = intern_c_string ("identity"); 420 DEFSYM (Qidentity, "identity");
421 staticpro (&Qidentity);
422 defsubr (&Supcase); 421 defsubr (&Supcase);
423 defsubr (&Sdowncase); 422 defsubr (&Sdowncase);
424 defsubr (&Scapitalize); 423 defsubr (&Scapitalize);
diff --git a/src/casetab.c b/src/casetab.c
index 29120dd08ce..3433b313c03 100644
--- a/src/casetab.c
+++ b/src/casetab.c
@@ -244,8 +244,7 @@ init_casetab_once (void)
244{ 244{
245 register int i; 245 register int i;
246 Lisp_Object down, up; 246 Lisp_Object down, up;
247 Qcase_table = intern_c_string ("case-table"); 247 DEFSYM (Qcase_table, "case-table");
248 staticpro (&Qcase_table);
249 248
250 /* Intern this now in case it isn't already done. 249 /* Intern this now in case it isn't already done.
251 Setting this variable twice is harmless. 250 Setting this variable twice is harmless.
@@ -288,8 +287,7 @@ init_casetab_once (void)
288void 287void
289syms_of_casetab (void) 288syms_of_casetab (void)
290{ 289{
291 Qcase_table_p = intern_c_string ("case-table-p"); 290 DEFSYM (Qcase_table_p, "case-table-p");
292 staticpro (&Qcase_table_p);
293 291
294 staticpro (&Vascii_canon_table); 292 staticpro (&Vascii_canon_table);
295 staticpro (&Vascii_downcase_table); 293 staticpro (&Vascii_downcase_table);
diff --git a/src/category.c b/src/category.c
index 23fd874c824..08eadb04730 100644
--- a/src/category.c
+++ b/src/category.c
@@ -453,8 +453,7 @@ void
453init_category_once (void) 453init_category_once (void)
454{ 454{
455 /* This has to be done here, before we call Fmake_char_table. */ 455 /* This has to be done here, before we call Fmake_char_table. */
456 Qcategory_table = intern_c_string ("category-table"); 456 DEFSYM (Qcategory_table, "category-table");
457 staticpro (&Qcategory_table);
458 457
459 /* Intern this now in case it isn't already done. 458 /* Intern this now in case it isn't already done.
460 Setting this variable twice is harmless. 459 Setting this variable twice is harmless.
@@ -475,12 +474,9 @@ init_category_once (void)
475void 474void
476syms_of_category (void) 475syms_of_category (void)
477{ 476{
478 Qcategoryp = intern_c_string ("categoryp"); 477 DEFSYM (Qcategoryp, "categoryp");
479 staticpro (&Qcategoryp); 478 DEFSYM (Qcategorysetp, "categorysetp");
480 Qcategorysetp = intern_c_string ("categorysetp"); 479 DEFSYM (Qcategory_table_p, "category-table-p");
481 staticpro (&Qcategorysetp);
482 Qcategory_table_p = intern_c_string ("category-table-p");
483 staticpro (&Qcategory_table_p);
484 480
485 DEFVAR_LISP ("word-combining-categories", Vword_combining_categories, 481 DEFVAR_LISP ("word-combining-categories", Vword_combining_categories,
486 doc: /* List of pair (cons) of categories to determine word boundary. 482 doc: /* List of pair (cons) of categories to determine word boundary.
diff --git a/src/ccl.c b/src/ccl.c
index 30d151f00a0..9cfcbfe8703 100644
--- a/src/ccl.c
+++ b/src/ccl.c
@@ -2305,23 +2305,12 @@ syms_of_ccl (void)
2305 staticpro (&Vccl_program_table); 2305 staticpro (&Vccl_program_table);
2306 Vccl_program_table = Fmake_vector (make_number (32), Qnil); 2306 Vccl_program_table = Fmake_vector (make_number (32), Qnil);
2307 2307
2308 Qccl = intern_c_string ("ccl"); 2308 DEFSYM (Qccl, "ccl");
2309 staticpro (&Qccl); 2309 DEFSYM (Qcclp, "cclp");
2310 2310 DEFSYM (Qccl_program, "ccl-program");
2311 Qcclp = intern_c_string ("cclp"); 2311 DEFSYM (Qccl_program_idx, "ccl-program-idx");
2312 staticpro (&Qcclp); 2312 DEFSYM (Qcode_conversion_map, "code-conversion-map");
2313 2313 DEFSYM (Qcode_conversion_map_id, "code-conversion-map-id");
2314 Qccl_program = intern_c_string ("ccl-program");
2315 staticpro (&Qccl_program);
2316
2317 Qccl_program_idx = intern_c_string ("ccl-program-idx");
2318 staticpro (&Qccl_program_idx);
2319
2320 Qcode_conversion_map = intern_c_string ("code-conversion-map");
2321 staticpro (&Qcode_conversion_map);
2322
2323 Qcode_conversion_map_id = intern_c_string ("code-conversion-map-id");
2324 staticpro (&Qcode_conversion_map_id);
2325 2314
2326 DEFVAR_LISP ("code-conversion-map-vector", Vcode_conversion_map_vector, 2315 DEFVAR_LISP ("code-conversion-map-vector", Vcode_conversion_map_vector,
2327 doc: /* Vector of code conversion maps. */); 2316 doc: /* Vector of code conversion maps. */);
diff --git a/src/character.h b/src/character.h
index d8e77c50953..063b5147dc9 100644
--- a/src/character.h
+++ b/src/character.h
@@ -667,7 +667,4 @@ extern Lisp_Object string_escape_byte8 (Lisp_Object);
667#define GET_TRANSLATION_TABLE(id) \ 667#define GET_TRANSLATION_TABLE(id) \
668 (XCDR(XVECTOR(Vtranslation_table_vector)->contents[(id)])) 668 (XCDR(XVECTOR(Vtranslation_table_vector)->contents[(id)]))
669 669
670#define DEFSYM(sym, name) \
671 do { (sym) = intern_c_string ((name)); staticpro (&(sym)); } while (0)
672
673#endif /* EMACS_CHARACTER_H */ 670#endif /* EMACS_CHARACTER_H */
diff --git a/src/cmds.c b/src/cmds.c
index 5dc4d2bfe30..f49cfc221be 100644
--- a/src/cmds.c
+++ b/src/cmds.c
@@ -511,20 +511,11 @@ internal_self_insert (int c, EMACS_INT n)
511void 511void
512syms_of_cmds (void) 512syms_of_cmds (void)
513{ 513{
514 Qkill_backward_chars = intern_c_string ("kill-backward-chars"); 514 DEFSYM (Qkill_backward_chars, "kill-backward-chars");
515 staticpro (&Qkill_backward_chars); 515 DEFSYM (Qkill_forward_chars, "kill-forward-chars");
516 516 DEFSYM (Qoverwrite_mode_binary, "overwrite-mode-binary");
517 Qkill_forward_chars = intern_c_string ("kill-forward-chars"); 517 DEFSYM (Qexpand_abbrev, "expand-abbrev");
518 staticpro (&Qkill_forward_chars); 518 DEFSYM (Qpost_self_insert_hook, "post-self-insert-hook");
519
520 Qoverwrite_mode_binary = intern_c_string ("overwrite-mode-binary");
521 staticpro (&Qoverwrite_mode_binary);
522
523 Qexpand_abbrev = intern_c_string ("expand-abbrev");
524 staticpro (&Qexpand_abbrev);
525
526 Qpost_self_insert_hook = intern_c_string ("post-self-insert-hook");
527 staticpro (&Qpost_self_insert_hook);
528 519
529 DEFVAR_LISP ("post-self-insert-hook", Vpost_self_insert_hook, 520 DEFVAR_LISP ("post-self-insert-hook", Vpost_self_insert_hook,
530 doc: /* Hook run at the end of `self-insert-command'. 521 doc: /* Hook run at the end of `self-insert-command'.
diff --git a/src/coding.c b/src/coding.c
index 9939774ea82..65c8a767c2b 100644
--- a/src/coding.c
+++ b/src/coding.c
@@ -9000,7 +9000,7 @@ not fully specified.) */)
9000 (Lisp_Object string, Lisp_Object coding_system, Lisp_Object nocopy, Lisp_Object buffer) 9000 (Lisp_Object string, Lisp_Object coding_system, Lisp_Object nocopy, Lisp_Object buffer)
9001{ 9001{
9002 return code_convert_string (string, coding_system, buffer, 9002 return code_convert_string (string, coding_system, buffer,
9003 1, ! NILP (nocopy), 1); 9003 1, ! NILP (nocopy), 0);
9004} 9004}
9005 9005
9006 9006
diff --git a/src/composite.c b/src/composite.c
index 7123b505e68..577640f6fb7 100644
--- a/src/composite.c
+++ b/src/composite.c
@@ -1936,8 +1936,7 @@ syms_of_composite (void)
1936{ 1936{
1937 int i; 1937 int i;
1938 1938
1939 Qcomposition = intern_c_string ("composition"); 1939 DEFSYM (Qcomposition, "composition");
1940 staticpro (&Qcomposition);
1941 1940
1942 /* Make a hash table for static composition. */ 1941 /* Make a hash table for static composition. */
1943 { 1942 {
@@ -1996,11 +1995,8 @@ valid.
1996The default value is the function `compose-chars-after'. */); 1995The default value is the function `compose-chars-after'. */);
1997 Vcompose_chars_after_function = intern_c_string ("compose-chars-after"); 1996 Vcompose_chars_after_function = intern_c_string ("compose-chars-after");
1998 1997
1999 Qauto_composed = intern_c_string ("auto-composed"); 1998 DEFSYM (Qauto_composed, "auto-composed");
2000 staticpro (&Qauto_composed); 1999 DEFSYM (Qauto_composition_function, "auto-composition-function");
2001
2002 Qauto_composition_function = intern_c_string ("auto-composition-function");
2003 staticpro (&Qauto_composition_function);
2004 2000
2005 DEFVAR_LISP ("auto-composition-mode", Vauto_composition_mode, 2001 DEFVAR_LISP ("auto-composition-mode", Vauto_composition_mode,
2006 doc: /* Non-nil if Auto-Composition mode is enabled. 2002 doc: /* Non-nil if Auto-Composition mode is enabled.
diff --git a/src/dbusbind.c b/src/dbusbind.c
index 302b93146fd..4828f4e968d 100644
--- a/src/dbusbind.c
+++ b/src/dbusbind.c
@@ -2189,142 +2189,76 @@ void
2189syms_of_dbusbind (void) 2189syms_of_dbusbind (void)
2190{ 2190{
2191 2191
2192 Qdbus_init_bus = intern_c_string ("dbus-init-bus"); 2192 DEFSYM (Qdbus_init_bus, "dbus-init-bus");
2193 staticpro (&Qdbus_init_bus);
2194 defsubr (&Sdbus_init_bus); 2193 defsubr (&Sdbus_init_bus);
2195 2194
2196 Qdbus_close_bus = intern_c_string ("dbus-close-bus"); 2195 DEFSYM (Qdbus_close_bus, "dbus-close-bus");
2197 staticpro (&Qdbus_close_bus);
2198 defsubr (&Sdbus_close_bus); 2196 defsubr (&Sdbus_close_bus);
2199 2197
2200 Qdbus_get_unique_name = intern_c_string ("dbus-get-unique-name"); 2198 DEFSYM (Qdbus_get_unique_name, "dbus-get-unique-name");
2201 staticpro (&Qdbus_get_unique_name);
2202 defsubr (&Sdbus_get_unique_name); 2199 defsubr (&Sdbus_get_unique_name);
2203 2200
2204 Qdbus_call_method = intern_c_string ("dbus-call-method"); 2201 DEFSYM (Qdbus_call_method, "dbus-call-method");
2205 staticpro (&Qdbus_call_method);
2206 defsubr (&Sdbus_call_method); 2202 defsubr (&Sdbus_call_method);
2207 2203
2208 Qdbus_call_method_asynchronously 2204 DEFSYM (Qdbus_call_method_asynchronously, "dbus-call-method-asynchronously");
2209 = intern_c_string ("dbus-call-method-asynchronously");
2210 staticpro (&Qdbus_call_method_asynchronously);
2211 defsubr (&Sdbus_call_method_asynchronously); 2205 defsubr (&Sdbus_call_method_asynchronously);
2212 2206
2213 Qdbus_method_return_internal 2207 DEFSYM (Qdbus_method_return_internal, "dbus-method-return-internal");
2214 = intern_c_string ("dbus-method-return-internal");
2215 staticpro (&Qdbus_method_return_internal);
2216 defsubr (&Sdbus_method_return_internal); 2208 defsubr (&Sdbus_method_return_internal);
2217 2209
2218 Qdbus_method_error_internal = intern_c_string ("dbus-method-error-internal"); 2210 DEFSYM (Qdbus_method_error_internal, "dbus-method-error-internal");
2219 staticpro (&Qdbus_method_error_internal);
2220 defsubr (&Sdbus_method_error_internal); 2211 defsubr (&Sdbus_method_error_internal);
2221 2212
2222 Qdbus_send_signal = intern_c_string ("dbus-send-signal"); 2213 DEFSYM (Qdbus_send_signal, "dbus-send-signal");
2223 staticpro (&Qdbus_send_signal);
2224 defsubr (&Sdbus_send_signal); 2214 defsubr (&Sdbus_send_signal);
2225 2215
2226 Qdbus_register_service = intern_c_string ("dbus-register-service"); 2216 DEFSYM (Qdbus_register_service, "dbus-register-service");
2227 staticpro (&Qdbus_register_service);
2228 defsubr (&Sdbus_register_service); 2217 defsubr (&Sdbus_register_service);
2229 2218
2230 Qdbus_register_signal = intern_c_string ("dbus-register-signal"); 2219 DEFSYM (Qdbus_register_signal, "dbus-register-signal");
2231 staticpro (&Qdbus_register_signal);
2232 defsubr (&Sdbus_register_signal); 2220 defsubr (&Sdbus_register_signal);
2233 2221
2234 Qdbus_register_method = intern_c_string ("dbus-register-method"); 2222 DEFSYM (Qdbus_register_method, "dbus-register-method");
2235 staticpro (&Qdbus_register_method);
2236 defsubr (&Sdbus_register_method); 2223 defsubr (&Sdbus_register_method);
2237 2224
2238 Qdbus_error = intern_c_string ("dbus-error"); 2225 DEFSYM (Qdbus_error, "dbus-error");
2239 staticpro (&Qdbus_error);
2240 Fput (Qdbus_error, Qerror_conditions, 2226 Fput (Qdbus_error, Qerror_conditions,
2241 list2 (Qdbus_error, Qerror)); 2227 list2 (Qdbus_error, Qerror));
2242 Fput (Qdbus_error, Qerror_message, 2228 Fput (Qdbus_error, Qerror_message,
2243 make_pure_c_string ("D-Bus error")); 2229 make_pure_c_string ("D-Bus error"));
2244 2230
2245 QCdbus_system_bus = intern_c_string (":system"); 2231 DEFSYM (QCdbus_system_bus, ":system");
2246 staticpro (&QCdbus_system_bus); 2232 DEFSYM (QCdbus_session_bus, ":session");
2247 2233 DEFSYM (QCdbus_request_name_allow_replacement, ":allow-replacement");
2248 QCdbus_session_bus = intern_c_string (":session"); 2234 DEFSYM (QCdbus_request_name_replace_existing, ":replace-existing");
2249 staticpro (&QCdbus_session_bus); 2235 DEFSYM (QCdbus_request_name_do_not_queue, ":do-not-queue");
2250 2236 DEFSYM (QCdbus_request_name_reply_primary_owner, ":primary-owner");
2251 QCdbus_request_name_allow_replacement 2237 DEFSYM (QCdbus_request_name_reply_exists, ":exists");
2252 = intern_c_string (":allow-replacement"); 2238 DEFSYM (QCdbus_request_name_reply_in_queue, ":in-queue");
2253 staticpro (&QCdbus_request_name_allow_replacement); 2239 DEFSYM (QCdbus_request_name_reply_already_owner, ":already-owner");
2254 2240 DEFSYM (QCdbus_timeout, ":timeout");
2255 QCdbus_request_name_replace_existing = intern_c_string (":replace-existing"); 2241 DEFSYM (QCdbus_type_byte, ":byte");
2256 staticpro (&QCdbus_request_name_replace_existing); 2242 DEFSYM (QCdbus_type_boolean, ":boolean");
2257 2243 DEFSYM (QCdbus_type_int16, ":int16");
2258 QCdbus_request_name_do_not_queue = intern_c_string (":do-not-queue"); 2244 DEFSYM (QCdbus_type_uint16, ":uint16");
2259 staticpro (&QCdbus_request_name_do_not_queue); 2245 DEFSYM (QCdbus_type_int32, ":int32");
2260 2246 DEFSYM (QCdbus_type_uint32, ":uint32");
2261 QCdbus_request_name_reply_primary_owner = intern_c_string (":primary-owner"); 2247 DEFSYM (QCdbus_type_int64, ":int64");
2262 staticpro (&QCdbus_request_name_reply_primary_owner); 2248 DEFSYM (QCdbus_type_uint64, ":uint64");
2263 2249 DEFSYM (QCdbus_type_double, ":double");
2264 QCdbus_request_name_reply_exists = intern_c_string (":exists"); 2250 DEFSYM (QCdbus_type_string, ":string");
2265 staticpro (&QCdbus_request_name_reply_exists); 2251 DEFSYM (QCdbus_type_object_path, ":object-path");
2266 2252 DEFSYM (QCdbus_type_signature, ":signature");
2267 QCdbus_request_name_reply_in_queue = intern_c_string (":in-queue");
2268 staticpro (&QCdbus_request_name_reply_in_queue);
2269
2270 QCdbus_request_name_reply_already_owner = intern_c_string (":already-owner");
2271 staticpro (&QCdbus_request_name_reply_already_owner);
2272
2273 QCdbus_timeout = intern_c_string (":timeout");
2274 staticpro (&QCdbus_timeout);
2275
2276 QCdbus_type_byte = intern_c_string (":byte");
2277 staticpro (&QCdbus_type_byte);
2278
2279 QCdbus_type_boolean = intern_c_string (":boolean");
2280 staticpro (&QCdbus_type_boolean);
2281
2282 QCdbus_type_int16 = intern_c_string (":int16");
2283 staticpro (&QCdbus_type_int16);
2284
2285 QCdbus_type_uint16 = intern_c_string (":uint16");
2286 staticpro (&QCdbus_type_uint16);
2287
2288 QCdbus_type_int32 = intern_c_string (":int32");
2289 staticpro (&QCdbus_type_int32);
2290
2291 QCdbus_type_uint32 = intern_c_string (":uint32");
2292 staticpro (&QCdbus_type_uint32);
2293
2294 QCdbus_type_int64 = intern_c_string (":int64");
2295 staticpro (&QCdbus_type_int64);
2296
2297 QCdbus_type_uint64 = intern_c_string (":uint64");
2298 staticpro (&QCdbus_type_uint64);
2299
2300 QCdbus_type_double = intern_c_string (":double");
2301 staticpro (&QCdbus_type_double);
2302
2303 QCdbus_type_string = intern_c_string (":string");
2304 staticpro (&QCdbus_type_string);
2305
2306 QCdbus_type_object_path = intern_c_string (":object-path");
2307 staticpro (&QCdbus_type_object_path);
2308
2309 QCdbus_type_signature = intern_c_string (":signature");
2310 staticpro (&QCdbus_type_signature);
2311 2253
2312#ifdef DBUS_TYPE_UNIX_FD 2254#ifdef DBUS_TYPE_UNIX_FD
2313 QCdbus_type_unix_fd = intern_c_string (":unix-fd"); 2255 DEFSYM (QCdbus_type_unix_fd, ":unix-fd");
2314 staticpro (&QCdbus_type_unix_fd);
2315#endif 2256#endif
2316 2257
2317 QCdbus_type_array = intern_c_string (":array"); 2258 DEFSYM (QCdbus_type_array, ":array");
2318 staticpro (&QCdbus_type_array); 2259 DEFSYM (QCdbus_type_variant, ":variant");
2319 2260 DEFSYM (QCdbus_type_struct, ":struct");
2320 QCdbus_type_variant = intern_c_string (":variant"); 2261 DEFSYM (QCdbus_type_dict_entry, ":dict-entry");
2321 staticpro (&QCdbus_type_variant);
2322
2323 QCdbus_type_struct = intern_c_string (":struct");
2324 staticpro (&QCdbus_type_struct);
2325
2326 QCdbus_type_dict_entry = intern_c_string (":dict-entry");
2327 staticpro (&QCdbus_type_dict_entry);
2328 2262
2329 DEFVAR_LISP ("dbus-registered-buses", 2263 DEFVAR_LISP ("dbus-registered-buses",
2330 Vdbus_registered_buses, 2264 Vdbus_registered_buses,
diff --git a/src/dired.c b/src/dired.c
index 3ab1ba8a900..415f9ac5ae5 100644
--- a/src/dired.c
+++ b/src/dired.c
@@ -1017,21 +1017,13 @@ Comparison is in lexicographic order and case is significant. */)
1017void 1017void
1018syms_of_dired (void) 1018syms_of_dired (void)
1019{ 1019{
1020 Qdirectory_files = intern_c_string ("directory-files"); 1020 DEFSYM (Qdirectory_files, "directory-files");
1021 Qdirectory_files_and_attributes = intern_c_string ("directory-files-and-attributes"); 1021 DEFSYM (Qdirectory_files_and_attributes, "directory-files-and-attributes");
1022 Qfile_name_completion = intern_c_string ("file-name-completion"); 1022 DEFSYM (Qfile_name_completion, "file-name-completion");
1023 Qfile_name_all_completions = intern_c_string ("file-name-all-completions"); 1023 DEFSYM (Qfile_name_all_completions, "file-name-all-completions");
1024 Qfile_attributes = intern_c_string ("file-attributes"); 1024 DEFSYM (Qfile_attributes, "file-attributes");
1025 Qfile_attributes_lessp = intern_c_string ("file-attributes-lessp"); 1025 DEFSYM (Qfile_attributes_lessp, "file-attributes-lessp");
1026 Qdefault_directory = intern_c_string ("default-directory"); 1026 DEFSYM (Qdefault_directory, "default-directory");
1027
1028 staticpro (&Qdirectory_files);
1029 staticpro (&Qdirectory_files_and_attributes);
1030 staticpro (&Qfile_name_completion);
1031 staticpro (&Qfile_name_all_completions);
1032 staticpro (&Qfile_attributes);
1033 staticpro (&Qfile_attributes_lessp);
1034 staticpro (&Qdefault_directory);
1035 1027
1036 defsubr (&Sdirectory_files); 1028 defsubr (&Sdirectory_files);
1037 defsubr (&Sdirectory_files_and_attributes); 1029 defsubr (&Sdirectory_files_and_attributes);
diff --git a/src/dispnew.c b/src/dispnew.c
index 21df105971b..8691c921853 100644
--- a/src/dispnew.c
+++ b/src/dispnew.c
@@ -4543,6 +4543,7 @@ scrolling_window (struct window *w, int header_line_p)
4543 /* Copy on the display. */ 4543 /* Copy on the display. */
4544 if (r->current_y != r->desired_y) 4544 if (r->current_y != r->desired_y)
4545 { 4545 {
4546 rif->clear_window_mouse_face (w);
4546 rif->scroll_run_hook (w, r); 4547 rif->scroll_run_hook (w, r);
4547 4548
4548 /* Invalidate runs that copy from where we copied to. */ 4549 /* Invalidate runs that copy from where we copied to. */
@@ -6438,10 +6439,8 @@ syms_of_display (void)
6438 frame_and_buffer_state = Fmake_vector (make_number (20), Qlambda); 6439 frame_and_buffer_state = Fmake_vector (make_number (20), Qlambda);
6439 staticpro (&frame_and_buffer_state); 6440 staticpro (&frame_and_buffer_state);
6440 6441
6441 Qdisplay_table = intern_c_string ("display-table"); 6442 DEFSYM (Qdisplay_table, "display-table");
6442 staticpro (&Qdisplay_table); 6443 DEFSYM (Qredisplay_dont_pause, "redisplay-dont-pause");
6443 Qredisplay_dont_pause = intern_c_string ("redisplay-dont-pause");
6444 staticpro (&Qredisplay_dont_pause);
6445 6444
6446 DEFVAR_INT ("baud-rate", baud_rate, 6445 DEFVAR_INT ("baud-rate", baud_rate,
6447 doc: /* *The output baud rate of the terminal. 6446 doc: /* *The output baud rate of the terminal.
diff --git a/src/doc.c b/src/doc.c
index 48e0936510b..69646f5af51 100644
--- a/src/doc.c
+++ b/src/doc.c
@@ -945,8 +945,7 @@ a new string, without any text properties, is returned. */)
945void 945void
946syms_of_doc (void) 946syms_of_doc (void)
947{ 947{
948 Qfunction_documentation = intern_c_string ("function-documentation"); 948 DEFSYM (Qfunction_documentation, "function-documentation");
949 staticpro (&Qfunction_documentation);
950 949
951 DEFVAR_LISP ("internal-doc-file-name", Vdoc_file_name, 950 DEFVAR_LISP ("internal-doc-file-name", Vdoc_file_name,
952 doc: /* Name of file containing documentation strings of built-in symbols. */); 951 doc: /* Name of file containing documentation strings of built-in symbols. */);
diff --git a/src/editfns.c b/src/editfns.c
index c0c0e530265..bb36d0dee71 100644
--- a/src/editfns.c
+++ b/src/editfns.c
@@ -1700,7 +1700,7 @@ For example, to produce full ISO 8601 format, use "%Y-%m-%dT%T%z". */)
1700 (Lisp_Object format_string, Lisp_Object timeval, Lisp_Object universal) 1700 (Lisp_Object format_string, Lisp_Object timeval, Lisp_Object universal)
1701{ 1701{
1702 time_t value; 1702 time_t value;
1703 int size; 1703 ptrdiff_t size;
1704 int usec; 1704 int usec;
1705 int ns; 1705 int ns;
1706 struct tm *tm; 1706 struct tm *tm;
@@ -1717,7 +1717,9 @@ For example, to produce full ISO 8601 format, use "%Y-%m-%dT%T%z". */)
1717 Vlocale_coding_system, 1); 1717 Vlocale_coding_system, 1);
1718 1718
1719 /* This is probably enough. */ 1719 /* This is probably enough. */
1720 size = SBYTES (format_string) * 6 + 50; 1720 size = SBYTES (format_string);
1721 if (size <= (STRING_BYTES_BOUND - 50) / 6)
1722 size = size * 6 + 50;
1721 1723
1722 BLOCK_INPUT; 1724 BLOCK_INPUT;
1723 tm = ut ? gmtime (&value) : localtime (&value); 1725 tm = ut ? gmtime (&value) : localtime (&value);
@@ -1730,7 +1732,7 @@ For example, to produce full ISO 8601 format, use "%Y-%m-%dT%T%z". */)
1730 while (1) 1732 while (1)
1731 { 1733 {
1732 char *buf = (char *) alloca (size + 1); 1734 char *buf = (char *) alloca (size + 1);
1733 int result; 1735 size_t result;
1734 1736
1735 buf[0] = '\1'; 1737 buf[0] = '\1';
1736 BLOCK_INPUT; 1738 BLOCK_INPUT;
@@ -1749,6 +1751,8 @@ For example, to produce full ISO 8601 format, use "%Y-%m-%dT%T%z". */)
1749 SBYTES (format_string), 1751 SBYTES (format_string),
1750 tm, ut, ns); 1752 tm, ut, ns);
1751 UNBLOCK_INPUT; 1753 UNBLOCK_INPUT;
1754 if (STRING_BYTES_BOUND <= result)
1755 string_overflow ();
1752 size = result + 1; 1756 size = result + 1;
1753 } 1757 }
1754} 1758}
@@ -3557,7 +3561,8 @@ The width specifier supplies a lower limit for the length of the
3557printed representation. The padding, if any, normally goes on the 3561printed representation. The padding, if any, normally goes on the
3558left, but it goes on the right if the - flag is present. The padding 3562left, but it goes on the right if the - flag is present. The padding
3559character is normally a space, but it is 0 if the 0 flag is present. 3563character is normally a space, but it is 0 if the 0 flag is present.
3560The - flag takes precedence over the 0 flag. 3564The 0 flag is ignored if the - flag is present, or the format sequence
3565is something other than %d, %e, %f, and %g.
3561 3566
3562For %e, %f, and %g sequences, the number after the "." in the 3567For %e, %f, and %g sequences, the number after the "." in the
3563precision specifier says how many decimal places to show; if zero, the 3568precision specifier says how many decimal places to show; if zero, the
@@ -4738,9 +4743,7 @@ syms_of_editfns (void)
4738 environbuf = 0; 4743 environbuf = 0;
4739 initial_tz = 0; 4744 initial_tz = 0;
4740 4745
4741 Qbuffer_access_fontify_functions 4746 DEFSYM (Qbuffer_access_fontify_functions, "buffer-access-fontify-functions");
4742 = intern_c_string ("buffer-access-fontify-functions");
4743 staticpro (&Qbuffer_access_fontify_functions);
4744 4747
4745 DEFVAR_LISP ("inhibit-field-text-motion", Vinhibit_field_text_motion, 4748 DEFVAR_LISP ("inhibit-field-text-motion", Vinhibit_field_text_motion,
4746 doc: /* Non-nil means text motion commands don't notice fields. */); 4749 doc: /* Non-nil means text motion commands don't notice fields. */);
@@ -4802,10 +4805,8 @@ functions if all the text being accessed has this property. */);
4802 defsubr (&Sregion_beginning); 4805 defsubr (&Sregion_beginning);
4803 defsubr (&Sregion_end); 4806 defsubr (&Sregion_end);
4804 4807
4805 staticpro (&Qfield); 4808 DEFSYM (Qfield, "field");
4806 Qfield = intern_c_string ("field"); 4809 DEFSYM (Qboundary, "boundary");
4807 staticpro (&Qboundary);
4808 Qboundary = intern_c_string ("boundary");
4809 defsubr (&Sfield_beginning); 4810 defsubr (&Sfield_beginning);
4810 defsubr (&Sfield_end); 4811 defsubr (&Sfield_end);
4811 defsubr (&Sfield_string); 4812 defsubr (&Sfield_string);
diff --git a/src/emacs.c b/src/emacs.c
index c4b4caad9b5..e4b3a68a6c1 100644
--- a/src/emacs.c
+++ b/src/emacs.c
@@ -2375,10 +2375,8 @@ from the parent process and its tty file descriptors. */)
2375void 2375void
2376syms_of_emacs (void) 2376syms_of_emacs (void)
2377{ 2377{
2378 Qfile_name_handler_alist = intern_c_string ("file-name-handler-alist"); 2378 DEFSYM (Qfile_name_handler_alist, "file-name-handler-alist");
2379 staticpro (&Qfile_name_handler_alist); 2379 DEFSYM (Qrisky_local_variable, "risky-local-variable");
2380 Qrisky_local_variable = intern_c_string ("risky-local-variable");
2381 staticpro (&Qrisky_local_variable);
2382 2380
2383#ifndef CANNOT_DUMP 2381#ifndef CANNOT_DUMP
2384 defsubr (&Sdump_emacs); 2382 defsubr (&Sdump_emacs);
diff --git a/src/emacsgtkfixed.c b/src/emacsgtkfixed.c
index fe3514bce93..0b57e2cdf36 100644
--- a/src/emacsgtkfixed.c
+++ b/src/emacsgtkfixed.c
@@ -1,4 +1,5 @@
1/* A Gtk Widget that inherits GtkFixed, but can be shrinked. 1/* A Gtk Widget that inherits GtkFixed, but can be shrinked.
2This file is only use when compiling with Gtk+ 3.
2 3
3Copyright (C) 2011 Free Software Foundation, Inc. 4Copyright (C) 2011 Free Software Foundation, Inc.
4 5
@@ -17,12 +18,19 @@ GNU General Public License for more details.
17You should have received a copy of the GNU General Public License 18You should have received a copy of the GNU General Public License
18along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ 19along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
19 20
20#include "emacsgtkfixed.h" 21#include <config.h>
21 22
23#include "emacsgtkfixed.h"
24#include <signal.h>
25#include <stdio.h>
26#include <setjmp.h>
27#include "lisp.h"
28#include "frame.h"
29#include "xterm.h"
22 30
23struct _EmacsFixedPrivate 31struct _EmacsFixedPrivate
24{ 32{
25 int minwidth, minheight; 33 struct frame *f;
26}; 34};
27 35
28 36
@@ -59,7 +67,7 @@ emacs_fixed_init (EmacsFixed *fixed)
59{ 67{
60 fixed->priv = G_TYPE_INSTANCE_GET_PRIVATE (fixed, EMACS_TYPE_FIXED, 68 fixed->priv = G_TYPE_INSTANCE_GET_PRIVATE (fixed, EMACS_TYPE_FIXED,
61 EmacsFixedPrivate); 69 EmacsFixedPrivate);
62 fixed->priv->minwidth = fixed->priv->minheight = 0; 70 fixed->priv->f = 0;
63} 71}
64 72
65/** 73/**
@@ -70,17 +78,12 @@ emacs_fixed_init (EmacsFixed *fixed)
70 * Returns: a new #EmacsFixed. 78 * Returns: a new #EmacsFixed.
71 */ 79 */
72GtkWidget* 80GtkWidget*
73emacs_fixed_new (void) 81emacs_fixed_new (struct frame *f)
74{
75 return g_object_new (EMACS_TYPE_FIXED, NULL);
76}
77
78static GtkWidgetClass *
79get_parent_class (EmacsFixed *fixed)
80{ 82{
81 EmacsFixedClass *klass = EMACS_FIXED_GET_CLASS (fixed); 83 EmacsFixed *fixed = g_object_new (EMACS_TYPE_FIXED, NULL);
82 GtkFixedClass *parent_class = g_type_class_peek_parent (klass); 84 EmacsFixedPrivate *priv = fixed->priv;
83 return (GtkWidgetClass*) parent_class; 85 priv->f = f;
86 return GTK_WIDGET (fixed);
84} 87}
85 88
86static void 89static void
@@ -90,9 +93,9 @@ emacs_fixed_get_preferred_width (GtkWidget *widget,
90{ 93{
91 EmacsFixed *fixed = EMACS_FIXED (widget); 94 EmacsFixed *fixed = EMACS_FIXED (widget);
92 EmacsFixedPrivate *priv = fixed->priv; 95 EmacsFixedPrivate *priv = fixed->priv;
93 GtkWidgetClass *widget_class = get_parent_class (fixed); 96 int w = priv->f->output_data.x->size_hints.min_width;
94 widget_class->get_preferred_width (widget, minimum, natural); 97 if (minimum) *minimum = w;
95 if (minimum) *minimum = priv->minwidth; 98 if (natural) *natural = w;
96} 99}
97 100
98static void 101static void
@@ -102,22 +105,62 @@ emacs_fixed_get_preferred_height (GtkWidget *widget,
102{ 105{
103 EmacsFixed *fixed = EMACS_FIXED (widget); 106 EmacsFixed *fixed = EMACS_FIXED (widget);
104 EmacsFixedPrivate *priv = fixed->priv; 107 EmacsFixedPrivate *priv = fixed->priv;
105 GtkWidgetClass *widget_class = get_parent_class (fixed); 108 int h = priv->f->output_data.x->size_hints.min_height;
106 widget_class->get_preferred_height (widget, minimum, natural); 109 if (minimum) *minimum = h;
107 if (minimum) *minimum = priv->minheight; 110 if (natural) *natural = h;
108} 111}
109 112
113
114/* Override the X function so we can intercept Gtk+ 3 calls.
115 Use our values for min_width/height so that KDE don't freak out
116 (Bug#8919), and so users can resize our frames as they wish. */
117
110void 118void
111emacs_fixed_set_min_size (EmacsFixed *widget, int width, int height) 119XSetWMSizeHints(Display* d,
120 Window w,
121 XSizeHints* hints,
122 Atom prop)
112{ 123{
113 EmacsFixedPrivate *priv = widget->priv; 124 struct x_display_info *dpyinfo = x_display_info_for_display (d);
114 GtkWidgetClass *widget_class = get_parent_class (widget); 125 struct frame *f = x_top_window_to_frame (dpyinfo, w);
115 int mw, nw, mh, nh; 126 long data[18];
116 127 data[0] = hints->flags;
117 widget_class->get_preferred_height (GTK_WIDGET (widget), &mh, &nh); 128 data[1] = hints->x;
118 widget_class->get_preferred_width (GTK_WIDGET (widget), &mw, &nw); 129 data[2] = hints->y;
130 data[3] = hints->width;
131 data[4] = hints->height;
132 data[5] = hints->min_width;
133 data[6] = hints->min_height;
134 data[7] = hints->max_width;
135 data[8] = hints->max_height;
136 data[9] = hints->width_inc;
137 data[10] = hints->height_inc;
138 data[11] = hints->min_aspect.x;
139 data[12] = hints->min_aspect.y;
140 data[13] = hints->max_aspect.x;
141 data[14] = hints->max_aspect.y;
142 data[15] = hints->base_width;
143 data[16] = hints->base_height;
144 data[17] = hints->win_gravity;
145
146 if ((hints->flags & PMinSize) && f)
147 {
148 int w = f->output_data.x->size_hints.min_width;
149 int h = f->output_data.x->size_hints.min_height;
150 data[5] = w;
151 data[6] = h;
152 }
153
154 XChangeProperty (d, w, prop, XA_WM_SIZE_HINTS, 32, PropModeReplace,
155 (unsigned char *) data, 18);
156}
119 157
120 /* Gtk complains if min size is less than natural size. */ 158/* Override this X11 function.
121 if (width <= nw) priv->minwidth = width; 159 This function is in the same X11 file as the one above. So we must
122 if (height <= nh) priv->minheight = height; 160 provide it also. */
161
162void
163XSetWMNormalHints (Display *d, Window w, XSizeHints *hints)
164{
165 XSetWMSizeHints (d, w, hints, XA_WM_NORMAL_HINTS);
123} 166}
diff --git a/src/emacsgtkfixed.h b/src/emacsgtkfixed.h
index 405374373ec..dbac136bd7f 100644
--- a/src/emacsgtkfixed.h
+++ b/src/emacsgtkfixed.h
@@ -1,4 +1,5 @@
1/* A Gtk Widget that inherits GtkFixed, but can be shrinked. 1/* A Gtk Widget that inherits GtkFixed, but can be shrinked.
2This file is only use when compiling with Gtk+ 3.
2 3
3Copyright (C) 2011 Free Software Foundation, Inc. 4Copyright (C) 2011 Free Software Foundation, Inc.
4 5
@@ -24,6 +25,8 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
24 25
25G_BEGIN_DECLS 26G_BEGIN_DECLS
26 27
28struct frame;
29
27#define EMACS_TYPE_FIXED (emacs_fixed_get_type ()) 30#define EMACS_TYPE_FIXED (emacs_fixed_get_type ())
28#define EMACS_FIXED(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), EMACS_TYPE_FIXED, EmacsFixed)) 31#define EMACS_FIXED(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), EMACS_TYPE_FIXED, EmacsFixed))
29#define EMACS_FIXED_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), EMACS_TYPE_FIXED, EmacsFixedClass)) 32#define EMACS_FIXED_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), EMACS_TYPE_FIXED, EmacsFixedClass))
@@ -49,8 +52,7 @@ struct _EmacsFixedClass
49 GtkFixedClass parent_class; 52 GtkFixedClass parent_class;
50}; 53};
51 54
52extern GtkWidget *emacs_fixed_new (void); 55extern GtkWidget *emacs_fixed_new (struct frame *f);
53extern void emacs_fixed_set_min_size (EmacsFixed *widget, int width, int height);
54extern GType emacs_fixed_get_type (void); 56extern GType emacs_fixed_get_type (void);
55 57
56G_END_DECLS 58G_END_DECLS
diff --git a/src/eval.c b/src/eval.c
index be582775fea..90d0df61858 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -32,25 +32,14 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
32#include "xterm.h" 32#include "xterm.h"
33#endif 33#endif
34 34
35/* This definition is duplicated in alloc.c and keyboard.c. */
36/* Putting it in lisp.h makes cc bomb out! */
37
38struct backtrace 35struct backtrace
39{ 36{
40 struct backtrace *next; 37 struct backtrace *next;
41 Lisp_Object *function; 38 Lisp_Object *function;
42 Lisp_Object *args; /* Points to vector of args. */ 39 Lisp_Object *args; /* Points to vector of args. */
43#define NARGS_BITS (BITS_PER_INT - 2) 40 ptrdiff_t nargs; /* Length of vector. */
44 /* Let's not use size_t because we want to allow negative values (for
45 UNEVALLED). Also let's steal 2 bits so we save a word (or more for
46 alignment). In any case I doubt Emacs would survive a function call with
47 more than 500M arguments. */
48 int nargs : NARGS_BITS; /* Length of vector.
49 If nargs is UNEVALLED, args points
50 to slot holding list of unevalled args. */
51 char evalargs : 1;
52 /* Nonzero means call value of debugger when done with this operation. */ 41 /* Nonzero means call value of debugger when done with this operation. */
53 char debug_on_exit : 1; 42 unsigned int debug_on_exit : 1;
54}; 43};
55 44
56static struct backtrace *backtrace_list; 45static struct backtrace *backtrace_list;
@@ -1651,8 +1640,7 @@ internal_condition_case_n (Lisp_Object (*bfun) (ptrdiff_t, Lisp_Object *),
1651} 1640}
1652 1641
1653 1642
1654static Lisp_Object find_handler_clause (Lisp_Object, Lisp_Object, 1643static Lisp_Object find_handler_clause (Lisp_Object, Lisp_Object);
1655 Lisp_Object, Lisp_Object);
1656static int maybe_call_debugger (Lisp_Object conditions, Lisp_Object sig, 1644static int maybe_call_debugger (Lisp_Object conditions, Lisp_Object sig,
1657 Lisp_Object data); 1645 Lisp_Object data);
1658 1646
@@ -1728,8 +1716,7 @@ See also the function `condition-case'. */)
1728 1716
1729 for (h = handlerlist; h; h = h->next) 1717 for (h = handlerlist; h; h = h->next)
1730 { 1718 {
1731 clause = find_handler_clause (h->handler, conditions, 1719 clause = find_handler_clause (h->handler, conditions);
1732 error_symbol, data);
1733 if (!NILP (clause)) 1720 if (!NILP (clause))
1734 break; 1721 break;
1735 } 1722 }
@@ -1900,8 +1887,10 @@ skip_debugger (Lisp_Object conditions, Lisp_Object data)
1900} 1887}
1901 1888
1902/* Call the debugger if calling it is currently enabled for CONDITIONS. 1889/* Call the debugger if calling it is currently enabled for CONDITIONS.
1903 SIG and DATA describe the signal, as in find_handler_clause. */ 1890 SIG and DATA describe the signal. There are two ways to pass them:
1904 1891 = SIG is the error symbol, and DATA is the rest of the data.
1892 = SIG is nil, and DATA is (SYMBOL . REST-OF-DATA).
1893 This is for memory-full errors only. */
1905static int 1894static int
1906maybe_call_debugger (Lisp_Object conditions, Lisp_Object sig, Lisp_Object data) 1895maybe_call_debugger (Lisp_Object conditions, Lisp_Object sig, Lisp_Object data)
1907{ 1896{
@@ -1928,19 +1917,8 @@ maybe_call_debugger (Lisp_Object conditions, Lisp_Object sig, Lisp_Object data)
1928 return 0; 1917 return 0;
1929} 1918}
1930 1919
1931/* Value of Qlambda means we have called debugger and user has continued.
1932 There are two ways to pass SIG and DATA:
1933 = SIG is the error symbol, and DATA is the rest of the data.
1934 = SIG is nil, and DATA is (SYMBOL . REST-OF-DATA).
1935 This is for memory-full errors only.
1936
1937 We need to increase max_specpdl_size temporarily around
1938 anything we do that can push on the specpdl, so as not to get
1939 a second error here in case we're handling specpdl overflow. */
1940
1941static Lisp_Object 1920static Lisp_Object
1942find_handler_clause (Lisp_Object handlers, Lisp_Object conditions, 1921find_handler_clause (Lisp_Object handlers, Lisp_Object conditions)
1943 Lisp_Object sig, Lisp_Object data)
1944{ 1922{
1945 register Lisp_Object h; 1923 register Lisp_Object h;
1946 1924
@@ -2291,7 +2269,6 @@ eval_sub (Lisp_Object form)
2291 backtrace.function = &original_fun; /* This also protects them from gc. */ 2269 backtrace.function = &original_fun; /* This also protects them from gc. */
2292 backtrace.args = &original_args; 2270 backtrace.args = &original_args;
2293 backtrace.nargs = UNEVALLED; 2271 backtrace.nargs = UNEVALLED;
2294 backtrace.evalargs = 1;
2295 backtrace.debug_on_exit = 0; 2272 backtrace.debug_on_exit = 0;
2296 2273
2297 if (debug_on_next_call) 2274 if (debug_on_next_call)
@@ -2325,10 +2302,7 @@ eval_sub (Lisp_Object form)
2325 xsignal2 (Qwrong_number_of_arguments, original_fun, numargs); 2302 xsignal2 (Qwrong_number_of_arguments, original_fun, numargs);
2326 2303
2327 else if (XSUBR (fun)->max_args == UNEVALLED) 2304 else if (XSUBR (fun)->max_args == UNEVALLED)
2328 { 2305 val = (XSUBR (fun)->function.aUNEVALLED) (args_left);
2329 backtrace.evalargs = 0;
2330 val = (XSUBR (fun)->function.aUNEVALLED) (args_left);
2331 }
2332 else if (XSUBR (fun)->max_args == MANY) 2306 else if (XSUBR (fun)->max_args == MANY)
2333 { 2307 {
2334 /* Pass a vector of evaluated arguments. */ 2308 /* Pass a vector of evaluated arguments. */
@@ -2984,7 +2958,6 @@ usage: (funcall FUNCTION &rest ARGUMENTS) */)
2984 backtrace.function = &args[0]; 2958 backtrace.function = &args[0];
2985 backtrace.args = &args[1]; 2959 backtrace.args = &args[1];
2986 backtrace.nargs = nargs - 1; 2960 backtrace.nargs = nargs - 1;
2987 backtrace.evalargs = 0;
2988 backtrace.debug_on_exit = 0; 2961 backtrace.debug_on_exit = 0;
2989 2962
2990 if (debug_on_next_call) 2963 if (debug_on_next_call)
@@ -3141,7 +3114,6 @@ apply_lambda (Lisp_Object fun, Lisp_Object args)
3141 3114
3142 backtrace_list->args = arg_vector; 3115 backtrace_list->args = arg_vector;
3143 backtrace_list->nargs = i; 3116 backtrace_list->nargs = i;
3144 backtrace_list->evalargs = 0;
3145 tem = funcall_lambda (fun, numargs, arg_vector); 3117 tem = funcall_lambda (fun, numargs, arg_vector);
3146 3118
3147 /* Do the debug-on-exit now, while arg_vector still exists. */ 3119 /* Do the debug-on-exit now, while arg_vector still exists. */
@@ -3190,7 +3162,7 @@ funcall_lambda (Lisp_Object fun, ptrdiff_t nargs,
3190 shouldn't bind any arguments, instead just call the byte-code 3162 shouldn't bind any arguments, instead just call the byte-code
3191 interpreter directly; it will push arguments as necessary. 3163 interpreter directly; it will push arguments as necessary.
3192 3164
3193 Byte-code objects with either a non-existant, or a nil value for 3165 Byte-code objects with either a non-existent, or a nil value for
3194 the `push args' slot (the default), have dynamically-bound 3166 the `push args' slot (the default), have dynamically-bound
3195 arguments, and use the argument-binding code below instead (as do 3167 arguments, and use the argument-binding code below instead (as do
3196 all interpreted functions, even lexically bound ones). */ 3168 all interpreted functions, even lexically bound ones). */
@@ -3694,46 +3666,23 @@ To prevent this happening, set `quit-flag' to nil
3694before making `inhibit-quit' nil. */); 3666before making `inhibit-quit' nil. */);
3695 Vinhibit_quit = Qnil; 3667 Vinhibit_quit = Qnil;
3696 3668
3697 Qinhibit_quit = intern_c_string ("inhibit-quit"); 3669 DEFSYM (Qinhibit_quit, "inhibit-quit");
3698 staticpro (&Qinhibit_quit); 3670 DEFSYM (Qautoload, "autoload");
3699 3671 DEFSYM (Qdebug_on_error, "debug-on-error");
3700 Qautoload = intern_c_string ("autoload"); 3672 DEFSYM (Qmacro, "macro");
3701 staticpro (&Qautoload); 3673 DEFSYM (Qdeclare, "declare");
3702
3703 Qdebug_on_error = intern_c_string ("debug-on-error");
3704 staticpro (&Qdebug_on_error);
3705
3706 Qmacro = intern_c_string ("macro");
3707 staticpro (&Qmacro);
3708
3709 Qdeclare = intern_c_string ("declare");
3710 staticpro (&Qdeclare);
3711 3674
3712 /* Note that the process handling also uses Qexit, but we don't want 3675 /* Note that the process handling also uses Qexit, but we don't want
3713 to staticpro it twice, so we just do it here. */ 3676 to staticpro it twice, so we just do it here. */
3714 Qexit = intern_c_string ("exit"); 3677 DEFSYM (Qexit, "exit");
3715 staticpro (&Qexit);
3716
3717 Qinteractive = intern_c_string ("interactive");
3718 staticpro (&Qinteractive);
3719
3720 Qcommandp = intern_c_string ("commandp");
3721 staticpro (&Qcommandp);
3722
3723 Qdefun = intern_c_string ("defun");
3724 staticpro (&Qdefun);
3725
3726 Qand_rest = intern_c_string ("&rest");
3727 staticpro (&Qand_rest);
3728
3729 Qand_optional = intern_c_string ("&optional");
3730 staticpro (&Qand_optional);
3731
3732 Qclosure = intern_c_string ("closure");
3733 staticpro (&Qclosure);
3734 3678
3735 Qdebug = intern_c_string ("debug"); 3679 DEFSYM (Qinteractive, "interactive");
3736 staticpro (&Qdebug); 3680 DEFSYM (Qcommandp, "commandp");
3681 DEFSYM (Qdefun, "defun");
3682 DEFSYM (Qand_rest, "&rest");
3683 DEFSYM (Qand_optional, "&optional");
3684 DEFSYM (Qclosure, "closure");
3685 DEFSYM (Qdebug, "debug");
3737 3686
3738 DEFVAR_LISP ("debug-on-error", Vdebug_on_error, 3687 DEFVAR_LISP ("debug-on-error", Vdebug_on_error,
3739 doc: /* *Non-nil means enter debugger if an error is signaled. 3688 doc: /* *Non-nil means enter debugger if an error is signaled.
@@ -3807,9 +3756,7 @@ The value the function returns is not used. */);
3807 Every element of this list can be either a cons (VAR . VAL) 3756 Every element of this list can be either a cons (VAR . VAL)
3808 specifying a lexical binding, or a single symbol VAR indicating 3757 specifying a lexical binding, or a single symbol VAR indicating
3809 that this variable should use dynamic scoping. */ 3758 that this variable should use dynamic scoping. */
3810 Qinternal_interpreter_environment 3759 DEFSYM (Qinternal_interpreter_environment, "internal-interpreter-environment");
3811 = intern_c_string ("internal-interpreter-environment");
3812 staticpro (&Qinternal_interpreter_environment);
3813 DEFVAR_LISP ("internal-interpreter-environment", 3760 DEFVAR_LISP ("internal-interpreter-environment",
3814 Vinternal_interpreter_environment, 3761 Vinternal_interpreter_environment,
3815 doc: /* If non-nil, the current lexical environment of the lisp interpreter. 3762 doc: /* If non-nil, the current lexical environment of the lisp interpreter.
@@ -3821,8 +3768,7 @@ alist of active lexical bindings. */);
3821 (Just imagine if someone makes it buffer-local). */ 3768 (Just imagine if someone makes it buffer-local). */
3822 Funintern (Qinternal_interpreter_environment, Qnil); 3769 Funintern (Qinternal_interpreter_environment, Qnil);
3823 3770
3824 Vrun_hooks = intern_c_string ("run-hooks"); 3771 DEFSYM (Vrun_hooks, "run-hooks");
3825 staticpro (&Vrun_hooks);
3826 3772
3827 staticpro (&Vautoload_queue); 3773 staticpro (&Vautoload_queue);
3828 Vautoload_queue = Qnil; 3774 Vautoload_queue = Qnil;
diff --git a/src/fileio.c b/src/fileio.c
index 824df8172e7..c6f8dfe4683 100644
--- a/src/fileio.c
+++ b/src/fileio.c
@@ -1755,6 +1755,10 @@ barf_or_query_if_file_exists (Lisp_Object absname, const char *querystring,
1755 regardless of what access permissions it has. */ 1755 regardless of what access permissions it has. */
1756 if (lstat (SSDATA (encoded_filename), &statbuf) >= 0) 1756 if (lstat (SSDATA (encoded_filename), &statbuf) >= 0)
1757 { 1757 {
1758 if (S_ISDIR (statbuf.st_mode))
1759 xsignal2 (Qfile_error,
1760 build_string ("File is a directory"), absname);
1761
1758 if (! interactive) 1762 if (! interactive)
1759 xsignal2 (Qfile_already_exists, 1763 xsignal2 (Qfile_already_exists,
1760 build_string ("File already exists"), absname); 1764 build_string ("File already exists"), absname);
@@ -5425,92 +5429,50 @@ Fread_file_name (Lisp_Object prompt, Lisp_Object dir, Lisp_Object default_filena
5425void 5429void
5426syms_of_fileio (void) 5430syms_of_fileio (void)
5427{ 5431{
5428 Qoperations = intern_c_string ("operations"); 5432 DEFSYM (Qoperations, "operations");
5429 Qexpand_file_name = intern_c_string ("expand-file-name"); 5433 DEFSYM (Qexpand_file_name, "expand-file-name");
5430 Qsubstitute_in_file_name = intern_c_string ("substitute-in-file-name"); 5434 DEFSYM (Qsubstitute_in_file_name, "substitute-in-file-name");
5431 Qdirectory_file_name = intern_c_string ("directory-file-name"); 5435 DEFSYM (Qdirectory_file_name, "directory-file-name");
5432 Qfile_name_directory = intern_c_string ("file-name-directory"); 5436 DEFSYM (Qfile_name_directory, "file-name-directory");
5433 Qfile_name_nondirectory = intern_c_string ("file-name-nondirectory"); 5437 DEFSYM (Qfile_name_nondirectory, "file-name-nondirectory");
5434 Qunhandled_file_name_directory = intern_c_string ("unhandled-file-name-directory"); 5438 DEFSYM (Qunhandled_file_name_directory, "unhandled-file-name-directory");
5435 Qfile_name_as_directory = intern_c_string ("file-name-as-directory"); 5439 DEFSYM (Qfile_name_as_directory, "file-name-as-directory");
5436 Qcopy_file = intern_c_string ("copy-file"); 5440 DEFSYM (Qcopy_file, "copy-file");
5437 Qmake_directory_internal = intern_c_string ("make-directory-internal"); 5441 DEFSYM (Qmake_directory_internal, "make-directory-internal");
5438 Qmake_directory = intern_c_string ("make-directory"); 5442 DEFSYM (Qmake_directory, "make-directory");
5439 Qdelete_directory_internal = intern_c_string ("delete-directory-internal"); 5443 DEFSYM (Qdelete_directory_internal, "delete-directory-internal");
5440 Qdelete_file = intern_c_string ("delete-file"); 5444 DEFSYM (Qdelete_file, "delete-file");
5441 Qrename_file = intern_c_string ("rename-file"); 5445 DEFSYM (Qrename_file, "rename-file");
5442 Qadd_name_to_file = intern_c_string ("add-name-to-file"); 5446 DEFSYM (Qadd_name_to_file, "add-name-to-file");
5443 Qmake_symbolic_link = intern_c_string ("make-symbolic-link"); 5447 DEFSYM (Qmake_symbolic_link, "make-symbolic-link");
5444 Qfile_exists_p = intern_c_string ("file-exists-p"); 5448 DEFSYM (Qfile_exists_p, "file-exists-p");
5445 Qfile_executable_p = intern_c_string ("file-executable-p"); 5449 DEFSYM (Qfile_executable_p, "file-executable-p");
5446 Qfile_readable_p = intern_c_string ("file-readable-p"); 5450 DEFSYM (Qfile_readable_p, "file-readable-p");
5447 Qfile_writable_p = intern_c_string ("file-writable-p"); 5451 DEFSYM (Qfile_writable_p, "file-writable-p");
5448 Qfile_symlink_p = intern_c_string ("file-symlink-p"); 5452 DEFSYM (Qfile_symlink_p, "file-symlink-p");
5449 Qaccess_file = intern_c_string ("access-file"); 5453 DEFSYM (Qaccess_file, "access-file");
5450 Qfile_directory_p = intern_c_string ("file-directory-p"); 5454 DEFSYM (Qfile_directory_p, "file-directory-p");
5451 Qfile_regular_p = intern_c_string ("file-regular-p"); 5455 DEFSYM (Qfile_regular_p, "file-regular-p");
5452 Qfile_accessible_directory_p = intern_c_string ("file-accessible-directory-p"); 5456 DEFSYM (Qfile_accessible_directory_p, "file-accessible-directory-p");
5453 Qfile_modes = intern_c_string ("file-modes"); 5457 DEFSYM (Qfile_modes, "file-modes");
5454 Qset_file_modes = intern_c_string ("set-file-modes"); 5458 DEFSYM (Qset_file_modes, "set-file-modes");
5455 Qset_file_times = intern_c_string ("set-file-times"); 5459 DEFSYM (Qset_file_times, "set-file-times");
5456 Qfile_selinux_context = intern_c_string("file-selinux-context"); 5460 DEFSYM (Qfile_selinux_context, "file-selinux-context");
5457 Qset_file_selinux_context = intern_c_string("set-file-selinux-context"); 5461 DEFSYM (Qset_file_selinux_context, "set-file-selinux-context");
5458 Qfile_newer_than_file_p = intern_c_string ("file-newer-than-file-p"); 5462 DEFSYM (Qfile_newer_than_file_p, "file-newer-than-file-p");
5459 Qinsert_file_contents = intern_c_string ("insert-file-contents"); 5463 DEFSYM (Qinsert_file_contents, "insert-file-contents");
5460 Qwrite_region = intern_c_string ("write-region"); 5464 DEFSYM (Qwrite_region, "write-region");
5461 Qverify_visited_file_modtime = intern_c_string ("verify-visited-file-modtime"); 5465 DEFSYM (Qverify_visited_file_modtime, "verify-visited-file-modtime");
5462 Qset_visited_file_modtime = intern_c_string ("set-visited-file-modtime"); 5466 DEFSYM (Qset_visited_file_modtime, "set-visited-file-modtime");
5463 Qauto_save_coding = intern_c_string ("auto-save-coding"); 5467 DEFSYM (Qauto_save_coding, "auto-save-coding");
5464 5468
5465 staticpro (&Qoperations); 5469 DEFSYM (Qfile_name_history, "file-name-history");
5466 staticpro (&Qexpand_file_name);
5467 staticpro (&Qsubstitute_in_file_name);
5468 staticpro (&Qdirectory_file_name);
5469 staticpro (&Qfile_name_directory);
5470 staticpro (&Qfile_name_nondirectory);
5471 staticpro (&Qunhandled_file_name_directory);
5472 staticpro (&Qfile_name_as_directory);
5473 staticpro (&Qcopy_file);
5474 staticpro (&Qmake_directory_internal);
5475 staticpro (&Qmake_directory);
5476 staticpro (&Qdelete_directory_internal);
5477 staticpro (&Qdelete_file);
5478 staticpro (&Qrename_file);
5479 staticpro (&Qadd_name_to_file);
5480 staticpro (&Qmake_symbolic_link);
5481 staticpro (&Qfile_exists_p);
5482 staticpro (&Qfile_executable_p);
5483 staticpro (&Qfile_readable_p);
5484 staticpro (&Qfile_writable_p);
5485 staticpro (&Qaccess_file);
5486 staticpro (&Qfile_symlink_p);
5487 staticpro (&Qfile_directory_p);
5488 staticpro (&Qfile_regular_p);
5489 staticpro (&Qfile_accessible_directory_p);
5490 staticpro (&Qfile_modes);
5491 staticpro (&Qset_file_modes);
5492 staticpro (&Qset_file_times);
5493 staticpro (&Qfile_selinux_context);
5494 staticpro (&Qset_file_selinux_context);
5495 staticpro (&Qfile_newer_than_file_p);
5496 staticpro (&Qinsert_file_contents);
5497 staticpro (&Qwrite_region);
5498 staticpro (&Qverify_visited_file_modtime);
5499 staticpro (&Qset_visited_file_modtime);
5500 staticpro (&Qauto_save_coding);
5501
5502 Qfile_name_history = intern_c_string ("file-name-history");
5503 Fset (Qfile_name_history, Qnil); 5470 Fset (Qfile_name_history, Qnil);
5504 staticpro (&Qfile_name_history);
5505 5471
5506 Qfile_error = intern_c_string ("file-error"); 5472 DEFSYM (Qfile_error, "file-error");
5507 staticpro (&Qfile_error); 5473 DEFSYM (Qfile_already_exists, "file-already-exists");
5508 Qfile_already_exists = intern_c_string ("file-already-exists"); 5474 DEFSYM (Qfile_date_error, "file-date-error");
5509 staticpro (&Qfile_already_exists); 5475 DEFSYM (Qexcl, "excl");
5510 Qfile_date_error = intern_c_string ("file-date-error");
5511 staticpro (&Qfile_date_error);
5512 Qexcl = intern_c_string ("excl");
5513 staticpro (&Qexcl);
5514 5476
5515 DEFVAR_LISP ("file-name-coding-system", Vfile_name_coding_system, 5477 DEFVAR_LISP ("file-name-coding-system", Vfile_name_coding_system,
5516 doc: /* *Coding system for encoding file names. 5478 doc: /* *Coding system for encoding file names.
@@ -5528,15 +5490,10 @@ instead use `file-name-coding-system' to get a constant encoding
5528of file names regardless of the current language environment. */); 5490of file names regardless of the current language environment. */);
5529 Vdefault_file_name_coding_system = Qnil; 5491 Vdefault_file_name_coding_system = Qnil;
5530 5492
5531 Qformat_decode = intern_c_string ("format-decode"); 5493 DEFSYM (Qformat_decode, "format-decode");
5532 staticpro (&Qformat_decode); 5494 DEFSYM (Qformat_annotate_function, "format-annotate-function");
5533 Qformat_annotate_function = intern_c_string ("format-annotate-function"); 5495 DEFSYM (Qafter_insert_file_set_coding, "after-insert-file-set-coding");
5534 staticpro (&Qformat_annotate_function); 5496 DEFSYM (Qcar_less_than_car, "car-less-than-car");
5535 Qafter_insert_file_set_coding = intern_c_string ("after-insert-file-set-coding");
5536 staticpro (&Qafter_insert_file_set_coding);
5537
5538 Qcar_less_than_car = intern_c_string ("car-less-than-car");
5539 staticpro (&Qcar_less_than_car);
5540 5497
5541 Fput (Qfile_error, Qerror_conditions, 5498 Fput (Qfile_error, Qerror_conditions,
5542 Fpurecopy (list2 (Qfile_error, Qerror))); 5499 Fpurecopy (list2 (Qfile_error, Qerror)));
@@ -5615,9 +5572,7 @@ After `write-region' completes, Emacs calls the function stored in
5615current when building the annotations (i.e., at least once), with that 5572current when building the annotations (i.e., at least once), with that
5616buffer current. */); 5573buffer current. */);
5617 Vwrite_region_annotate_functions = Qnil; 5574 Vwrite_region_annotate_functions = Qnil;
5618 staticpro (&Qwrite_region_annotate_functions); 5575 DEFSYM (Qwrite_region_annotate_functions, "write-region-annotate-functions");
5619 Qwrite_region_annotate_functions
5620 = intern_c_string ("write-region-annotate-functions");
5621 5576
5622 DEFVAR_LISP ("write-region-post-annotation-function", 5577 DEFVAR_LISP ("write-region-post-annotation-function",
5623 Vwrite_region_post_annotation_function, 5578 Vwrite_region_post_annotation_function,
@@ -5681,12 +5636,10 @@ This includes interactive calls to `delete-file' and
5681`delete-directory' and the Dired deletion commands. */); 5636`delete-directory' and the Dired deletion commands. */);
5682 delete_by_moving_to_trash = 0; 5637 delete_by_moving_to_trash = 0;
5683 Qdelete_by_moving_to_trash = intern_c_string ("delete-by-moving-to-trash"); 5638 Qdelete_by_moving_to_trash = intern_c_string ("delete-by-moving-to-trash");
5684 Qmove_file_to_trash = intern_c_string ("move-file-to-trash"); 5639
5685 staticpro (&Qmove_file_to_trash); 5640 DEFSYM (Qmove_file_to_trash, "move-file-to-trash");
5686 Qcopy_directory = intern_c_string ("copy-directory"); 5641 DEFSYM (Qcopy_directory, "copy-directory");
5687 staticpro (&Qcopy_directory); 5642 DEFSYM (Qdelete_directory, "delete-directory");
5688 Qdelete_directory = intern_c_string ("delete-directory");
5689 staticpro (&Qdelete_directory);
5690 5643
5691 defsubr (&Sfind_file_name_handler); 5644 defsubr (&Sfind_file_name_handler);
5692 defsubr (&Sfile_name_directory); 5645 defsubr (&Sfile_name_directory);
diff --git a/src/fns.c b/src/fns.c
index 5bf274030a3..0ca731ed331 100644
--- a/src/fns.c
+++ b/src/fns.c
@@ -79,10 +79,14 @@ Other values of LIMIT are ignored. */)
79{ 79{
80 EMACS_INT val; 80 EMACS_INT val;
81 Lisp_Object lispy_val; 81 Lisp_Object lispy_val;
82 EMACS_UINT denominator;
83 82
84 if (EQ (limit, Qt)) 83 if (EQ (limit, Qt))
85 seed_random (getpid () + time (NULL)); 84 {
85 EMACS_TIME t;
86 EMACS_GET_TIME (t);
87 seed_random (getpid () ^ EMACS_SECS (t) ^ EMACS_USECS (t));
88 }
89
86 if (NATNUMP (limit) && XFASTINT (limit) != 0) 90 if (NATNUMP (limit) && XFASTINT (limit) != 0)
87 { 91 {
88 /* Try to take our random number from the higher bits of VAL, 92 /* Try to take our random number from the higher bits of VAL,
@@ -92,7 +96,7 @@ Other values of LIMIT are ignored. */)
92 it's possible to get a quotient larger than n; discarding 96 it's possible to get a quotient larger than n; discarding
93 these values eliminates the bias that would otherwise appear 97 these values eliminates the bias that would otherwise appear
94 when using a large n. */ 98 when using a large n. */
95 denominator = ((EMACS_UINT) 1 << VALBITS) / XFASTINT (limit); 99 EMACS_INT denominator = (INTMASK + 1) / XFASTINT (limit);
96 do 100 do
97 val = get_random () / denominator; 101 val = get_random () / denominator;
98 while (val >= XFASTINT (limit)); 102 while (val >= XFASTINT (limit));
@@ -2613,6 +2617,7 @@ is not loaded; so load the file FILENAME.
2613If FILENAME is omitted, the printname of FEATURE is used as the file name, 2617If FILENAME is omitted, the printname of FEATURE is used as the file name,
2614and `load' will try to load this name appended with the suffix `.elc' or 2618and `load' will try to load this name appended with the suffix `.elc' or
2615`.el', in that order. The name without appended suffix will not be used. 2619`.el', in that order. The name without appended suffix will not be used.
2620See `get-load-suffixes' for the complete list of suffixes.
2616If the optional third argument NOERROR is non-nil, 2621If the optional third argument NOERROR is non-nil,
2617then return nil if the file is not found instead of signaling an error. 2622then return nil if the file is not found instead of signaling an error.
2618Normally the return value is FEATURE. 2623Normally the return value is FEATURE.
@@ -4854,34 +4859,20 @@ syms_of_fns (void)
4854 DEFSYM (Qsha512, "sha512"); 4859 DEFSYM (Qsha512, "sha512");
4855 4860
4856 /* Hash table stuff. */ 4861 /* Hash table stuff. */
4857 Qhash_table_p = intern_c_string ("hash-table-p"); 4862 DEFSYM (Qhash_table_p, "hash-table-p");
4858 staticpro (&Qhash_table_p); 4863 DEFSYM (Qeq, "eq");
4859 Qeq = intern_c_string ("eq"); 4864 DEFSYM (Qeql, "eql");
4860 staticpro (&Qeq); 4865 DEFSYM (Qequal, "equal");
4861 Qeql = intern_c_string ("eql"); 4866 DEFSYM (QCtest, ":test");
4862 staticpro (&Qeql); 4867 DEFSYM (QCsize, ":size");
4863 Qequal = intern_c_string ("equal"); 4868 DEFSYM (QCrehash_size, ":rehash-size");
4864 staticpro (&Qequal); 4869 DEFSYM (QCrehash_threshold, ":rehash-threshold");
4865 QCtest = intern_c_string (":test"); 4870 DEFSYM (QCweakness, ":weakness");
4866 staticpro (&QCtest); 4871 DEFSYM (Qkey, "key");
4867 QCsize = intern_c_string (":size"); 4872 DEFSYM (Qvalue, "value");
4868 staticpro (&QCsize); 4873 DEFSYM (Qhash_table_test, "hash-table-test");
4869 QCrehash_size = intern_c_string (":rehash-size"); 4874 DEFSYM (Qkey_or_value, "key-or-value");
4870 staticpro (&QCrehash_size); 4875 DEFSYM (Qkey_and_value, "key-and-value");
4871 QCrehash_threshold = intern_c_string (":rehash-threshold");
4872 staticpro (&QCrehash_threshold);
4873 QCweakness = intern_c_string (":weakness");
4874 staticpro (&QCweakness);
4875 Qkey = intern_c_string ("key");
4876 staticpro (&Qkey);
4877 Qvalue = intern_c_string ("value");
4878 staticpro (&Qvalue);
4879 Qhash_table_test = intern_c_string ("hash-table-test");
4880 staticpro (&Qhash_table_test);
4881 Qkey_or_value = intern_c_string ("key-or-value");
4882 staticpro (&Qkey_or_value);
4883 Qkey_and_value = intern_c_string ("key-and-value");
4884 staticpro (&Qkey_and_value);
4885 4876
4886 defsubr (&Ssxhash); 4877 defsubr (&Ssxhash);
4887 defsubr (&Smake_hash_table); 4878 defsubr (&Smake_hash_table);
@@ -4900,18 +4891,12 @@ syms_of_fns (void)
4900 defsubr (&Smaphash); 4891 defsubr (&Smaphash);
4901 defsubr (&Sdefine_hash_table_test); 4892 defsubr (&Sdefine_hash_table_test);
4902 4893
4903 Qstring_lessp = intern_c_string ("string-lessp"); 4894 DEFSYM (Qstring_lessp, "string-lessp");
4904 staticpro (&Qstring_lessp); 4895 DEFSYM (Qprovide, "provide");
4905 Qprovide = intern_c_string ("provide"); 4896 DEFSYM (Qrequire, "require");
4906 staticpro (&Qprovide); 4897 DEFSYM (Qyes_or_no_p_history, "yes-or-no-p-history");
4907 Qrequire = intern_c_string ("require"); 4898 DEFSYM (Qcursor_in_echo_area, "cursor-in-echo-area");
4908 staticpro (&Qrequire); 4899 DEFSYM (Qwidget_type, "widget-type");
4909 Qyes_or_no_p_history = intern_c_string ("yes-or-no-p-history");
4910 staticpro (&Qyes_or_no_p_history);
4911 Qcursor_in_echo_area = intern_c_string ("cursor-in-echo-area");
4912 staticpro (&Qcursor_in_echo_area);
4913 Qwidget_type = intern_c_string ("widget-type");
4914 staticpro (&Qwidget_type);
4915 4900
4916 staticpro (&string_char_byte_cache_string); 4901 staticpro (&string_char_byte_cache_string);
4917 string_char_byte_cache_string = Qnil; 4902 string_char_byte_cache_string = Qnil;
@@ -4925,18 +4910,13 @@ syms_of_fns (void)
4925 doc: /* A list of symbols which are the features of the executing Emacs. 4910 doc: /* A list of symbols which are the features of the executing Emacs.
4926Used by `featurep' and `require', and altered by `provide'. */); 4911Used by `featurep' and `require', and altered by `provide'. */);
4927 Vfeatures = Fcons (intern_c_string ("emacs"), Qnil); 4912 Vfeatures = Fcons (intern_c_string ("emacs"), Qnil);
4928 Qsubfeatures = intern_c_string ("subfeatures"); 4913 DEFSYM (Qsubfeatures, "subfeatures");
4929 staticpro (&Qsubfeatures);
4930 4914
4931#ifdef HAVE_LANGINFO_CODESET 4915#ifdef HAVE_LANGINFO_CODESET
4932 Qcodeset = intern_c_string ("codeset"); 4916 DEFSYM (Qcodeset, "codeset");
4933 staticpro (&Qcodeset); 4917 DEFSYM (Qdays, "days");
4934 Qdays = intern_c_string ("days"); 4918 DEFSYM (Qmonths, "months");
4935 staticpro (&Qdays); 4919 DEFSYM (Qpaper, "paper");
4936 Qmonths = intern_c_string ("months");
4937 staticpro (&Qmonths);
4938 Qpaper = intern_c_string ("paper");
4939 staticpro (&Qpaper);
4940#endif /* HAVE_LANGINFO_CODESET */ 4920#endif /* HAVE_LANGINFO_CODESET */
4941 4921
4942 DEFVAR_BOOL ("use-dialog-box", use_dialog_box, 4922 DEFVAR_BOOL ("use-dialog-box", use_dialog_box,
diff --git a/src/frame.c b/src/frame.c
index 27a31fac3e7..635996ca424 100644
--- a/src/frame.c
+++ b/src/frame.c
@@ -4240,104 +4240,58 @@ selected frame. This is useful when `make-pointer-invisible' is set. */)
4240void 4240void
4241syms_of_frame (void) 4241syms_of_frame (void)
4242{ 4242{
4243 Qframep = intern_c_string ("framep"); 4243 DEFSYM (Qframep, "framep");
4244 staticpro (&Qframep); 4244 DEFSYM (Qframe_live_p, "frame-live-p");
4245 Qframe_live_p = intern_c_string ("frame-live-p"); 4245 DEFSYM (Qexplicit_name, "explicit-name");
4246 staticpro (&Qframe_live_p); 4246 DEFSYM (Qheight, "height");
4247 Qexplicit_name = intern_c_string ("explicit-name"); 4247 DEFSYM (Qicon, "icon");
4248 staticpro (&Qexplicit_name); 4248 DEFSYM (Qminibuffer, "minibuffer");
4249 Qheight = intern_c_string ("height"); 4249 DEFSYM (Qmodeline, "modeline");
4250 staticpro (&Qheight); 4250 DEFSYM (Qonly, "only");
4251 Qicon = intern_c_string ("icon"); 4251 DEFSYM (Qwidth, "width");
4252 staticpro (&Qicon); 4252 DEFSYM (Qgeometry, "geometry");
4253 Qminibuffer = intern_c_string ("minibuffer"); 4253 DEFSYM (Qicon_left, "icon-left");
4254 staticpro (&Qminibuffer); 4254 DEFSYM (Qicon_top, "icon-top");
4255 Qmodeline = intern_c_string ("modeline"); 4255 DEFSYM (Qtooltip, "tooltip");
4256 staticpro (&Qmodeline); 4256 DEFSYM (Qleft, "left");
4257 Qonly = intern_c_string ("only"); 4257 DEFSYM (Qright, "right");
4258 staticpro (&Qonly); 4258 DEFSYM (Quser_position, "user-position");
4259 Qwidth = intern_c_string ("width"); 4259 DEFSYM (Quser_size, "user-size");
4260 staticpro (&Qwidth); 4260 DEFSYM (Qwindow_id, "window-id");
4261 Qgeometry = intern_c_string ("geometry");
4262 staticpro (&Qgeometry);
4263 Qicon_left = intern_c_string ("icon-left");
4264 staticpro (&Qicon_left);
4265 Qicon_top = intern_c_string ("icon-top");
4266 staticpro (&Qicon_top);
4267 Qtooltip = intern_c_string ("tooltip");
4268 staticpro (&Qtooltip);
4269 Qleft = intern_c_string ("left");
4270 staticpro (&Qleft);
4271 Qright = intern_c_string ("right");
4272 staticpro (&Qright);
4273 Quser_position = intern_c_string ("user-position");
4274 staticpro (&Quser_position);
4275 Quser_size = intern_c_string ("user-size");
4276 staticpro (&Quser_size);
4277 Qwindow_id = intern_c_string ("window-id");
4278 staticpro (&Qwindow_id);
4279#ifdef HAVE_X_WINDOWS 4261#ifdef HAVE_X_WINDOWS
4280 Qouter_window_id = intern_c_string ("outer-window-id"); 4262 DEFSYM (Qouter_window_id, "outer-window-id");
4281 staticpro (&Qouter_window_id);
4282#endif 4263#endif
4283 Qparent_id = intern_c_string ("parent-id"); 4264 DEFSYM (Qparent_id, "parent-id");
4284 staticpro (&Qparent_id); 4265 DEFSYM (Qx, "x");
4285 Qx = intern_c_string ("x"); 4266 DEFSYM (Qw32, "w32");
4286 staticpro (&Qx); 4267 DEFSYM (Qpc, "pc");
4287 Qw32 = intern_c_string ("w32"); 4268 DEFSYM (Qmac, "mac");
4288 staticpro (&Qw32); 4269 DEFSYM (Qns, "ns");
4289 Qpc = intern_c_string ("pc"); 4270 DEFSYM (Qvisible, "visible");
4290 staticpro (&Qpc); 4271 DEFSYM (Qbuffer_predicate, "buffer-predicate");
4291 Qmac = intern_c_string ("mac"); 4272 DEFSYM (Qbuffer_list, "buffer-list");
4292 staticpro (&Qmac); 4273 DEFSYM (Qburied_buffer_list, "buried-buffer-list");
4293 Qns = intern_c_string ("ns"); 4274 DEFSYM (Qdisplay_type, "display-type");
4294 staticpro (&Qns); 4275 DEFSYM (Qbackground_mode, "background-mode");
4295 Qvisible = intern_c_string ("visible"); 4276 DEFSYM (Qnoelisp, "noelisp");
4296 staticpro (&Qvisible); 4277 DEFSYM (Qtty_color_mode, "tty-color-mode");
4297 Qbuffer_predicate = intern_c_string ("buffer-predicate"); 4278 DEFSYM (Qtty, "tty");
4298 staticpro (&Qbuffer_predicate); 4279 DEFSYM (Qtty_type, "tty-type");
4299 Qbuffer_list = intern_c_string ("buffer-list"); 4280
4300 staticpro (&Qbuffer_list); 4281 DEFSYM (Qface_set_after_frame_default, "face-set-after-frame-default");
4301 Qburied_buffer_list = intern_c_string ("buried-buffer-list"); 4282
4302 staticpro (&Qburied_buffer_list); 4283 DEFSYM (Qfullwidth, "fullwidth");
4303 Qdisplay_type = intern_c_string ("display-type"); 4284 DEFSYM (Qfullheight, "fullheight");
4304 staticpro (&Qdisplay_type); 4285 DEFSYM (Qfullboth, "fullboth");
4305 Qbackground_mode = intern_c_string ("background-mode"); 4286 DEFSYM (Qmaximized, "maximized");
4306 staticpro (&Qbackground_mode); 4287 DEFSYM (Qx_resource_name, "x-resource-name");
4307 Qnoelisp = intern_c_string ("noelisp"); 4288 DEFSYM (Qx_frame_parameter, "x-frame-parameter");
4308 staticpro (&Qnoelisp); 4289
4309 Qtty_color_mode = intern_c_string ("tty-color-mode"); 4290 DEFSYM (Qterminal, "terminal");
4310 staticpro (&Qtty_color_mode); 4291 DEFSYM (Qterminal_live_p, "terminal-live-p");
4311 Qtty = intern_c_string ("tty");
4312 staticpro (&Qtty);
4313 Qtty_type = intern_c_string ("tty-type");
4314 staticpro (&Qtty_type);
4315
4316 Qface_set_after_frame_default = intern_c_string ("face-set-after-frame-default");
4317 staticpro (&Qface_set_after_frame_default);
4318
4319 Qfullwidth = intern_c_string ("fullwidth");
4320 staticpro (&Qfullwidth);
4321 Qfullheight = intern_c_string ("fullheight");
4322 staticpro (&Qfullheight);
4323 Qfullboth = intern_c_string ("fullboth");
4324 staticpro (&Qfullboth);
4325 Qmaximized = intern_c_string ("maximized");
4326 staticpro (&Qmaximized);
4327 Qx_resource_name = intern_c_string ("x-resource-name");
4328 staticpro (&Qx_resource_name);
4329
4330 Qx_frame_parameter = intern_c_string ("x-frame-parameter");
4331 staticpro (&Qx_frame_parameter);
4332
4333 Qterminal = intern_c_string ("terminal");
4334 staticpro (&Qterminal);
4335 Qterminal_live_p = intern_c_string ("terminal-live-p");
4336 staticpro (&Qterminal_live_p);
4337 4292
4338#ifdef HAVE_NS 4293#ifdef HAVE_NS
4339 Qns_parse_geometry = intern_c_string ("ns-parse-geometry"); 4294 DEFSYM (Qns_parse_geometry, "ns-parse-geometry");
4340 staticpro (&Qns_parse_geometry);
4341#endif 4295#endif
4342 4296
4343 { 4297 {
@@ -4451,8 +4405,7 @@ actually deleted, or some time later (or even both when an earlier function
4451in `delete-frame-functions' (indirectly) calls `delete-frame' 4405in `delete-frame-functions' (indirectly) calls `delete-frame'
4452recursively). */); 4406recursively). */);
4453 Vdelete_frame_functions = Qnil; 4407 Vdelete_frame_functions = Qnil;
4454 Qdelete_frame_functions = intern_c_string ("delete-frame-functions"); 4408 DEFSYM (Qdelete_frame_functions, "delete-frame-functions");
4455 staticpro (&Qdelete_frame_functions);
4456 4409
4457 DEFVAR_LISP ("menu-bar-mode", Vmenu_bar_mode, 4410 DEFVAR_LISP ("menu-bar-mode", Vmenu_bar_mode,
4458 doc: /* Non-nil if Menu-Bar mode is enabled. 4411 doc: /* Non-nil if Menu-Bar mode is enabled.
diff --git a/src/fringe.c b/src/fringe.c
index d886ac48852..a4dc9433aff 100644
--- a/src/fringe.c
+++ b/src/fringe.c
@@ -1738,18 +1738,12 @@ Return nil if POS is not visible in WINDOW. */)
1738void 1738void
1739syms_of_fringe (void) 1739syms_of_fringe (void)
1740{ 1740{
1741 Qtruncation = intern_c_string ("truncation"); 1741 DEFSYM (Qtruncation, "truncation");
1742 staticpro (&Qtruncation); 1742 DEFSYM (Qcontinuation, "continuation");
1743 Qcontinuation = intern_c_string ("continuation"); 1743 DEFSYM (Qoverlay_arrow, "overlay-arrow");
1744 staticpro (&Qcontinuation); 1744 DEFSYM (Qempty_line, "empty-line");
1745 Qoverlay_arrow = intern_c_string ("overlay-arrow"); 1745 DEFSYM (Qtop_bottom, "top-bottom");
1746 staticpro (&Qoverlay_arrow); 1746 DEFSYM (Qhollow_small, "hollow-small");
1747 Qempty_line = intern_c_string ("empty-line");
1748 staticpro (&Qempty_line);
1749 Qtop_bottom = intern_c_string ("top-bottom");
1750 staticpro (&Qtop_bottom);
1751 Qhollow_small = intern_c_string ("hollow-small");
1752 staticpro (&Qhollow_small);
1753 1747
1754 defsubr (&Sdestroy_fringe_bitmap); 1748 defsubr (&Sdestroy_fringe_bitmap);
1755 defsubr (&Sdefine_fringe_bitmap); 1749 defsubr (&Sdefine_fringe_bitmap);
diff --git a/src/gnutls.c b/src/gnutls.c
index 9342ce7912e..76cfa5dcc98 100644
--- a/src/gnutls.c
+++ b/src/gnutls.c
@@ -51,7 +51,6 @@ static Lisp_Object Qgnutls_bootprop_callbacks;
51static Lisp_Object Qgnutls_bootprop_loglevel; 51static Lisp_Object Qgnutls_bootprop_loglevel;
52static Lisp_Object Qgnutls_bootprop_hostname; 52static Lisp_Object Qgnutls_bootprop_hostname;
53static Lisp_Object Qgnutls_bootprop_verify_flags; 53static Lisp_Object Qgnutls_bootprop_verify_flags;
54static Lisp_Object Qgnutls_bootprop_verify_error;
55static Lisp_Object Qgnutls_bootprop_verify_hostname_error; 54static Lisp_Object Qgnutls_bootprop_verify_hostname_error;
56 55
57/* Callback keys for `gnutls-boot'. Unused currently. */ 56/* Callback keys for `gnutls-boot'. Unused currently. */
@@ -380,7 +379,7 @@ emacs_gnutls_read (struct Lisp_Process *proc, char *buf, EMACS_INT nbyte)
380 /* non-fatal error */ 379 /* non-fatal error */
381 return -1; 380 return -1;
382 else { 381 else {
383 /* a fatal error occured */ 382 /* a fatal error occurred */
384 return 0; 383 return 0;
385 } 384 }
386} 385}
@@ -639,9 +638,6 @@ certificates for `gnutls-x509pki'.
639:verify-flags is a bitset as per GnuTLS' 638:verify-flags is a bitset as per GnuTLS'
640gnutls_certificate_set_verify_flags. 639gnutls_certificate_set_verify_flags.
641 640
642:verify-error, if non-nil, makes failure of the certificate validation
643an error. Otherwise it will be just a series of warnings.
644
645:verify-hostname-error, if non-nil, makes a hostname mismatch an 641:verify-hostname-error, if non-nil, makes a hostname mismatch an
646error. Otherwise it will be just a warning. 642error. Otherwise it will be just a warning.
647 643
@@ -1101,72 +1097,35 @@ syms_of_gnutls (void)
1101{ 1097{
1102 gnutls_global_initialized = 0; 1098 gnutls_global_initialized = 0;
1103 1099
1104 Qgnutls_dll = intern_c_string ("gnutls"); 1100 DEFSYM (Qgnutls_dll, "gnutls");
1105 staticpro (&Qgnutls_dll); 1101 DEFSYM (Qgnutls_log_level, "gnutls-log-level");
1106 1102 DEFSYM (Qgnutls_code, "gnutls-code");
1107 Qgnutls_log_level = intern_c_string ("gnutls-log-level"); 1103 DEFSYM (Qgnutls_anon, "gnutls-anon");
1108 staticpro (&Qgnutls_log_level); 1104 DEFSYM (Qgnutls_x509pki, "gnutls-x509pki");
1109 1105 DEFSYM (Qgnutls_bootprop_hostname, ":hostname");
1110 Qgnutls_code = intern_c_string ("gnutls-code"); 1106 DEFSYM (Qgnutls_bootprop_priority, ":priority");
1111 staticpro (&Qgnutls_code); 1107 DEFSYM (Qgnutls_bootprop_trustfiles, ":trustfiles");
1112 1108 DEFSYM (Qgnutls_bootprop_keylist, ":keylist");
1113 Qgnutls_anon = intern_c_string ("gnutls-anon"); 1109 DEFSYM (Qgnutls_bootprop_crlfiles, ":crlfiles");
1114 staticpro (&Qgnutls_anon); 1110 DEFSYM (Qgnutls_bootprop_callbacks, ":callbacks");
1115 1111 DEFSYM (Qgnutls_bootprop_callbacks_verify, "verify");
1116 Qgnutls_x509pki = intern_c_string ("gnutls-x509pki"); 1112 DEFSYM (Qgnutls_bootprop_loglevel, ":loglevel");
1117 staticpro (&Qgnutls_x509pki); 1113 DEFSYM (Qgnutls_bootprop_verify_flags, ":verify-flags");
1118 1114 DEFSYM (Qgnutls_bootprop_verify_hostname_error, ":verify-hostname-error");
1119 Qgnutls_bootprop_hostname = intern_c_string (":hostname"); 1115
1120 staticpro (&Qgnutls_bootprop_hostname); 1116 DEFSYM (Qgnutls_e_interrupted, "gnutls-e-interrupted");
1121
1122 Qgnutls_bootprop_priority = intern_c_string (":priority");
1123 staticpro (&Qgnutls_bootprop_priority);
1124
1125 Qgnutls_bootprop_trustfiles = intern_c_string (":trustfiles");
1126 staticpro (&Qgnutls_bootprop_trustfiles);
1127
1128 Qgnutls_bootprop_keylist = intern_c_string (":keylist");
1129 staticpro (&Qgnutls_bootprop_keylist);
1130
1131 Qgnutls_bootprop_crlfiles = intern_c_string (":crlfiles");
1132 staticpro (&Qgnutls_bootprop_crlfiles);
1133
1134 Qgnutls_bootprop_callbacks = intern_c_string (":callbacks");
1135 staticpro (&Qgnutls_bootprop_callbacks);
1136
1137 Qgnutls_bootprop_callbacks_verify = intern_c_string ("verify");
1138 staticpro (&Qgnutls_bootprop_callbacks_verify);
1139
1140 Qgnutls_bootprop_loglevel = intern_c_string (":loglevel");
1141 staticpro (&Qgnutls_bootprop_loglevel);
1142
1143 Qgnutls_bootprop_verify_flags = intern_c_string (":verify-flags");
1144 staticpro (&Qgnutls_bootprop_verify_flags);
1145
1146 Qgnutls_bootprop_verify_hostname_error = intern_c_string (":verify-error");
1147 staticpro (&Qgnutls_bootprop_verify_error);
1148
1149 Qgnutls_bootprop_verify_hostname_error = intern_c_string (":verify-hostname-error");
1150 staticpro (&Qgnutls_bootprop_verify_hostname_error);
1151
1152 Qgnutls_e_interrupted = intern_c_string ("gnutls-e-interrupted");
1153 staticpro (&Qgnutls_e_interrupted);
1154 Fput (Qgnutls_e_interrupted, Qgnutls_code, 1117 Fput (Qgnutls_e_interrupted, Qgnutls_code,
1155 make_number (GNUTLS_E_INTERRUPTED)); 1118 make_number (GNUTLS_E_INTERRUPTED));
1156 1119
1157 Qgnutls_e_again = intern_c_string ("gnutls-e-again"); 1120 DEFSYM (Qgnutls_e_again, "gnutls-e-again");
1158 staticpro (&Qgnutls_e_again);
1159 Fput (Qgnutls_e_again, Qgnutls_code, 1121 Fput (Qgnutls_e_again, Qgnutls_code,
1160 make_number (GNUTLS_E_AGAIN)); 1122 make_number (GNUTLS_E_AGAIN));
1161 1123
1162 Qgnutls_e_invalid_session = intern_c_string ("gnutls-e-invalid-session"); 1124 DEFSYM (Qgnutls_e_invalid_session, "gnutls-e-invalid-session");
1163 staticpro (&Qgnutls_e_invalid_session);
1164 Fput (Qgnutls_e_invalid_session, Qgnutls_code, 1125 Fput (Qgnutls_e_invalid_session, Qgnutls_code,
1165 make_number (GNUTLS_E_INVALID_SESSION)); 1126 make_number (GNUTLS_E_INVALID_SESSION));
1166 1127
1167 Qgnutls_e_not_ready_for_handshake = 1128 DEFSYM (Qgnutls_e_not_ready_for_handshake, "gnutls-e-not-ready-for-handshake");
1168 intern_c_string ("gnutls-e-not-ready-for-handshake");
1169 staticpro (&Qgnutls_e_not_ready_for_handshake);
1170 Fput (Qgnutls_e_not_ready_for_handshake, Qgnutls_code, 1129 Fput (Qgnutls_e_not_ready_for_handshake, Qgnutls_code,
1171 make_number (GNUTLS_E_APPLICATION_ERROR_MIN)); 1130 make_number (GNUTLS_E_APPLICATION_ERROR_MIN));
1172 1131
diff --git a/src/gtkutil.c b/src/gtkutil.c
index 6c00058e7af..343fcfa083a 100644
--- a/src/gtkutil.c
+++ b/src/gtkutil.c
@@ -1086,7 +1086,7 @@ xg_create_frame_widgets (FRAME_PTR f)
1086 whbox = gtk_hbox_new (FALSE, 0); 1086 whbox = gtk_hbox_new (FALSE, 0);
1087 1087
1088#ifdef HAVE_GTK3 1088#ifdef HAVE_GTK3
1089 wfixed = emacs_fixed_new (); 1089 wfixed = emacs_fixed_new (f);
1090#else 1090#else
1091 wfixed = gtk_fixed_new (); 1091 wfixed = gtk_fixed_new ();
1092#endif 1092#endif
@@ -1286,18 +1286,6 @@ x_wm_set_size_hint (FRAME_PTR f, long int flags, int user_position)
1286 size_hints.min_width = base_width + min_cols * size_hints.width_inc; 1286 size_hints.min_width = base_width + min_cols * size_hints.width_inc;
1287 size_hints.min_height = base_height + min_rows * size_hints.height_inc; 1287 size_hints.min_height = base_height + min_rows * size_hints.height_inc;
1288 1288
1289#ifdef HAVE_GTK3
1290 /* Gtk3 ignores min width/height and overwrites them with its own idea
1291 of min width/height. Put out min values to the widget so Gtk
1292 gets the same value we want it to be. Without this, a user can't
1293 shrink an Emacs frame.
1294 */
1295 if (FRAME_GTK_WIDGET (f))
1296 emacs_fixed_set_min_size (EMACS_FIXED (FRAME_GTK_WIDGET (f)),
1297 size_hints.min_width,
1298 size_hints.min_height);
1299#endif
1300
1301 /* These currently have a one to one mapping with the X values, but I 1289 /* These currently have a one to one mapping with the X values, but I
1302 don't think we should rely on that. */ 1290 don't think we should rely on that. */
1303 hint_flags |= GDK_HINT_WIN_GRAVITY; 1291 hint_flags |= GDK_HINT_WIN_GRAVITY;
@@ -1336,7 +1324,7 @@ x_wm_set_size_hint (FRAME_PTR f, long int flags, int user_position)
1336 { 1324 {
1337 BLOCK_INPUT; 1325 BLOCK_INPUT;
1338 gtk_window_set_geometry_hints (GTK_WINDOW (FRAME_GTK_OUTER_WIDGET (f)), 1326 gtk_window_set_geometry_hints (GTK_WINDOW (FRAME_GTK_OUTER_WIDGET (f)),
1339 NULL, &size_hints, hint_flags); 1327 NULL, &size_hints, hint_flags);
1340 f->output_data.x->size_hints = size_hints; 1328 f->output_data.x->size_hints = size_hints;
1341 f->output_data.x->hint_flags = hint_flags; 1329 f->output_data.x->hint_flags = hint_flags;
1342 UNBLOCK_INPUT; 1330 UNBLOCK_INPUT;
diff --git a/src/image.c b/src/image.c
index a9785e5d00f..6e8440fb431 100644
--- a/src/image.c
+++ b/src/image.c
@@ -1836,6 +1836,8 @@ cache_image (struct frame *f, struct image *img)
1836 /* If no free slot found, maybe enlarge c->images. */ 1836 /* If no free slot found, maybe enlarge c->images. */
1837 if (i == c->used && c->used == c->size) 1837 if (i == c->used && c->used == c->size)
1838 { 1838 {
1839 if (min (PTRDIFF_MAX, SIZE_MAX) / sizeof *c->images / 2 < c->size)
1840 memory_full (SIZE_MAX);
1839 c->size *= 2; 1841 c->size *= 2;
1840 c->images = (struct image **) xrealloc (c->images, 1842 c->images = (struct image **) xrealloc (c->images,
1841 c->size * sizeof *c->images); 1843 c->size * sizeof *c->images);
diff --git a/src/insdel.c b/src/insdel.c
index c52785cd33d..0cae578925d 100644
--- a/src/insdel.c
+++ b/src/insdel.c
@@ -2219,8 +2219,7 @@ syms_of_insdel (void)
2219This affects `before-change-functions' and `after-change-functions', 2219This affects `before-change-functions' and `after-change-functions',
2220as well as hooks attached to text properties and overlays. */); 2220as well as hooks attached to text properties and overlays. */);
2221 inhibit_modification_hooks = 0; 2221 inhibit_modification_hooks = 0;
2222 Qinhibit_modification_hooks = intern_c_string ("inhibit-modification-hooks"); 2222 DEFSYM (Qinhibit_modification_hooks, "inhibit-modification-hooks");
2223 staticpro (&Qinhibit_modification_hooks);
2224 2223
2225 defsubr (&Scombine_after_change_execute); 2224 defsubr (&Scombine_after_change_execute);
2226} 2225}
diff --git a/src/keyboard.c b/src/keyboard.c
index bffe2b035dc..16300e6154c 100644
--- a/src/keyboard.c
+++ b/src/keyboard.c
@@ -1539,7 +1539,18 @@ command_loop_1 (void)
1539 message_with_string ("%s is undefined", keys, 0); 1539 message_with_string ("%s is undefined", keys, 0);
1540 KVAR (current_kboard, defining_kbd_macro) = Qnil; 1540 KVAR (current_kboard, defining_kbd_macro) = Qnil;
1541 update_mode_lines = 1; 1541 update_mode_lines = 1;
1542 KVAR (current_kboard, Vprefix_arg) = Qnil; 1542 /* If this is a down-mouse event, don't reset prefix-arg;
1543 pass it to the command run by the up event. */
1544 if (EVENT_HAS_PARAMETERS (last_command_event))
1545 {
1546 Lisp_Object breakdown
1547 = parse_modifiers (EVENT_HEAD (last_command_event));
1548 int modifiers = XINT (XCAR (XCDR (breakdown)));
1549 if (!(modifiers & down_modifier))
1550 KVAR (current_kboard, Vprefix_arg) = Qnil;
1551 }
1552 else
1553 KVAR (current_kboard, Vprefix_arg) = Qnil;
1543 } 1554 }
1544 else 1555 else
1545 { 1556 {
@@ -7470,7 +7481,7 @@ menu_bar_items (Lisp_Object old)
7470 if (CONSP (def)) 7481 if (CONSP (def))
7471 { 7482 {
7472 menu_bar_one_keymap_changed_items = Qnil; 7483 menu_bar_one_keymap_changed_items = Qnil;
7473 map_keymap (def, menu_bar_item, Qnil, NULL, 1); 7484 map_keymap_canonical (def, menu_bar_item, Qnil, NULL);
7474 } 7485 }
7475 } 7486 }
7476 7487
@@ -7811,7 +7822,7 @@ parse_menu_item (Lisp_Object item, int inmenubar)
7811 /* If we got no definition, this item is just unselectable text which 7822 /* If we got no definition, this item is just unselectable text which
7812 is OK in a submenu but not in the menubar. */ 7823 is OK in a submenu but not in the menubar. */
7813 if (NILP (def)) 7824 if (NILP (def))
7814 return (inmenubar ? 0 : 1); 7825 return (!inmenubar);
7815 7826
7816 /* See if this is a separate pane or a submenu. */ 7827 /* See if this is a separate pane or a submenu. */
7817 def = AREF (item_properties, ITEM_PROPERTY_DEF); 7828 def = AREF (item_properties, ITEM_PROPERTY_DEF);
diff --git a/src/keyboard.h b/src/keyboard.h
index 20763c35f3a..91008a3ea24 100644
--- a/src/keyboard.h
+++ b/src/keyboard.h
@@ -123,7 +123,7 @@ struct kboard
123 Lisp_Object *kbd_macro_end; 123 Lisp_Object *kbd_macro_end;
124 124
125 /* Allocated size of kbd_macro_buffer. */ 125 /* Allocated size of kbd_macro_buffer. */
126 int kbd_macro_bufsize; 126 ptrdiff_t kbd_macro_bufsize;
127 127
128 /* Last anonymous kbd macro defined. */ 128 /* Last anonymous kbd macro defined. */
129 Lisp_Object KBOARD_INTERNAL_FIELD (Vlast_kbd_macro); 129 Lisp_Object KBOARD_INTERNAL_FIELD (Vlast_kbd_macro);
diff --git a/src/keymap.c b/src/keymap.c
index 6ef2a716b6d..be31f72eec6 100644
--- a/src/keymap.c
+++ b/src/keymap.c
@@ -16,6 +16,27 @@ GNU General Public License for more details.
16You should have received a copy of the GNU General Public License 16You should have received a copy of the GNU General Public License
17along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ 17along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
18 18
19/* Old BUGS:
20 - [M-C-a] != [?\M-\C-a]
21 - [M-f2] != [?\e f2].
22 - (define-key map [menu-bar foo] <bla>) does not always place <bla>
23 at the head of the menu (if `foo' was already bound earlier and
24 then unbound, for example).
25 TODO:
26 - allow many more Meta -> ESC mappings (like Hyper -> C-e for Emacspeak)
27 - Think about the various defaulting that's currently hard-coded in
28 keyboard.c (uppercase->lowercase, char->charset, button-events, ...)
29 and make it more generic. Maybe we should allow mappings of the
30 form (PREDICATE . BINDING) as generalization of the default binding,
31 tho probably a cleaner way to attack this is to allow functional
32 keymaps (i.e. keymaps that are implemented as functions that implement
33 a few different methods like `lookup', `map', ...).
34 - Make [a] equivalent to [?a].
35 BEWARE:
36 - map-keymap should work meaningfully even if entries are added/removed
37 to the keymap while iterating through it:
38 start - removed <= visited <= start + added
39 */
19 40
20#include <config.h> 41#include <config.h>
21#include <stdio.h> 42#include <stdio.h>
@@ -73,7 +94,6 @@ static Lisp_Object where_is_cache_keymaps;
73 94
74static Lisp_Object Flookup_key (Lisp_Object, Lisp_Object, Lisp_Object); 95static Lisp_Object Flookup_key (Lisp_Object, Lisp_Object, Lisp_Object);
75static Lisp_Object store_in_keymap (Lisp_Object, Lisp_Object, Lisp_Object); 96static Lisp_Object store_in_keymap (Lisp_Object, Lisp_Object, Lisp_Object);
76static void fix_submap_inheritance (Lisp_Object, Lisp_Object, Lisp_Object);
77 97
78static Lisp_Object define_as_prefix (Lisp_Object, Lisp_Object); 98static Lisp_Object define_as_prefix (Lisp_Object, Lisp_Object);
79static void describe_command (Lisp_Object, Lisp_Object); 99static void describe_command (Lisp_Object, Lisp_Object);
@@ -130,6 +150,17 @@ in case you use it as a menu with `x-popup-menu'. */)
130 return Fcons (Qkeymap, Qnil); 150 return Fcons (Qkeymap, Qnil);
131} 151}
132 152
153DEFUN ("make-composed-keymap", Fmake_composed_keymap, Smake_composed_keymap,
154 0, MANY, 0,
155 doc: /* Construct and return a new keymap composed of KEYMAPS.
156When looking up a key in the returned map, the key is looked in each
157keymap in turn until a binding is found.
158usage: (make-composed-keymap &rest KEYMAPS) */)
159 (ptrdiff_t nargs, Lisp_Object *args)
160{
161 return Fcons (Qkeymap, Flist (nargs, args));
162}
163
133/* This function is used for installing the standard key bindings 164/* This function is used for installing the standard key bindings
134 at initialization time. 165 at initialization time.
135 166
@@ -174,6 +205,12 @@ when reading a key-sequence to be looked-up in this keymap. */)
174 Lisp_Object tem = XCAR (map); 205 Lisp_Object tem = XCAR (map);
175 if (STRINGP (tem)) 206 if (STRINGP (tem))
176 return tem; 207 return tem;
208 else if (KEYMAPP (tem))
209 {
210 tem = Fkeymap_prompt (tem);
211 if (!NILP (tem))
212 return tem;
213 }
177 map = XCDR (map); 214 map = XCDR (map);
178 } 215 }
179 return Qnil; 216 return Qnil;
@@ -300,23 +337,16 @@ Return PARENT. PARENT should be nil or another keymap. */)
300{ 337{
301 Lisp_Object list, prev; 338 Lisp_Object list, prev;
302 struct gcpro gcpro1, gcpro2; 339 struct gcpro gcpro1, gcpro2;
303 int i;
304 340
305 /* Force a keymap flush for the next call to where-is. 341 /* Flush any reverse-map cache. */
306 Since this can be called from within where-is, we don't set where_is_cache 342 where_is_cache = Qnil; where_is_cache_keymaps = Qt;
307 directly but only where_is_cache_keymaps, since where_is_cache shouldn't
308 be changed during where-is, while where_is_cache_keymaps is only used at
309 the very beginning of where-is and can thus be changed here without any
310 adverse effect.
311 This is a very minor correctness (rather than safety) issue. */
312 where_is_cache_keymaps = Qt;
313 343
314 GCPRO2 (keymap, parent); 344 GCPRO2 (keymap, parent);
315 keymap = get_keymap (keymap, 1, 1); 345 keymap = get_keymap (keymap, 1, 1);
316 346
317 if (!NILP (parent)) 347 if (!NILP (parent))
318 { 348 {
319 parent = get_keymap (parent, 1, 1); 349 parent = get_keymap (parent, 1, 0);
320 350
321 /* Check for cycles. */ 351 /* Check for cycles. */
322 if (keymap_memberp (keymap, parent)) 352 if (keymap_memberp (keymap, parent))
@@ -332,121 +362,35 @@ Return PARENT. PARENT should be nil or another keymap. */)
332 If we came to the end, add the parent in PREV. */ 362 If we came to the end, add the parent in PREV. */
333 if (!CONSP (list) || KEYMAPP (list)) 363 if (!CONSP (list) || KEYMAPP (list))
334 { 364 {
335 /* If we already have the right parent, return now
336 so that we avoid the loops below. */
337 if (EQ (XCDR (prev), parent))
338 RETURN_UNGCPRO (parent);
339
340 CHECK_IMPURE (prev); 365 CHECK_IMPURE (prev);
341 XSETCDR (prev, parent); 366 XSETCDR (prev, parent);
342 break; 367 RETURN_UNGCPRO (parent);
343 } 368 }
344 prev = list; 369 prev = list;
345 } 370 }
346
347 /* Scan through for submaps, and set their parents too. */
348
349 for (list = XCDR (keymap); CONSP (list); list = XCDR (list))
350 {
351 /* Stop the scan when we come to the parent. */
352 if (EQ (XCAR (list), Qkeymap))
353 break;
354
355 /* If this element holds a prefix map, deal with it. */
356 if (CONSP (XCAR (list))
357 && CONSP (XCDR (XCAR (list))))
358 fix_submap_inheritance (keymap, XCAR (XCAR (list)),
359 XCDR (XCAR (list)));
360
361 if (VECTORP (XCAR (list)))
362 for (i = 0; i < ASIZE (XCAR (list)); i++)
363 if (CONSP (XVECTOR (XCAR (list))->contents[i]))
364 fix_submap_inheritance (keymap, make_number (i),
365 XVECTOR (XCAR (list))->contents[i]);
366
367 if (CHAR_TABLE_P (XCAR (list)))
368 {
369 map_char_table (fix_submap_inheritance, Qnil, XCAR (list), keymap);
370 }
371 }
372
373 RETURN_UNGCPRO (parent);
374}
375
376/* EVENT is defined in MAP as a prefix, and SUBMAP is its definition.
377 if EVENT is also a prefix in MAP's parent,
378 make sure that SUBMAP inherits that definition as its own parent. */
379
380static void
381fix_submap_inheritance (Lisp_Object map, Lisp_Object event, Lisp_Object submap)
382{
383 Lisp_Object map_parent, parent_entry;
384
385 /* SUBMAP is a cons that we found as a key binding.
386 Discard the other things found in a menu key binding. */
387
388 submap = get_keymap (get_keyelt (submap, 0), 0, 0);
389
390 /* If it isn't a keymap now, there's no work to do. */
391 if (!CONSP (submap))
392 return;
393
394 map_parent = keymap_parent (map, 0);
395 if (!NILP (map_parent))
396 parent_entry =
397 get_keymap (access_keymap (map_parent, event, 0, 0, 0), 0, 0);
398 else
399 parent_entry = Qnil;
400
401 /* If MAP's parent has something other than a keymap,
402 our own submap shadows it completely. */
403 if (!CONSP (parent_entry))
404 return;
405
406 if (! EQ (parent_entry, submap))
407 {
408 Lisp_Object submap_parent;
409 submap_parent = submap;
410 while (1)
411 {
412 Lisp_Object tem;
413
414 tem = keymap_parent (submap_parent, 0);
415
416 if (KEYMAPP (tem))
417 {
418 if (keymap_memberp (tem, parent_entry))
419 /* Fset_keymap_parent could create a cycle. */
420 return;
421 submap_parent = tem;
422 }
423 else
424 break;
425 }
426 Fset_keymap_parent (submap_parent, parent_entry);
427 }
428} 371}
429 372
373
430/* Look up IDX in MAP. IDX may be any sort of event. 374/* Look up IDX in MAP. IDX may be any sort of event.
431 Note that this does only one level of lookup; IDX must be a single 375 Note that this does only one level of lookup; IDX must be a single
432 event, not a sequence. 376 event, not a sequence.
433 377
378 MAP must be a keymap or a list of keymaps.
379
434 If T_OK is non-zero, bindings for Qt are treated as default 380 If T_OK is non-zero, bindings for Qt are treated as default
435 bindings; any key left unmentioned by other tables and bindings is 381 bindings; any key left unmentioned by other tables and bindings is
436 given the binding of Qt. 382 given the binding of Qt.
437 383
438 If T_OK is zero, bindings for Qt are not treated specially. 384 If T_OK is zero, bindings for Qt are not treated specially.
439 385
440 If NOINHERIT, don't accept a subkeymap found in an inherited keymap. */ 386 If NOINHERIT, don't accept a subkeymap found in an inherited keymap.
441 387
442Lisp_Object 388 Returns Qunbound if no binding was found (and returns Qnil if a nil
443access_keymap (Lisp_Object map, Lisp_Object idx, int t_ok, int noinherit, int autoload) 389 binding was found). */
444{
445 Lisp_Object val;
446
447 /* Qunbound in VAL means we have found no binding yet. */
448 val = Qunbound;
449 390
391static Lisp_Object
392access_keymap_1 (Lisp_Object map, Lisp_Object idx, int t_ok, int noinherit, int autoload)
393{
450 /* If idx is a list (some sort of mouse click, perhaps?), 394 /* If idx is a list (some sort of mouse click, perhaps?),
451 the index we want to use is the car of the list, which 395 the index we want to use is the car of the list, which
452 ought to be a symbol. */ 396 ought to be a symbol. */
@@ -461,21 +405,21 @@ access_keymap (Lisp_Object map, Lisp_Object idx, int t_ok, int noinherit, int au
461 with more than 24 bits of integer. */ 405 with more than 24 bits of integer. */
462 XSETFASTINT (idx, XINT (idx) & (CHAR_META | (CHAR_META - 1))); 406 XSETFASTINT (idx, XINT (idx) & (CHAR_META | (CHAR_META - 1)));
463 407
464 /* Handle the special meta -> esc mapping. */ 408 /* Handle the special meta -> esc mapping. */
465 if (INTEGERP (idx) && XFASTINT (idx) & meta_modifier) 409 if (INTEGERP (idx) && XFASTINT (idx) & meta_modifier)
466 { 410 {
467 /* See if there is a meta-map. If there's none, there is 411 /* See if there is a meta-map. If there's none, there is
468 no binding for IDX, unless a default binding exists in MAP. */ 412 no binding for IDX, unless a default binding exists in MAP. */
469 struct gcpro gcpro1; 413 struct gcpro gcpro1;
470 Lisp_Object event_meta_map; 414 Lisp_Object event_meta_binding, event_meta_map;
471 GCPRO1 (map); 415 GCPRO1 (map);
472 /* A strange value in which Meta is set would cause 416 /* A strange value in which Meta is set would cause
473 infinite recursion. Protect against that. */ 417 infinite recursion. Protect against that. */
474 if (XINT (meta_prefix_char) & CHAR_META) 418 if (XINT (meta_prefix_char) & CHAR_META)
475 meta_prefix_char = make_number (27); 419 meta_prefix_char = make_number (27);
476 event_meta_map = get_keymap (access_keymap (map, meta_prefix_char, 420 event_meta_binding = access_keymap_1 (map, meta_prefix_char, t_ok,
477 t_ok, noinherit, autoload), 421 noinherit, autoload);
478 0, autoload); 422 event_meta_map = get_keymap (event_meta_binding, 0, autoload);
479 UNGCPRO; 423 UNGCPRO;
480 if (CONSP (event_meta_map)) 424 if (CONSP (event_meta_map))
481 { 425 {
@@ -486,8 +430,8 @@ access_keymap (Lisp_Object map, Lisp_Object idx, int t_ok, int noinherit, int au
486 /* Set IDX to t, so that we only find a default binding. */ 430 /* Set IDX to t, so that we only find a default binding. */
487 idx = Qt; 431 idx = Qt;
488 else 432 else
489 /* We know there is no binding. */ 433 /* An explicit nil binding, or no binding at all. */
490 return Qnil; 434 return NILP (event_meta_binding) ? Qnil : Qunbound;
491 } 435 }
492 436
493 /* t_binding is where we put a default binding that applies, 437 /* t_binding is where we put a default binding that applies,
@@ -495,25 +439,52 @@ access_keymap (Lisp_Object map, Lisp_Object idx, int t_ok, int noinherit, int au
495 for this key sequence. */ 439 for this key sequence. */
496 { 440 {
497 Lisp_Object tail; 441 Lisp_Object tail;
498 Lisp_Object t_binding = Qnil; 442 Lisp_Object t_binding = Qunbound;
443 Lisp_Object retval = Qunbound;
444 Lisp_Object retval_tail = Qnil;
499 struct gcpro gcpro1, gcpro2, gcpro3, gcpro4; 445 struct gcpro gcpro1, gcpro2, gcpro3, gcpro4;
500 446
501 GCPRO4 (map, tail, idx, t_binding); 447 GCPRO4 (tail, idx, t_binding, retval);
502 448
503 for (tail = XCDR (map); 449 for (tail = (CONSP (map) && EQ (Qkeymap, XCAR (map))) ? XCDR (map) : map;
504 (CONSP (tail) 450 (CONSP (tail)
505 || (tail = get_keymap (tail, 0, autoload), CONSP (tail))); 451 || (tail = get_keymap (tail, 0, autoload), CONSP (tail)));
506 tail = XCDR (tail)) 452 tail = XCDR (tail))
507 { 453 {
508 Lisp_Object binding; 454 /* Qunbound in VAL means we have found no binding. */
455 Lisp_Object val = Qunbound;
456 Lisp_Object binding = XCAR (tail);
457 Lisp_Object submap = get_keymap (binding, 0, autoload);
509 458
510 binding = XCAR (tail); 459 if (EQ (binding, Qkeymap))
511 if (SYMBOLP (binding))
512 { 460 {
513 /* If NOINHERIT, stop finding prefix definitions 461 if (noinherit || NILP (retval))
514 after we pass a second occurrence of the `keymap' symbol. */ 462 /* If NOINHERIT, stop here, the rest is inherited. */
515 if (noinherit && EQ (binding, Qkeymap)) 463 break;
516 RETURN_UNGCPRO (Qnil); 464 else if (!EQ (retval, Qunbound))
465 {
466 Lisp_Object parent_entry;
467 eassert (KEYMAPP (retval));
468 parent_entry
469 = get_keymap (access_keymap_1 (tail, idx,
470 t_ok, 0, autoload),
471 0, autoload);
472 if (KEYMAPP (parent_entry))
473 {
474 if (CONSP (retval_tail))
475 XSETCDR (retval_tail, parent_entry);
476 else
477 {
478 retval_tail = Fcons (retval, parent_entry);
479 retval = Fcons (Qkeymap, retval_tail);
480 }
481 }
482 break;
483 }
484 }
485 else if (CONSP (submap))
486 {
487 val = access_keymap_1 (submap, idx, t_ok, noinherit, autoload);
517 } 488 }
518 else if (CONSP (binding)) 489 else if (CONSP (binding))
519 { 490 {
@@ -556,23 +527,47 @@ access_keymap (Lisp_Object map, Lisp_Object idx, int t_ok, int noinherit, int au
556 (i.e. it shadows any parent binding but not bindings in 527 (i.e. it shadows any parent binding but not bindings in
557 keymaps of lower precedence). */ 528 keymaps of lower precedence). */
558 val = Qnil; 529 val = Qnil;
530
559 val = get_keyelt (val, autoload); 531 val = get_keyelt (val, autoload);
560 if (KEYMAPP (val)) 532
561 fix_submap_inheritance (map, idx, val); 533 if (!KEYMAPP (val))
562 RETURN_UNGCPRO (val); 534 {
535 if (NILP (retval) || EQ (retval, Qunbound))
536 retval = val;
537 if (!NILP (val))
538 break; /* Shadows everything that follows. */
539 }
540 else if (NILP (retval) || EQ (retval, Qunbound))
541 retval = val;
542 else if (CONSP (retval_tail))
543 {
544 XSETCDR (retval_tail, Fcons (val, Qnil));
545 retval_tail = XCDR (retval_tail);
546 }
547 else
548 {
549 retval_tail = Fcons (val, Qnil);
550 retval = Fcons (Qkeymap, Fcons (retval, retval_tail));
551 }
563 } 552 }
564 QUIT; 553 QUIT;
565 } 554 }
566 UNGCPRO; 555 UNGCPRO;
567 return get_keyelt (t_binding, autoload); 556 return EQ (Qunbound, retval) ? get_keyelt (t_binding, autoload) : retval;
568 } 557 }
569} 558}
570 559
560Lisp_Object
561access_keymap (Lisp_Object map, Lisp_Object idx,
562 int t_ok, int noinherit, int autoload)
563{
564 Lisp_Object val = access_keymap_1 (map, idx, t_ok, noinherit, autoload);
565 return EQ (val, Qunbound) ? Qnil : val;
566}
567
571static void 568static void
572map_keymap_item (map_keymap_function_t fun, Lisp_Object args, Lisp_Object key, Lisp_Object val, void *data) 569map_keymap_item (map_keymap_function_t fun, Lisp_Object args, Lisp_Object key, Lisp_Object val, void *data)
573{ 570{
574 /* We should maybe try to detect bindings shadowed by previous
575 ones and things like that. */
576 if (EQ (val, Qt)) 571 if (EQ (val, Qt))
577 val = Qnil; 572 val = Qnil;
578 (*fun) (key, val, args, data); 573 (*fun) (key, val, args, data);
@@ -583,8 +578,8 @@ map_keymap_char_table_item (Lisp_Object args, Lisp_Object key, Lisp_Object val)
583{ 578{
584 if (!NILP (val)) 579 if (!NILP (val))
585 { 580 {
586 map_keymap_function_t fun = 581 map_keymap_function_t fun
587 (map_keymap_function_t) XSAVE_VALUE (XCAR (args))->pointer; 582 = (map_keymap_function_t) XSAVE_VALUE (XCAR (args))->pointer;
588 args = XCDR (args); 583 args = XCDR (args);
589 /* If the key is a range, make a copy since map_char_table modifies 584 /* If the key is a range, make a copy since map_char_table modifies
590 it in place. */ 585 it in place. */
@@ -612,7 +607,9 @@ map_keymap_internal (Lisp_Object map,
612 { 607 {
613 Lisp_Object binding = XCAR (tail); 608 Lisp_Object binding = XCAR (tail);
614 609
615 if (CONSP (binding)) 610 if (KEYMAPP (binding)) /* An embedded parent. */
611 break;
612 else if (CONSP (binding))
616 map_keymap_item (fun, args, XCAR (binding), XCDR (binding), data); 613 map_keymap_item (fun, args, XCAR (binding), XCDR (binding), data);
617 else if (VECTORP (binding)) 614 else if (VECTORP (binding))
618 { 615 {
@@ -644,7 +641,7 @@ map_keymap_call (Lisp_Object key, Lisp_Object val, Lisp_Object fun, void *dummy)
644 call2 (fun, key, val); 641 call2 (fun, key, val);
645} 642}
646 643
647/* Same as map_keymap_internal, but doesn't traverses parent keymaps as well. 644/* Same as map_keymap_internal, but traverses parent keymaps as well.
648 A non-zero AUTOLOAD indicates that autoloaded keymaps should be loaded. */ 645 A non-zero AUTOLOAD indicates that autoloaded keymaps should be loaded. */
649void 646void
650map_keymap (Lisp_Object map, map_keymap_function_t fun, Lisp_Object args, void *data, int autoload) 647map_keymap (Lisp_Object map, map_keymap_function_t fun, Lisp_Object args, void *data, int autoload)
@@ -654,8 +651,15 @@ map_keymap (Lisp_Object map, map_keymap_function_t fun, Lisp_Object args, void *
654 map = get_keymap (map, 1, autoload); 651 map = get_keymap (map, 1, autoload);
655 while (CONSP (map)) 652 while (CONSP (map))
656 { 653 {
657 map = map_keymap_internal (map, fun, args, data); 654 if (KEYMAPP (XCAR (map)))
658 map = get_keymap (map, 0, autoload); 655 {
656 map_keymap (XCAR (map), fun, args, data, autoload);
657 map = XCDR (map);
658 }
659 else
660 map = map_keymap_internal (map, fun, args, data);
661 if (!CONSP (map))
662 map = get_keymap (map, 0, autoload);
659 } 663 }
660 UNGCPRO; 664 UNGCPRO;
661} 665}
@@ -791,16 +795,10 @@ get_keyelt (Lisp_Object object, int autoload)
791 } 795 }
792 796
793 /* If the contents are (KEYMAP . ELEMENT), go indirect. */ 797 /* If the contents are (KEYMAP . ELEMENT), go indirect. */
798 else if (KEYMAPP (XCAR (object)))
799 error ("Wow, indirect keymap entry!!");
794 else 800 else
795 { 801 return object;
796 struct gcpro gcpro1;
797 Lisp_Object map;
798 GCPRO1 (object);
799 map = get_keymap (Fcar_safe (object), 0, autoload);
800 UNGCPRO;
801 return (!CONSP (map) ? object /* Invalid keymap */
802 : access_keymap (map, Fcdr (object), 0, 0, autoload));
803 }
804 } 802 }
805} 803}
806 804
@@ -811,6 +809,9 @@ store_in_keymap (Lisp_Object keymap, register Lisp_Object idx, Lisp_Object def)
811 where_is_cache = Qnil; 809 where_is_cache = Qnil;
812 where_is_cache_keymaps = Qt; 810 where_is_cache_keymaps = Qt;
813 811
812 if (EQ (idx, Qkeymap))
813 error ("`keymap' is reserved for embedded parent maps");
814
814 /* If we are preparing to dump, and DEF is a menu element 815 /* If we are preparing to dump, and DEF is a menu element
815 with a menu item indicator, copy it to ensure it is not pure. */ 816 with a menu item indicator, copy it to ensure it is not pure. */
816 if (CONSP (def) && PURE_P (def) 817 if (CONSP (def) && PURE_P (def)
@@ -903,7 +904,16 @@ store_in_keymap (Lisp_Object keymap, register Lisp_Object idx, Lisp_Object def)
903 } 904 }
904 else if (CONSP (elt)) 905 else if (CONSP (elt))
905 { 906 {
906 if (EQ (idx, XCAR (elt))) 907 if (EQ (Qkeymap, XCAR (elt)))
908 { /* A sub keymap. This might be due to a lookup that found
909 two matching bindings (maybe because of a sub keymap).
910 It almost never happens (since the second binding normally
911 only happens in the inherited part of the keymap), but
912 if it does, we want to update the sub-keymap since the
913 main one might be temporary (built by access_keymap). */
914 tail = insertion_point = elt;
915 }
916 else if (EQ (idx, XCAR (elt)))
907 { 917 {
908 CHECK_IMPURE (elt); 918 CHECK_IMPURE (elt);
909 XSETCDR (elt, def); 919 XSETCDR (elt, def);
@@ -1068,7 +1078,13 @@ is not copied. */)
1068 ASET (elt, i, copy_keymap_item (AREF (elt, i))); 1078 ASET (elt, i, copy_keymap_item (AREF (elt, i)));
1069 } 1079 }
1070 else if (CONSP (elt)) 1080 else if (CONSP (elt))
1071 elt = Fcons (XCAR (elt), copy_keymap_item (XCDR (elt))); 1081 {
1082 if (EQ (XCAR (elt), Qkeymap))
1083 /* This is a sub keymap. */
1084 elt = Fcopy_keymap (elt);
1085 else
1086 elt = Fcons (XCAR (elt), copy_keymap_item (XCDR (elt)));
1087 }
1072 XSETCDR (tail, Fcons (elt, Qnil)); 1088 XSETCDR (tail, Fcons (elt, Qnil));
1073 tail = XCDR (tail); 1089 tail = XCDR (tail);
1074 keymap = XCDR (keymap); 1090 keymap = XCDR (keymap);
@@ -1234,23 +1250,15 @@ remapping in all currently active keymaps. */)
1234 ASET (command_remapping_vector, 1, command); 1250 ASET (command_remapping_vector, 1, command);
1235 1251
1236 if (NILP (keymaps)) 1252 if (NILP (keymaps))
1237 return Fkey_binding (command_remapping_vector, Qnil, Qt, position); 1253 command = Fkey_binding (command_remapping_vector, Qnil, Qt, position);
1238 else 1254 else
1239 { 1255 command = Flookup_key (Fcons (Qkeymap, keymaps),
1240 Lisp_Object maps, binding; 1256 command_remapping_vector, Qnil);
1241 1257 return INTEGERP (command) ? Qnil : command;
1242 for (maps = keymaps; CONSP (maps); maps = XCDR (maps))
1243 {
1244 binding = Flookup_key (XCAR (maps), command_remapping_vector, Qnil);
1245 if (!NILP (binding) && !INTEGERP (binding))
1246 return binding;
1247 }
1248 return Qnil;
1249 }
1250} 1258}
1251 1259
1252/* Value is number if KEY is too long; nil if valid but has no definition. */ 1260/* Value is number if KEY is too long; nil if valid but has no definition. */
1253/* GC is possible in this function if it autoloads a keymap. */ 1261/* GC is possible in this function. */
1254 1262
1255DEFUN ("lookup-key", Flookup_key, Slookup_key, 2, 3, 0, 1263DEFUN ("lookup-key", Flookup_key, Slookup_key, 2, 3, 0,
1256 doc: /* In keymap KEYMAP, look up key sequence KEY. Return the definition. 1264 doc: /* In keymap KEYMAP, look up key sequence KEY. Return the definition.
@@ -1325,10 +1333,6 @@ define_as_prefix (Lisp_Object keymap, Lisp_Object c)
1325 Lisp_Object cmd; 1333 Lisp_Object cmd;
1326 1334
1327 cmd = Fmake_sparse_keymap (Qnil); 1335 cmd = Fmake_sparse_keymap (Qnil);
1328 /* If this key is defined as a prefix in an inherited keymap,
1329 make it a prefix in this map, and make its definition
1330 inherit the other prefix definition. */
1331 cmd = nconc2 (cmd, access_keymap (keymap, c, 0, 0, 0));
1332 store_in_keymap (keymap, c, cmd); 1336 store_in_keymap (keymap, c, cmd);
1333 1337
1334 return cmd; 1338 return cmd;
@@ -1530,7 +1534,7 @@ like in the respective argument of `key-binding'. */)
1530{ 1534{
1531 int count = SPECPDL_INDEX (); 1535 int count = SPECPDL_INDEX ();
1532 1536
1533 Lisp_Object keymaps; 1537 Lisp_Object keymaps = Fcons (current_global_map, Qnil);
1534 1538
1535 /* If a mouse click position is given, our variables are based on 1539 /* If a mouse click position is given, our variables are based on
1536 the buffer clicked on, not the current buffer. So we may have to 1540 the buffer clicked on, not the current buffer. So we may have to
@@ -1560,12 +1564,11 @@ like in the respective argument of `key-binding'. */)
1560 } 1564 }
1561 } 1565 }
1562 1566
1563 keymaps = Fcons (current_global_map, Qnil);
1564
1565 if (!NILP (olp)) 1567 if (!NILP (olp))
1566 { 1568 {
1567 if (!NILP (KVAR (current_kboard, Voverriding_terminal_local_map))) 1569 if (!NILP (KVAR (current_kboard, Voverriding_terminal_local_map)))
1568 keymaps = Fcons (KVAR (current_kboard, Voverriding_terminal_local_map), keymaps); 1570 keymaps = Fcons (KVAR (current_kboard, Voverriding_terminal_local_map),
1571 keymaps);
1569 /* The doc said that overriding-terminal-local-map should 1572 /* The doc said that overriding-terminal-local-map should
1570 override overriding-local-map. The code used them both, 1573 override overriding-local-map. The code used them both,
1571 but it seems clearer to use just one. rms, jan 2005. */ 1574 but it seems clearer to use just one. rms, jan 2005. */
@@ -1576,23 +1579,19 @@ like in the respective argument of `key-binding'. */)
1576 { 1579 {
1577 Lisp_Object *maps; 1580 Lisp_Object *maps;
1578 int nmaps, i; 1581 int nmaps, i;
1579 1582 EMACS_INT pt
1580 Lisp_Object keymap, local_map; 1583 = INTEGERP (position) ? XINT (position)
1581 EMACS_INT pt;
1582
1583 pt = INTEGERP (position) ? XINT (position)
1584 : MARKERP (position) ? marker_position (position) 1584 : MARKERP (position) ? marker_position (position)
1585 : PT; 1585 : PT;
1586 1586 /* This usually returns the buffer's local map,
1587 /* Get the buffer local maps, possibly overriden by text or 1587 but that can be overridden by a `local-map' property. */
1588 overlay properties */ 1588 Lisp_Object local_map = get_local_map (pt, current_buffer, Qlocal_map);
1589 1589 /* This returns nil unless there is a `keymap' property. */
1590 local_map = get_local_map (pt, current_buffer, Qlocal_map); 1590 Lisp_Object keymap = get_local_map (pt, current_buffer, Qkeymap);
1591 keymap = get_local_map (pt, current_buffer, Qkeymap);
1592 1591
1593 if (CONSP (position)) 1592 if (CONSP (position))
1594 { 1593 {
1595 Lisp_Object string; 1594 Lisp_Object string = POSN_STRING (position);
1596 1595
1597 /* For a mouse click, get the local text-property keymap 1596 /* For a mouse click, get the local text-property keymap
1598 of the place clicked on, rather than point. */ 1597 of the place clicked on, rather than point. */
@@ -1619,8 +1618,7 @@ like in the respective argument of `key-binding'. */)
1619 consider `local-map' and `keymap' properties of 1618 consider `local-map' and `keymap' properties of
1620 that string. */ 1619 that string. */
1621 1620
1622 if (string = POSN_STRING (position), 1621 if (CONSP (string) && STRINGP (XCAR (string)))
1623 (CONSP (string) && STRINGP (XCAR (string))))
1624 { 1622 {
1625 Lisp_Object pos, map; 1623 Lisp_Object pos, map;
1626 1624
@@ -1691,12 +1689,7 @@ specified buffer position instead of point are used.
1691 */) 1689 */)
1692 (Lisp_Object key, Lisp_Object accept_default, Lisp_Object no_remap, Lisp_Object position) 1690 (Lisp_Object key, Lisp_Object accept_default, Lisp_Object no_remap, Lisp_Object position)
1693{ 1691{
1694 Lisp_Object *maps, value; 1692 Lisp_Object value;
1695 int nmaps, i;
1696 struct gcpro gcpro1, gcpro2;
1697 int count = SPECPDL_INDEX ();
1698
1699 GCPRO2 (key, position);
1700 1693
1701 if (NILP (position) && VECTORP (key)) 1694 if (NILP (position) && VECTORP (key))
1702 { 1695 {
@@ -1715,145 +1708,9 @@ specified buffer position instead of point are used.
1715 } 1708 }
1716 } 1709 }
1717 1710
1718 /* Key sequences beginning with mouse clicks 1711 value = Flookup_key (Fcons (Qkeymap, Fcurrent_active_maps (Qt, position)),
1719 are read using the keymaps of the buffer clicked on, not 1712 key, accept_default);
1720 the current buffer. So we may have to switch the buffer
1721 here. */
1722
1723 if (CONSP (position))
1724 {
1725 Lisp_Object window;
1726
1727 window = POSN_WINDOW (position);
1728
1729 if (WINDOWP (window)
1730 && BUFFERP (XWINDOW (window)->buffer)
1731 && XBUFFER (XWINDOW (window)->buffer) != current_buffer)
1732 {
1733 /* Arrange to go back to the original buffer once we're done
1734 processing the key sequence. We don't use
1735 save_excursion_{save,restore} here, in analogy to
1736 `read-key-sequence' to avoid saving point. Maybe this
1737 would not be a problem here, but it is easier to keep
1738 things the same.
1739 */
1740
1741 record_unwind_protect (Fset_buffer, Fcurrent_buffer ());
1742
1743 set_buffer_internal (XBUFFER (XWINDOW (window)->buffer));
1744 }
1745 }
1746
1747 if (! NILP (KVAR (current_kboard, Voverriding_terminal_local_map)))
1748 {
1749 value = Flookup_key (KVAR (current_kboard, Voverriding_terminal_local_map),
1750 key, accept_default);
1751 if (! NILP (value) && !INTEGERP (value))
1752 goto done;
1753 }
1754 else if (! NILP (Voverriding_local_map))
1755 {
1756 value = Flookup_key (Voverriding_local_map, key, accept_default);
1757 if (! NILP (value) && !INTEGERP (value))
1758 goto done;
1759 }
1760 else
1761 {
1762 Lisp_Object keymap, local_map;
1763 EMACS_INT pt;
1764
1765 pt = INTEGERP (position) ? XINT (position)
1766 : MARKERP (position) ? marker_position (position)
1767 : PT;
1768
1769 local_map = get_local_map (pt, current_buffer, Qlocal_map);
1770 keymap = get_local_map (pt, current_buffer, Qkeymap);
1771
1772 if (CONSP (position))
1773 {
1774 Lisp_Object string;
1775
1776 /* For a mouse click, get the local text-property keymap
1777 of the place clicked on, rather than point. */
1778 1713
1779 if (POSN_INBUFFER_P (position))
1780 {
1781 Lisp_Object pos;
1782
1783 pos = POSN_BUFFER_POSN (position);
1784 if (INTEGERP (pos)
1785 && XINT (pos) >= BEG && XINT (pos) <= Z)
1786 {
1787 local_map = get_local_map (XINT (pos),
1788 current_buffer, Qlocal_map);
1789
1790 keymap = get_local_map (XINT (pos),
1791 current_buffer, Qkeymap);
1792 }
1793 }
1794
1795 /* If on a mode line string with a local keymap,
1796 or for a click on a string, i.e. overlay string or a
1797 string displayed via the `display' property,
1798 consider `local-map' and `keymap' properties of
1799 that string. */
1800
1801 if (string = POSN_STRING (position),
1802 (CONSP (string) && STRINGP (XCAR (string))))
1803 {
1804 Lisp_Object pos, map;
1805
1806 pos = XCDR (string);
1807 string = XCAR (string);
1808 if (INTEGERP (pos)
1809 && XINT (pos) >= 0
1810 && XINT (pos) < SCHARS (string))
1811 {
1812 map = Fget_text_property (pos, Qlocal_map, string);
1813 if (!NILP (map))
1814 local_map = map;
1815
1816 map = Fget_text_property (pos, Qkeymap, string);
1817 if (!NILP (map))
1818 keymap = map;
1819 }
1820 }
1821
1822 }
1823
1824 if (! NILP (keymap))
1825 {
1826 value = Flookup_key (keymap, key, accept_default);
1827 if (! NILP (value) && !INTEGERP (value))
1828 goto done;
1829 }
1830
1831 nmaps = current_minor_maps (0, &maps);
1832 /* Note that all these maps are GCPRO'd
1833 in the places where we found them. */
1834
1835 for (i = 0; i < nmaps; i++)
1836 if (! NILP (maps[i]))
1837 {
1838 value = Flookup_key (maps[i], key, accept_default);
1839 if (! NILP (value) && !INTEGERP (value))
1840 goto done;
1841 }
1842
1843 if (! NILP (local_map))
1844 {
1845 value = Flookup_key (local_map, key, accept_default);
1846 if (! NILP (value) && !INTEGERP (value))
1847 goto done;
1848 }
1849 }
1850
1851 value = Flookup_key (current_global_map, key, accept_default);
1852
1853 done:
1854 unbind_to (count, Qnil);
1855
1856 UNGCPRO;
1857 if (NILP (value) || INTEGERP (value)) 1714 if (NILP (value) || INTEGERP (value))
1858 return Qnil; 1715 return Qnil;
1859 1716
@@ -3774,15 +3631,13 @@ Return list of symbols found. */)
3774void 3631void
3775syms_of_keymap (void) 3632syms_of_keymap (void)
3776{ 3633{
3777 Qkeymap = intern_c_string ("keymap"); 3634 DEFSYM (Qkeymap, "keymap");
3778 staticpro (&Qkeymap);
3779 staticpro (&apropos_predicate); 3635 staticpro (&apropos_predicate);
3780 staticpro (&apropos_accumulate); 3636 staticpro (&apropos_accumulate);
3781 apropos_predicate = Qnil; 3637 apropos_predicate = Qnil;
3782 apropos_accumulate = Qnil; 3638 apropos_accumulate = Qnil;
3783 3639
3784 Qkeymap_canonicalize = intern_c_string ("keymap-canonicalize"); 3640 DEFSYM (Qkeymap_canonicalize, "keymap-canonicalize");
3785 staticpro (&Qkeymap_canonicalize);
3786 3641
3787 /* Now we are ready to set up this property, so we can 3642 /* Now we are ready to set up this property, so we can
3788 create char tables. */ 3643 create char tables. */
@@ -3831,31 +3686,6 @@ don't alter it yourself. */);
3831 Vminibuffer_local_ns_map = Fmake_sparse_keymap (Qnil); 3686 Vminibuffer_local_ns_map = Fmake_sparse_keymap (Qnil);
3832 Fset_keymap_parent (Vminibuffer_local_ns_map, Vminibuffer_local_map); 3687 Fset_keymap_parent (Vminibuffer_local_ns_map, Vminibuffer_local_map);
3833 3688
3834 DEFVAR_LISP ("minibuffer-local-completion-map", Vminibuffer_local_completion_map,
3835 doc: /* Local keymap for minibuffer input with completion. */);
3836 Vminibuffer_local_completion_map = Fmake_sparse_keymap (Qnil);
3837 Fset_keymap_parent (Vminibuffer_local_completion_map, Vminibuffer_local_map);
3838
3839 DEFVAR_LISP ("minibuffer-local-filename-completion-map",
3840 Vminibuffer_local_filename_completion_map,
3841 doc: /* Local keymap for minibuffer input with completion for filenames. */);
3842 Vminibuffer_local_filename_completion_map = Fmake_sparse_keymap (Qnil);
3843 Fset_keymap_parent (Vminibuffer_local_filename_completion_map,
3844 Vminibuffer_local_completion_map);
3845
3846
3847 DEFVAR_LISP ("minibuffer-local-must-match-map", Vminibuffer_local_must_match_map,
3848 doc: /* Local keymap for minibuffer input with completion, for exact match. */);
3849 Vminibuffer_local_must_match_map = Fmake_sparse_keymap (Qnil);
3850 Fset_keymap_parent (Vminibuffer_local_must_match_map,
3851 Vminibuffer_local_completion_map);
3852
3853 DEFVAR_LISP ("minibuffer-local-filename-must-match-map",
3854 Vminibuffer_local_filename_must_match_map,
3855 doc: /* Local keymap for minibuffer input with completion for filenames with exact match. */);
3856 Vminibuffer_local_filename_must_match_map = Fmake_sparse_keymap (Qnil);
3857 Fset_keymap_parent (Vminibuffer_local_filename_must_match_map,
3858 Vminibuffer_local_must_match_map);
3859 3689
3860 DEFVAR_LISP ("minor-mode-map-alist", Vminor_mode_map_alist, 3690 DEFVAR_LISP ("minor-mode-map-alist", Vminor_mode_map_alist,
3861 doc: /* Alist of keymaps to use for minor modes. 3691 doc: /* Alist of keymaps to use for minor modes.
@@ -3902,27 +3732,13 @@ preferred. */);
3902 pure_cons (intern_c_string ("mouse-5"), 3732 pure_cons (intern_c_string ("mouse-5"),
3903 Qnil))))))))); 3733 Qnil)))))))));
3904 3734
3905 3735 DEFSYM (Qsingle_key_description, "single-key-description");
3906 Qsingle_key_description = intern_c_string ("single-key-description"); 3736 DEFSYM (Qkey_description, "key-description");
3907 staticpro (&Qsingle_key_description); 3737 DEFSYM (Qkeymapp, "keymapp");
3908 3738 DEFSYM (Qnon_ascii, "non-ascii");
3909 Qkey_description = intern_c_string ("key-description"); 3739 DEFSYM (Qmenu_item, "menu-item");
3910 staticpro (&Qkey_description); 3740 DEFSYM (Qremap, "remap");
3911 3741 DEFSYM (QCadvertised_binding, ":advertised-binding");
3912 Qkeymapp = intern_c_string ("keymapp");
3913 staticpro (&Qkeymapp);
3914
3915 Qnon_ascii = intern_c_string ("non-ascii");
3916 staticpro (&Qnon_ascii);
3917
3918 Qmenu_item = intern_c_string ("menu-item");
3919 staticpro (&Qmenu_item);
3920
3921 Qremap = intern_c_string ("remap");
3922 staticpro (&Qremap);
3923
3924 QCadvertised_binding = intern_c_string (":advertised-binding");
3925 staticpro (&QCadvertised_binding);
3926 3742
3927 command_remapping_vector = Fmake_vector (make_number (2), Qremap); 3743 command_remapping_vector = Fmake_vector (make_number (2), Qremap);
3928 staticpro (&command_remapping_vector); 3744 staticpro (&command_remapping_vector);
@@ -3938,6 +3754,7 @@ preferred. */);
3938 defsubr (&Sset_keymap_parent); 3754 defsubr (&Sset_keymap_parent);
3939 defsubr (&Smake_keymap); 3755 defsubr (&Smake_keymap);
3940 defsubr (&Smake_sparse_keymap); 3756 defsubr (&Smake_sparse_keymap);
3757 defsubr (&Smake_composed_keymap);
3941 defsubr (&Smap_keymap_internal); 3758 defsubr (&Smap_keymap_internal);
3942 defsubr (&Smap_keymap); 3759 defsubr (&Smap_keymap);
3943 defsubr (&Scopy_keymap); 3760 defsubr (&Scopy_keymap);
diff --git a/src/lisp.h b/src/lisp.h
index 4c9543bdfe8..762d34abb9c 100644
--- a/src/lisp.h
+++ b/src/lisp.h
@@ -1162,6 +1162,9 @@ struct Lisp_Symbol
1162 1162
1163#define SYMBOL_CONSTANT_P(sym) XSYMBOL (sym)->constant 1163#define SYMBOL_CONSTANT_P(sym) XSYMBOL (sym)->constant
1164 1164
1165#define DEFSYM(sym, name) \
1166 do { (sym) = intern_c_string ((name)); staticpro (&(sym)); } while (0)
1167
1165 1168
1166/*********************************************************************** 1169/***********************************************************************
1167 Hash Tables 1170 Hash Tables
@@ -1980,10 +1983,7 @@ extern void defvar_kboard (struct Lisp_Kboard_Objfwd *, const char *, int);
1980#define DEFVAR_KBOARD(lname, vname, doc) \ 1983#define DEFVAR_KBOARD(lname, vname, doc) \
1981 do { \ 1984 do { \
1982 static struct Lisp_Kboard_Objfwd ko_fwd; \ 1985 static struct Lisp_Kboard_Objfwd ko_fwd; \
1983 defvar_kboard (&ko_fwd, \ 1986 defvar_kboard (&ko_fwd, lname, offsetof (KBOARD, vname ## _)); \
1984 lname, \
1985 (int)((char *)(&current_kboard->vname ## _) \
1986 - (char *)current_kboard)); \
1987 } while (0) 1987 } while (0)
1988 1988
1989 1989
diff --git a/src/lread.c b/src/lread.c
index e75d61ae985..a9b69a1977b 100644
--- a/src/lread.c
+++ b/src/lread.c
@@ -120,9 +120,9 @@ static EMACS_INT readchar_count;
120/* This contains the last string skipped with #@. */ 120/* This contains the last string skipped with #@. */
121static char *saved_doc_string; 121static char *saved_doc_string;
122/* Length of buffer allocated in saved_doc_string. */ 122/* Length of buffer allocated in saved_doc_string. */
123static int saved_doc_string_size; 123static ptrdiff_t saved_doc_string_size;
124/* Length of actual data in saved_doc_string. */ 124/* Length of actual data in saved_doc_string. */
125static int saved_doc_string_length; 125static ptrdiff_t saved_doc_string_length;
126/* This is the file position that string came from. */ 126/* This is the file position that string came from. */
127static file_offset saved_doc_string_position; 127static file_offset saved_doc_string_position;
128 128
@@ -131,9 +131,9 @@ static file_offset saved_doc_string_position;
131 is put in saved_doc_string. */ 131 is put in saved_doc_string. */
132static char *prev_saved_doc_string; 132static char *prev_saved_doc_string;
133/* Length of buffer allocated in prev_saved_doc_string. */ 133/* Length of buffer allocated in prev_saved_doc_string. */
134static int prev_saved_doc_string_size; 134static ptrdiff_t prev_saved_doc_string_size;
135/* Length of actual data in prev_saved_doc_string. */ 135/* Length of actual data in prev_saved_doc_string. */
136static int prev_saved_doc_string_length; 136static ptrdiff_t prev_saved_doc_string_length;
137/* This is the file position that string came from. */ 137/* This is the file position that string came from. */
138static file_offset prev_saved_doc_string_position; 138static file_offset prev_saved_doc_string_position;
139 139
@@ -1069,9 +1069,9 @@ Return t if the file exists and loads successfully. */)
1069 1069
1070 /* Avoid weird lossage with null string as arg, 1070 /* Avoid weird lossage with null string as arg,
1071 since it would try to load a directory as a Lisp file */ 1071 since it would try to load a directory as a Lisp file */
1072 if (SCHARS (file) > 0) 1072 if (SBYTES (file) > 0)
1073 { 1073 {
1074 int size = SBYTES (file); 1074 ptrdiff_t size = SBYTES (file);
1075 1075
1076 found = Qnil; 1076 found = Qnil;
1077 GCPRO2 (file, found); 1077 GCPRO2 (file, found);
@@ -1472,7 +1472,7 @@ openp (Lisp_Object path, Lisp_Object str, Lisp_Object suffixes, Lisp_Object *sto
1472 for (tail = NILP (suffixes) ? Fcons (empty_unibyte_string, Qnil) : suffixes; 1472 for (tail = NILP (suffixes) ? Fcons (empty_unibyte_string, Qnil) : suffixes;
1473 CONSP (tail); tail = XCDR (tail)) 1473 CONSP (tail); tail = XCDR (tail))
1474 { 1474 {
1475 int lsuffix = SBYTES (XCAR (tail)); 1475 ptrdiff_t lsuffix = SBYTES (XCAR (tail));
1476 Lisp_Object handler; 1476 Lisp_Object handler;
1477 int exists; 1477 int exists;
1478 1478
@@ -2037,7 +2037,7 @@ read0 (Lisp_Object readcharfun)
2037 Fmake_string (make_number (1), make_number (c))); 2037 Fmake_string (make_number (1), make_number (c)));
2038} 2038}
2039 2039
2040static int read_buffer_size; 2040static ptrdiff_t read_buffer_size;
2041static char *read_buffer; 2041static char *read_buffer;
2042 2042
2043/* Read a \-escape sequence, assuming we already read the `\'. 2043/* Read a \-escape sequence, assuming we already read the `\'.
@@ -2208,7 +2208,9 @@ read_escape (Lisp_Object readcharfun, int stringp)
2208 UNREAD (c); 2208 UNREAD (c);
2209 break; 2209 break;
2210 } 2210 }
2211 count++; 2211 if (MAX_CHAR < i)
2212 error ("Hex character out of range: \\x%x...", i);
2213 count += count < 3;
2212 } 2214 }
2213 2215
2214 if (count < 3 && i >= 0x80) 2216 if (count < 3 && i >= 0x80)
@@ -2236,10 +2238,7 @@ read_escape (Lisp_Object readcharfun, int stringp)
2236 else if (c >= 'a' && c <= 'f') i = (i << 4) + (c - 'a') + 10; 2238 else if (c >= 'a' && c <= 'f') i = (i << 4) + (c - 'a') + 10;
2237 else if (c >= 'A' && c <= 'F') i = (i << 4) + (c - 'A') + 10; 2239 else if (c >= 'A' && c <= 'F') i = (i << 4) + (c - 'A') + 10;
2238 else 2240 else
2239 { 2241 error ("Non-hex digit used for Unicode escape");
2240 error ("Non-hex digit used for Unicode escape");
2241 break;
2242 }
2243 } 2242 }
2244 if (i > 0x10FFFF) 2243 if (i > 0x10FFFF)
2245 error ("Non-Unicode character: 0x%x", i); 2244 error ("Non-Unicode character: 0x%x", i);
@@ -2278,10 +2277,12 @@ digit_to_number (int character, int base)
2278 range. */ 2277 range. */
2279 2278
2280static Lisp_Object 2279static Lisp_Object
2281read_integer (Lisp_Object readcharfun, int radix) 2280read_integer (Lisp_Object readcharfun, EMACS_INT radix)
2282{ 2281{
2283 /* Room for sign, leading 0, other digits, trailing null byte. */ 2282 /* Room for sign, leading 0, other digits, trailing null byte.
2284 char buf[1 + 1 + sizeof (uintmax_t) * CHAR_BIT + 1]; 2283 Also, room for invalid syntax diagnostic. */
2284 char buf[max (1 + 1 + sizeof (uintmax_t) * CHAR_BIT + 1,
2285 sizeof "integer, radix " + INT_STRLEN_BOUND (EMACS_INT))];
2285 2286
2286 int valid = -1; /* 1 if valid, 0 if not, -1 if incomplete. */ 2287 int valid = -1; /* 1 if valid, 0 if not, -1 if incomplete. */
2287 2288
@@ -2333,7 +2334,7 @@ read_integer (Lisp_Object readcharfun, int radix)
2333 2334
2334 if (! valid) 2335 if (! valid)
2335 { 2336 {
2336 sprintf (buf, "integer, radix %d", radix); 2337 sprintf (buf, "integer, radix %"pI"d", radix);
2337 invalid_syntax (buf); 2338 invalid_syntax (buf);
2338 } 2339 }
2339 2340
@@ -2471,7 +2472,7 @@ read1 (register Lisp_Object readcharfun, int *pch, int first_in_list)
2471 if (c == '[') 2472 if (c == '[')
2472 { 2473 {
2473 Lisp_Object tmp; 2474 Lisp_Object tmp;
2474 int depth, size; 2475 EMACS_INT depth, size;
2475 2476
2476 tmp = read_vector (readcharfun, 0); 2477 tmp = read_vector (readcharfun, 0);
2477 if (!INTEGERP (AREF (tmp, 0))) 2478 if (!INTEGERP (AREF (tmp, 0)))
@@ -2497,7 +2498,7 @@ read1 (register Lisp_Object readcharfun, int *pch, int first_in_list)
2497 if (c == '"') 2498 if (c == '"')
2498 { 2499 {
2499 Lisp_Object tmp, val; 2500 Lisp_Object tmp, val;
2500 int size_in_chars 2501 EMACS_INT size_in_chars
2501 = ((XFASTINT (length) + BOOL_VECTOR_BITS_PER_CHAR - 1) 2502 = ((XFASTINT (length) + BOOL_VECTOR_BITS_PER_CHAR - 1)
2502 / BOOL_VECTOR_BITS_PER_CHAR); 2503 / BOOL_VECTOR_BITS_PER_CHAR);
2503 2504
@@ -2569,13 +2570,16 @@ read1 (register Lisp_Object readcharfun, int *pch, int first_in_list)
2569 and function definitions. */ 2570 and function definitions. */
2570 if (c == '@') 2571 if (c == '@')
2571 { 2572 {
2572 int i, nskip = 0; 2573 enum { extra = 100 };
2574 ptrdiff_t i, nskip = 0;
2573 2575
2574 load_each_byte = 1; 2576 load_each_byte = 1;
2575 /* Read a decimal integer. */ 2577 /* Read a decimal integer. */
2576 while ((c = READCHAR) >= 0 2578 while ((c = READCHAR) >= 0
2577 && c >= '0' && c <= '9') 2579 && c >= '0' && c <= '9')
2578 { 2580 {
2581 if ((STRING_BYTES_BOUND - extra) / 10 <= nskip)
2582 string_overflow ();
2579 nskip *= 10; 2583 nskip *= 10;
2580 nskip += c - '0'; 2584 nskip += c - '0';
2581 } 2585 }
@@ -2594,9 +2598,9 @@ read1 (register Lisp_Object readcharfun, int *pch, int first_in_list)
2594 with prev_saved_doc_string, so we save two strings. */ 2598 with prev_saved_doc_string, so we save two strings. */
2595 { 2599 {
2596 char *temp = saved_doc_string; 2600 char *temp = saved_doc_string;
2597 int temp_size = saved_doc_string_size; 2601 ptrdiff_t temp_size = saved_doc_string_size;
2598 file_offset temp_pos = saved_doc_string_position; 2602 file_offset temp_pos = saved_doc_string_position;
2599 int temp_len = saved_doc_string_length; 2603 ptrdiff_t temp_len = saved_doc_string_length;
2600 2604
2601 saved_doc_string = prev_saved_doc_string; 2605 saved_doc_string = prev_saved_doc_string;
2602 saved_doc_string_size = prev_saved_doc_string_size; 2606 saved_doc_string_size = prev_saved_doc_string_size;
@@ -2611,12 +2615,12 @@ read1 (register Lisp_Object readcharfun, int *pch, int first_in_list)
2611 2615
2612 if (saved_doc_string_size == 0) 2616 if (saved_doc_string_size == 0)
2613 { 2617 {
2614 saved_doc_string_size = nskip + 100; 2618 saved_doc_string_size = nskip + extra;
2615 saved_doc_string = (char *) xmalloc (saved_doc_string_size); 2619 saved_doc_string = (char *) xmalloc (saved_doc_string_size);
2616 } 2620 }
2617 if (nskip > saved_doc_string_size) 2621 if (nskip > saved_doc_string_size)
2618 { 2622 {
2619 saved_doc_string_size = nskip + 100; 2623 saved_doc_string_size = nskip + extra;
2620 saved_doc_string = (char *) xrealloc (saved_doc_string, 2624 saved_doc_string = (char *) xrealloc (saved_doc_string,
2621 saved_doc_string_size); 2625 saved_doc_string_size);
2622 } 2626 }
@@ -2661,49 +2665,60 @@ read1 (register Lisp_Object readcharfun, int *pch, int first_in_list)
2661 /* Reader forms that can reuse previously read objects. */ 2665 /* Reader forms that can reuse previously read objects. */
2662 if (c >= '0' && c <= '9') 2666 if (c >= '0' && c <= '9')
2663 { 2667 {
2664 int n = 0; 2668 EMACS_INT n = 0;
2665 Lisp_Object tem; 2669 Lisp_Object tem;
2666 2670
2667 /* Read a non-negative integer. */ 2671 /* Read a non-negative integer. */
2668 while (c >= '0' && c <= '9') 2672 while (c >= '0' && c <= '9')
2669 { 2673 {
2670 n *= 10; 2674 if (MOST_POSITIVE_FIXNUM / 10 < n
2671 n += c - '0'; 2675 || MOST_POSITIVE_FIXNUM < n * 10 + c - '0')
2676 n = MOST_POSITIVE_FIXNUM + 1;
2677 else
2678 n = n * 10 + c - '0';
2672 c = READCHAR; 2679 c = READCHAR;
2673 } 2680 }
2674 /* #n=object returns object, but associates it with n for #n#. */ 2681
2675 if (c == '=' && !NILP (Vread_circle)) 2682 if (n <= MOST_POSITIVE_FIXNUM)
2676 { 2683 {
2677 /* Make a placeholder for #n# to use temporarily */ 2684 if (c == 'r' || c == 'R')
2678 Lisp_Object placeholder; 2685 return read_integer (readcharfun, n);
2679 Lisp_Object cell;
2680 2686
2681 placeholder = Fcons (Qnil, Qnil); 2687 if (! NILP (Vread_circle))
2682 cell = Fcons (make_number (n), placeholder); 2688 {
2683 read_objects = Fcons (cell, read_objects); 2689 /* #n=object returns object, but associates it with
2690 n for #n#. */
2691 if (c == '=')
2692 {
2693 /* Make a placeholder for #n# to use temporarily */
2694 Lisp_Object placeholder;
2695 Lisp_Object cell;
2684 2696
2685 /* Read the object itself. */ 2697 placeholder = Fcons (Qnil, Qnil);
2686 tem = read0 (readcharfun); 2698 cell = Fcons (make_number (n), placeholder);
2699 read_objects = Fcons (cell, read_objects);
2687 2700
2688 /* Now put it everywhere the placeholder was... */ 2701 /* Read the object itself. */
2689 substitute_object_in_subtree (tem, placeholder); 2702 tem = read0 (readcharfun);
2690 2703
2691 /* ...and #n# will use the real value from now on. */ 2704 /* Now put it everywhere the placeholder was... */
2692 Fsetcdr (cell, tem); 2705 substitute_object_in_subtree (tem, placeholder);
2693 2706
2694 return tem; 2707 /* ...and #n# will use the real value from now on. */
2695 } 2708 Fsetcdr (cell, tem);
2696 /* #n# returns a previously read object. */ 2709
2697 if (c == '#' && !NILP (Vread_circle)) 2710 return tem;
2698 { 2711 }
2699 tem = Fassq (make_number (n), read_objects);
2700 if (CONSP (tem))
2701 return XCDR (tem);
2702 /* Fall through to error message. */
2703 }
2704 else if (c == 'r' || c == 'R')
2705 return read_integer (readcharfun, n);
2706 2712
2713 /* #n# returns a previously read object. */
2714 if (c == '#')
2715 {
2716 tem = Fassq (make_number (n), read_objects);
2717 if (CONSP (tem))
2718 return XCDR (tem);
2719 }
2720 }
2721 }
2707 /* Fall through to error message. */ 2722 /* Fall through to error message. */
2708 } 2723 }
2709 else if (c == 'x' || c == 'X') 2724 else if (c == 'x' || c == 'X')
@@ -2846,14 +2861,16 @@ read1 (register Lisp_Object readcharfun, int *pch, int first_in_list)
2846 a single-byte character. */ 2861 a single-byte character. */
2847 int force_singlebyte = 0; 2862 int force_singlebyte = 0;
2848 int cancel = 0; 2863 int cancel = 0;
2849 int nchars = 0; 2864 ptrdiff_t nchars = 0;
2850 2865
2851 while ((ch = READCHAR) >= 0 2866 while ((ch = READCHAR) >= 0
2852 && ch != '\"') 2867 && ch != '\"')
2853 { 2868 {
2854 if (end - p < MAX_MULTIBYTE_LENGTH) 2869 if (end - p < MAX_MULTIBYTE_LENGTH)
2855 { 2870 {
2856 int offset = p - read_buffer; 2871 ptrdiff_t offset = p - read_buffer;
2872 if (min (PTRDIFF_MAX, SIZE_MAX) / 2 < read_buffer_size)
2873 memory_full (SIZE_MAX);
2857 read_buffer = (char *) xrealloc (read_buffer, 2874 read_buffer = (char *) xrealloc (read_buffer,
2858 read_buffer_size *= 2); 2875 read_buffer_size *= 2);
2859 p = read_buffer + offset; 2876 p = read_buffer + offset;
@@ -2996,7 +3013,9 @@ read1 (register Lisp_Object readcharfun, int *pch, int first_in_list)
2996 { 3013 {
2997 if (end - p < MAX_MULTIBYTE_LENGTH) 3014 if (end - p < MAX_MULTIBYTE_LENGTH)
2998 { 3015 {
2999 int offset = p - read_buffer; 3016 ptrdiff_t offset = p - read_buffer;
3017 if (min (PTRDIFF_MAX, SIZE_MAX) / 2 < read_buffer_size)
3018 memory_full (SIZE_MAX);
3000 read_buffer = (char *) xrealloc (read_buffer, 3019 read_buffer = (char *) xrealloc (read_buffer,
3001 read_buffer_size *= 2); 3020 read_buffer_size *= 2);
3002 p = read_buffer + offset; 3021 p = read_buffer + offset;
@@ -3023,7 +3042,9 @@ read1 (register Lisp_Object readcharfun, int *pch, int first_in_list)
3023 3042
3024 if (p == end) 3043 if (p == end)
3025 { 3044 {
3026 int offset = p - read_buffer; 3045 ptrdiff_t offset = p - read_buffer;
3046 if (min (PTRDIFF_MAX, SIZE_MAX) / 2 < read_buffer_size)
3047 memory_full (SIZE_MAX);
3027 read_buffer = (char *) xrealloc (read_buffer, 3048 read_buffer = (char *) xrealloc (read_buffer,
3028 read_buffer_size *= 2); 3049 read_buffer_size *= 2);
3029 p = read_buffer + offset; 3050 p = read_buffer + offset;
@@ -3135,7 +3156,7 @@ substitute_object_recurse (Lisp_Object object, Lisp_Object placeholder, Lisp_Obj
3135 { 3156 {
3136 case Lisp_Vectorlike: 3157 case Lisp_Vectorlike:
3137 { 3158 {
3138 int i, length = 0; 3159 ptrdiff_t i, length = 0;
3139 if (BOOL_VECTOR_P (subtree)) 3160 if (BOOL_VECTOR_P (subtree))
3140 return subtree; /* No sub-objects anyway. */ 3161 return subtree; /* No sub-objects anyway. */
3141 else if (CHAR_TABLE_P (subtree) || SUB_CHAR_TABLE_P (subtree) 3162 else if (CHAR_TABLE_P (subtree) || SUB_CHAR_TABLE_P (subtree)
@@ -3358,8 +3379,7 @@ string_to_number (char const *string, int base, int ignore_trailing)
3358static Lisp_Object 3379static Lisp_Object
3359read_vector (Lisp_Object readcharfun, int bytecodeflag) 3380read_vector (Lisp_Object readcharfun, int bytecodeflag)
3360{ 3381{
3361 register int i; 3382 ptrdiff_t i, size;
3362 register int size;
3363 register Lisp_Object *ptr; 3383 register Lisp_Object *ptr;
3364 register Lisp_Object tem, item, vector; 3384 register Lisp_Object tem, item, vector;
3365 register struct Lisp_Cons *otem; 3385 register struct Lisp_Cons *otem;
@@ -3528,15 +3548,15 @@ read_list (int flag, register Lisp_Object readcharfun)
3528 doc string, caller must make it 3548 doc string, caller must make it
3529 multibyte. */ 3549 multibyte. */
3530 3550
3531 int pos = XINT (XCDR (val)); 3551 EMACS_INT pos = XINT (XCDR (val));
3532 /* Position is negative for user variables. */ 3552 /* Position is negative for user variables. */
3533 if (pos < 0) pos = -pos; 3553 if (pos < 0) pos = -pos;
3534 if (pos >= saved_doc_string_position 3554 if (pos >= saved_doc_string_position
3535 && pos < (saved_doc_string_position 3555 && pos < (saved_doc_string_position
3536 + saved_doc_string_length)) 3556 + saved_doc_string_length))
3537 { 3557 {
3538 int start = pos - saved_doc_string_position; 3558 ptrdiff_t start = pos - saved_doc_string_position;
3539 int from, to; 3559 ptrdiff_t from, to;
3540 3560
3541 /* Process quoting with ^A, 3561 /* Process quoting with ^A,
3542 and find the end of the string, 3562 and find the end of the string,
@@ -3567,8 +3587,9 @@ read_list (int flag, register Lisp_Object readcharfun)
3567 && pos < (prev_saved_doc_string_position 3587 && pos < (prev_saved_doc_string_position
3568 + prev_saved_doc_string_length)) 3588 + prev_saved_doc_string_length))
3569 { 3589 {
3570 int start = pos - prev_saved_doc_string_position; 3590 ptrdiff_t start =
3571 int from, to; 3591 pos - prev_saved_doc_string_position;
3592 ptrdiff_t from, to;
3572 3593
3573 /* Process quoting with ^A, 3594 /* Process quoting with ^A,
3574 and find the end of the string, 3595 and find the end of the string,
@@ -3891,7 +3912,7 @@ hash_string (const char *ptr, size_t len)
3891void 3912void
3892map_obarray (Lisp_Object obarray, void (*fn) (Lisp_Object, Lisp_Object), Lisp_Object arg) 3913map_obarray (Lisp_Object obarray, void (*fn) (Lisp_Object, Lisp_Object), Lisp_Object arg)
3893{ 3914{
3894 register int i; 3915 ptrdiff_t i;
3895 register Lisp_Object tail; 3916 register Lisp_Object tail;
3896 CHECK_VECTOR (obarray); 3917 CHECK_VECTOR (obarray);
3897 for (i = ASIZE (obarray) - 1; i >= 0; i--) 3918 for (i = ASIZE (obarray) - 1; i >= 0; i--)
@@ -3962,8 +3983,7 @@ init_obarray (void)
3962 /* Qt is correct even if CANNOT_DUMP. loadup.el will set to nil at end. */ 3983 /* Qt is correct even if CANNOT_DUMP. loadup.el will set to nil at end. */
3963 Vpurify_flag = Qt; 3984 Vpurify_flag = Qt;
3964 3985
3965 Qvariable_documentation = intern_c_string ("variable-documentation"); 3986 DEFSYM (Qvariable_documentation, "variable-documentation");
3966 staticpro (&Qvariable_documentation);
3967 3987
3968 read_buffer_size = 100 + MAX_MULTIBYTE_LENGTH; 3988 read_buffer_size = 100 + MAX_MULTIBYTE_LENGTH;
3969 read_buffer = (char *) xmalloc (read_buffer_size); 3989 read_buffer = (char *) xmalloc (read_buffer_size);
@@ -3991,7 +4011,7 @@ defalias (sname, string)
3991#endif /* NOTDEF */ 4011#endif /* NOTDEF */
3992 4012
3993/* Define an "integer variable"; a symbol whose value is forwarded to a 4013/* Define an "integer variable"; a symbol whose value is forwarded to a
3994 C variable of type int. Sample call (munged w "xx" to fool make-docfile): 4014 C variable of type EMACS_INT. Sample call (with "xx" to fool make-docfile):
3995 DEFxxVAR_INT ("emacs-priority", &emacs_priority, "Documentation"); */ 4015 DEFxxVAR_INT ("emacs-priority", &emacs_priority, "Documentation"); */
3996void 4016void
3997defvar_int (struct Lisp_Intfwd *i_fwd, 4017defvar_int (struct Lisp_Intfwd *i_fwd,
@@ -4371,8 +4391,7 @@ customize `jka-compr-load-suffixes' rather than the present variable. */);
4371 4391
4372 DEFVAR_BOOL ("load-in-progress", load_in_progress, 4392 DEFVAR_BOOL ("load-in-progress", load_in_progress,
4373 doc: /* Non-nil if inside of `load'. */); 4393 doc: /* Non-nil if inside of `load'. */);
4374 Qload_in_progress = intern_c_string ("load-in-progress"); 4394 DEFSYM (Qload_in_progress, "load-in-progress");
4375 staticpro (&Qload_in_progress);
4376 4395
4377 DEFVAR_LISP ("after-load-alist", Vafter_load_alist, 4396 DEFVAR_LISP ("after-load-alist", Vafter_load_alist,
4378 doc: /* An alist of expressions to be evalled when particular files are loaded. 4397 doc: /* An alist of expressions to be evalled when particular files are loaded.
@@ -4401,9 +4420,11 @@ The remaining ENTRIES in the alist element describe the functions and
4401variables defined in that file, the features provided, and the 4420variables defined in that file, the features provided, and the
4402features required. Each entry has the form `(provide . FEATURE)', 4421features required. Each entry has the form `(provide . FEATURE)',
4403`(require . FEATURE)', `(defun . FUNCTION)', `(autoload . SYMBOL)', 4422`(require . FEATURE)', `(defun . FUNCTION)', `(autoload . SYMBOL)',
4404`(defface . SYMBOL)', or `(t . SYMBOL)'. In addition, an entry `(t 4423`(defface . SYMBOL)', or `(t . SYMBOL)'. Entries like `(t . SYMBOL)'
4405. SYMBOL)' may precede an entry `(defun . FUNCTION)', and means that 4424may precede a `(defun . FUNCTION)' entry, and means that SYMBOL was an
4406SYMBOL was an autoload before this file redefined it as a function. 4425autoload before this file redefined it as a function. In addition,
4426entries may also be single symbols, which means that SYMBOL was
4427defined by `defvar' or `defconst'.
4407 4428
4408During preloading, the file name recorded is relative to the main Lisp 4429During preloading, the file name recorded is relative to the main Lisp
4409directory. These file names are converted to absolute at startup. */); 4430directory. These file names are converted to absolute at startup. */);
@@ -4503,67 +4524,34 @@ This variable is automatically set from the file variables of an interpreted
4503 DEFVAR_LISP ("old-style-backquotes", Vold_style_backquotes, 4524 DEFVAR_LISP ("old-style-backquotes", Vold_style_backquotes,
4504 doc: /* Set to non-nil when `read' encounters an old-style backquote. */); 4525 doc: /* Set to non-nil when `read' encounters an old-style backquote. */);
4505 Vold_style_backquotes = Qnil; 4526 Vold_style_backquotes = Qnil;
4506 Qold_style_backquotes = intern_c_string ("old-style-backquotes"); 4527 DEFSYM (Qold_style_backquotes, "old-style-backquotes");
4507 staticpro (&Qold_style_backquotes);
4508 4528
4509 /* Vsource_directory was initialized in init_lread. */ 4529 /* Vsource_directory was initialized in init_lread. */
4510 4530
4511 load_descriptor_list = Qnil; 4531 load_descriptor_list = Qnil;
4512 staticpro (&load_descriptor_list); 4532 staticpro (&load_descriptor_list);
4513 4533
4514 Qcurrent_load_list = intern_c_string ("current-load-list"); 4534 DEFSYM (Qcurrent_load_list, "current-load-list");
4515 staticpro (&Qcurrent_load_list); 4535 DEFSYM (Qstandard_input, "standard-input");
4516 4536 DEFSYM (Qread_char, "read-char");
4517 Qstandard_input = intern_c_string ("standard-input"); 4537 DEFSYM (Qget_file_char, "get-file-char");
4518 staticpro (&Qstandard_input); 4538 DEFSYM (Qget_emacs_mule_file_char, "get-emacs-mule-file-char");
4519 4539 DEFSYM (Qload_force_doc_strings, "load-force-doc-strings");
4520 Qread_char = intern_c_string ("read-char"); 4540
4521 staticpro (&Qread_char); 4541 DEFSYM (Qbackquote, "`");
4522 4542 DEFSYM (Qcomma, ",");
4523 Qget_file_char = intern_c_string ("get-file-char"); 4543 DEFSYM (Qcomma_at, ",@");
4524 staticpro (&Qget_file_char); 4544 DEFSYM (Qcomma_dot, ",.");
4525 4545
4526 Qget_emacs_mule_file_char = intern_c_string ("get-emacs-mule-file-char"); 4546 DEFSYM (Qinhibit_file_name_operation, "inhibit-file-name-operation");
4527 staticpro (&Qget_emacs_mule_file_char); 4547 DEFSYM (Qascii_character, "ascii-character");
4528 4548 DEFSYM (Qfunction, "function");
4529 Qload_force_doc_strings = intern_c_string ("load-force-doc-strings"); 4549 DEFSYM (Qload, "load");
4530 staticpro (&Qload_force_doc_strings); 4550 DEFSYM (Qload_file_name, "load-file-name");
4531 4551 DEFSYM (Qeval_buffer_list, "eval-buffer-list");
4532 Qbackquote = intern_c_string ("`"); 4552 DEFSYM (Qfile_truename, "file-truename");
4533 staticpro (&Qbackquote); 4553 DEFSYM (Qdir_ok, "dir-ok");
4534 Qcomma = intern_c_string (","); 4554 DEFSYM (Qdo_after_load_evaluation, "do-after-load-evaluation");
4535 staticpro (&Qcomma);
4536 Qcomma_at = intern_c_string (",@");
4537 staticpro (&Qcomma_at);
4538 Qcomma_dot = intern_c_string (",.");
4539 staticpro (&Qcomma_dot);
4540
4541 Qinhibit_file_name_operation = intern_c_string ("inhibit-file-name-operation");
4542 staticpro (&Qinhibit_file_name_operation);
4543
4544 Qascii_character = intern_c_string ("ascii-character");
4545 staticpro (&Qascii_character);
4546
4547 Qfunction = intern_c_string ("function");
4548 staticpro (&Qfunction);
4549
4550 Qload = intern_c_string ("load");
4551 staticpro (&Qload);
4552
4553 Qload_file_name = intern_c_string ("load-file-name");
4554 staticpro (&Qload_file_name);
4555
4556 Qeval_buffer_list = intern_c_string ("eval-buffer-list");
4557 staticpro (&Qeval_buffer_list);
4558
4559 Qfile_truename = intern_c_string ("file-truename");
4560 staticpro (&Qfile_truename) ;
4561
4562 Qdir_ok = intern_c_string ("dir-ok");
4563 staticpro (&Qdir_ok);
4564
4565 Qdo_after_load_evaluation = intern_c_string ("do-after-load-evaluation");
4566 staticpro (&Qdo_after_load_evaluation) ;
4567 4555
4568 staticpro (&dump_path); 4556 staticpro (&dump_path);
4569 4557
@@ -4575,18 +4563,11 @@ This variable is automatically set from the file variables of an interpreted
4575 Vloads_in_progress = Qnil; 4563 Vloads_in_progress = Qnil;
4576 staticpro (&Vloads_in_progress); 4564 staticpro (&Vloads_in_progress);
4577 4565
4578 Qhash_table = intern_c_string ("hash-table"); 4566 DEFSYM (Qhash_table, "hash-table");
4579 staticpro (&Qhash_table); 4567 DEFSYM (Qdata, "data");
4580 Qdata = intern_c_string ("data"); 4568 DEFSYM (Qtest, "test");
4581 staticpro (&Qdata); 4569 DEFSYM (Qsize, "size");
4582 Qtest = intern_c_string ("test"); 4570 DEFSYM (Qweakness, "weakness");
4583 staticpro (&Qtest); 4571 DEFSYM (Qrehash_size, "rehash-size");
4584 Qsize = intern_c_string ("size"); 4572 DEFSYM (Qrehash_threshold, "rehash-threshold");
4585 staticpro (&Qsize);
4586 Qweakness = intern_c_string ("weakness");
4587 staticpro (&Qweakness);
4588 Qrehash_size = intern_c_string ("rehash-size");
4589 staticpro (&Qrehash_size);
4590 Qrehash_threshold = intern_c_string ("rehash-threshold");
4591 staticpro (&Qrehash_threshold);
4592} 4573}
diff --git a/src/macros.c b/src/macros.c
index 3523e513d6a..60f30c3fbbe 100644
--- a/src/macros.c
+++ b/src/macros.c
@@ -71,10 +71,10 @@ macro before appending to it. */)
71 { 71 {
72 if (current_kboard->kbd_macro_bufsize > 200) 72 if (current_kboard->kbd_macro_bufsize > 200)
73 { 73 {
74 current_kboard->kbd_macro_bufsize = 30;
75 current_kboard->kbd_macro_buffer 74 current_kboard->kbd_macro_buffer
76 = (Lisp_Object *)xrealloc (current_kboard->kbd_macro_buffer, 75 = (Lisp_Object *)xrealloc (current_kboard->kbd_macro_buffer,
77 30 * sizeof (Lisp_Object)); 76 30 * sizeof (Lisp_Object));
77 current_kboard->kbd_macro_bufsize = 30;
78 } 78 }
79 current_kboard->kbd_macro_ptr = current_kboard->kbd_macro_buffer; 79 current_kboard->kbd_macro_ptr = current_kboard->kbd_macro_buffer;
80 current_kboard->kbd_macro_end = current_kboard->kbd_macro_buffer; 80 current_kboard->kbd_macro_end = current_kboard->kbd_macro_buffer;
@@ -82,7 +82,8 @@ macro before appending to it. */)
82 } 82 }
83 else 83 else
84 { 84 {
85 int i, len; 85 ptrdiff_t i;
86 EMACS_INT len;
86 int cvt; 87 int cvt;
87 88
88 /* Check the type of last-kbd-macro in case Lisp code changed it. */ 89 /* Check the type of last-kbd-macro in case Lisp code changed it. */
@@ -94,10 +95,13 @@ macro before appending to it. */)
94 has put another macro there. */ 95 has put another macro there. */
95 if (current_kboard->kbd_macro_bufsize < len + 30) 96 if (current_kboard->kbd_macro_bufsize < len + 30)
96 { 97 {
97 current_kboard->kbd_macro_bufsize = len + 30; 98 if (min (PTRDIFF_MAX, SIZE_MAX) / sizeof (Lisp_Object) - 30
99 < current_kboard->kbd_macro_bufsize)
100 memory_full (SIZE_MAX);
98 current_kboard->kbd_macro_buffer 101 current_kboard->kbd_macro_buffer
99 = (Lisp_Object *)xrealloc (current_kboard->kbd_macro_buffer, 102 = (Lisp_Object *)xrealloc (current_kboard->kbd_macro_buffer,
100 (len + 30) * sizeof (Lisp_Object)); 103 (len + 30) * sizeof (Lisp_Object));
104 current_kboard->kbd_macro_bufsize = len + 30;
101 } 105 }
102 106
103 /* Must convert meta modifier when copying string to vector. */ 107 /* Must convert meta modifier when copying string to vector. */
@@ -191,14 +195,17 @@ store_kbd_macro_char (Lisp_Object c)
191 { 195 {
192 if (kb->kbd_macro_ptr - kb->kbd_macro_buffer == kb->kbd_macro_bufsize) 196 if (kb->kbd_macro_ptr - kb->kbd_macro_buffer == kb->kbd_macro_bufsize)
193 { 197 {
194 int ptr_offset, end_offset, nbytes; 198 ptrdiff_t ptr_offset, end_offset, nbytes;
195 199
196 ptr_offset = kb->kbd_macro_ptr - kb->kbd_macro_buffer; 200 ptr_offset = kb->kbd_macro_ptr - kb->kbd_macro_buffer;
197 end_offset = kb->kbd_macro_end - kb->kbd_macro_buffer; 201 end_offset = kb->kbd_macro_end - kb->kbd_macro_buffer;
198 kb->kbd_macro_bufsize *= 2; 202 if (min (PTRDIFF_MAX, SIZE_MAX) / sizeof *kb->kbd_macro_buffer / 2
199 nbytes = kb->kbd_macro_bufsize * sizeof *kb->kbd_macro_buffer; 203 < kb->kbd_macro_bufsize)
204 memory_full (SIZE_MAX);
205 nbytes = kb->kbd_macro_bufsize * 2 * sizeof *kb->kbd_macro_buffer;
200 kb->kbd_macro_buffer 206 kb->kbd_macro_buffer
201 = (Lisp_Object *) xrealloc (kb->kbd_macro_buffer, nbytes); 207 = (Lisp_Object *) xrealloc (kb->kbd_macro_buffer, nbytes);
208 kb->kbd_macro_bufsize *= 2;
202 kb->kbd_macro_ptr = kb->kbd_macro_buffer + ptr_offset; 209 kb->kbd_macro_ptr = kb->kbd_macro_buffer + ptr_offset;
203 kb->kbd_macro_end = kb->kbd_macro_buffer + end_offset; 210 kb->kbd_macro_end = kb->kbd_macro_buffer + end_offset;
204 } 211 }
@@ -360,15 +367,13 @@ init_macros (void)
360void 367void
361syms_of_macros (void) 368syms_of_macros (void)
362{ 369{
363 Qexecute_kbd_macro = intern_c_string ("execute-kbd-macro"); 370 DEFSYM (Qexecute_kbd_macro, "execute-kbd-macro");
364 staticpro (&Qexecute_kbd_macro);
365 371
366 DEFVAR_LISP ("kbd-macro-termination-hook", Vkbd_macro_termination_hook, 372 DEFVAR_LISP ("kbd-macro-termination-hook", Vkbd_macro_termination_hook,
367 doc: /* Normal hook run whenever a keyboard macro terminates. 373 doc: /* Normal hook run whenever a keyboard macro terminates.
368This is run whether the macro ends normally or prematurely due to an error. */); 374This is run whether the macro ends normally or prematurely due to an error. */);
369 Vkbd_macro_termination_hook = Qnil; 375 Vkbd_macro_termination_hook = Qnil;
370 Qkbd_macro_termination_hook = intern_c_string ("kbd-macro-termination-hook"); 376 DEFSYM (Qkbd_macro_termination_hook, "kbd-macro-termination-hook");
371 staticpro (&Qkbd_macro_termination_hook);
372 377
373 defsubr (&Sstart_kbd_macro); 378 defsubr (&Sstart_kbd_macro);
374 defsubr (&Send_kbd_macro); 379 defsubr (&Send_kbd_macro);
diff --git a/src/makefile.w32-in b/src/makefile.w32-in
index 173fc673955..88b53554925 100644
--- a/src/makefile.w32-in
+++ b/src/makefile.w32-in
@@ -382,471 +382,452 @@ full-tags: TAGS TAGS-LISP ../nt/TAGS
382### DEPENDENCIES ### 382### DEPENDENCIES ###
383 383
384EMACS_ROOT = .. 384EMACS_ROOT = ..
385CONFIG_H = $(EMACS_ROOT)/src/s/ms-w32.h \ 385GNU_LIB = $(EMACS_ROOT)/lib
386 $(EMACS_ROOT)/src/m/intel386.h \ 386NT_INC = $(EMACS_ROOT)/nt/inc
387 $(EMACS_ROOT)/src/config.h \ 387
388 $(EMACS_ROOT)/nt/inc/sys/stat.h 388SYSTIME_H = $(SRC)/systime.h \
389LISP_H = $(SRC)/lisp.h \ 389 $(NT_INC)/sys/time.h
390 $(SRC)/globals.h \ 390ATIMER_H = $(SRC)/atimer.h \
391 $(EMACS_ROOT)/lib/intprops.h \ 391 $(SYSTIME_H)
392 $(EMACS_ROOT)/nt/inc/inttypes.h \ 392BLOCKINPUT_H = $(SRC)/blockinput.h \
393 $(EMACS_ROOT)/nt/inc/stdint.h 393 $(ATIMER_H)
394PROCESS_H = $(SRC)/process.h \ 394CAREADLINKAT_H = $(GNU_LIB)/careadlinkat.h \
395 $(EMACS_ROOT)/nt/inc/unistd.h \ 395 $(NT_INC)/unistd.h
396 $(SRC)/gnutls.h 396CHARACTER_H = $(SRC)/character.h \
397 $(GNU_LIB)/verify.h
398CHARSET_H = $(SRC)/charset.h \
399 $(GNU_LIB)/verify.h
400CODING_H = $(SRC)/coding.h \
401 $(SRC)/composite.h
402MS_W32_H = $(SRC)/s/ms-w32.h \
403 $(NT_INC)/sys/stat.h
404CONFIG_H = $(SRC)/config.h \
405 $(SRC)/m/intel386.h \
406 $(MS_W32_H)
407DIR_H = $(NT_INC)/sys/dir.h \
408 $(SRC)/ndir.h
409W32GUI_H = $(SRC)/w32gui.h \
410 $(SYSTIME_H)
411DISPEXTERN_H = $(SRC)/dispextern.h \
412 $(W32GUI_H)
413FILEMODE_H = $(GNU_LIB)/filemode.h \
414 $(NT_INC)/sys/stat.h
415FONT_H = $(SRC)/font.h \
416 $(SRC)/ccl.h
417FRAME_H = $(SRC)/frame.h \
418 $(DISPEXTERN_H)
419FTOASTR_H = $(GNU_LIB)/ftoastr.h \
420 $(GNU_LIB)/intprops.h
421GRP_H = $(NT_INC)/grp.h \
422 $(NT_INC)/pwd.h
423INTERVALS_H = $(SRC)/intervals.h \
424 $(SRC)/composite.h \
425 $(DISPEXTERN_H)
426INTTYPES_H = $(NT_INC)/inttypes.h \
427 $(NT_INC)/stdint.h
428KEYBOARD_H = $(SRC)/keyboard.h \
429 $(CODING_H) \
430 $(SYSTIME_H)
431LANGINFO_H = $(NT_INC)/langinfo.h \
432 $(NT_INC)/nl_types.h
433LISP_H = $(SRC)/lisp.h \
434 $(SRC)/globals.h \
435 $(GNU_LIB)/intprops.h \
436 $(INTTYPES_H)
437MD5_H = $(GNU_LIB)/md5.h \
438 $(NT_INC)/stdint.h
439MENU_H = $(SRC)/menu.h \
440 $(SYSTIME_H)
441PROCESS_H = $(SRC)/process.h \
442 $(SRC)/gnutls.h \
443 $(NT_INC)/unistd.h
444SHA1_H = $(GNU_LIB)/sha1.h \
445 $(NT_INC)/stdint.h
446SHA256_H = $(GNU_LIB)/sha256.h \
447 $(NT_INC)/stdint.h
448U64_H = $(GNU_LIB)/u64.h \
449 $(NT_INC)/stdint.h
450SHA512_H = $(GNU_LIB)/sha512.h \
451 $(U64_H)
452SOCKET_H = $(NT_INC)/sys/socket.h \
453 $(SRC)/w32.h
454SYSTTY_H = $(SRC)/systty.h \
455 $(NT_INC)/sys/ioctl.h \
456 $(NT_INC)/unistd.h
457TERMHOOKS_H = $(SRC)/termhooks.h \
458 $(SYSTIME_H)
459W32TERM_H = $(SRC)/w32term.h \
460 $(W32GUI_H)
461WINDOW_H = $(SRC)/window.h \
462 $(DISPEXTERN_H)
397 463
398$(BLD)/alloc.$(O) : \ 464$(BLD)/alloc.$(O) : \
399 $(SRC)/alloc.c \ 465 $(SRC)/alloc.c \
400 $(CONFIG_H) \
401 $(EMACS_ROOT)/nt/inc/unistd.h \
402 $(EMACS_ROOT)/nt/inc/sys/time.h \
403 $(LISP_H) \
404 $(PROCESS_H) \
405 $(SRC)/atimer.h \
406 $(SRC)/blockinput.h \
407 $(SRC)/buffer.h \ 466 $(SRC)/buffer.h \
408 $(SRC)/character.h \
409 $(SRC)/coding.h \
410 $(SRC)/composite.h \
411 $(SRC)/dispextern.h \
412 $(SRC)/frame.h \
413 $(SRC)/intervals.h \
414 $(SRC)/keyboard.h \
415 $(SRC)/puresize.h \ 467 $(SRC)/puresize.h \
416 $(SRC)/syssignal.h \ 468 $(SRC)/syssignal.h \
417 $(SRC)/systime.h \
418 $(SRC)/termhooks.h \
419 $(SRC)/w32.h \ 469 $(SRC)/w32.h \
420 $(SRC)/w32gui.h \ 470 $(NT_INC)/unistd.h \
421 $(SRC)/window.h 471 $(BLOCKINPUT_H) \
472 $(CHARACTER_H) \
473 $(CONFIG_H) \
474 $(FRAME_H) \
475 $(INTERVALS_H) \
476 $(KEYBOARD_H) \
477 $(LISP_H) \
478 $(PROCESS_H) \
479 $(TERMHOOKS_H) \
480 $(WINDOW_H)
422 481
423$(BLD)/atimer.$(O) : \ 482$(BLD)/atimer.$(O) : \
424 $(SRC)/atimer.c \ 483 $(SRC)/atimer.c \
484 $(SRC)/syssignal.h \
485 $(NT_INC)/sys/time.h \
486 $(NT_INC)/unistd.h \
487 $(ATIMER_H) \
488 $(BLOCKINPUT_H) \
425 $(CONFIG_H) \ 489 $(CONFIG_H) \
426 $(EMACS_ROOT)/nt/inc/unistd.h \
427 $(EMACS_ROOT)/nt/inc/sys/time.h \
428 $(LISP_H) \ 490 $(LISP_H) \
429 $(SRC)/atimer.h \ 491 $(SYSTIME_H)
430 $(SRC)/blockinput.h \
431 $(SRC)/syssignal.h \
432 $(SRC)/systime.h
433 492
434$(BLD)/bidi.$(O) : \ 493$(BLD)/bidi.$(O) : \
435 $(SRC)/bidi.c \ 494 $(SRC)/bidi.c \
436 $(CONFIG_H) \
437 $(EMACS_ROOT)/nt/inc/sys/time.h \
438 $(LISP_H) \
439 $(SRC)/bidimirror.h \ 495 $(SRC)/bidimirror.h \
440 $(SRC)/biditype.h \ 496 $(SRC)/biditype.h \
441 $(SRC)/buffer.h \ 497 $(SRC)/buffer.h \
442 $(SRC)/character.h \ 498 $(CHARACTER_H) \
443 $(SRC)/dispextern.h \ 499 $(CONFIG_H) \
444 $(SRC)/systime.h \ 500 $(DISPEXTERN_H) \
445 $(SRC)/w32gui.h 501 $(LISP_H)
446 502
447$(BLD)/buffer.$(O) : \ 503$(BLD)/buffer.$(O) : \
448 $(SRC)/buffer.c \ 504 $(SRC)/buffer.c \
449 $(CONFIG_H) \
450 $(EMACS_ROOT)/nt/inc/unistd.h \
451 $(EMACS_ROOT)/nt/inc/sys/param.h \
452 $(EMACS_ROOT)/nt/inc/sys/time.h \
453 $(LISP_H) \
454 $(SRC)/atimer.h \
455 $(SRC)/blockinput.h \
456 $(SRC)/buffer.h \ 505 $(SRC)/buffer.h \
457 $(SRC)/character.h \
458 $(SRC)/coding.h \
459 $(SRC)/commands.h \ 506 $(SRC)/commands.h \
460 $(SRC)/composite.h \
461 $(SRC)/dispextern.h \
462 $(SRC)/frame.h \
463 $(SRC)/indent.h \ 507 $(SRC)/indent.h \
464 $(SRC)/intervals.h \
465 $(SRC)/keyboard.h \
466 $(SRC)/keymap.h \ 508 $(SRC)/keymap.h \
467 $(SRC)/region-cache.h \ 509 $(SRC)/region-cache.h \
468 $(SRC)/systime.h \ 510 $(NT_INC)/sys/param.h \
469 $(SRC)/w32gui.h \ 511 $(NT_INC)/sys/stat.h \
470 $(SRC)/window.h 512 $(NT_INC)/unistd.h \
513 $(GNU_LIB)/verify.h \
514 $(BLOCKINPUT_H) \
515 $(CHARACTER_H) \
516 $(CONFIG_H) \
517 $(FRAME_H) \
518 $(INTERVALS_H) \
519 $(KEYBOARD_H) \
520 $(LISP_H) \
521 $(WINDOW_H)
471 522
472$(BLD)/bytecode.$(O) : \ 523$(BLD)/bytecode.$(O) : \
473 $(SRC)/bytecode.c \ 524 $(SRC)/bytecode.c \
474 $(CONFIG_H) \
475 $(EMACS_ROOT)/nt/inc/sys/time.h \
476 $(LISP_H) \
477 $(SRC)/buffer.h \ 525 $(SRC)/buffer.h \
478 $(SRC)/character.h \
479 $(SRC)/dispextern.h \
480 $(SRC)/syntax.h \ 526 $(SRC)/syntax.h \
481 $(SRC)/systime.h \ 527 $(CHARACTER_H) \
482 $(SRC)/w32gui.h \ 528 $(CONFIG_H) \
483 $(SRC)/window.h 529 $(LISP_H) \
530 $(WINDOW_H)
484 531
485$(BLD)/callint.$(O) : \ 532$(BLD)/callint.$(O) : \
486 $(SRC)/callint.c \ 533 $(SRC)/callint.c \
487 $(CONFIG_H) \
488 $(EMACS_ROOT)/nt/inc/sys/time.h \
489 $(LISP_H) \
490 $(SRC)/buffer.h \ 534 $(SRC)/buffer.h \
491 $(SRC)/character.h \
492 $(SRC)/coding.h \
493 $(SRC)/commands.h \ 535 $(SRC)/commands.h \
494 $(SRC)/composite.h \
495 $(SRC)/dispextern.h \
496 $(SRC)/keyboard.h \
497 $(SRC)/keymap.h \ 536 $(SRC)/keymap.h \
498 $(SRC)/systime.h \ 537 $(CHARACTER_H) \
499 $(SRC)/w32gui.h \ 538 $(CONFIG_H) \
500 $(SRC)/window.h 539 $(KEYBOARD_H) \
540 $(LISP_H) \
541 $(WINDOW_H)
501 542
502$(BLD)/callproc.$(O) : \ 543$(BLD)/callproc.$(O) : \
503 $(SRC)/callproc.c \ 544 $(SRC)/callproc.c \
504 $(CONFIG_H) \
505 $(EMACS_ROOT)/nt/inc/unistd.h \
506 $(EMACS_ROOT)/nt/inc/sys/file.h \
507 $(EMACS_ROOT)/nt/inc/sys/ioctl.h \
508 $(EMACS_ROOT)/nt/inc/sys/time.h \
509 $(LISP_H) \
510 $(PROCESS_H) \
511 $(SRC)/atimer.h \
512 $(SRC)/blockinput.h \
513 $(SRC)/buffer.h \ 545 $(SRC)/buffer.h \
514 $(SRC)/ccl.h \ 546 $(SRC)/ccl.h \
515 $(SRC)/character.h \
516 $(SRC)/coding.h \
517 $(SRC)/commands.h \ 547 $(SRC)/commands.h \
518 $(SRC)/composite.h \ 548 $(SRC)/composite.h \
519 $(SRC)/dispextern.h \
520 $(SRC)/epaths.h \ 549 $(SRC)/epaths.h \
521 $(SRC)/frame.h \
522 $(SRC)/syssignal.h \ 550 $(SRC)/syssignal.h \
523 $(SRC)/systime.h \
524 $(SRC)/systty.h \
525 $(SRC)/termhooks.h \
526 $(SRC)/w32.h \ 551 $(SRC)/w32.h \
527 $(SRC)/w32gui.h 552 $(NT_INC)/sys/file.h \
553 $(NT_INC)/unistd.h \
554 $(BLOCKINPUT_H) \
555 $(CHARACTER_H) \
556 $(CODING_H) \
557 $(CONFIG_H) \
558 $(FRAME_H) \
559 $(LISP_H) \
560 $(PROCESS_H) \
561 $(SYSTTY_H) \
562 $(TERMHOOKS_H)
528 563
529$(BLD)/casefiddle.$(O) : \ 564$(BLD)/casefiddle.$(O) : \
530 $(SRC)/casefiddle.c \ 565 $(SRC)/casefiddle.c \
531 $(CONFIG_H) \
532 $(LISP_H) \
533 $(SRC)/buffer.h \ 566 $(SRC)/buffer.h \
534 $(SRC)/character.h \
535 $(SRC)/commands.h \ 567 $(SRC)/commands.h \
536 $(SRC)/composite.h \ 568 $(SRC)/composite.h \
537 $(SRC)/keymap.h \ 569 $(SRC)/keymap.h \
538 $(SRC)/syntax.h 570 $(SRC)/syntax.h \
571 $(CHARACTER_H) \
572 $(CONFIG_H) \
573 $(LISP_H)
539 574
540$(BLD)/casetab.$(O) : \ 575$(BLD)/casetab.$(O) : \
541 $(SRC)/casetab.c \ 576 $(SRC)/casetab.c \
542 $(CONFIG_H) \
543 $(LISP_H) \
544 $(SRC)/buffer.h \ 577 $(SRC)/buffer.h \
545 $(SRC)/character.h 578 $(CHARACTER_H) \
579 $(CONFIG_H) \
580 $(LISP_H)
546 581
547$(BLD)/category.$(O) : \ 582$(BLD)/category.$(O) : \
548 $(SRC)/category.c \ 583 $(SRC)/category.c \
549 $(CONFIG_H) \
550 $(LISP_H) \
551 $(SRC)/buffer.h \ 584 $(SRC)/buffer.h \
552 $(SRC)/category.h \ 585 $(SRC)/category.h \
553 $(SRC)/character.h \ 586 $(SRC)/keymap.h \
554 $(SRC)/charset.h \ 587 $(CHARACTER_H) \
555 $(SRC)/keymap.h 588 $(CHARSET_H) \
589 $(CONFIG_H) \
590 $(LISP_H)
556 591
557$(BLD)/ccl.$(O) : \ 592$(BLD)/ccl.$(O) : \
558 $(SRC)/ccl.c \ 593 $(SRC)/ccl.c \
559 $(CONFIG_H) \
560 $(LISP_H) \
561 $(SRC)/ccl.h \ 594 $(SRC)/ccl.h \
562 $(SRC)/character.h \ 595 $(CHARACTER_H) \
563 $(SRC)/charset.h \ 596 $(CHARSET_H) \
564 $(SRC)/coding.h \ 597 $(CODING_H) \
565 $(SRC)/composite.h 598 $(CONFIG_H) \
599 $(LISP_H)
566 600
567$(BLD)/character.$(O) : \ 601$(BLD)/character.$(O) : \
568 $(SRC)/character.c \ 602 $(SRC)/character.c \
569 $(CONFIG_H) \
570 $(LISP_H) \
571 $(SRC)/buffer.h \ 603 $(SRC)/buffer.h \
572 $(SRC)/character.h \
573 $(SRC)/charset.h \
574 $(SRC)/composite.h \ 604 $(SRC)/composite.h \
575 $(SRC)/disptab.h 605 $(SRC)/disptab.h \
606 $(GNU_LIB)/intprops.h \
607 $(CHARACTER_H) \
608 $(CHARSET_H) \
609 $(CONFIG_H) \
610 $(LISP_H)
576 611
577$(BLD)/charset.$(O) : \ 612$(BLD)/charset.$(O) : \
578 $(SRC)/charset.c \ 613 $(SRC)/charset.c \
579 $(CONFIG_H) \
580 $(EMACS_ROOT)/nt/inc/unistd.h \
581 $(LISP_H) \
582 $(SRC)/buffer.h \ 614 $(SRC)/buffer.h \
583 $(SRC)/character.h \ 615 $(SRC)/disptab.h \
584 $(SRC)/charset.h \ 616 $(NT_INC)/unistd.h \
585 $(SRC)/coding.h \ 617 $(CHARACTER_H) \
586 $(SRC)/composite.h \ 618 $(CHARSET_H) \
587 $(SRC)/disptab.h 619 $(CODING_H) \
620 $(CONFIG_H) \
621 $(LISP_H)
588 622
589$(BLD)/chartab.$(O) : \ 623$(BLD)/chartab.$(O) : \
590 $(SRC)/chartab.c \ 624 $(SRC)/chartab.c \
591 $(CONFIG_H) \
592 $(LISP_H) \
593 $(SRC)/ccl.h \ 625 $(SRC)/ccl.h \
594 $(SRC)/character.h \ 626 $(CHARACTER_H) \
595 $(SRC)/charset.h 627 $(CHARSET_H) \
628 $(CONFIG_H) \
629 $(LISP_H)
596 630
597$(BLD)/cmds.$(O) : \ 631$(BLD)/cmds.$(O) : \
598 $(SRC)/cmds.c \ 632 $(SRC)/cmds.c \
599 $(CONFIG_H) \
600 $(EMACS_ROOT)/nt/inc/sys/time.h \
601 $(LISP_H) \
602 $(SRC)/buffer.h \ 633 $(SRC)/buffer.h \
603 $(SRC)/character.h \
604 $(SRC)/coding.h \
605 $(SRC)/commands.h \ 634 $(SRC)/commands.h \
606 $(SRC)/composite.h \
607 $(SRC)/dispextern.h \
608 $(SRC)/frame.h \
609 $(SRC)/keyboard.h \
610 $(SRC)/keymap.h \ 635 $(SRC)/keymap.h \
611 $(SRC)/syntax.h \ 636 $(SRC)/syntax.h \
612 $(SRC)/systime.h \ 637 $(CHARACTER_H) \
613 $(SRC)/w32gui.h \ 638 $(CONFIG_H) \
614 $(SRC)/window.h 639 $(DISPEXTERN_H) \
640 $(FRAME_H) \
641 $(KEYBOARD_H) \
642 $(LISP_H) \
643 $(WINDOW_H)
615 644
616$(BLD)/coding.$(O) : \ 645$(BLD)/coding.$(O) : \
617 $(SRC)/coding.c \ 646 $(SRC)/coding.c \
618 $(CONFIG_H) \
619 $(EMACS_ROOT)/nt/inc/sys/time.h \
620 $(LISP_H) \
621 $(SRC)/buffer.h \ 647 $(SRC)/buffer.h \
622 $(SRC)/ccl.h \ 648 $(SRC)/ccl.h \
623 $(SRC)/character.h \
624 $(SRC)/charset.h \
625 $(SRC)/coding.h \
626 $(SRC)/composite.h \ 649 $(SRC)/composite.h \
627 $(SRC)/dispextern.h \ 650 $(CHARACTER_H) \
628 $(SRC)/frame.h \ 651 $(CHARSET_H) \
629 $(SRC)/systime.h \ 652 $(CODING_H) \
630 $(SRC)/termhooks.h \ 653 $(CONFIG_H) \
631 $(SRC)/w32gui.h \ 654 $(FRAME_H) \
632 $(SRC)/window.h 655 $(LISP_H) \
656 $(TERMHOOKS_H) \
657 $(WINDOW_H)
633 658
634$(BLD)/composite.$(O) : \ 659$(BLD)/composite.$(O) : \
635 $(SRC)/composite.c \ 660 $(SRC)/composite.c \
661 $(SRC)/buffer.h \
662 $(CHARACTER_H) \
663 $(CODING_H) \
636 $(CONFIG_H) \ 664 $(CONFIG_H) \
637 $(EMACS_ROOT)/nt/inc/sys/time.h \ 665 $(DISPEXTERN_H) \
666 $(FONT_H) \
667 $(FRAME_H) \
668 $(INTERVALS_H) \
638 $(LISP_H) \ 669 $(LISP_H) \
639 $(SRC)/buffer.h \ 670 $(TERMHOOKS_H) \
640 $(SRC)/ccl.h \ 671 $(WINDOW_H)
641 $(SRC)/character.h \
642 $(SRC)/coding.h \
643 $(SRC)/composite.h \
644 $(SRC)/dispextern.h \
645 $(SRC)/font.h \
646 $(SRC)/frame.h \
647 $(SRC)/intervals.h \
648 $(SRC)/systime.h \
649 $(SRC)/termhooks.h \
650 $(SRC)/w32gui.h \
651 $(SRC)/window.h
652 672
653$(BLD)/data.$(O) : \ 673$(BLD)/data.$(O) : \
654 $(SRC)/data.c \ 674 $(SRC)/data.c \
655 $(CONFIG_H) \
656 $(EMACS_ROOT)/nt/inc/sys/time.h \
657 $(LISP_H) \
658 $(SRC)/buffer.h \ 675 $(SRC)/buffer.h \
659 $(SRC)/ccl.h \
660 $(SRC)/character.h \
661 $(SRC)/coding.h \
662 $(SRC)/composite.h \
663 $(SRC)/dispextern.h \
664 $(SRC)/font.h \
665 $(SRC)/frame.h \
666 $(SRC)/keyboard.h \
667 $(SRC)/puresize.h \ 676 $(SRC)/puresize.h \
668 $(SRC)/syssignal.h \ 677 $(SRC)/syssignal.h \
669 $(SRC)/systime.h \ 678 $(GNU_LIB)/intprops.h \
670 $(SRC)/termhooks.h \ 679 $(CHARACTER_H) \
671 $(SRC)/w32gui.h 680 $(CONFIG_H) \
681 $(FONT_H) \
682 $(FRAME_H) \
683 $(KEYBOARD_H) \
684 $(LISP_H) \
685 $(TERMHOOKS_H)
672 686
673$(BLD)/dired.$(O) : \ 687$(BLD)/dired.$(O) : \
674 $(SRC)/dired.c \ 688 $(SRC)/dired.c \
675 $(CONFIG_H) \
676 $(EMACS_ROOT)/nt/inc/grp.h \
677 $(EMACS_ROOT)/nt/inc/pwd.h \
678 $(EMACS_ROOT)/nt/inc/unistd.h \
679 $(EMACS_ROOT)/nt/inc/sys/dir.h \
680 $(EMACS_ROOT)/nt/inc/sys/time.h \
681 $(EMACS_ROOT)/lib/filemode.h \
682 $(LISP_H) \
683 $(SRC)/atimer.h \
684 $(SRC)/blockinput.h \
685 $(SRC)/buffer.h \ 689 $(SRC)/buffer.h \
686 $(SRC)/character.h \
687 $(SRC)/charset.h \
688 $(SRC)/coding.h \
689 $(SRC)/commands.h \ 690 $(SRC)/commands.h \
690 $(SRC)/composite.h \
691 $(SRC)/ndir.h \
692 $(SRC)/regex.h \ 691 $(SRC)/regex.h \
693 $(SRC)/systime.h 692 $(NT_INC)/pwd.h \
693 $(NT_INC)/sys/stat.h \
694 $(NT_INC)/unistd.h \
695 $(BLOCKINPUT_H) \
696 $(CHARACTER_H) \
697 $(CHARSET_H) \
698 $(CODING_H) \
699 $(CONFIG_H) \
700 $(DIR_H) \
701 $(FILEMODE_H) \
702 $(GRP_H) \
703 $(LISP_H) \
704 $(SYSTIME_H)
694 705
695$(BLD)/dispnew.$(O) : \ 706$(BLD)/dispnew.$(O) : \
696 $(SRC)/dispnew.c \ 707 $(SRC)/dispnew.c \
697 $(CONFIG_H) \
698 $(EMACS_ROOT)/nt/inc/unistd.h \
699 $(EMACS_ROOT)/nt/inc/sys/time.h \
700 $(LISP_H) \
701 $(PROCESS_H) \
702 $(SRC)/atimer.h \
703 $(SRC)/blockinput.h \
704 $(SRC)/buffer.h \ 708 $(SRC)/buffer.h \
705 $(SRC)/character.h \
706 $(SRC)/cm.h \ 709 $(SRC)/cm.h \
707 $(SRC)/coding.h \
708 $(SRC)/commands.h \ 710 $(SRC)/commands.h \
709 $(SRC)/composite.h \
710 $(SRC)/dispextern.h \
711 $(SRC)/disptab.h \ 711 $(SRC)/disptab.h \
712 $(SRC)/frame.h \
713 $(SRC)/indent.h \ 712 $(SRC)/indent.h \
714 $(SRC)/intervals.h \
715 $(SRC)/keyboard.h \
716 $(SRC)/syssignal.h \ 713 $(SRC)/syssignal.h \
717 $(SRC)/systime.h \
718 $(SRC)/termchar.h \ 714 $(SRC)/termchar.h \
719 $(SRC)/termhooks.h \
720 $(SRC)/termopts.h \ 715 $(SRC)/termopts.h \
721 $(SRC)/w32gui.h \ 716 $(NT_INC)/unistd.h \
722 $(SRC)/w32term.h \ 717 $(BLOCKINPUT_H) \
723 $(SRC)/window.h 718 $(CHARACTER_H) \
719 $(CONFIG_H) \
720 $(DISPEXTERN_H) \
721 $(FRAME_H) \
722 $(INTERVALS_H) \
723 $(KEYBOARD_H) \
724 $(LISP_H) \
725 $(PROCESS_H) \
726 $(SYSTIME_H) \
727 $(TERMHOOKS_H) \
728 $(W32TERM_H) \
729 $(WINDOW_H)
724 730
725$(BLD)/doc.$(O) : \ 731$(BLD)/doc.$(O) : \
726 $(SRC)/doc.c \ 732 $(SRC)/doc.c \
727 $(CONFIG_H) \
728 buildobj.h \
729 $(EMACS_ROOT)/nt/inc/unistd.h \
730 $(EMACS_ROOT)/nt/inc/sys/file.h \
731 $(EMACS_ROOT)/nt/inc/sys/time.h \
732 $(LISP_H) \
733 $(SRC)/buffer.h \ 733 $(SRC)/buffer.h \
734 $(SRC)/character.h \ 734 $(SRC)/buildobj.h \
735 $(SRC)/coding.h \
736 $(SRC)/composite.h \
737 $(SRC)/keyboard.h \
738 $(SRC)/keymap.h \ 735 $(SRC)/keymap.h \
739 $(SRC)/systime.h 736 $(NT_INC)/sys/file.h \
737 $(NT_INC)/unistd.h \
738 $(CHARACTER_H) \
739 $(CONFIG_H) \
740 $(KEYBOARD_H) \
741 $(LISP_H)
740 742
741$(BLD)/doprnt.$(O) : \ 743$(BLD)/doprnt.$(O) : \
742 $(SRC)/doprnt.c \ 744 $(SRC)/doprnt.c \
745 $(NT_INC)/unistd.h \
746 $(CHARACTER_H) \
743 $(CONFIG_H) \ 747 $(CONFIG_H) \
744 $(EMACS_ROOT)/nt/inc/unistd.h \ 748 $(LISP_H)
745 $(LISP_H) \
746 $(SRC)/character.h
747 749
748$(BLD)/editfns.$(O) : \ 750$(BLD)/editfns.$(O) : \
749 $(SRC)/editfns.c \ 751 $(SRC)/editfns.c \
752 $(SRC)/buffer.h \
753 $(NT_INC)/pwd.h \
754 $(NT_INC)/unistd.h \
755 $(GNU_LIB)/intprops.h \
756 $(GNU_LIB)/strftime.h \
757 $(GNU_LIB)/verify.h \
758 $(BLOCKINPUT_H) \
759 $(CHARACTER_H) \
760 $(CODING_H) \
750 $(CONFIG_H) \ 761 $(CONFIG_H) \
751 $(EMACS_ROOT)/nt/inc/pwd.h \ 762 $(FRAME_H) \
752 $(EMACS_ROOT)/nt/inc/unistd.h \ 763 $(INTERVALS_H) \
753 $(EMACS_ROOT)/nt/inc/sys/time.h \
754 $(EMACS_ROOT)/lib/strftime.h \
755 $(EMACS_ROOT)/lib/verify.h \
756 $(LISP_H) \ 764 $(LISP_H) \
757 $(SRC)/atimer.h \ 765 $(SYSTIME_H) \
758 $(SRC)/blockinput.h \ 766 $(WINDOW_H)
759 $(SRC)/buffer.h \
760 $(SRC)/character.h \
761 $(SRC)/coding.h \
762 $(SRC)/composite.h \
763 $(SRC)/dispextern.h \
764 $(SRC)/frame.h \
765 $(SRC)/intervals.h \
766 $(SRC)/systime.h \
767 $(SRC)/w32gui.h \
768 $(SRC)/window.h
769 767
770$(BLD)/emacs.$(O) : \ 768$(BLD)/emacs.$(O) : \
771 $(SRC)/emacs.c \ 769 $(SRC)/emacs.c \
772 $(CONFIG_H) \
773 $(EMACS_ROOT)/nt/inc/unistd.h \
774 $(EMACS_ROOT)/nt/inc/sys/file.h \
775 $(EMACS_ROOT)/nt/inc/sys/ioctl.h \
776 $(EMACS_ROOT)/nt/inc/sys/time.h \
777 $(LISP_H) \
778 $(PROCESS_H) \
779 $(SRC)/atimer.h \
780 $(SRC)/blockinput.h \
781 $(SRC)/buffer.h \ 770 $(SRC)/buffer.h \
782 $(SRC)/coding.h \
783 $(SRC)/commands.h \ 771 $(SRC)/commands.h \
784 $(SRC)/composite.h \ 772 $(SRC)/gnutls.h \
785 $(SRC)/dispextern.h \
786 $(SRC)/frame.h \
787 $(SRC)/intervals.h \
788 $(SRC)/keyboard.h \
789 $(SRC)/keymap.h \ 773 $(SRC)/keymap.h \
790 $(SRC)/syssignal.h \ 774 $(SRC)/syssignal.h \
791 $(SRC)/systime.h \
792 $(SRC)/systty.h \
793 $(SRC)/termhooks.h \
794 $(SRC)/unexec.h \ 775 $(SRC)/unexec.h \
795 $(SRC)/w32.h \ 776 $(SRC)/w32.h \
796 $(SRC)/w32gui.h \
797 $(SRC)/w32heap.h \ 777 $(SRC)/w32heap.h \
798 $(SRC)/window.h 778 $(NT_INC)/sys/file.h \
779 $(NT_INC)/unistd.h \
780 $(BLOCKINPUT_H) \
781 $(CONFIG_H) \
782 $(FRAME_H) \
783 $(INTERVALS_H) \
784 $(KEYBOARD_H) \
785 $(LISP_H) \
786 $(PROCESS_H) \
787 $(SYSTTY_H) \
788 $(TERMHOOKS_H) \
789 $(WINDOW_H)
799 790
800$(BLD)/eval.$(O) : \ 791$(BLD)/eval.$(O) : \
801 $(SRC)/eval.c \ 792 $(SRC)/eval.c \
802 $(CONFIG_H) \
803 $(EMACS_ROOT)/nt/inc/sys/time.h \
804 $(LISP_H) \
805 $(SRC)/atimer.h \
806 $(SRC)/blockinput.h \
807 $(SRC)/coding.h \
808 $(SRC)/commands.h \ 793 $(SRC)/commands.h \
809 $(SRC)/composite.h \ 794 $(BLOCKINPUT_H) \
810 $(SRC)/dispextern.h \ 795 $(CONFIG_H) \
811 $(SRC)/frame.h \ 796 $(DISPEXTERN_H) \
812 $(SRC)/keyboard.h \ 797 $(FRAME_H) \
813 $(SRC)/systime.h \ 798 $(KEYBOARD_H) \
814 $(SRC)/w32gui.h 799 $(LISP_H)
815 800
816$(BLD)/fileio.$(O) : \ 801$(BLD)/fileio.$(O) : \
817 $(SRC)/fileio.c \ 802 $(SRC)/fileio.c \
818 $(CONFIG_H) \
819 $(EMACS_ROOT)/nt/inc/pwd.h \
820 $(EMACS_ROOT)/nt/inc/unistd.h \
821 $(EMACS_ROOT)/nt/inc/sys/time.h \
822 $(LISP_H) \
823 $(SRC)/atimer.h \
824 $(SRC)/blockinput.h \
825 $(SRC)/buffer.h \ 803 $(SRC)/buffer.h \
826 $(SRC)/character.h \
827 $(SRC)/coding.h \
828 $(SRC)/commands.h \ 804 $(SRC)/commands.h \
829 $(SRC)/composite.h \ 805 $(NT_INC)/pwd.h \
830 $(SRC)/dispextern.h \ 806 $(NT_INC)/sys/stat.h \
831 $(SRC)/frame.h \ 807 $(NT_INC)/unistd.h \
832 $(SRC)/intervals.h \ 808 $(BLOCKINPUT_H) \
833 $(SRC)/systime.h \ 809 $(CHARACTER_H) \
834 $(SRC)/w32gui.h \ 810 $(CODING_H) \
835 $(SRC)/window.h 811 $(CONFIG_H) \
812 $(DISPEXTERN_H) \
813 $(FRAME_H) \
814 $(INTERVALS_H) \
815 $(LISP_H) \
816 $(SYSTIME_H) \
817 $(WINDOW_H)
836 818
837$(BLD)/filelock.$(O) : \ 819$(BLD)/filelock.$(O) : \
838 $(SRC)/filelock.c \ 820 $(SRC)/filelock.c \
821 $(SRC)/buffer.h \
822 $(NT_INC)/pwd.h \
823 $(NT_INC)/sys/file.h \
824 $(NT_INC)/sys/stat.h \
825 $(NT_INC)/unistd.h \
826 $(CHARACTER_H) \
827 $(CODING_H) \
839 $(CONFIG_H) \ 828 $(CONFIG_H) \
840 $(EMACS_ROOT)/nt/inc/pwd.h \
841 $(EMACS_ROOT)/nt/inc/unistd.h \
842 $(EMACS_ROOT)/nt/inc/sys/file.h \
843 $(EMACS_ROOT)/nt/inc/sys/time.h \
844 $(LISP_H) \ 829 $(LISP_H) \
845 $(SRC)/buffer.h \ 830 $(SYSTIME_H)
846 $(SRC)/character.h \
847 $(SRC)/coding.h \
848 $(SRC)/composite.h \
849 $(SRC)/systime.h
850 831
851$(BLD)/firstfile.$(O) : \ 832$(BLD)/firstfile.$(O) : \
852 $(SRC)/firstfile.c \ 833 $(SRC)/firstfile.c \
@@ -854,271 +835,213 @@ $(BLD)/firstfile.$(O) : \
854 835
855$(BLD)/floatfns.$(O) : \ 836$(BLD)/floatfns.$(O) : \
856 $(SRC)/floatfns.c \ 837 $(SRC)/floatfns.c \
838 $(SRC)/syssignal.h \
857 $(CONFIG_H) \ 839 $(CONFIG_H) \
858 $(LISP_H) \ 840 $(LISP_H)
859 $(SRC)/syssignal.h
860 841
861$(BLD)/fns.$(O) : \ 842$(BLD)/fns.$(O) : \
862 $(SRC)/fns.c \ 843 $(SRC)/fns.c \
863 $(CONFIG_H) \
864 $(EMACS_ROOT)/nt/inc/langinfo.h \
865 $(EMACS_ROOT)/nt/inc/nl_types.h \
866 $(EMACS_ROOT)/nt/inc/unistd.h \
867 $(EMACS_ROOT)/nt/inc/sys/time.h \
868 $(EMACS_ROOT)/lib/md5.h \
869 $(EMACS_ROOT)/lib/sha1.h \
870 $(EMACS_ROOT)/lib/sha256.h \
871 $(EMACS_ROOT)/lib/sha512.h \
872 $(LISP_H) \
873 $(SRC)/atimer.h \
874 $(SRC)/blockinput.h \
875 $(SRC)/buffer.h \ 844 $(SRC)/buffer.h \
876 $(SRC)/character.h \
877 $(SRC)/coding.h \
878 $(SRC)/commands.h \ 845 $(SRC)/commands.h \
879 $(SRC)/composite.h \
880 $(SRC)/dispextern.h \
881 $(SRC)/frame.h \
882 $(SRC)/intervals.h \
883 $(SRC)/keyboard.h \
884 $(SRC)/keymap.h \ 846 $(SRC)/keymap.h \
885 $(SRC)/systime.h \ 847 $(NT_INC)/unistd.h \
886 $(SRC)/w32gui.h \ 848 $(GNU_LIB)/intprops.h \
887 $(SRC)/window.h 849 $(BLOCKINPUT_H) \
850 $(CHARACTER_H) \
851 $(CODING_H) \
852 $(CONFIG_H) \
853 $(FRAME_H) \
854 $(INTERVALS_H) \
855 $(KEYBOARD_H) \
856 $(LANGINFO_H) \
857 $(LISP_H) \
858 $(MD5_H) \
859 $(SHA1_H) \
860 $(SHA256_H) \
861 $(SHA512_H) \
862 $(WINDOW_H)
888 863
889$(BLD)/font.$(O) : \ 864$(BLD)/font.$(O) : \
890 $(SRC)/font.c \ 865 $(SRC)/font.c \
891 $(CONFIG_H) \
892 $(EMACS_ROOT)/nt/inc/sys/time.h \
893 $(LISP_H) \
894 $(SRC)/buffer.h \ 866 $(SRC)/buffer.h \
895 $(SRC)/ccl.h \
896 $(SRC)/character.h \
897 $(SRC)/charset.h \
898 $(SRC)/composite.h \ 867 $(SRC)/composite.h \
899 $(SRC)/dispextern.h \
900 $(SRC)/font.h \
901 $(SRC)/fontset.h \ 868 $(SRC)/fontset.h \
902 $(SRC)/frame.h \ 869 $(CHARACTER_H) \
903 $(SRC)/systime.h \ 870 $(CHARSET_H) \
904 $(SRC)/w32gui.h \ 871 $(CONFIG_H) \
905 $(SRC)/w32term.h \ 872 $(DISPEXTERN_H) \
906 $(SRC)/window.h 873 $(FONT_H) \
874 $(FRAME_H) \
875 $(LISP_H) \
876 $(W32TERM_H) \
877 $(WINDOW_H)
907 878
908$(BLD)/fontset.$(O) : \ 879$(BLD)/fontset.$(O) : \
909 $(SRC)/fontset.c \ 880 $(SRC)/fontset.c \
910 $(CONFIG_H) \
911 $(EMACS_ROOT)/nt/inc/sys/time.h \
912 $(LISP_H) \
913 $(SRC)/atimer.h \
914 $(SRC)/blockinput.h \
915 $(SRC)/buffer.h \ 881 $(SRC)/buffer.h \
916 $(SRC)/ccl.h \ 882 $(SRC)/ccl.h \
917 $(SRC)/character.h \
918 $(SRC)/charset.h \
919 $(SRC)/coding.h \
920 $(SRC)/composite.h \
921 $(SRC)/dispextern.h \
922 $(SRC)/font.h \
923 $(SRC)/fontset.h \ 883 $(SRC)/fontset.h \
924 $(SRC)/frame.h \ 884 $(BLOCKINPUT_H) \
925 $(SRC)/intervals.h \ 885 $(CHARACTER_H) \
926 $(SRC)/keyboard.h \ 886 $(CHARSET_H) \
927 $(SRC)/systime.h \ 887 $(CONFIG_H) \
928 $(SRC)/termhooks.h \ 888 $(DISPEXTERN_H) \
929 $(SRC)/w32gui.h \ 889 $(FONT_H) \
930 $(SRC)/w32term.h \ 890 $(FRAME_H) \
931 $(SRC)/window.h 891 $(INTERVALS_H) \
892 $(KEYBOARD_H) \
893 $(LISP_H) \
894 $(TERMHOOKS_H) \
895 $(W32TERM_H) \
896 $(WINDOW_H)
932 897
933$(BLD)/frame.$(O) : \ 898$(BLD)/frame.$(O) : \
934 $(SRC)/frame.c \ 899 $(SRC)/frame.c \
935 $(CONFIG_H) \
936 $(EMACS_ROOT)/nt/inc/sys/time.h \
937 $(LISP_H) \
938 $(SRC)/atimer.h \
939 $(SRC)/blockinput.h \
940 $(SRC)/buffer.h \ 900 $(SRC)/buffer.h \
941 $(SRC)/ccl.h \
942 $(SRC)/character.h \
943 $(SRC)/coding.h \
944 $(SRC)/commands.h \ 901 $(SRC)/commands.h \
945 $(SRC)/composite.h \
946 $(SRC)/dispextern.h \
947 $(SRC)/font.h \
948 $(SRC)/fontset.h \ 902 $(SRC)/fontset.h \
949 $(SRC)/frame.h \
950 $(SRC)/keyboard.h \
951 $(SRC)/systime.h \
952 $(SRC)/termchar.h \ 903 $(SRC)/termchar.h \
953 $(SRC)/termhooks.h \ 904 $(BLOCKINPUT_H) \
954 $(SRC)/w32gui.h \ 905 $(CHARACTER_H) \
955 $(SRC)/w32term.h \ 906 $(CONFIG_H) \
956 $(SRC)/window.h 907 $(DISPEXTERN_H) \
908 $(FONT_H) \
909 $(FRAME_H) \
910 $(KEYBOARD_H) \
911 $(LISP_H) \
912 $(TERMHOOKS_H) \
913 $(W32TERM_H) \
914 $(WINDOW_H)
957 915
958$(BLD)/fringe.$(O) : \ 916$(BLD)/fringe.$(O) : \
959 $(SRC)/fringe.c \ 917 $(SRC)/fringe.c \
918 $(SRC)/buffer.h \
919 $(BLOCKINPUT_H) \
960 $(CONFIG_H) \ 920 $(CONFIG_H) \
961 $(EMACS_ROOT)/nt/inc/sys/time.h \ 921 $(DISPEXTERN_H) \
922 $(FRAME_H) \
962 $(LISP_H) \ 923 $(LISP_H) \
963 $(SRC)/atimer.h \ 924 $(TERMHOOKS_H) \
964 $(SRC)/blockinput.h \ 925 $(WINDOW_H)
965 $(SRC)/buffer.h \
966 $(SRC)/dispextern.h \
967 $(SRC)/frame.h \
968 $(SRC)/systime.h \
969 $(SRC)/termhooks.h \
970 $(SRC)/w32gui.h \
971 $(SRC)/window.h
972 926
973$(BLD)/gmalloc.$(O) : \ 927$(BLD)/gmalloc.$(O) : \
974 $(SRC)/gmalloc.c \ 928 $(SRC)/gmalloc.c \
975 $(CONFIG_H) \ 929 $(SRC)/getpagesize.h \
976 $(EMACS_ROOT)/nt/inc/unistd.h \ 930 $(NT_INC)/unistd.h \
977 $(SRC)/getpagesize.h 931 $(CONFIG_H)
978 932
979$(BLD)/gnutls.$(O) : \ 933$(BLD)/gnutls.$(O) : \
980 $(SRC)/gnutls.c \ 934 $(SRC)/gnutls.c \
935 $(SRC)/w32.h \
981 $(CONFIG_H) \ 936 $(CONFIG_H) \
982 $(EMACS_ROOT)/nt/inc/unistd.h \
983 $(LISP_H) \ 937 $(LISP_H) \
984 $(PROCESS_H) \ 938 $(PROCESS_H)
985 $(SRC)/w32.h
986 939
987$(BLD)/image.$(O) : \ 940$(BLD)/image.$(O) : \
988 $(SRC)/image.c \ 941 $(SRC)/image.c \
989 $(CONFIG_H) \
990 $(EMACS_ROOT)/nt/inc/unistd.h \
991 $(EMACS_ROOT)/nt/inc/sys/time.h \
992 $(LISP_H) \
993 $(SRC)/atimer.h \
994 $(SRC)/blockinput.h \
995 $(SRC)/ccl.h \
996 $(SRC)/character.h \
997 $(SRC)/coding.h \
998 $(SRC)/composite.h \
999 $(SRC)/dispextern.h \
1000 $(SRC)/epaths.h \ 942 $(SRC)/epaths.h \
1001 $(SRC)/font.h \
1002 $(SRC)/frame.h \
1003 $(SRC)/systime.h \
1004 $(SRC)/termhooks.h \
1005 $(SRC)/w32.h \ 943 $(SRC)/w32.h \
1006 $(SRC)/w32gui.h \ 944 $(NT_INC)/unistd.h \
1007 $(SRC)/w32term.h \ 945 $(BLOCKINPUT_H) \
1008 $(SRC)/window.h 946 $(CHARACTER_H) \
947 $(CODING_H) \
948 $(CONFIG_H) \
949 $(DISPEXTERN_H) \
950 $(FONT_H) \
951 $(FRAME_H) \
952 $(LISP_H) \
953 $(SYSTIME_H) \
954 $(TERMHOOKS_H) \
955 $(W32TERM_H) \
956 $(WINDOW_H)
1009 957
1010$(BLD)/indent.$(O) : \ 958$(BLD)/indent.$(O) : \
1011 $(SRC)/indent.c \ 959 $(SRC)/indent.c \
1012 $(CONFIG_H) \
1013 $(EMACS_ROOT)/nt/inc/sys/time.h \
1014 $(LISP_H) \
1015 $(SRC)/buffer.h \ 960 $(SRC)/buffer.h \
1016 $(SRC)/category.h \ 961 $(SRC)/category.h \
1017 $(SRC)/character.h \
1018 $(SRC)/coding.h \
1019 $(SRC)/composite.h \ 962 $(SRC)/composite.h \
1020 $(SRC)/dispextern.h \
1021 $(SRC)/disptab.h \ 963 $(SRC)/disptab.h \
1022 $(SRC)/frame.h \
1023 $(SRC)/indent.h \ 964 $(SRC)/indent.h \
1024 $(SRC)/intervals.h \
1025 $(SRC)/keyboard.h \
1026 $(SRC)/region-cache.h \ 965 $(SRC)/region-cache.h \
1027 $(SRC)/systime.h \
1028 $(SRC)/termchar.h \ 966 $(SRC)/termchar.h \
1029 $(SRC)/termopts.h \ 967 $(SRC)/termopts.h \
1030 $(SRC)/w32gui.h \ 968 $(CHARACTER_H) \
1031 $(SRC)/window.h 969 $(CONFIG_H) \
970 $(DISPEXTERN_H) \
971 $(FRAME_H) \
972 $(INTERVALS_H) \
973 $(KEYBOARD_H) \
974 $(LISP_H) \
975 $(WINDOW_H)
1032 976
1033$(BLD)/insdel.$(O) : \ 977$(BLD)/insdel.$(O) : \
1034 $(SRC)/insdel.c \ 978 $(SRC)/insdel.c \
1035 $(CONFIG_H) \
1036 $(EMACS_ROOT)/nt/inc/sys/time.h \
1037 $(LISP_H) \
1038 $(SRC)/atimer.h \
1039 $(SRC)/blockinput.h \
1040 $(SRC)/buffer.h \ 979 $(SRC)/buffer.h \
1041 $(SRC)/character.h \
1042 $(SRC)/composite.h \
1043 $(SRC)/dispextern.h \
1044 $(SRC)/intervals.h \
1045 $(SRC)/region-cache.h \ 980 $(SRC)/region-cache.h \
1046 $(SRC)/systime.h \ 981 $(GNU_LIB)/intprops.h \
1047 $(SRC)/w32gui.h \ 982 $(BLOCKINPUT_H) \
1048 $(SRC)/window.h 983 $(CHARACTER_H) \
984 $(CONFIG_H) \
985 $(INTERVALS_H) \
986 $(LISP_H) \
987 $(WINDOW_H)
1049 988
1050$(BLD)/intervals.$(O) : \ 989$(BLD)/intervals.$(O) : \
1051 $(SRC)/intervals.c \ 990 $(SRC)/intervals.c \
1052 $(CONFIG_H) \
1053 $(EMACS_ROOT)/nt/inc/sys/time.h \
1054 $(LISP_H) \
1055 $(SRC)/buffer.h \ 991 $(SRC)/buffer.h \
1056 $(SRC)/coding.h \
1057 $(SRC)/composite.h \
1058 $(SRC)/dispextern.h \
1059 $(SRC)/intervals.h \
1060 $(SRC)/keyboard.h \
1061 $(SRC)/keymap.h \ 992 $(SRC)/keymap.h \
1062 $(SRC)/puresize.h \ 993 $(SRC)/puresize.h \
1063 $(SRC)/systime.h \ 994 $(GNU_LIB)/intprops.h \
1064 $(SRC)/w32gui.h 995 $(CONFIG_H) \
996 $(INTERVALS_H) \
997 $(KEYBOARD_H) \
998 $(LISP_H)
1065 999
1066$(BLD)/keyboard.$(O) : \ 1000$(BLD)/keyboard.$(O) : \
1067 $(SRC)/keyboard.c \ 1001 $(SRC)/keyboard.c \
1068 $(CONFIG_H) \
1069 $(EMACS_ROOT)/nt/inc/unistd.h \
1070 $(EMACS_ROOT)/nt/inc/sys/ioctl.h \
1071 $(EMACS_ROOT)/nt/inc/sys/time.h \
1072 $(LISP_H) \
1073 $(PROCESS_H) \
1074 $(SRC)/atimer.h \
1075 $(SRC)/blockinput.h \
1076 $(SRC)/buffer.h \ 1002 $(SRC)/buffer.h \
1077 $(SRC)/character.h \
1078 $(SRC)/coding.h \
1079 $(SRC)/commands.h \ 1003 $(SRC)/commands.h \
1080 $(SRC)/composite.h \
1081 $(SRC)/dispextern.h \
1082 $(SRC)/disptab.h \ 1004 $(SRC)/disptab.h \
1083 $(SRC)/frame.h \
1084 $(SRC)/intervals.h \
1085 $(SRC)/keyboard.h \
1086 $(SRC)/keymap.h \ 1005 $(SRC)/keymap.h \
1087 $(SRC)/macros.h \ 1006 $(SRC)/macros.h \
1088 $(SRC)/puresize.h \ 1007 $(SRC)/puresize.h \
1089 $(SRC)/syntax.h \ 1008 $(SRC)/syntax.h \
1090 $(SRC)/syssignal.h \ 1009 $(SRC)/syssignal.h \
1091 $(SRC)/systime.h \
1092 $(SRC)/termchar.h \ 1010 $(SRC)/termchar.h \
1093 $(SRC)/termhooks.h \
1094 $(SRC)/termopts.h \ 1011 $(SRC)/termopts.h \
1095 $(SRC)/w32gui.h \ 1012 $(NT_INC)/sys/ioctl.h \
1096 $(SRC)/w32term.h \ 1013 $(NT_INC)/unistd.h \
1097 $(SRC)/window.h 1014 $(ATIMER_H) \
1015 $(BLOCKINPUT_H) \
1016 $(CHARACTER_H) \
1017 $(CONFIG_H) \
1018 $(DISPEXTERN_H) \
1019 $(FRAME_H) \
1020 $(INTERVALS_H) \
1021 $(KEYBOARD_H) \
1022 $(LISP_H) \
1023 $(PROCESS_H) \
1024 $(SYSTIME_H) \
1025 $(TERMHOOKS_H) \
1026 $(W32TERM_H) \
1027 $(WINDOW_H)
1098 1028
1099$(BLD)/keymap.$(O) : \ 1029$(BLD)/keymap.$(O) : \
1100 $(SRC)/keymap.c \ 1030 $(SRC)/keymap.c \
1101 $(CONFIG_H) \
1102 $(EMACS_ROOT)/nt/inc/sys/time.h \
1103 $(LISP_H) \
1104 $(SRC)/atimer.h \
1105 $(SRC)/blockinput.h \
1106 $(SRC)/buffer.h \ 1031 $(SRC)/buffer.h \
1107 $(SRC)/character.h \
1108 $(SRC)/charset.h \
1109 $(SRC)/coding.h \
1110 $(SRC)/commands.h \ 1032 $(SRC)/commands.h \
1111 $(SRC)/composite.h \
1112 $(SRC)/dispextern.h \
1113 $(SRC)/frame.h \
1114 $(SRC)/intervals.h \
1115 $(SRC)/keyboard.h \
1116 $(SRC)/keymap.h \ 1033 $(SRC)/keymap.h \
1117 $(SRC)/puresize.h \ 1034 $(SRC)/puresize.h \
1118 $(SRC)/systime.h \ 1035 $(BLOCKINPUT_H) \
1119 $(SRC)/termhooks.h \ 1036 $(CHARACTER_H) \
1120 $(SRC)/w32gui.h \ 1037 $(CHARSET_H) \
1121 $(SRC)/window.h 1038 $(CONFIG_H) \
1039 $(FRAME_H) \
1040 $(INTERVALS_H) \
1041 $(KEYBOARD_H) \
1042 $(LISP_H) \
1043 $(TERMHOOKS_H) \
1044 $(WINDOW_H)
1122 1045
1123$(BLD)/lastfile.$(O) : \ 1046$(BLD)/lastfile.$(O) : \
1124 $(SRC)/lastfile.c \ 1047 $(SRC)/lastfile.c \
@@ -1126,714 +1049,560 @@ $(BLD)/lastfile.$(O) : \
1126 1049
1127$(BLD)/lread.$(O) : \ 1050$(BLD)/lread.$(O) : \
1128 $(SRC)/lread.c \ 1051 $(SRC)/lread.c \
1129 $(CONFIG_H) \
1130 $(EMACS_ROOT)/nt/inc/unistd.h \
1131 $(EMACS_ROOT)/nt/inc/sys/file.h \
1132 $(EMACS_ROOT)/nt/inc/sys/time.h \
1133 $(LISP_H) \
1134 $(SRC)/atimer.h \
1135 $(SRC)/blockinput.h \
1136 $(SRC)/buffer.h \ 1052 $(SRC)/buffer.h \
1137 $(SRC)/character.h \
1138 $(SRC)/charset.h \
1139 $(SRC)/coding.h \
1140 $(SRC)/commands.h \ 1053 $(SRC)/commands.h \
1141 $(SRC)/composite.h \
1142 $(SRC)/dispextern.h \
1143 $(SRC)/epaths.h \ 1054 $(SRC)/epaths.h \
1144 $(SRC)/frame.h \ 1055 $(NT_INC)/sys/file.h \
1145 $(SRC)/intervals.h \ 1056 $(NT_INC)/sys/stat.h \
1146 $(SRC)/keyboard.h \ 1057 $(NT_INC)/unistd.h \
1147 $(SRC)/systime.h \ 1058 $(BLOCKINPUT_H) \
1148 $(SRC)/termhooks.h \ 1059 $(CHARACTER_H) \
1149 $(SRC)/w32gui.h 1060 $(CHARSET_H) \
1061 $(CODING_H) \
1062 $(CONFIG_H) \
1063 $(FRAME_H) \
1064 $(INTERVALS_H) \
1065 $(KEYBOARD_H) \
1066 $(LISP_H) \
1067 $(TERMHOOKS_H)
1150 1068
1151$(BLD)/macros.$(O) : \ 1069$(BLD)/macros.$(O) : \
1152 $(SRC)/macros.c \ 1070 $(SRC)/macros.c \
1153 $(CONFIG_H) \
1154 $(EMACS_ROOT)/nt/inc/sys/time.h \
1155 $(LISP_H) \
1156 $(SRC)/buffer.h \ 1071 $(SRC)/buffer.h \
1157 $(SRC)/coding.h \
1158 $(SRC)/commands.h \ 1072 $(SRC)/commands.h \
1159 $(SRC)/composite.h \
1160 $(SRC)/dispextern.h \
1161 $(SRC)/keyboard.h \
1162 $(SRC)/macros.h \ 1073 $(SRC)/macros.h \
1163 $(SRC)/systime.h \ 1074 $(CONFIG_H) \
1164 $(SRC)/w32gui.h \ 1075 $(KEYBOARD_H) \
1165 $(SRC)/window.h 1076 $(LISP_H) \
1077 $(WINDOW_H)
1166 1078
1167$(BLD)/marker.$(O) : \ 1079$(BLD)/marker.$(O) : \
1168 $(SRC)/marker.c \ 1080 $(SRC)/marker.c \
1169 $(CONFIG_H) \
1170 $(LISP_H) \
1171 $(SRC)/buffer.h \ 1081 $(SRC)/buffer.h \
1172 $(SRC)/character.h 1082 $(CHARACTER_H) \
1083 $(CONFIG_H) \
1084 $(LISP_H)
1173 1085
1174$(BLD)/menu.$(O) : \ 1086$(BLD)/menu.$(O) : \
1175 $(SRC)/menu.c \ 1087 $(SRC)/menu.c \
1088 $(SRC)/keymap.h \
1089 $(BLOCKINPUT_H) \
1176 $(CONFIG_H) \ 1090 $(CONFIG_H) \
1177 $(EMACS_ROOT)/nt/inc/sys/time.h \ 1091 $(DISPEXTERN_H) \
1092 $(FRAME_H) \
1093 $(KEYBOARD_H) \
1178 $(LISP_H) \ 1094 $(LISP_H) \
1179 $(SRC)/atimer.h \ 1095 $(MENU_H) \
1180 $(SRC)/blockinput.h \ 1096 $(TERMHOOKS_H) \
1181 $(SRC)/coding.h \ 1097 $(W32TERM_H) \
1182 $(SRC)/composite.h \ 1098 $(WINDOW_H)
1183 $(SRC)/dispextern.h \
1184 $(SRC)/frame.h \
1185 $(SRC)/keyboard.h \
1186 $(SRC)/keymap.h \
1187 $(SRC)/menu.h \
1188 $(SRC)/systime.h \
1189 $(SRC)/termhooks.h \
1190 $(SRC)/w32gui.h \
1191 $(SRC)/w32term.h \
1192 $(SRC)/window.h
1193 1099
1194$(BLD)/minibuf.$(O) : \ 1100$(BLD)/minibuf.$(O) : \
1195 $(SRC)/minibuf.c \ 1101 $(SRC)/minibuf.c \
1196 $(CONFIG_H) \
1197 $(EMACS_ROOT)/nt/inc/sys/time.h \
1198 $(LISP_H) \
1199 $(SRC)/buffer.h \ 1102 $(SRC)/buffer.h \
1200 $(SRC)/character.h \
1201 $(SRC)/coding.h \
1202 $(SRC)/commands.h \ 1103 $(SRC)/commands.h \
1203 $(SRC)/composite.h \
1204 $(SRC)/dispextern.h \
1205 $(SRC)/frame.h \
1206 $(SRC)/intervals.h \
1207 $(SRC)/keyboard.h \
1208 $(SRC)/keymap.h \ 1104 $(SRC)/keymap.h \
1209 $(SRC)/syntax.h \ 1105 $(SRC)/syntax.h \
1210 $(SRC)/systime.h \ 1106 $(CONFIG_H) \
1211 $(SRC)/termhooks.h \ 1107 $(DISPEXTERN_H) \
1212 $(SRC)/w32gui.h \ 1108 $(FRAME_H) \
1213 $(SRC)/window.h 1109 $(INTERVALS_H) \
1110 $(KEYBOARD_H) \
1111 $(LISP_H) \
1112 $(TERMHOOKS_H) \
1113 $(WINDOW_H)
1214 1114
1215$(BLD)/w32.$(O) : \ 1115$(BLD)/w32.$(O) : \
1216 $(SRC)/w32.c \ 1116 $(SRC)/w32.c \
1117 $(SRC)/ndir.h \
1118 $(SRC)/w32.h \
1119 $(SRC)/w32heap.h \
1120 $(NT_INC)/pwd.h \
1121 $(NT_INC)/sys/file.h \
1122 $(NT_INC)/sys/time.h \
1123 $(GNU_LIB)/allocator.h \
1124 $(CAREADLINKAT_H) \
1125 $(CODING_H) \
1217 $(CONFIG_H) \ 1126 $(CONFIG_H) \
1218 $(EMACS_ROOT)/nt/inc/grp.h \ 1127 $(DISPEXTERN_H) \
1219 $(EMACS_ROOT)/nt/inc/pwd.h \ 1128 $(GRP_H) \
1220 $(EMACS_ROOT)/nt/inc/unistd.h \
1221 $(EMACS_ROOT)/nt/inc/sys/file.h \
1222 $(EMACS_ROOT)/nt/inc/sys/socket.h \
1223 $(EMACS_ROOT)/nt/inc/sys/time.h \
1224 $(EMACS_ROOT)/lib/allocator.h \
1225 $(EMACS_ROOT)/lib/careadlinkat.h \
1226 $(LISP_H) \ 1129 $(LISP_H) \
1227 $(PROCESS_H) \ 1130 $(PROCESS_H) \
1228 $(SRC)/coding.h \ 1131 $(SOCKET_H) \
1229 $(SRC)/composite.h \ 1132 $(SYSTIME_H)
1230 $(SRC)/dispextern.h \
1231 $(SRC)/ndir.h \
1232 $(SRC)/systime.h \
1233 $(SRC)/w32.h \
1234 $(SRC)/w32gui.h \
1235 $(SRC)/w32heap.h
1236 1133
1237$(BLD)/w32heap.$(O) : \ 1134$(BLD)/w32heap.$(O) : \
1238 $(SRC)/w32heap.c \ 1135 $(SRC)/w32heap.c \
1136 $(SRC)/w32heap.h \
1239 $(CONFIG_H) \ 1137 $(CONFIG_H) \
1240 $(LISP_H) \ 1138 $(LISP_H)
1241 $(SRC)/w32heap.h
1242 1139
1243$(BLD)/w32inevt.$(O) : \ 1140$(BLD)/w32inevt.$(O) : \
1244 $(SRC)/w32inevt.c \ 1141 $(SRC)/w32inevt.c \
1142 $(SRC)/w32heap.h \
1143 $(BLOCKINPUT_H) \
1245 $(CONFIG_H) \ 1144 $(CONFIG_H) \
1246 $(EMACS_ROOT)/nt/inc/sys/time.h \ 1145 $(DISPEXTERN_H) \
1146 $(FRAME_H) \
1147 $(KEYBOARD_H) \
1247 $(LISP_H) \ 1148 $(LISP_H) \
1248 $(SRC)/atimer.h \ 1149 $(TERMHOOKS_H) \
1249 $(SRC)/blockinput.h \ 1150 $(W32TERM_H)
1250 $(SRC)/coding.h \
1251 $(SRC)/composite.h \
1252 $(SRC)/dispextern.h \
1253 $(SRC)/frame.h \
1254 $(SRC)/keyboard.h \
1255 $(SRC)/systime.h \
1256 $(SRC)/termhooks.h \
1257 $(SRC)/w32gui.h \
1258 $(SRC)/w32heap.h \
1259 $(SRC)/w32term.h
1260 1151
1261$(BLD)/w32proc.$(O) : \ 1152$(BLD)/w32proc.$(O) : \
1262 $(SRC)/w32proc.c \ 1153 $(SRC)/w32proc.c \
1263 $(CONFIG_H) \
1264 $(EMACS_ROOT)/nt/inc/langinfo.h \
1265 $(EMACS_ROOT)/nt/inc/nl_types.h \
1266 $(EMACS_ROOT)/nt/inc/unistd.h \
1267 $(EMACS_ROOT)/nt/inc/sys/file.h \
1268 $(EMACS_ROOT)/nt/inc/sys/time.h \
1269 $(LISP_H) \
1270 $(PROCESS_H) \
1271 $(SRC)/character.h \
1272 $(SRC)/coding.h \
1273 $(SRC)/composite.h \
1274 $(SRC)/dispextern.h \
1275 $(SRC)/syssignal.h \ 1154 $(SRC)/syssignal.h \
1276 $(SRC)/systime.h \
1277 $(SRC)/syswait.h \ 1155 $(SRC)/syswait.h \
1278 $(SRC)/w32.h \ 1156 $(SRC)/w32.h \
1279 $(SRC)/w32gui.h \
1280 $(SRC)/w32heap.h \ 1157 $(SRC)/w32heap.h \
1281 $(SRC)/w32term.h 1158 $(NT_INC)/nl_types.h \
1159 $(NT_INC)/sys/file.h \
1160 $(CODING_H) \
1161 $(CONFIG_H) \
1162 $(DISPEXTERN_H) \
1163 $(LANGINFO_H) \
1164 $(LISP_H) \
1165 $(PROCESS_H) \
1166 $(SYSTIME_H) \
1167 $(W32TERM_H)
1282 1168
1283$(BLD)/w32console.$(O) : \ 1169$(BLD)/w32console.$(O) : \
1284 $(SRC)/w32console.c \ 1170 $(SRC)/w32console.c \
1285 $(CONFIG_H) \
1286 $(EMACS_ROOT)/nt/inc/sys/time.h \
1287 $(LISP_H) \
1288 $(SRC)/character.h \
1289 $(SRC)/coding.h \
1290 $(SRC)/composite.h \
1291 $(SRC)/dispextern.h \
1292 $(SRC)/disptab.h \ 1171 $(SRC)/disptab.h \
1293 $(SRC)/frame.h \
1294 $(SRC)/systime.h \
1295 $(SRC)/termchar.h \ 1172 $(SRC)/termchar.h \
1296 $(SRC)/termhooks.h \ 1173 $(SRC)/w32inevt.h \
1297 $(SRC)/w32gui.h \ 1174 $(CHARACTER_H) \
1298 $(SRC)/w32inevt.h 1175 $(CODING_H) \
1176 $(CONFIG_H) \
1177 $(DISPEXTERN_H) \
1178 $(FRAME_H) \
1179 $(LISP_H) \
1180 $(TERMHOOKS_H)
1299 1181
1300$(BLD)/print.$(O) : \ 1182$(BLD)/print.$(O) : \
1301 $(SRC)/print.c \ 1183 $(SRC)/print.c \
1184 $(SRC)/buffer.h \
1185 $(SRC)/termchar.h \
1186 $(BLOCKINPUT_H) \
1187 $(CHARACTER_H) \
1188 $(CHARSET_H) \
1302 $(CONFIG_H) \ 1189 $(CONFIG_H) \
1303 $(EMACS_ROOT)/nt/inc/unistd.h \ 1190 $(DISPEXTERN_H) \
1304 $(EMACS_ROOT)/nt/inc/sys/time.h \ 1191 $(FONT_H) \
1305 $(EMACS_ROOT)/lib/ftoastr.h \ 1192 $(FRAME_H) \
1193 $(FTOASTR_H) \
1194 $(INTERVALS_H) \
1195 $(KEYBOARD_H) \
1306 $(LISP_H) \ 1196 $(LISP_H) \
1307 $(PROCESS_H) \ 1197 $(PROCESS_H) \
1308 $(SRC)/atimer.h \ 1198 $(TERMHOOKS_H) \
1309 $(SRC)/blockinput.h \ 1199 $(WINDOW_H)
1310 $(SRC)/buffer.h \
1311 $(SRC)/ccl.h \
1312 $(SRC)/character.h \
1313 $(SRC)/charset.h \
1314 $(SRC)/coding.h \
1315 $(SRC)/composite.h \
1316 $(SRC)/dispextern.h \
1317 $(SRC)/font.h \
1318 $(SRC)/frame.h \
1319 $(SRC)/intervals.h \
1320 $(SRC)/keyboard.h \
1321 $(SRC)/systime.h \
1322 $(SRC)/termchar.h \
1323 $(SRC)/termhooks.h \
1324 $(SRC)/w32gui.h \
1325 $(SRC)/window.h
1326 1200
1327$(BLD)/process.$(O) : \ 1201$(BLD)/process.$(O) : \
1328 $(SRC)/process.c \ 1202 $(SRC)/process.c \
1329 $(CONFIG_H) \
1330 $(EMACS_ROOT)/nt/inc/netdb.h \
1331 $(EMACS_ROOT)/nt/inc/unistd.h \
1332 $(EMACS_ROOT)/nt/inc/arpa/inet.h \
1333 $(EMACS_ROOT)/nt/inc/netinet/in.h \
1334 $(EMACS_ROOT)/nt/inc/sys/file.h \
1335 $(EMACS_ROOT)/nt/inc/sys/ioctl.h \
1336 $(EMACS_ROOT)/nt/inc/sys/socket.h \
1337 $(EMACS_ROOT)/nt/inc/sys/time.h \
1338 $(LISP_H) \
1339 $(PROCESS_H) \
1340 $(SRC)/atimer.h \
1341 $(SRC)/blockinput.h \
1342 $(SRC)/buffer.h \ 1203 $(SRC)/buffer.h \
1343 $(SRC)/character.h \
1344 $(SRC)/coding.h \
1345 $(SRC)/commands.h \ 1204 $(SRC)/commands.h \
1346 $(SRC)/composite.h \ 1205 $(SRC)/composite.h \
1347 $(SRC)/dispextern.h \ 1206 $(SRC)/gnutls.h \
1348 $(SRC)/frame.h \
1349 $(SRC)/keyboard.h \
1350 $(SRC)/sysselect.h \ 1207 $(SRC)/sysselect.h \
1351 $(SRC)/syssignal.h \ 1208 $(SRC)/syssignal.h \
1352 $(SRC)/systime.h \
1353 $(SRC)/systty.h \
1354 $(SRC)/syswait.h \ 1209 $(SRC)/syswait.h \
1355 $(SRC)/termhooks.h \
1356 $(SRC)/termopts.h \ 1210 $(SRC)/termopts.h \
1357 $(SRC)/w32.h \ 1211 $(NT_INC)/arpa/inet.h \
1358 $(SRC)/w32gui.h \ 1212 $(NT_INC)/netdb.h \
1359 $(SRC)/window.h 1213 $(NT_INC)/netinet/in.h \
1214 $(NT_INC)/sys/file.h \
1215 $(NT_INC)/sys/ioctl.h \
1216 $(NT_INC)/sys/stat.h \
1217 $(NT_INC)/unistd.h \
1218 $(ATIMER_H) \
1219 $(BLOCKINPUT_H) \
1220 $(CHARACTER_H) \
1221 $(CODING_H) \
1222 $(CONFIG_H) \
1223 $(DISPEXTERN_H) \
1224 $(FRAME_H) \
1225 $(KEYBOARD_H) \
1226 $(LISP_H) \
1227 $(PROCESS_H) \
1228 $(SOCKET_H) \
1229 $(SYSTIME_H) \
1230 $(SYSTTY_H) \
1231 $(TERMHOOKS_H) \
1232 $(WINDOW_H)
1360 1233
1361$(BLD)/ralloc.$(O) : \ 1234$(BLD)/ralloc.$(O) : \
1362 $(SRC)/ralloc.c \ 1235 $(SRC)/ralloc.c \
1363 $(CONFIG_H) \
1364 $(EMACS_ROOT)/nt/inc/unistd.h \
1365 $(EMACS_ROOT)/nt/inc/sys/time.h \
1366 $(LISP_H) \
1367 $(SRC)/atimer.h \
1368 $(SRC)/blockinput.h \
1369 $(SRC)/getpagesize.h \ 1236 $(SRC)/getpagesize.h \
1370 $(SRC)/systime.h 1237 $(NT_INC)/unistd.h \
1238 $(BLOCKINPUT_H) \
1239 $(CONFIG_H) \
1240 $(LISP_H)
1371 1241
1372$(BLD)/regex.$(O) : \ 1242$(BLD)/regex.$(O) : \
1373 $(SRC)/regex.c \ 1243 $(SRC)/regex.c \
1374 $(CONFIG_H) \
1375 $(LISP_H) \
1376 $(SRC)/buffer.h \ 1244 $(SRC)/buffer.h \
1377 $(SRC)/category.h \ 1245 $(SRC)/category.h \
1378 $(SRC)/character.h \
1379 $(SRC)/regex.h \ 1246 $(SRC)/regex.h \
1380 $(SRC)/syntax.h 1247 $(SRC)/syntax.h \
1248 $(NT_INC)/unistd.h \
1249 $(CHARACTER_H) \
1250 $(CONFIG_H) \
1251 $(LISP_H)
1381 1252
1382$(BLD)/region-cache.$(O) : \ 1253$(BLD)/region-cache.$(O) : \
1383 $(SRC)/region-cache.c \ 1254 $(SRC)/region-cache.c \
1384 $(CONFIG_H) \
1385 $(LISP_H) \
1386 $(SRC)/buffer.h \ 1255 $(SRC)/buffer.h \
1387 $(SRC)/region-cache.h 1256 $(SRC)/region-cache.h \
1257 $(CONFIG_H) \
1258 $(LISP_H)
1388 1259
1389$(BLD)/scroll.$(O) : \ 1260$(BLD)/scroll.$(O) : \
1390 $(SRC)/scroll.c \ 1261 $(SRC)/scroll.c \
1262 $(SRC)/termchar.h \
1391 $(CONFIG_H) \ 1263 $(CONFIG_H) \
1392 $(EMACS_ROOT)/nt/inc/sys/time.h \ 1264 $(DISPEXTERN_H) \
1265 $(FRAME_H) \
1266 $(KEYBOARD_H) \
1393 $(LISP_H) \ 1267 $(LISP_H) \
1394 $(SRC)/coding.h \ 1268 $(TERMHOOKS_H) \
1395 $(SRC)/composite.h \ 1269 $(WINDOW_H)
1396 $(SRC)/dispextern.h \
1397 $(SRC)/frame.h \
1398 $(SRC)/keyboard.h \
1399 $(SRC)/systime.h \
1400 $(SRC)/termchar.h \
1401 $(SRC)/termhooks.h \
1402 $(SRC)/w32gui.h \
1403 $(SRC)/window.h
1404 1270
1405$(BLD)/search.$(O) : \ 1271$(BLD)/search.$(O) : \
1406 $(SRC)/search.c \ 1272 $(SRC)/search.c \
1407 $(CONFIG_H) \
1408 $(EMACS_ROOT)/nt/inc/sys/time.h \
1409 $(LISP_H) \
1410 $(SRC)/atimer.h \
1411 $(SRC)/blockinput.h \
1412 $(SRC)/buffer.h \ 1273 $(SRC)/buffer.h \
1413 $(SRC)/category.h \ 1274 $(SRC)/category.h \
1414 $(SRC)/character.h \
1415 $(SRC)/charset.h \
1416 $(SRC)/commands.h \ 1275 $(SRC)/commands.h \
1417 $(SRC)/composite.h \
1418 $(SRC)/dispextern.h \
1419 $(SRC)/intervals.h \
1420 $(SRC)/regex.h \ 1276 $(SRC)/regex.h \
1421 $(SRC)/region-cache.h \ 1277 $(SRC)/region-cache.h \
1422 $(SRC)/syntax.h \ 1278 $(SRC)/syntax.h \
1423 $(SRC)/systime.h \ 1279 $(BLOCKINPUT_H) \
1424 $(SRC)/w32gui.h 1280 $(CHARACTER_H) \
1281 $(CHARSET_H) \
1282 $(CONFIG_H) \
1283 $(INTERVALS_H) \
1284 $(LISP_H)
1425 1285
1426$(BLD)/sound.$(O) : \ 1286$(BLD)/sound.$(O) : \
1427 $(SRC)/sound.c \ 1287 $(SRC)/sound.c \
1428 $(CONFIG_H) \
1429 $(EMACS_ROOT)/nt/inc/unistd.h \
1430 $(EMACS_ROOT)/nt/inc/sys/time.h \
1431 $(LISP_H) \
1432 $(SRC)/atimer.h \
1433 $(SRC)/dispextern.h \
1434 $(SRC)/syssignal.h \ 1288 $(SRC)/syssignal.h \
1435 $(SRC)/systime.h \ 1289 $(NT_INC)/unistd.h \
1436 $(SRC)/w32gui.h 1290 $(ATIMER_H) \
1291 $(CONFIG_H) \
1292 $(DISPEXTERN_H) \
1293 $(LISP_H)
1437 1294
1438$(BLD)/syntax.$(O) : \ 1295$(BLD)/syntax.$(O) : \
1439 $(SRC)/syntax.c \ 1296 $(SRC)/syntax.c \
1440 $(CONFIG_H) \
1441 $(EMACS_ROOT)/nt/inc/sys/time.h \
1442 $(LISP_H) \
1443 $(SRC)/buffer.h \ 1297 $(SRC)/buffer.h \
1444 $(SRC)/category.h \ 1298 $(SRC)/category.h \
1445 $(SRC)/character.h \
1446 $(SRC)/commands.h \ 1299 $(SRC)/commands.h \
1447 $(SRC)/composite.h \
1448 $(SRC)/dispextern.h \
1449 $(SRC)/intervals.h \
1450 $(SRC)/keymap.h \ 1300 $(SRC)/keymap.h \
1451 $(SRC)/regex.h \ 1301 $(SRC)/regex.h \
1452 $(SRC)/syntax.h \ 1302 $(SRC)/syntax.h \
1453 $(SRC)/systime.h \ 1303 $(CHARACTER_H) \
1454 $(SRC)/w32gui.h 1304 $(CONFIG_H) \
1305 $(INTERVALS_H) \
1306 $(LISP_H)
1455 1307
1456$(BLD)/sysdep.$(O) : \ 1308$(BLD)/sysdep.$(O) : \
1457 $(SRC)/sysdep.c \ 1309 $(SRC)/sysdep.c \
1458 $(CONFIG_H) \
1459 $(EMACS_ROOT)/nt/inc/grp.h \
1460 $(EMACS_ROOT)/nt/inc/netdb.h \
1461 $(EMACS_ROOT)/nt/inc/pwd.h \
1462 $(EMACS_ROOT)/nt/inc/unistd.h \
1463 $(EMACS_ROOT)/nt/inc/sys/file.h \
1464 $(EMACS_ROOT)/nt/inc/sys/ioctl.h \
1465 $(EMACS_ROOT)/nt/inc/sys/socket.h \
1466 $(EMACS_ROOT)/nt/inc/sys/time.h \
1467 $(EMACS_ROOT)/lib/allocator.h \
1468 $(EMACS_ROOT)/lib/careadlinkat.h \
1469 $(EMACS_ROOT)/lib/ignore-value.h \
1470 $(LISP_H) \
1471 $(PROCESS_H) \
1472 $(SRC)/atimer.h \
1473 $(SRC)/blockinput.h \
1474 $(SRC)/cm.h \ 1310 $(SRC)/cm.h \
1475 $(SRC)/coding.h \
1476 $(SRC)/composite.h \
1477 $(SRC)/dispextern.h \
1478 $(SRC)/frame.h \
1479 $(SRC)/keyboard.h \
1480 $(SRC)/sysselect.h \ 1311 $(SRC)/sysselect.h \
1481 $(SRC)/syssignal.h \ 1312 $(SRC)/syssignal.h \
1482 $(SRC)/systime.h \
1483 $(SRC)/systty.h \
1484 $(SRC)/syswait.h \ 1313 $(SRC)/syswait.h \
1485 $(SRC)/termchar.h \ 1314 $(SRC)/termchar.h \
1486 $(SRC)/termhooks.h \
1487 $(SRC)/termopts.h \ 1315 $(SRC)/termopts.h \
1488 $(SRC)/w32.h \ 1316 $(NT_INC)/netdb.h \
1489 $(SRC)/w32gui.h \ 1317 $(NT_INC)/pwd.h \
1490 $(SRC)/window.h 1318 $(NT_INC)/sys/file.h \
1319 $(NT_INC)/sys/stat.h \
1320 $(NT_INC)/unistd.h \
1321 $(GNU_LIB)/allocator.h \
1322 $(GNU_LIB)/ignore-value.h \
1323 $(BLOCKINPUT_H) \
1324 $(CAREADLINKAT_H) \
1325 $(CONFIG_H) \
1326 $(DISPEXTERN_H) \
1327 $(FRAME_H) \
1328 $(GRP_H) \
1329 $(KEYBOARD_H) \
1330 $(LISP_H) \
1331 $(PROCESS_H) \
1332 $(SOCKET_H) \
1333 $(SYSTIME_H) \
1334 $(SYSTTY_H) \
1335 $(TERMHOOKS_H) \
1336 $(WINDOW_H)
1491 1337
1492$(BLD)/term.$(O) : \ 1338$(BLD)/term.$(O) : \
1493 $(SRC)/term.c \ 1339 $(SRC)/term.c \
1494 $(CONFIG_H) \
1495 $(EMACS_ROOT)/nt/inc/unistd.h \
1496 $(EMACS_ROOT)/nt/inc/sys/file.h \
1497 $(EMACS_ROOT)/nt/inc/sys/ioctl.h \
1498 $(EMACS_ROOT)/nt/inc/sys/time.h \
1499 $(LISP_H) \
1500 $(SRC)/atimer.h \
1501 $(SRC)/blockinput.h \
1502 $(SRC)/buffer.h \ 1340 $(SRC)/buffer.h \
1503 $(SRC)/character.h \
1504 $(SRC)/charset.h \
1505 $(SRC)/cm.h \ 1341 $(SRC)/cm.h \
1506 $(SRC)/coding.h \
1507 $(SRC)/composite.h \ 1342 $(SRC)/composite.h \
1508 $(SRC)/dispextern.h \
1509 $(SRC)/disptab.h \ 1343 $(SRC)/disptab.h \
1510 $(SRC)/frame.h \
1511 $(SRC)/intervals.h \
1512 $(SRC)/keyboard.h \
1513 $(SRC)/keymap.h \ 1344 $(SRC)/keymap.h \
1514 $(SRC)/syssignal.h \ 1345 $(SRC)/syssignal.h \
1515 $(SRC)/systime.h \
1516 $(SRC)/systty.h \
1517 $(SRC)/termchar.h \ 1346 $(SRC)/termchar.h \
1518 $(SRC)/termhooks.h \
1519 $(SRC)/termopts.h \ 1347 $(SRC)/termopts.h \
1520 $(SRC)/tparam.h \ 1348 $(SRC)/tparam.h \
1521 $(SRC)/w32gui.h \ 1349 $(NT_INC)/sys/file.h \
1522 $(SRC)/window.h 1350 $(NT_INC)/unistd.h \
1351 $(BLOCKINPUT_H) \
1352 $(CHARACTER_H) \
1353 $(CHARSET_H) \
1354 $(CODING_H) \
1355 $(CONFIG_H) \
1356 $(DISPEXTERN_H) \
1357 $(FRAME_H) \
1358 $(INTERVALS_H) \
1359 $(KEYBOARD_H) \
1360 $(LISP_H) \
1361 $(SYSTTY_H) \
1362 $(TERMHOOKS_H) \
1363 $(WINDOW_H)
1523 1364
1524$(BLD)/terminal.$(O) : \ 1365$(BLD)/terminal.$(O) : \
1525 $(SRC)/terminal.c \ 1366 $(SRC)/terminal.c \
1367 $(SRC)/termchar.h \
1368 $(CHARSET_H) \
1369 $(CODING_H) \
1526 $(CONFIG_H) \ 1370 $(CONFIG_H) \
1527 $(EMACS_ROOT)/nt/inc/sys/time.h \ 1371 $(FRAME_H) \
1372 $(KEYBOARD_H) \
1528 $(LISP_H) \ 1373 $(LISP_H) \
1529 $(SRC)/charset.h \ 1374 $(TERMHOOKS_H)
1530 $(SRC)/coding.h \
1531 $(SRC)/composite.h \
1532 $(SRC)/dispextern.h \
1533 $(SRC)/frame.h \
1534 $(SRC)/keyboard.h \
1535 $(SRC)/systime.h \
1536 $(SRC)/termchar.h \
1537 $(SRC)/termhooks.h \
1538 $(SRC)/w32gui.h
1539 1375
1540$(BLD)/textprop.$(O) : \ 1376$(BLD)/textprop.$(O) : \
1541 $(SRC)/textprop.c \ 1377 $(SRC)/textprop.c \
1378 $(SRC)/buffer.h \
1542 $(CONFIG_H) \ 1379 $(CONFIG_H) \
1543 $(EMACS_ROOT)/nt/inc/sys/time.h \ 1380 $(INTERVALS_H) \
1544 $(LISP_H) \ 1381 $(LISP_H) \
1545 $(SRC)/buffer.h \ 1382 $(WINDOW_H)
1546 $(SRC)/composite.h \
1547 $(SRC)/dispextern.h \
1548 $(SRC)/intervals.h \
1549 $(SRC)/systime.h \
1550 $(SRC)/w32gui.h \
1551 $(SRC)/window.h
1552 1383
1553$(BLD)/tparam.$(O) : \ 1384$(BLD)/tparam.$(O) : \
1554 $(SRC)/tparam.c \ 1385 $(SRC)/tparam.c \
1386 $(SRC)/tparam.h \
1555 $(CONFIG_H) \ 1387 $(CONFIG_H) \
1556 $(LISP_H) \ 1388 $(LISP_H)
1557 $(SRC)/tparam.h
1558 1389
1559$(BLD)/undo.$(O) : \ 1390$(BLD)/undo.$(O) : \
1560 $(SRC)/undo.c \ 1391 $(SRC)/undo.c \
1561 $(CONFIG_H) \
1562 $(EMACS_ROOT)/nt/inc/sys/time.h \
1563 $(LISP_H) \
1564 $(SRC)/buffer.h \ 1392 $(SRC)/buffer.h \
1565 $(SRC)/commands.h \ 1393 $(SRC)/commands.h \
1566 $(SRC)/dispextern.h \ 1394 $(CONFIG_H) \
1567 $(SRC)/systime.h \ 1395 $(LISP_H) \
1568 $(SRC)/w32gui.h \ 1396 $(WINDOW_H)
1569 $(SRC)/window.h
1570 1397
1571$(BLD)/unexw32.$(O) : \ 1398$(BLD)/unexw32.$(O) : \
1572 $(SRC)/unexw32.c \ 1399 $(SRC)/unexw32.c \
1573 $(CONFIG_H) \
1574 $(SRC)/unexec.h \ 1400 $(SRC)/unexec.h \
1575 $(SRC)/w32heap.h 1401 $(SRC)/w32heap.h \
1402 $(CONFIG_H)
1576 1403
1577$(BLD)/vm-limit.$(O) : \ 1404$(BLD)/vm-limit.$(O) : \
1578 $(SRC)/vm-limit.c \ 1405 $(SRC)/vm-limit.c \
1406 $(SRC)/mem-limits.h \
1579 $(CONFIG_H) \ 1407 $(CONFIG_H) \
1580 $(LISP_H) \ 1408 $(LISP_H)
1581 $(SRC)/mem-limits.h
1582 1409
1583$(BLD)/window.$(O) : \ 1410$(BLD)/window.$(O) : \
1584 $(SRC)/window.c \ 1411 $(SRC)/window.c \
1585 $(CONFIG_H) \
1586 $(EMACS_ROOT)/nt/inc/sys/time.h \
1587 $(LISP_H) \
1588 $(SRC)/atimer.h \
1589 $(SRC)/blockinput.h \
1590 $(SRC)/buffer.h \ 1412 $(SRC)/buffer.h \
1591 $(SRC)/coding.h \
1592 $(SRC)/commands.h \ 1413 $(SRC)/commands.h \
1593 $(SRC)/composite.h \
1594 $(SRC)/dispextern.h \
1595 $(SRC)/disptab.h \ 1414 $(SRC)/disptab.h \
1596 $(SRC)/frame.h \
1597 $(SRC)/indent.h \ 1415 $(SRC)/indent.h \
1598 $(SRC)/intervals.h \
1599 $(SRC)/keyboard.h \
1600 $(SRC)/keymap.h \ 1416 $(SRC)/keymap.h \
1601 $(SRC)/systime.h \
1602 $(SRC)/termchar.h \ 1417 $(SRC)/termchar.h \
1603 $(SRC)/termhooks.h \ 1418 $(BLOCKINPUT_H) \
1604 $(SRC)/w32gui.h \ 1419 $(CONFIG_H) \
1605 $(SRC)/w32term.h \ 1420 $(DISPEXTERN_H) \
1606 $(SRC)/window.h 1421 $(FRAME_H) \
1422 $(INTERVALS_H) \
1423 $(KEYBOARD_H) \
1424 $(LISP_H) \
1425 $(TERMHOOKS_H) \
1426 $(W32TERM_H) \
1427 $(WINDOW_H)
1607 1428
1608$(BLD)/xdisp.$(O) : \ 1429$(BLD)/xdisp.$(O) : \
1609 $(SRC)/xdisp.c \ 1430 $(SRC)/xdisp.c \
1610 $(CONFIG_H) \
1611 $(EMACS_ROOT)/nt/inc/unistd.h \
1612 $(EMACS_ROOT)/nt/inc/sys/time.h \
1613 $(LISP_H) \
1614 $(PROCESS_H) \
1615 $(SRC)/atimer.h \
1616 $(SRC)/blockinput.h \
1617 $(SRC)/buffer.h \ 1431 $(SRC)/buffer.h \
1618 $(SRC)/ccl.h \
1619 $(SRC)/character.h \
1620 $(SRC)/charset.h \
1621 $(SRC)/coding.h \
1622 $(SRC)/commands.h \ 1432 $(SRC)/commands.h \
1623 $(SRC)/composite.h \
1624 $(SRC)/dispextern.h \
1625 $(SRC)/disptab.h \ 1433 $(SRC)/disptab.h \
1626 $(SRC)/font.h \
1627 $(SRC)/fontset.h \ 1434 $(SRC)/fontset.h \
1628 $(SRC)/frame.h \
1629 $(SRC)/indent.h \ 1435 $(SRC)/indent.h \
1630 $(SRC)/intervals.h \
1631 $(SRC)/keyboard.h \
1632 $(SRC)/keymap.h \ 1436 $(SRC)/keymap.h \
1633 $(SRC)/macros.h \ 1437 $(SRC)/macros.h \
1634 $(SRC)/region-cache.h \ 1438 $(SRC)/region-cache.h \
1635 $(SRC)/systime.h \
1636 $(SRC)/termchar.h \ 1439 $(SRC)/termchar.h \
1637 $(SRC)/termhooks.h \
1638 $(SRC)/termopts.h \ 1440 $(SRC)/termopts.h \
1639 $(SRC)/w32gui.h \ 1441 $(BLOCKINPUT_H) \
1640 $(SRC)/w32term.h \ 1442 $(CHARACTER_H) \
1641 $(SRC)/window.h 1443 $(CHARSET_H) \
1444 $(CODING_H) \
1445 $(CONFIG_H) \
1446 $(DISPEXTERN_H) \
1447 $(FONT_H) \
1448 $(FRAME_H) \
1449 $(INTERVALS_H) \
1450 $(KEYBOARD_H) \
1451 $(LISP_H) \
1452 $(PROCESS_H) \
1453 $(TERMHOOKS_H) \
1454 $(W32TERM_H) \
1455 $(WINDOW_H)
1642 1456
1643$(BLD)/xfaces.$(O) : \ 1457$(BLD)/xfaces.$(O) : \
1644 $(SRC)/xfaces.c \ 1458 $(SRC)/xfaces.c \
1645 $(CONFIG_H) \
1646 $(EMACS_ROOT)/nt/inc/sys/time.h \
1647 $(LISP_H) \
1648 $(SRC)/atimer.h \
1649 $(SRC)/blockinput.h \
1650 $(SRC)/buffer.h \ 1459 $(SRC)/buffer.h \
1651 $(SRC)/ccl.h \
1652 $(SRC)/character.h \
1653 $(SRC)/charset.h \
1654 $(SRC)/coding.h \
1655 $(SRC)/composite.h \
1656 $(SRC)/dispextern.h \
1657 $(SRC)/font.h \
1658 $(SRC)/fontset.h \ 1460 $(SRC)/fontset.h \
1659 $(SRC)/frame.h \
1660 $(SRC)/intervals.h \
1661 $(SRC)/keyboard.h \
1662 $(SRC)/systime.h \
1663 $(SRC)/termchar.h \ 1461 $(SRC)/termchar.h \
1664 $(SRC)/termhooks.h \ 1462 $(NT_INC)/sys/stat.h \
1665 $(SRC)/w32gui.h \ 1463 $(BLOCKINPUT_H) \
1666 $(SRC)/w32term.h \ 1464 $(CHARACTER_H) \
1667 $(SRC)/window.h 1465 $(CHARSET_H) \
1466 $(CONFIG_H) \
1467 $(DISPEXTERN_H) \
1468 $(FONT_H) \
1469 $(FRAME_H) \
1470 $(INTERVALS_H) \
1471 $(KEYBOARD_H) \
1472 $(LISP_H) \
1473 $(TERMHOOKS_H) \
1474 $(W32TERM_H) \
1475 $(WINDOW_H)
1668 1476
1669$(BLD)/w32fns.$(O) : \ 1477$(BLD)/w32fns.$(O) : \
1670 $(SRC)/w32fns.c \ 1478 $(SRC)/w32fns.c \
1671 $(CONFIG_H) \
1672 $(EMACS_ROOT)/nt/inc/sys/time.h \
1673 $(LISP_H) \
1674 $(SRC)/atimer.h \
1675 $(SRC)/blockinput.h \
1676 $(SRC)/buffer.h \ 1479 $(SRC)/buffer.h \
1677 $(SRC)/ccl.h \ 1480 $(SRC)/ccl.h \
1678 $(SRC)/character.h \
1679 $(SRC)/charset.h \
1680 $(SRC)/coding.h \
1681 $(SRC)/composite.h \
1682 $(SRC)/dispextern.h \
1683 $(SRC)/epaths.h \ 1481 $(SRC)/epaths.h \
1684 $(SRC)/font.h \
1685 $(SRC)/fontset.h \ 1482 $(SRC)/fontset.h \
1686 $(SRC)/frame.h \
1687 $(SRC)/intervals.h \
1688 $(SRC)/keyboard.h \
1689 $(SRC)/systime.h \
1690 $(SRC)/termhooks.h \
1691 $(SRC)/w32.h \ 1483 $(SRC)/w32.h \
1692 $(SRC)/w32font.h \ 1484 $(SRC)/w32font.h \
1693 $(SRC)/w32gui.h \
1694 $(SRC)/w32heap.h \ 1485 $(SRC)/w32heap.h \
1695 $(SRC)/w32term.h \ 1486 $(BLOCKINPUT_H) \
1696 $(SRC)/window.h 1487 $(CHARACTER_H) \
1488 $(CHARSET_H) \
1489 $(CODING_H) \
1490 $(CONFIG_H) \
1491 $(DISPEXTERN_H) \
1492 $(FONT_H) \
1493 $(FRAME_H) \
1494 $(INTERVALS_H) \
1495 $(KEYBOARD_H) \
1496 $(LISP_H) \
1497 $(SYSTIME_H) \
1498 $(TERMHOOKS_H) \
1499 $(W32TERM_H) \
1500 $(WINDOW_H)
1697 1501
1698$(BLD)/w32menu.$(O) : \ 1502$(BLD)/w32menu.$(O) : \
1699 $(SRC)/w32menu.c \ 1503 $(SRC)/w32menu.c \
1700 $(CONFIG_H) \
1701 $(EMACS_ROOT)/nt/inc/sys/time.h \
1702 $(LISP_H) \
1703 $(SRC)/atimer.h \
1704 $(SRC)/blockinput.h \
1705 $(SRC)/buffer.h \ 1504 $(SRC)/buffer.h \
1706 $(SRC)/character.h \
1707 $(SRC)/charset.h \
1708 $(SRC)/coding.h \
1709 $(SRC)/composite.h \
1710 $(SRC)/dispextern.h \
1711 $(SRC)/frame.h \
1712 $(SRC)/keyboard.h \
1713 $(SRC)/keymap.h \ 1505 $(SRC)/keymap.h \
1714 $(SRC)/menu.h \ 1506 $(BLOCKINPUT_H) \
1715 $(SRC)/systime.h \ 1507 $(CHARSET_H) \
1716 $(SRC)/termhooks.h \ 1508 $(CODING_H) \
1717 $(SRC)/w32gui.h \ 1509 $(CONFIG_H) \
1718 $(SRC)/w32term.h \ 1510 $(DISPEXTERN_H) \
1719 $(SRC)/window.h 1511 $(FRAME_H) \
1512 $(KEYBOARD_H) \
1513 $(LISP_H) \
1514 $(MENU_H) \
1515 $(TERMHOOKS_H) \
1516 $(W32TERM_H) \
1517 $(WINDOW_H)
1720 1518
1721$(BLD)/w32term.$(O) : \ 1519$(BLD)/w32term.$(O) : \
1722 $(SRC)/w32term.c \ 1520 $(SRC)/w32term.c \
1723 $(CONFIG_H) \
1724 $(EMACS_ROOT)/nt/inc/unistd.h \
1725 $(EMACS_ROOT)/nt/inc/sys/ioctl.h \
1726 $(EMACS_ROOT)/nt/inc/sys/time.h \
1727 $(LISP_H) \
1728 $(PROCESS_H) \
1729 $(SRC)/atimer.h \
1730 $(SRC)/blockinput.h \
1731 $(SRC)/buffer.h \ 1521 $(SRC)/buffer.h \
1732 $(SRC)/ccl.h \ 1522 $(SRC)/ccl.h \
1733 $(SRC)/character.h \
1734 $(SRC)/charset.h \
1735 $(SRC)/coding.h \
1736 $(SRC)/composite.h \
1737 $(SRC)/dispextern.h \
1738 $(SRC)/disptab.h \ 1523 $(SRC)/disptab.h \
1739 $(SRC)/font.h \
1740 $(SRC)/fontset.h \ 1524 $(SRC)/fontset.h \
1741 $(SRC)/frame.h \
1742 $(SRC)/intervals.h \
1743 $(SRC)/keyboard.h \
1744 $(SRC)/keymap.h \ 1525 $(SRC)/keymap.h \
1745 $(SRC)/systime.h \
1746 $(SRC)/systty.h \
1747 $(SRC)/termchar.h \ 1526 $(SRC)/termchar.h \
1748 $(SRC)/termhooks.h \
1749 $(SRC)/termopts.h \ 1527 $(SRC)/termopts.h \
1750 $(SRC)/w32font.h \ 1528 $(SRC)/w32font.h \
1751 $(SRC)/w32gui.h \
1752 $(SRC)/w32heap.h \ 1529 $(SRC)/w32heap.h \
1753 $(SRC)/w32term.h \ 1530 $(NT_INC)/sys/stat.h \
1754 $(SRC)/window.h 1531 $(ATIMER_H) \
1532 $(BLOCKINPUT_H) \
1533 $(CHARACTER_H) \
1534 $(CHARSET_H) \
1535 $(CODING_H) \
1536 $(CONFIG_H) \
1537 $(DISPEXTERN_H) \
1538 $(FONT_H) \
1539 $(FRAME_H) \
1540 $(INTERVALS_H) \
1541 $(KEYBOARD_H) \
1542 $(LISP_H) \
1543 $(PROCESS_H) \
1544 $(SYSTIME_H) \
1545 $(SYSTTY_H) \
1546 $(TERMHOOKS_H) \
1547 $(W32TERM_H) \
1548 $(WINDOW_H)
1755 1549
1756$(BLD)/w32select.$(O) : \ 1550$(BLD)/w32select.$(O) : \
1757 $(SRC)/w32select.c \ 1551 $(SRC)/w32select.c \
1758 $(CONFIG_H) \
1759 $(EMACS_ROOT)/nt/inc/sys/time.h \
1760 $(LISP_H) \
1761 $(SRC)/atimer.h \
1762 $(SRC)/blockinput.h \
1763 $(SRC)/character.h \
1764 $(SRC)/charset.h \
1765 $(SRC)/coding.h \
1766 $(SRC)/composite.h \ 1552 $(SRC)/composite.h \
1767 $(SRC)/systime.h \
1768 $(SRC)/w32gui.h \
1769 $(SRC)/w32heap.h \ 1553 $(SRC)/w32heap.h \
1770 $(SRC)/w32term.h 1554 $(BLOCKINPUT_H) \
1555 $(CHARSET_H) \
1556 $(CODING_H) \
1557 $(CONFIG_H) \
1558 $(LISP_H) \
1559 $(W32TERM_H)
1771 1560
1772$(BLD)/w32reg.$(O) : \ 1561$(BLD)/w32reg.$(O) : \
1773 $(SRC)/w32reg.c \ 1562 $(SRC)/w32reg.c \
1563 $(BLOCKINPUT_H) \
1774 $(CONFIG_H) \ 1564 $(CONFIG_H) \
1775 $(EMACS_ROOT)/nt/inc/sys/time.h \
1776 $(LISP_H) \ 1565 $(LISP_H) \
1777 $(SRC)/atimer.h \ 1566 $(W32TERM_H)
1778 $(SRC)/blockinput.h \
1779 $(SRC)/systime.h \
1780 $(SRC)/w32gui.h \
1781 $(SRC)/w32term.h
1782 1567
1783$(BLD)/w32xfns.$(O) : \ 1568$(BLD)/w32xfns.$(O) : \
1784 $(SRC)/w32xfns.c \ 1569 $(SRC)/w32xfns.c \
1570 $(SRC)/fontset.h \
1571 $(BLOCKINPUT_H) \
1572 $(CHARSET_H) \
1785 $(CONFIG_H) \ 1573 $(CONFIG_H) \
1786 $(EMACS_ROOT)/nt/inc/sys/time.h \ 1574 $(FRAME_H) \
1575 $(KEYBOARD_H) \
1787 $(LISP_H) \ 1576 $(LISP_H) \
1788 $(SRC)/atimer.h \ 1577 $(W32TERM_H)
1789 $(SRC)/blockinput.h \
1790 $(SRC)/charset.h \
1791 $(SRC)/coding.h \
1792 $(SRC)/composite.h \
1793 $(SRC)/dispextern.h \
1794 $(SRC)/fontset.h \
1795 $(SRC)/frame.h \
1796 $(SRC)/keyboard.h \
1797 $(SRC)/systime.h \
1798 $(SRC)/w32gui.h \
1799 $(SRC)/w32term.h
1800 1578
1801$(BLD)/w32font.$(O) : \ 1579$(BLD)/w32font.$(O) : \
1802 $(SRC)/w32font.c \ 1580 $(SRC)/w32font.c \
1803 $(CONFIG_H) \
1804 $(EMACS_ROOT)/nt/inc/sys/time.h \
1805 $(LISP_H) \
1806 $(SRC)/ccl.h \
1807 $(SRC)/character.h \
1808 $(SRC)/charset.h \
1809 $(SRC)/coding.h \
1810 $(SRC)/composite.h \
1811 $(SRC)/dispextern.h \
1812 $(SRC)/font.h \
1813 $(SRC)/fontset.h \ 1581 $(SRC)/fontset.h \
1814 $(SRC)/frame.h \
1815 $(SRC)/systime.h \
1816 $(SRC)/w32font.h \ 1582 $(SRC)/w32font.h \
1817 $(SRC)/w32gui.h \ 1583 $(CHARACTER_H) \
1818 $(SRC)/w32term.h 1584 $(CHARSET_H) \
1585 $(CODING_H) \
1586 $(CONFIG_H) \
1587 $(DISPEXTERN_H) \
1588 $(FONT_H) \
1589 $(FRAME_H) \
1590 $(LISP_H) \
1591 $(W32TERM_H)
1819 1592
1820$(BLD)/w32uniscribe.$(O) : \ 1593$(BLD)/w32uniscribe.$(O) : \
1821 $(SRC)/w32uniscribe.c \ 1594 $(SRC)/w32uniscribe.c \
1822 $(CONFIG_H) \
1823 $(EMACS_ROOT)/nt/inc/sys/time.h \
1824 $(LISP_H) \
1825 $(SRC)/ccl.h \
1826 $(SRC)/character.h \
1827 $(SRC)/charset.h \
1828 $(SRC)/composite.h \ 1595 $(SRC)/composite.h \
1829 $(SRC)/dispextern.h \
1830 $(SRC)/font.h \
1831 $(SRC)/fontset.h \ 1596 $(SRC)/fontset.h \
1832 $(SRC)/frame.h \
1833 $(SRC)/systime.h \
1834 $(SRC)/w32font.h \ 1597 $(SRC)/w32font.h \
1835 $(SRC)/w32gui.h \ 1598 $(CHARACTER_H) \
1836 $(SRC)/w32term.h 1599 $(CHARSET_H) \
1600 $(CONFIG_H) \
1601 $(DISPEXTERN_H) \
1602 $(FONT_H) \
1603 $(FRAME_H) \
1604 $(LISP_H) \
1605 $(W32TERM_H)
1837 1606
1838# Each object file depends on stamp_BLD, because in parallel builds we must 1607# Each object file depends on stamp_BLD, because in parallel builds we must
1839# make sure $(BLD) exists before starting compilations. 1608# make sure $(BLD) exists before starting compilations.
diff --git a/src/minibuf.c b/src/minibuf.c
index ca2f22df9ed..cf37c337be4 100644
--- a/src/minibuf.c
+++ b/src/minibuf.c
@@ -25,7 +25,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
25#include "lisp.h" 25#include "lisp.h"
26#include "commands.h" 26#include "commands.h"
27#include "buffer.h" 27#include "buffer.h"
28#include "character.h"
29#include "dispextern.h" 28#include "dispextern.h"
30#include "keyboard.h" 29#include "keyboard.h"
31#include "frame.h" 30#include "frame.h"
@@ -72,7 +71,6 @@ Lisp_Object Qcompletion_ignore_case;
72static Lisp_Object Qminibuffer_completion_table; 71static Lisp_Object Qminibuffer_completion_table;
73static Lisp_Object Qminibuffer_completion_predicate; 72static Lisp_Object Qminibuffer_completion_predicate;
74static Lisp_Object Qminibuffer_completion_confirm; 73static Lisp_Object Qminibuffer_completion_confirm;
75static Lisp_Object Qcompleting_read_default;
76static Lisp_Object Quser_variable_p; 74static Lisp_Object Quser_variable_p;
77 75
78static Lisp_Object Qminibuffer_default; 76static Lisp_Object Qminibuffer_default;
@@ -237,7 +235,7 @@ read_minibuf_noninteractive (Lisp_Object map, Lisp_Object initial,
237 Lisp_Object defalt, 235 Lisp_Object defalt,
238 int allow_props, int inherit_input_method) 236 int allow_props, int inherit_input_method)
239{ 237{
240 size_t size, len; 238 ptrdiff_t size, len;
241 char *line, *s; 239 char *line, *s;
242 Lisp_Object val; 240 Lisp_Object val;
243 241
@@ -247,12 +245,12 @@ read_minibuf_noninteractive (Lisp_Object map, Lisp_Object initial,
247 val = Qnil; 245 val = Qnil;
248 size = 100; 246 size = 100;
249 len = 0; 247 len = 0;
250 line = (char *) xmalloc (size * sizeof *line); 248 line = (char *) xmalloc (size);
251 while ((s = fgets (line + len, size - len, stdin)) != NULL 249 while ((s = fgets (line + len, size - len, stdin)) != NULL
252 && (len = strlen (line), 250 && (len = strlen (line),
253 len == size - 1 && line[len - 1] != '\n')) 251 len == size - 1 && line[len - 1] != '\n'))
254 { 252 {
255 if ((size_t) -1 / 2 < size) 253 if (STRING_BYTES_BOUND / 2 < size)
256 memory_full (SIZE_MAX); 254 memory_full (SIZE_MAX);
257 size *= 2; 255 size *= 2;
258 line = (char *) xrealloc (line, size); 256 line = (char *) xrealloc (line, size);
@@ -260,11 +258,9 @@ read_minibuf_noninteractive (Lisp_Object map, Lisp_Object initial,
260 258
261 if (s) 259 if (s)
262 { 260 {
263 len = strlen (line); 261 char *nl = strchr (line, '\n');
264 262 if (nl)
265 if (len > 0 && line[len - 1] == '\n') 263 *nl = '\0';
266 line[--len] = '\0';
267
268 val = build_string (line); 264 val = build_string (line);
269 xfree (line); 265 xfree (line);
270 } 266 }
@@ -1694,7 +1690,7 @@ See also `completing-read-function'. */)
1694 (Lisp_Object prompt, Lisp_Object collection, Lisp_Object predicate, Lisp_Object require_match, Lisp_Object initial_input, Lisp_Object hist, Lisp_Object def, Lisp_Object inherit_input_method) 1690 (Lisp_Object prompt, Lisp_Object collection, Lisp_Object predicate, Lisp_Object require_match, Lisp_Object initial_input, Lisp_Object hist, Lisp_Object def, Lisp_Object inherit_input_method)
1695{ 1691{
1696 Lisp_Object args[9]; 1692 Lisp_Object args[9];
1697 args[0] = Vcompleting_read_function; 1693 args[0] = Fsymbol_value (intern ("completing-read-function"));
1698 args[1] = prompt; 1694 args[1] = prompt;
1699 args[2] = collection; 1695 args[2] = collection;
1700 args[3] = predicate; 1696 args[3] = predicate;
@@ -1705,76 +1701,6 @@ See also `completing-read-function'. */)
1705 args[8] = inherit_input_method; 1701 args[8] = inherit_input_method;
1706 return Ffuncall (9, args); 1702 return Ffuncall (9, args);
1707} 1703}
1708
1709DEFUN ("completing-read-default", Fcompleting_read_default, Scompleting_read_default, 2, 8, 0,
1710 doc: /* Default method for reading from the minibuffer with completion.
1711See `completing-read' for the meaning of the arguments. */)
1712 (Lisp_Object prompt, Lisp_Object collection, Lisp_Object predicate, Lisp_Object require_match, Lisp_Object initial_input, Lisp_Object hist, Lisp_Object def, Lisp_Object inherit_input_method)
1713{
1714 Lisp_Object val, histvar, histpos, position;
1715 Lisp_Object init;
1716 int pos = 0;
1717 int count = SPECPDL_INDEX ();
1718 struct gcpro gcpro1;
1719
1720 init = initial_input;
1721 GCPRO1 (def);
1722
1723 specbind (Qminibuffer_completion_table, collection);
1724 specbind (Qminibuffer_completion_predicate, predicate);
1725 specbind (Qminibuffer_completion_confirm,
1726 EQ (require_match, Qt) ? Qnil : require_match);
1727
1728 position = Qnil;
1729 if (!NILP (init))
1730 {
1731 if (CONSP (init))
1732 {
1733 position = Fcdr (init);
1734 init = Fcar (init);
1735 }
1736 CHECK_STRING (init);
1737 if (!NILP (position))
1738 {
1739 CHECK_NUMBER (position);
1740 /* Convert to distance from end of input. */
1741 pos = XINT (position) - SCHARS (init);
1742 }
1743 }
1744
1745 if (SYMBOLP (hist))
1746 {
1747 histvar = hist;
1748 histpos = Qnil;
1749 }
1750 else
1751 {
1752 histvar = Fcar_safe (hist);
1753 histpos = Fcdr_safe (hist);
1754 }
1755 if (NILP (histvar))
1756 histvar = Qminibuffer_history;
1757 if (NILP (histpos))
1758 XSETFASTINT (histpos, 0);
1759
1760 val = read_minibuf (NILP (require_match)
1761 ? (NILP (Vminibuffer_completing_file_name)
1762 || EQ (Vminibuffer_completing_file_name, Qlambda)
1763 ? Vminibuffer_local_completion_map
1764 : Vminibuffer_local_filename_completion_map)
1765 : (NILP (Vminibuffer_completing_file_name)
1766 || EQ (Vminibuffer_completing_file_name, Qlambda)
1767 ? Vminibuffer_local_must_match_map
1768 : Vminibuffer_local_filename_must_match_map),
1769 init, prompt, make_number (pos), 0,
1770 histvar, histpos, def, 0,
1771 !NILP (inherit_input_method));
1772
1773 if (STRINGP (val) && SCHARS (val) == 0 && ! NILP (def))
1774 val = CONSP (def) ? XCAR (def) : def;
1775
1776 RETURN_UNGCPRO (unbind_to (count, val));
1777}
1778 1704
1779Lisp_Object Fassoc_string (register Lisp_Object key, Lisp_Object list, Lisp_Object case_fold); 1705Lisp_Object Fassoc_string (register Lisp_Object key, Lisp_Object list, Lisp_Object case_fold);
1780 1706
@@ -2013,7 +1939,6 @@ syms_of_minibuf (void)
2013 minibuf_save_list = Qnil; 1939 minibuf_save_list = Qnil;
2014 staticpro (&minibuf_save_list); 1940 staticpro (&minibuf_save_list);
2015 1941
2016 DEFSYM (Qcompleting_read_default, "completing-read-default");
2017 DEFSYM (Qcompletion_ignore_case, "completion-ignore-case"); 1942 DEFSYM (Qcompletion_ignore_case, "completion-ignore-case");
2018 DEFSYM (Qread_file_name_internal, "read-file-name-internal"); 1943 DEFSYM (Qread_file_name_internal, "read-file-name-internal");
2019 DEFSYM (Qminibuffer_default, "minibuffer-default"); 1944 DEFSYM (Qminibuffer_default, "minibuffer-default");
@@ -2132,12 +2057,6 @@ If the value is `confirm-after-completion', the user may exit with an
2132 doc: /* Non-nil means completing file names. */); 2057 doc: /* Non-nil means completing file names. */);
2133 Vminibuffer_completing_file_name = Qnil; 2058 Vminibuffer_completing_file_name = Qnil;
2134 2059
2135 DEFVAR_LISP ("completing-read-function",
2136 Vcompleting_read_function,
2137 doc: /* The function called by `completing-read' to do the work.
2138It should accept the same arguments as `completing-read'. */);
2139 Vcompleting_read_function = Qcompleting_read_default;
2140
2141 DEFVAR_LISP ("minibuffer-help-form", Vminibuffer_help_form, 2060 DEFVAR_LISP ("minibuffer-help-form", Vminibuffer_help_form,
2142 doc: /* Value that `help-form' takes on inside the minibuffer. */); 2061 doc: /* Value that `help-form' takes on inside the minibuffer. */);
2143 Vminibuffer_help_form = Qnil; 2062 Vminibuffer_help_form = Qnil;
@@ -2214,5 +2133,4 @@ properties. */);
2214 defsubr (&Stest_completion); 2133 defsubr (&Stest_completion);
2215 defsubr (&Sassoc_string); 2134 defsubr (&Sassoc_string);
2216 defsubr (&Scompleting_read); 2135 defsubr (&Scompleting_read);
2217 defsubr (&Scompleting_read_default);
2218} 2136}
diff --git a/src/msdos.c b/src/msdos.c
index 73804df55cc..3f12bc85cbe 100644
--- a/src/msdos.c
+++ b/src/msdos.c
@@ -4267,8 +4267,7 @@ syms_of_msdos (void)
4267#ifndef HAVE_X_WINDOWS 4267#ifndef HAVE_X_WINDOWS
4268 4268
4269 /* The following two are from xfns.c: */ 4269 /* The following two are from xfns.c: */
4270 Qreverse = intern_c_string ("reverse"); 4270 DEFSYM (Qreverse, "reverse");
4271 staticpro (&Qreverse);
4272 4271
4273 DEFVAR_LISP ("dos-unsupported-char-glyph", Vdos_unsupported_char_glyph, 4272 DEFVAR_LISP ("dos-unsupported-char-glyph", Vdos_unsupported_char_glyph,
4274 doc: /* *Glyph to display instead of chars not supported by current codepage. 4273 doc: /* *Glyph to display instead of chars not supported by current codepage.
diff --git a/src/print.c b/src/print.c
index d07f89702cc..14b4326bb6f 100644
--- a/src/print.c
+++ b/src/print.c
@@ -159,8 +159,9 @@ int print_output_debug_flag EXTERNALLY_VISIBLE = 1;
159 } \ 159 } \
160 else \ 160 else \
161 { \ 161 { \
162 print_buffer_size = 1000; \ 162 ptrdiff_t new_size = 1000; \
163 print_buffer = (char *) xmalloc (print_buffer_size); \ 163 print_buffer = (char *) xmalloc (new_size); \
164 print_buffer_size = new_size; \
164 free_print_buffer = 1; \ 165 free_print_buffer = 1; \
165 } \ 166 } \
166 print_buffer_pos = 0; \ 167 print_buffer_pos = 0; \
@@ -235,9 +236,15 @@ printchar (unsigned int ch, Lisp_Object fun)
235 236
236 if (NILP (fun)) 237 if (NILP (fun))
237 { 238 {
238 if (print_buffer_pos_byte + len >= print_buffer_size) 239 if (print_buffer_size - len <= print_buffer_pos_byte)
239 print_buffer = (char *) xrealloc (print_buffer, 240 {
240 print_buffer_size *= 2); 241 ptrdiff_t new_size;
242 if (STRING_BYTES_BOUND / 2 < print_buffer_size)
243 string_overflow ();
244 new_size = print_buffer_size * 2;
245 print_buffer = (char *) xrealloc (print_buffer, new_size);
246 print_buffer_size = new_size;
247 }
241 memcpy (print_buffer + print_buffer_pos_byte, str, len); 248 memcpy (print_buffer + print_buffer_pos_byte, str, len);
242 print_buffer_pos += 1; 249 print_buffer_pos += 1;
243 print_buffer_pos_byte += len; 250 print_buffer_pos_byte += len;
@@ -280,11 +287,14 @@ strout (const char *ptr, EMACS_INT size, EMACS_INT size_byte,
280 287
281 if (NILP (printcharfun)) 288 if (NILP (printcharfun))
282 { 289 {
283 if (print_buffer_pos_byte + size_byte > print_buffer_size) 290 if (print_buffer_size - size_byte < print_buffer_pos_byte)
284 { 291 {
285 print_buffer_size = print_buffer_size * 2 + size_byte; 292 ptrdiff_t new_size;
286 print_buffer = (char *) xrealloc (print_buffer, 293 if (STRING_BYTES_BOUND / 2 - size_byte < print_buffer_size)
287 print_buffer_size); 294 string_overflow ();
295 new_size = print_buffer_size * 2 + size_byte;
296 print_buffer = (char *) xrealloc (print_buffer, new_size);
297 print_buffer_size = new_size;
288 } 298 }
289 memcpy (print_buffer + print_buffer_pos_byte, ptr, size_byte); 299 memcpy (print_buffer + print_buffer_pos_byte, ptr, size_byte);
290 print_buffer_pos += size; 300 print_buffer_pos += size;
@@ -2059,8 +2069,7 @@ print_interval (INTERVAL interval, Lisp_Object printcharfun)
2059void 2069void
2060syms_of_print (void) 2070syms_of_print (void)
2061{ 2071{
2062 Qtemp_buffer_setup_hook = intern_c_string ("temp-buffer-setup-hook"); 2072 DEFSYM (Qtemp_buffer_setup_hook, "temp-buffer-setup-hook");
2063 staticpro (&Qtemp_buffer_setup_hook);
2064 2073
2065 DEFVAR_LISP ("standard-output", Vstandard_output, 2074 DEFVAR_LISP ("standard-output", Vstandard_output,
2066 doc: /* Output stream `print' uses by default for outputting a character. 2075 doc: /* Output stream `print' uses by default for outputting a character.
@@ -2069,8 +2078,7 @@ It may also be a buffer (output is inserted before point)
2069or a marker (output is inserted and the marker is advanced) 2078or a marker (output is inserted and the marker is advanced)
2070or the symbol t (output appears in the echo area). */); 2079or the symbol t (output appears in the echo area). */);
2071 Vstandard_output = Qt; 2080 Vstandard_output = Qt;
2072 Qstandard_output = intern_c_string ("standard-output"); 2081 DEFSYM (Qstandard_output, "standard-output");
2073 staticpro (&Qstandard_output);
2074 2082
2075 DEFVAR_LISP ("float-output-format", Vfloat_output_format, 2083 DEFVAR_LISP ("float-output-format", Vfloat_output_format,
2076 doc: /* The format descriptor string used to print floats. 2084 doc: /* The format descriptor string used to print floats.
@@ -2089,8 +2097,7 @@ decimal point. 0 is not allowed with `e' or `g'.
2089A value of nil means to use the shortest notation 2097A value of nil means to use the shortest notation
2090that represents the number without losing information. */); 2098that represents the number without losing information. */);
2091 Vfloat_output_format = Qnil; 2099 Vfloat_output_format = Qnil;
2092 Qfloat_output_format = intern_c_string ("float-output-format"); 2100 DEFSYM (Qfloat_output_format, "float-output-format");
2093 staticpro (&Qfloat_output_format);
2094 2101
2095 DEFVAR_LISP ("print-length", Vprint_length, 2102 DEFVAR_LISP ("print-length", Vprint_length,
2096 doc: /* Maximum length of list to print before abbreviating. 2103 doc: /* Maximum length of list to print before abbreviating.
@@ -2195,17 +2202,10 @@ priorities. */);
2195 defsubr (&Sredirect_debugging_output); 2202 defsubr (&Sredirect_debugging_output);
2196#endif 2203#endif
2197 2204
2198 Qexternal_debugging_output = intern_c_string ("external-debugging-output"); 2205 DEFSYM (Qexternal_debugging_output, "external-debugging-output");
2199 staticpro (&Qexternal_debugging_output); 2206 DEFSYM (Qprint_escape_newlines, "print-escape-newlines");
2200 2207 DEFSYM (Qprint_escape_multibyte, "print-escape-multibyte");
2201 Qprint_escape_newlines = intern_c_string ("print-escape-newlines"); 2208 DEFSYM (Qprint_escape_nonascii, "print-escape-nonascii");
2202 staticpro (&Qprint_escape_newlines);
2203
2204 Qprint_escape_multibyte = intern_c_string ("print-escape-multibyte");
2205 staticpro (&Qprint_escape_multibyte);
2206
2207 Qprint_escape_nonascii = intern_c_string ("print-escape-nonascii");
2208 staticpro (&Qprint_escape_nonascii);
2209 2209
2210 print_prune_charset_plist = Qnil; 2210 print_prune_charset_plist = Qnil;
2211 staticpro (&print_prune_charset_plist); 2211 staticpro (&print_prune_charset_plist);
diff --git a/src/process.c b/src/process.c
index 0040d14a0f6..6bd168d8840 100644
--- a/src/process.c
+++ b/src/process.c
@@ -102,9 +102,9 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
102#include "gnutls.h" 102#include "gnutls.h"
103#endif 103#endif
104 104
105#if defined (USE_GTK) || defined (HAVE_GCONF) 105#if defined (USE_GTK) || defined (HAVE_GCONF) || defined (HAVE_GSETTINGS)
106#include "xgselect.h" 106#include "xgselect.h"
107#endif /* defined (USE_GTK) || defined (HAVE_GCONF) */ 107#endif
108#ifdef HAVE_NS 108#ifdef HAVE_NS
109#include "nsterm.h" 109#include "nsterm.h"
110#endif 110#endif
@@ -4479,13 +4479,19 @@ wait_reading_process_output (int time_limit, int microsecs, int read_kbd,
4479 set_waiting_for_input (&timeout); 4479 set_waiting_for_input (&timeout);
4480 } 4480 }
4481 4481
4482 /* Skip the `select' call if input is available and we're
4483 waiting for keyboard input or a cell change (which can be
4484 triggered by processing X events). In the latter case, set
4485 nfds to 1 to avoid breaking the loop. */
4482 no_avail = 0; 4486 no_avail = 0;
4483 if (read_kbd && detect_input_pending ()) 4487 if ((read_kbd || !NILP (wait_for_cell))
4488 && detect_input_pending ())
4484 { 4489 {
4485 nfds = 0; 4490 nfds = read_kbd ? 0 : 1;
4486 no_avail = 1; 4491 no_avail = 1;
4487 } 4492 }
4488 else 4493
4494 if (!no_avail)
4489 { 4495 {
4490 4496
4491#ifdef ADAPTIVE_READ_BUFFERING 4497#ifdef ADAPTIVE_READ_BUFFERING
@@ -4521,7 +4527,7 @@ wait_reading_process_output (int time_limit, int microsecs, int read_kbd,
4521 process_output_skip = 0; 4527 process_output_skip = 0;
4522 } 4528 }
4523#endif 4529#endif
4524#if defined (USE_GTK) || defined (HAVE_GCONF) 4530#if defined (USE_GTK) || defined (HAVE_GCONF) || defined (HAVE_GSETTINGS)
4525 nfds = xg_select 4531 nfds = xg_select
4526#elif defined (HAVE_NS) 4532#elif defined (HAVE_NS)
4527 nfds = ns_select 4533 nfds = ns_select
@@ -7236,14 +7242,10 @@ syms_of_process (void)
7236{ 7242{
7237#ifdef subprocesses 7243#ifdef subprocesses
7238 7244
7239 Qprocessp = intern_c_string ("processp"); 7245 DEFSYM (Qprocessp, "processp");
7240 staticpro (&Qprocessp); 7246 DEFSYM (Qrun, "run");
7241 Qrun = intern_c_string ("run"); 7247 DEFSYM (Qstop, "stop");
7242 staticpro (&Qrun); 7248 DEFSYM (Qsignal, "signal");
7243 Qstop = intern_c_string ("stop");
7244 staticpro (&Qstop);
7245 Qsignal = intern_c_string ("signal");
7246 staticpro (&Qsignal);
7247 7249
7248 /* Qexit is already staticpro'd by syms_of_eval; don't staticpro it 7250 /* Qexit is already staticpro'd by syms_of_eval; don't staticpro it
7249 here again. 7251 here again.
@@ -7251,92 +7253,52 @@ syms_of_process (void)
7251 Qexit = intern_c_string ("exit"); 7253 Qexit = intern_c_string ("exit");
7252 staticpro (&Qexit); */ 7254 staticpro (&Qexit); */
7253 7255
7254 Qopen = intern_c_string ("open"); 7256 DEFSYM (Qopen, "open");
7255 staticpro (&Qopen); 7257 DEFSYM (Qclosed, "closed");
7256 Qclosed = intern_c_string ("closed"); 7258 DEFSYM (Qconnect, "connect");
7257 staticpro (&Qclosed); 7259 DEFSYM (Qfailed, "failed");
7258 Qconnect = intern_c_string ("connect"); 7260 DEFSYM (Qlisten, "listen");
7259 staticpro (&Qconnect); 7261 DEFSYM (Qlocal, "local");
7260 Qfailed = intern_c_string ("failed"); 7262 DEFSYM (Qipv4, "ipv4");
7261 staticpro (&Qfailed);
7262 Qlisten = intern_c_string ("listen");
7263 staticpro (&Qlisten);
7264 Qlocal = intern_c_string ("local");
7265 staticpro (&Qlocal);
7266 Qipv4 = intern_c_string ("ipv4");
7267 staticpro (&Qipv4);
7268#ifdef AF_INET6 7263#ifdef AF_INET6
7269 Qipv6 = intern_c_string ("ipv6"); 7264 DEFSYM (Qipv6, "ipv6");
7270 staticpro (&Qipv6); 7265#endif
7271#endif 7266 DEFSYM (Qdatagram, "datagram");
7272 Qdatagram = intern_c_string ("datagram"); 7267 DEFSYM (Qseqpacket, "seqpacket");
7273 staticpro (&Qdatagram); 7268
7274 Qseqpacket = intern_c_string ("seqpacket"); 7269 DEFSYM (QCport, ":port");
7275 staticpro (&Qseqpacket); 7270 DEFSYM (QCspeed, ":speed");
7276 7271 DEFSYM (QCprocess, ":process");
7277 QCport = intern_c_string (":port"); 7272
7278 staticpro (&QCport); 7273 DEFSYM (QCbytesize, ":bytesize");
7279 QCspeed = intern_c_string (":speed"); 7274 DEFSYM (QCstopbits, ":stopbits");
7280 staticpro (&QCspeed); 7275 DEFSYM (QCparity, ":parity");
7281 QCprocess = intern_c_string (":process"); 7276 DEFSYM (Qodd, "odd");
7282 staticpro (&QCprocess); 7277 DEFSYM (Qeven, "even");
7283 7278 DEFSYM (QCflowcontrol, ":flowcontrol");
7284 QCbytesize = intern_c_string (":bytesize"); 7279 DEFSYM (Qhw, "hw");
7285 staticpro (&QCbytesize); 7280 DEFSYM (Qsw, "sw");
7286 QCstopbits = intern_c_string (":stopbits"); 7281 DEFSYM (QCsummary, ":summary");
7287 staticpro (&QCstopbits); 7282
7288 QCparity = intern_c_string (":parity"); 7283 DEFSYM (Qreal, "real");
7289 staticpro (&QCparity); 7284 DEFSYM (Qnetwork, "network");
7290 Qodd = intern_c_string ("odd"); 7285 DEFSYM (Qserial, "serial");
7291 staticpro (&Qodd); 7286 DEFSYM (QCbuffer, ":buffer");
7292 Qeven = intern_c_string ("even"); 7287 DEFSYM (QChost, ":host");
7293 staticpro (&Qeven); 7288 DEFSYM (QCservice, ":service");
7294 QCflowcontrol = intern_c_string (":flowcontrol"); 7289 DEFSYM (QClocal, ":local");
7295 staticpro (&QCflowcontrol); 7290 DEFSYM (QCremote, ":remote");
7296 Qhw = intern_c_string ("hw"); 7291 DEFSYM (QCcoding, ":coding");
7297 staticpro (&Qhw); 7292 DEFSYM (QCserver, ":server");
7298 Qsw = intern_c_string ("sw"); 7293 DEFSYM (QCnowait, ":nowait");
7299 staticpro (&Qsw); 7294 DEFSYM (QCsentinel, ":sentinel");
7300 QCsummary = intern_c_string (":summary"); 7295 DEFSYM (QClog, ":log");
7301 staticpro (&QCsummary); 7296 DEFSYM (QCnoquery, ":noquery");
7302 7297 DEFSYM (QCstop, ":stop");
7303 Qreal = intern_c_string ("real"); 7298 DEFSYM (QCoptions, ":options");
7304 staticpro (&Qreal); 7299 DEFSYM (QCplist, ":plist");
7305 Qnetwork = intern_c_string ("network"); 7300
7306 staticpro (&Qnetwork); 7301 DEFSYM (Qlast_nonmenu_event, "last-nonmenu-event");
7307 Qserial = intern_c_string ("serial");
7308 staticpro (&Qserial);
7309 QCbuffer = intern_c_string (":buffer");
7310 staticpro (&QCbuffer);
7311 QChost = intern_c_string (":host");
7312 staticpro (&QChost);
7313 QCservice = intern_c_string (":service");
7314 staticpro (&QCservice);
7315 QClocal = intern_c_string (":local");
7316 staticpro (&QClocal);
7317 QCremote = intern_c_string (":remote");
7318 staticpro (&QCremote);
7319 QCcoding = intern_c_string (":coding");
7320 staticpro (&QCcoding);
7321 QCserver = intern_c_string (":server");
7322 staticpro (&QCserver);
7323 QCnowait = intern_c_string (":nowait");
7324 staticpro (&QCnowait);
7325 QCsentinel = intern_c_string (":sentinel");
7326 staticpro (&QCsentinel);
7327 QClog = intern_c_string (":log");
7328 staticpro (&QClog);
7329 QCnoquery = intern_c_string (":noquery");
7330 staticpro (&QCnoquery);
7331 QCstop = intern_c_string (":stop");
7332 staticpro (&QCstop);
7333 QCoptions = intern_c_string (":options");
7334 staticpro (&QCoptions);
7335 QCplist = intern_c_string (":plist");
7336 staticpro (&QCplist);
7337
7338 Qlast_nonmenu_event = intern_c_string ("last-nonmenu-event");
7339 staticpro (&Qlast_nonmenu_event);
7340 7302
7341 staticpro (&Vprocess_alist); 7303 staticpro (&Vprocess_alist);
7342#ifdef SIGCHLD 7304#ifdef SIGCHLD
@@ -7345,73 +7307,40 @@ syms_of_process (void)
7345 7307
7346#endif /* subprocesses */ 7308#endif /* subprocesses */
7347 7309
7348 QCname = intern_c_string (":name"); 7310 DEFSYM (QCname, ":name");
7349 staticpro (&QCname); 7311 DEFSYM (QCtype, ":type");
7350 QCtype = intern_c_string (":type"); 7312
7351 staticpro (&QCtype); 7313 DEFSYM (Qeuid, "euid");
7352 7314 DEFSYM (Qegid, "egid");
7353 Qeuid = intern_c_string ("euid"); 7315 DEFSYM (Quser, "user");
7354 staticpro (&Qeuid); 7316 DEFSYM (Qgroup, "group");
7355 Qegid = intern_c_string ("egid"); 7317 DEFSYM (Qcomm, "comm");
7356 staticpro (&Qegid); 7318 DEFSYM (Qstate, "state");
7357 Quser = intern_c_string ("user"); 7319 DEFSYM (Qppid, "ppid");
7358 staticpro (&Quser); 7320 DEFSYM (Qpgrp, "pgrp");
7359 Qgroup = intern_c_string ("group"); 7321 DEFSYM (Qsess, "sess");
7360 staticpro (&Qgroup); 7322 DEFSYM (Qttname, "ttname");
7361 Qcomm = intern_c_string ("comm"); 7323 DEFSYM (Qtpgid, "tpgid");
7362 staticpro (&Qcomm); 7324 DEFSYM (Qminflt, "minflt");
7363 Qstate = intern_c_string ("state"); 7325 DEFSYM (Qmajflt, "majflt");
7364 staticpro (&Qstate); 7326 DEFSYM (Qcminflt, "cminflt");
7365 Qppid = intern_c_string ("ppid"); 7327 DEFSYM (Qcmajflt, "cmajflt");
7366 staticpro (&Qppid); 7328 DEFSYM (Qutime, "utime");
7367 Qpgrp = intern_c_string ("pgrp"); 7329 DEFSYM (Qstime, "stime");
7368 staticpro (&Qpgrp); 7330 DEFSYM (Qtime, "time");
7369 Qsess = intern_c_string ("sess"); 7331 DEFSYM (Qcutime, "cutime");
7370 staticpro (&Qsess); 7332 DEFSYM (Qcstime, "cstime");
7371 Qttname = intern_c_string ("ttname"); 7333 DEFSYM (Qctime, "ctime");
7372 staticpro (&Qttname); 7334 DEFSYM (Qpri, "pri");
7373 Qtpgid = intern_c_string ("tpgid"); 7335 DEFSYM (Qnice, "nice");
7374 staticpro (&Qtpgid); 7336 DEFSYM (Qthcount, "thcount");
7375 Qminflt = intern_c_string ("minflt"); 7337 DEFSYM (Qstart, "start");
7376 staticpro (&Qminflt); 7338 DEFSYM (Qvsize, "vsize");
7377 Qmajflt = intern_c_string ("majflt"); 7339 DEFSYM (Qrss, "rss");
7378 staticpro (&Qmajflt); 7340 DEFSYM (Qetime, "etime");
7379 Qcminflt = intern_c_string ("cminflt"); 7341 DEFSYM (Qpcpu, "pcpu");
7380 staticpro (&Qcminflt); 7342 DEFSYM (Qpmem, "pmem");
7381 Qcmajflt = intern_c_string ("cmajflt"); 7343 DEFSYM (Qargs, "args");
7382 staticpro (&Qcmajflt);
7383 Qutime = intern_c_string ("utime");
7384 staticpro (&Qutime);
7385 Qstime = intern_c_string ("stime");
7386 staticpro (&Qstime);
7387 Qtime = intern_c_string ("time");
7388 staticpro (&Qtime);
7389 Qcutime = intern_c_string ("cutime");
7390 staticpro (&Qcutime);
7391 Qcstime = intern_c_string ("cstime");
7392 staticpro (&Qcstime);
7393 Qctime = intern_c_string ("ctime");
7394 staticpro (&Qctime);
7395 Qpri = intern_c_string ("pri");
7396 staticpro (&Qpri);
7397 Qnice = intern_c_string ("nice");
7398 staticpro (&Qnice);
7399 Qthcount = intern_c_string ("thcount");
7400 staticpro (&Qthcount);
7401 Qstart = intern_c_string ("start");
7402 staticpro (&Qstart);
7403 Qvsize = intern_c_string ("vsize");
7404 staticpro (&Qvsize);
7405 Qrss = intern_c_string ("rss");
7406 staticpro (&Qrss);
7407 Qetime = intern_c_string ("etime");
7408 staticpro (&Qetime);
7409 Qpcpu = intern_c_string ("pcpu");
7410 staticpro (&Qpcpu);
7411 Qpmem = intern_c_string ("pmem");
7412 staticpro (&Qpmem);
7413 Qargs = intern_c_string ("args");
7414 staticpro (&Qargs);
7415 7344
7416 DEFVAR_BOOL ("delete-exited-processes", delete_exited_processes, 7345 DEFVAR_BOOL ("delete-exited-processes", delete_exited_processes,
7417 doc: /* *Non-nil means delete processes immediately when they exit. 7346 doc: /* *Non-nil means delete processes immediately when they exit.
diff --git a/src/search.c b/src/search.c
index 6c835f2cc64..d29a51c695b 100644
--- a/src/search.c
+++ b/src/search.c
@@ -3181,10 +3181,8 @@ syms_of_search (void)
3181 } 3181 }
3182 searchbuf_head = &searchbufs[0]; 3182 searchbuf_head = &searchbufs[0];
3183 3183
3184 Qsearch_failed = intern_c_string ("search-failed"); 3184 DEFSYM (Qsearch_failed, "search-failed");
3185 staticpro (&Qsearch_failed); 3185 DEFSYM (Qinvalid_regexp, "invalid-regexp");
3186 Qinvalid_regexp = intern_c_string ("invalid-regexp");
3187 staticpro (&Qinvalid_regexp);
3188 3186
3189 Fput (Qsearch_failed, Qerror_conditions, 3187 Fput (Qsearch_failed, Qerror_conditions,
3190 pure_cons (Qsearch_failed, pure_cons (Qerror, Qnil))); 3188 pure_cons (Qsearch_failed, pure_cons (Qerror, Qnil)));
diff --git a/src/sound.c b/src/sound.c
index 0e71e66352e..07c7dab0ada 100644
--- a/src/sound.c
+++ b/src/sound.c
@@ -1477,14 +1477,10 @@ Internal use only, use `play-sound' instead. */)
1477void 1477void
1478syms_of_sound (void) 1478syms_of_sound (void)
1479{ 1479{
1480 QCdevice = intern_c_string(":device"); 1480 DEFSYM (QCdevice, ":device");
1481 staticpro (&QCdevice); 1481 DEFSYM (QCvolume, ":volume");
1482 QCvolume = intern_c_string (":volume"); 1482 DEFSYM (Qsound, "sound");
1483 staticpro (&QCvolume); 1483 DEFSYM (Qplay_sound_functions, "play-sound-functions");
1484 Qsound = intern_c_string ("sound");
1485 staticpro (&Qsound);
1486 Qplay_sound_functions = intern_c_string ("play-sound-functions");
1487 staticpro (&Qplay_sound_functions);
1488 1484
1489 defsubr (&Splay_sound_internal); 1485 defsubr (&Splay_sound_internal);
1490} 1486}
diff --git a/src/syntax.c b/src/syntax.c
index 82103cfa3d4..8c2d5ded21f 100644
--- a/src/syntax.c
+++ b/src/syntax.c
@@ -3362,8 +3362,7 @@ init_syntax_once (void)
3362 Lisp_Object temp; 3362 Lisp_Object temp;
3363 3363
3364 /* This has to be done here, before we call Fmake_char_table. */ 3364 /* This has to be done here, before we call Fmake_char_table. */
3365 Qsyntax_table = intern_c_string ("syntax-table"); 3365 DEFSYM (Qsyntax_table, "syntax-table");
3366 staticpro (&Qsyntax_table);
3367 3366
3368 /* Intern_C_String this now in case it isn't already done. 3367 /* Intern_C_String this now in case it isn't already done.
3369 Setting this variable twice is harmless. 3368 Setting this variable twice is harmless.
@@ -3448,8 +3447,7 @@ init_syntax_once (void)
3448void 3447void
3449syms_of_syntax (void) 3448syms_of_syntax (void)
3450{ 3449{
3451 Qsyntax_table_p = intern_c_string ("syntax-table-p"); 3450 DEFSYM (Qsyntax_table_p, "syntax-table-p");
3452 staticpro (&Qsyntax_table_p);
3453 3451
3454 staticpro (&Vsyntax_code_object); 3452 staticpro (&Vsyntax_code_object);
3455 3453
@@ -3461,8 +3459,7 @@ syms_of_syntax (void)
3461 /* Defined in regex.c */ 3459 /* Defined in regex.c */
3462 staticpro (&re_match_object); 3460 staticpro (&re_match_object);
3463 3461
3464 Qscan_error = intern_c_string ("scan-error"); 3462 DEFSYM (Qscan_error, "scan-error");
3465 staticpro (&Qscan_error);
3466 Fput (Qscan_error, Qerror_conditions, 3463 Fput (Qscan_error, Qerror_conditions,
3467 pure_cons (Qscan_error, pure_cons (Qerror, Qnil))); 3464 pure_cons (Qscan_error, pure_cons (Qerror, Qnil)));
3468 Fput (Qscan_error, Qerror_message, 3465 Fput (Qscan_error, Qerror_message,
diff --git a/src/sysdep.c b/src/sysdep.c
index 5ad3389dd8f..8b6939b91fe 100644
--- a/src/sysdep.c
+++ b/src/sysdep.c
@@ -1783,7 +1783,8 @@ seed_random (long int arg)
1783} 1783}
1784 1784
1785/* 1785/*
1786 * Build a full Emacs-sized word out of whatever we've got. 1786 * Return a nonnegative random integer out of whatever we've got.
1787 * It contains enough bits to make a random (signed) Emacs fixnum.
1787 * This suffices even for a 64-bit architecture with a 15-bit rand. 1788 * This suffices even for a 64-bit architecture with a 15-bit rand.
1788 */ 1789 */
1789EMACS_INT 1790EMACS_INT
@@ -1791,9 +1792,11 @@ get_random (void)
1791{ 1792{
1792 EMACS_UINT val = 0; 1793 EMACS_UINT val = 0;
1793 int i; 1794 int i;
1794 for (i = 0; i < (VALBITS + RAND_BITS - 1) / RAND_BITS; i++) 1795 for (i = 0; i < (FIXNUM_BITS + RAND_BITS - 1) / RAND_BITS; i++)
1795 val = (val << RAND_BITS) ^ random (); 1796 val = (random () ^ (val << RAND_BITS)
1796 return val & (((EMACS_INT) 1 << VALBITS) - 1); 1797 ^ (val >> (BITS_PER_EMACS_INT - RAND_BITS)));
1798 val ^= val >> (BITS_PER_EMACS_INT - FIXNUM_BITS);
1799 return val & INTMASK;
1797} 1800}
1798 1801
1799#ifndef HAVE_STRERROR 1802#ifndef HAVE_STRERROR
@@ -2012,37 +2015,6 @@ perror (void)
2012} 2015}
2013#endif /* HPUX and not HAVE_PERROR */ 2016#endif /* HPUX and not HAVE_PERROR */
2014 2017
2015#ifndef HAVE_DUP2
2016
2017/*
2018 * Emulate BSD dup2. First close newd if it already exists.
2019 * Then, attempt to dup oldd. If not successful, call dup2 recursively
2020 * until we are, then close the unsuccessful ones.
2021 */
2022
2023int
2024dup2 (int oldd, int newd)
2025{
2026 register int fd, ret;
2027
2028 emacs_close (newd);
2029
2030#ifdef F_DUPFD
2031 return fcntl (oldd, F_DUPFD, newd);
2032#else
2033 fd = dup (old);
2034 if (fd == -1)
2035 return -1;
2036 if (fd == new)
2037 return new;
2038 ret = dup2 (old,new);
2039 emacs_close (fd);
2040 return ret;
2041#endif
2042}
2043
2044#endif /* not HAVE_DUP2 */
2045
2046/* 2018/*
2047 * Gettimeofday. Simulate as much as possible. Only accurate 2019 * Gettimeofday. Simulate as much as possible. Only accurate
2048 * to nearest second. Emacs doesn't use tzp so ignore it for now. 2020 * to nearest second. Emacs doesn't use tzp so ignore it for now.
diff --git a/src/terminal.c b/src/terminal.c
index c135c0f93ef..67577adf3b4 100644
--- a/src/terminal.c
+++ b/src/terminal.c
@@ -555,10 +555,8 @@ Each function is called with argument, the terminal.
555This may be called just before actually deleting the terminal, 555This may be called just before actually deleting the terminal,
556or some time later. */); 556or some time later. */);
557 Vdelete_terminal_functions = Qnil; 557 Vdelete_terminal_functions = Qnil;
558 Qdelete_terminal_functions = intern_c_string ("delete-terminal-functions"); 558 DEFSYM (Qdelete_terminal_functions, "delete-terminal-functions");
559 staticpro (&Qdelete_terminal_functions); 559 DEFSYM (Qrun_hook_with_args, "run-hook-with-args");
560 Qrun_hook_with_args = intern_c_string ("run-hook-with-args");
561 staticpro (&Qrun_hook_with_args);
562 560
563 defsubr (&Sdelete_terminal); 561 defsubr (&Sdelete_terminal);
564 defsubr (&Sframe_terminal); 562 defsubr (&Sframe_terminal);
diff --git a/src/textprop.c b/src/textprop.c
index dd8695f7af8..29425f7a550 100644
--- a/src/textprop.c
+++ b/src/textprop.c
@@ -1707,10 +1707,14 @@ text_property_stickiness (Lisp_Object prop, Lisp_Object pos, Lisp_Object buffer)
1707{ 1707{
1708 Lisp_Object prev_pos, front_sticky; 1708 Lisp_Object prev_pos, front_sticky;
1709 int is_rear_sticky = 1, is_front_sticky = 0; /* defaults */ 1709 int is_rear_sticky = 1, is_front_sticky = 0; /* defaults */
1710 Lisp_Object defalt = Fassq (prop, Vtext_property_default_nonsticky);
1710 1711
1711 if (NILP (buffer)) 1712 if (NILP (buffer))
1712 XSETBUFFER (buffer, current_buffer); 1713 XSETBUFFER (buffer, current_buffer);
1713 1714
1715 if (CONSP (defalt) && !NILP (XCDR (defalt)))
1716 is_rear_sticky = 0;
1717
1714 if (XINT (pos) > BUF_BEGV (XBUFFER (buffer))) 1718 if (XINT (pos) > BUF_BEGV (XBUFFER (buffer)))
1715 /* Consider previous character. */ 1719 /* Consider previous character. */
1716 { 1720 {
@@ -2230,9 +2234,11 @@ If a character in a buffer has PROPERTY, new text inserted adjacent to
2230the character doesn't inherit PROPERTY if NONSTICKINESS is non-nil, 2234the character doesn't inherit PROPERTY if NONSTICKINESS is non-nil,
2231inherits it if NONSTICKINESS is nil. The `front-sticky' and 2235inherits it if NONSTICKINESS is nil. The `front-sticky' and
2232`rear-nonsticky' properties of the character override NONSTICKINESS. */); 2236`rear-nonsticky' properties of the character override NONSTICKINESS. */);
2233 /* Text property `syntax-table' should be nonsticky by default. */ 2237 /* Text properties `syntax-table'and `display' should be nonsticky
2238 by default. */
2234 Vtext_property_default_nonsticky 2239 Vtext_property_default_nonsticky
2235 = Fcons (Fcons (intern_c_string ("syntax-table"), Qt), Qnil); 2240 = Fcons (Fcons (intern_c_string ("syntax-table"), Qt),
2241 Fcons (Fcons (intern_c_string ("display"), Qt), Qnil));
2236 2242
2237 staticpro (&interval_insert_behind_hooks); 2243 staticpro (&interval_insert_behind_hooks);
2238 staticpro (&interval_insert_in_front_hooks); 2244 staticpro (&interval_insert_in_front_hooks);
@@ -2242,45 +2248,27 @@ inherits it if NONSTICKINESS is nil. The `front-sticky' and
2242 2248
2243 /* Common attributes one might give text */ 2249 /* Common attributes one might give text */
2244 2250
2245 staticpro (&Qforeground); 2251 DEFSYM (Qforeground, "foreground");
2246 Qforeground = intern_c_string ("foreground"); 2252 DEFSYM (Qbackground, "background");
2247 staticpro (&Qbackground); 2253 DEFSYM (Qfont, "font");
2248 Qbackground = intern_c_string ("background"); 2254 DEFSYM (Qstipple, "stipple");
2249 staticpro (&Qfont); 2255 DEFSYM (Qunderline, "underline");
2250 Qfont = intern_c_string ("font"); 2256 DEFSYM (Qread_only, "read-only");
2251 staticpro (&Qstipple); 2257 DEFSYM (Qinvisible, "invisible");
2252 Qstipple = intern_c_string ("stipple"); 2258 DEFSYM (Qintangible, "intangible");
2253 staticpro (&Qunderline); 2259 DEFSYM (Qcategory, "category");
2254 Qunderline = intern_c_string ("underline"); 2260 DEFSYM (Qlocal_map, "local-map");
2255 staticpro (&Qread_only); 2261 DEFSYM (Qfront_sticky, "front-sticky");
2256 Qread_only = intern_c_string ("read-only"); 2262 DEFSYM (Qrear_nonsticky, "rear-nonsticky");
2257 staticpro (&Qinvisible); 2263 DEFSYM (Qmouse_face, "mouse-face");
2258 Qinvisible = intern_c_string ("invisible"); 2264 DEFSYM (Qminibuffer_prompt, "minibuffer-prompt");
2259 staticpro (&Qintangible);
2260 Qintangible = intern_c_string ("intangible");
2261 staticpro (&Qcategory);
2262 Qcategory = intern_c_string ("category");
2263 staticpro (&Qlocal_map);
2264 Qlocal_map = intern_c_string ("local-map");
2265 staticpro (&Qfront_sticky);
2266 Qfront_sticky = intern_c_string ("front-sticky");
2267 staticpro (&Qrear_nonsticky);
2268 Qrear_nonsticky = intern_c_string ("rear-nonsticky");
2269 staticpro (&Qmouse_face);
2270 Qmouse_face = intern_c_string ("mouse-face");
2271 staticpro (&Qminibuffer_prompt);
2272 Qminibuffer_prompt = intern_c_string ("minibuffer-prompt");
2273 2265
2274 /* Properties that text might use to specify certain actions */ 2266 /* Properties that text might use to specify certain actions */
2275 2267
2276 staticpro (&Qmouse_left); 2268 DEFSYM (Qmouse_left, "mouse-left");
2277 Qmouse_left = intern_c_string ("mouse-left"); 2269 DEFSYM (Qmouse_entered, "mouse-entered");
2278 staticpro (&Qmouse_entered); 2270 DEFSYM (Qpoint_left, "point-left");
2279 Qmouse_entered = intern_c_string ("mouse-entered"); 2271 DEFSYM (Qpoint_entered, "point-entered");
2280 staticpro (&Qpoint_left);
2281 Qpoint_left = intern_c_string ("point-left");
2282 staticpro (&Qpoint_entered);
2283 Qpoint_entered = intern_c_string ("point-entered");
2284 2272
2285 defsubr (&Stext_properties_at); 2273 defsubr (&Stext_properties_at);
2286 defsubr (&Sget_text_property); 2274 defsubr (&Sget_text_property);
diff --git a/src/undo.c b/src/undo.c
index e7e9ae5632e..7e121e8b27d 100644
--- a/src/undo.c
+++ b/src/undo.c
@@ -637,11 +637,8 @@ Return what remains of the list. */)
637void 637void
638syms_of_undo (void) 638syms_of_undo (void)
639{ 639{
640 Qinhibit_read_only = intern_c_string ("inhibit-read-only"); 640 DEFSYM (Qinhibit_read_only, "inhibit-read-only");
641 staticpro (&Qinhibit_read_only); 641 DEFSYM (Qapply, "apply");
642
643 Qapply = intern_c_string ("apply");
644 staticpro (&Qapply);
645 642
646 pending_boundary = Qnil; 643 pending_boundary = Qnil;
647 staticpro (&pending_boundary); 644 staticpro (&pending_boundary);
diff --git a/src/w32.c b/src/w32.c
index d81fdf3305d..53bf2e811e2 100644
--- a/src/w32.c
+++ b/src/w32.c
@@ -5960,8 +5960,7 @@ globals_of_w32 (void)
5960 get_process_times_fn = (GetProcessTimes_Proc) 5960 get_process_times_fn = (GetProcessTimes_Proc)
5961 GetProcAddress (kernel32, "GetProcessTimes"); 5961 GetProcAddress (kernel32, "GetProcessTimes");
5962 5962
5963 QCloaded_from = intern_c_string (":loaded-from"); 5963 DEFSYM (QCloaded_from, ":loaded-from");
5964 staticpro (&QCloaded_from);
5965 5964
5966 Vlibrary_cache = Qnil; 5965 Vlibrary_cache = Qnil;
5967 staticpro (&Vlibrary_cache); 5966 staticpro (&Vlibrary_cache);
diff --git a/src/w32fns.c b/src/w32fns.c
index e4b11b70441..cba0b91e685 100644
--- a/src/w32fns.c
+++ b/src/w32fns.c
@@ -6805,10 +6805,6 @@ syms_of_w32fns (void)
6805 DEFSYM (Qfont_param, "font-parameter"); 6805 DEFSYM (Qfont_param, "font-parameter");
6806 /* This is the end of symbol initialization. */ 6806 /* This is the end of symbol initialization. */
6807 6807
6808 /* Text property `display' should be nonsticky by default. */
6809 Vtext_property_default_nonsticky
6810 = Fcons (Fcons (Qdisplay, Qt), Vtext_property_default_nonsticky);
6811
6812 6808
6813 Fput (Qundefined_color, Qerror_conditions, 6809 Fput (Qundefined_color, Qerror_conditions,
6814 pure_cons (Qundefined_color, pure_cons (Qerror, Qnil))); 6810 pure_cons (Qundefined_color, pure_cons (Qerror, Qnil)));
diff --git a/src/w32menu.c b/src/w32menu.c
index e2f6de7f0c8..c31a8c1fd96 100644
--- a/src/w32menu.c
+++ b/src/w32menu.c
@@ -33,7 +33,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
33#include "blockinput.h" 33#include "blockinput.h"
34#include "buffer.h" 34#include "buffer.h"
35#include "charset.h" 35#include "charset.h"
36#include "character.h"
37#include "coding.h" 36#include "coding.h"
38#include "menu.h" 37#include "menu.h"
39 38
diff --git a/src/w32proc.c b/src/w32proc.c
index e94d9aa3254..47cbf57d9ea 100644
--- a/src/w32proc.c
+++ b/src/w32proc.c
@@ -51,7 +51,6 @@ extern BOOL WINAPI IsValidLocale (LCID, DWORD);
51#endif 51#endif
52 52
53#include "lisp.h" 53#include "lisp.h"
54#include "character.h"
55#include "w32.h" 54#include "w32.h"
56#include "w32heap.h" 55#include "w32heap.h"
57#include "systime.h" 56#include "systime.h"
diff --git a/src/w32select.c b/src/w32select.c
index ef0cb3adc24..e3225c3f996 100644
--- a/src/w32select.c
+++ b/src/w32select.c
@@ -80,7 +80,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
80#include "blockinput.h" 80#include "blockinput.h"
81#include "charset.h" 81#include "charset.h"
82#include "coding.h" 82#include "coding.h"
83#include "character.h"
84#include "composite.h" 83#include "composite.h"
85 84
86 85
diff --git a/src/window.c b/src/window.c
index 65df9f26e64..154efe4a222 100644
--- a/src/window.c
+++ b/src/window.c
@@ -54,7 +54,7 @@ Lisp_Object Qwindowp, Qwindow_live_p;
54static Lisp_Object Qwindow_configuration_p, Qrecord_window_buffer; 54static Lisp_Object Qwindow_configuration_p, Qrecord_window_buffer;
55static Lisp_Object Qwindow_deletable_p, Qdelete_window, Qdisplay_buffer; 55static Lisp_Object Qwindow_deletable_p, Qdelete_window, Qdisplay_buffer;
56static Lisp_Object Qreplace_buffer_in_windows, Qget_mru_window; 56static Lisp_Object Qreplace_buffer_in_windows, Qget_mru_window;
57static Lisp_Object Qresize_root_window, Qresize_root_window_vertically; 57static Lisp_Object Qwindow_resize_root_window, Qwindow_resize_root_window_vertically;
58static Lisp_Object Qscroll_up, Qscroll_down, Qscroll_command; 58static Lisp_Object Qscroll_up, Qscroll_down, Qscroll_command;
59static Lisp_Object Qsafe, Qabove, Qbelow; 59static Lisp_Object Qsafe, Qabove, Qbelow;
60static Lisp_Object Qauto_buffer_name; 60static Lisp_Object Qauto_buffer_name;
@@ -82,8 +82,8 @@ static int foreach_window_1 (struct window *,
82 int (* fn) (struct window *, void *), 82 int (* fn) (struct window *, void *),
83 void *); 83 void *);
84static Lisp_Object window_list_1 (Lisp_Object, Lisp_Object, Lisp_Object); 84static Lisp_Object window_list_1 (Lisp_Object, Lisp_Object, Lisp_Object);
85static int resize_window_check (struct window *, int); 85static int window_resize_check (struct window *, int);
86static void resize_window_apply (struct window *, int); 86static void window_resize_apply (struct window *, int);
87static Lisp_Object select_window (Lisp_Object, Lisp_Object, int); 87static Lisp_Object select_window (Lisp_Object, Lisp_Object, int);
88 88
89/* This is the window in which the terminal's cursor should 89/* This is the window in which the terminal's cursor should
@@ -408,14 +408,6 @@ buffer of the selected window before each command. */)
408 return select_window (window, norecord, 0); 408 return select_window (window, norecord, 0);
409} 409}
410 410
411DEFUN ("window-clone-number", Fwindow_clone_number, Swindow_clone_number, 0, 1, 0,
412 doc: /* Return WINDOW's clone number.
413WINDOW can be any window and defaults to the selected one. */)
414 (Lisp_Object window)
415{
416 return decode_any_window (window)->clone_number;
417}
418
419DEFUN ("window-buffer", Fwindow_buffer, Swindow_buffer, 0, 1, 0, 411DEFUN ("window-buffer", Fwindow_buffer, Swindow_buffer, 0, 1, 0,
420 doc: /* Return the buffer that WINDOW is displaying. 412 doc: /* Return the buffer that WINDOW is displaying.
421WINDOW can be any window and defaults to the selected one. 413WINDOW can be any window and defaults to the selected one.
@@ -434,37 +426,37 @@ Return nil if WINDOW has no parent. */)
434 return decode_any_window (window)->parent; 426 return decode_any_window (window)->parent;
435} 427}
436 428
437DEFUN ("window-vchild", Fwindow_vchild, Swindow_vchild, 0, 1, 0, 429DEFUN ("window-top-child", Fwindow_top_child, Swindow_top_child, 0, 1, 0,
438 doc: /* Return WINDOW's first vertical child window. 430 doc: /* Return WINDOW's topmost child window.
439WINDOW can be any window and defaults to the selected one. 431WINDOW can be any window and defaults to the selected one.
440Return nil if WINDOW has no vertical child. */) 432Return nil if WINDOW is not a vertical combination. */)
441 (Lisp_Object window) 433 (Lisp_Object window)
442{ 434{
443 return decode_any_window (window)->vchild; 435 return decode_any_window (window)->vchild;
444} 436}
445 437
446DEFUN ("window-hchild", Fwindow_hchild, Swindow_hchild, 0, 1, 0, 438DEFUN ("window-left-child", Fwindow_left_child, Swindow_left_child, 0, 1, 0,
447 doc: /* Return WINDOW's first horizontal child window. 439 doc: /* Return WINDOW's leftmost child window.
448WINDOW can be any window and defaults to the selected one. 440WINDOW can be any window and defaults to the selected one.
449Return nil if WINDOW has no horizontal child. */) 441Return nil if WINDOW is not a horizontal combination. */)
450 (Lisp_Object window) 442 (Lisp_Object window)
451{ 443{
452 return decode_any_window (window)->hchild; 444 return decode_any_window (window)->hchild;
453} 445}
454 446
455DEFUN ("window-next", Fwindow_next, Swindow_next, 0, 1, 0, 447DEFUN ("window-next-sibling", Fwindow_next_sibling, Swindow_next_sibling, 0, 1, 0,
456 doc: /* Return WINDOW's right sibling window. 448 doc: /* Return WINDOW's next sibling window.
457WINDOW can be any window and defaults to the selected one. 449WINDOW can be any window and defaults to the selected one.
458Return nil if WINDOW has no right sibling. */) 450Return nil if WINDOW has no next sibling. */)
459 (Lisp_Object window) 451 (Lisp_Object window)
460{ 452{
461 return decode_any_window (window)->next; 453 return decode_any_window (window)->next;
462} 454}
463 455
464DEFUN ("window-prev", Fwindow_prev, Swindow_prev, 0, 1, 0, 456DEFUN ("window-prev-sibling", Fwindow_prev_sibling, Swindow_prev_sibling, 0, 1, 0,
465 doc: /* Return WINDOW's left sibling window. 457 doc: /* Return WINDOW's previous sibling window.
466WINDOW can be any window and defaults to the selected one. 458WINDOW can be any window and defaults to the selected one.
467Return nil if WINDOW has no left sibling. */) 459Return nil if WINDOW has no previous sibling. */)
468 (Lisp_Object window) 460 (Lisp_Object window)
469{ 461{
470 return decode_any_window (window)->prev; 462 return decode_any_window (window)->prev;
@@ -2576,7 +2568,7 @@ selected frame and no others. */)
2576static Lisp_Object 2568static Lisp_Object
2577resize_root_window (Lisp_Object window, Lisp_Object delta, Lisp_Object horizontal, Lisp_Object ignore) 2569resize_root_window (Lisp_Object window, Lisp_Object delta, Lisp_Object horizontal, Lisp_Object ignore)
2578{ 2570{
2579 return call4 (Qresize_root_window, window, delta, horizontal, ignore); 2571 return call4 (Qwindow_resize_root_window, window, delta, horizontal, ignore);
2580} 2572}
2581 2573
2582 2574
@@ -2695,13 +2687,13 @@ window-start value is reasonable when this function is called. */)
2695 XSETINT (delta, XINT (r->total_lines) - XINT (w->total_lines)); 2687 XSETINT (delta, XINT (r->total_lines) - XINT (w->total_lines));
2696 w->top_line = r->top_line; 2688 w->top_line = r->top_line;
2697 resize_root_window (window, delta, Qnil, Qnil); 2689 resize_root_window (window, delta, Qnil, Qnil);
2698 if (resize_window_check (w, 0)) 2690 if (window_resize_check (w, 0))
2699 resize_window_apply (w, 0); 2691 window_resize_apply (w, 0);
2700 else 2692 else
2701 { 2693 {
2702 resize_root_window (window, delta, Qnil, Qt); 2694 resize_root_window (window, delta, Qnil, Qt);
2703 if (resize_window_check (w, 0)) 2695 if (window_resize_check (w, 0))
2704 resize_window_apply (w, 0); 2696 window_resize_apply (w, 0);
2705 else 2697 else
2706 resize_failed = 1; 2698 resize_failed = 1;
2707 } 2699 }
@@ -2713,13 +2705,13 @@ window-start value is reasonable when this function is called. */)
2713 XSETINT (delta, XINT (r->total_cols) - XINT (w->total_cols)); 2705 XSETINT (delta, XINT (r->total_cols) - XINT (w->total_cols));
2714 w->left_col = r->left_col; 2706 w->left_col = r->left_col;
2715 resize_root_window (window, delta, Qt, Qnil); 2707 resize_root_window (window, delta, Qt, Qnil);
2716 if (resize_window_check (w, 1)) 2708 if (window_resize_check (w, 1))
2717 resize_window_apply (w, 1); 2709 window_resize_apply (w, 1);
2718 else 2710 else
2719 { 2711 {
2720 resize_root_window (window, delta, Qt, Qt); 2712 resize_root_window (window, delta, Qt, Qt);
2721 if (resize_window_check (w, 1)) 2713 if (window_resize_check (w, 1))
2722 resize_window_apply (w, 1); 2714 window_resize_apply (w, 1);
2723 else 2715 else
2724 resize_failed = 1; 2716 resize_failed = 1;
2725 } 2717 }
@@ -3087,18 +3079,6 @@ set_window_buffer (Lisp_Object window, Lisp_Object buffer, int run_hooks_p, int
3087 unbind_to (count, Qnil); 3079 unbind_to (count, Qnil);
3088} 3080}
3089 3081
3090DEFUN ("set-window-clone-number", Fset_window_clone_number, Sset_window_clone_number, 2, 2, 0,
3091 doc: /* Set WINDOW's clone number to CLONE-NUMBER.
3092WINDOW can be any window and defaults to the selected one. */)
3093 (Lisp_Object window, Lisp_Object clone_number)
3094{
3095 register struct window *w = decode_any_window (window);
3096
3097 CHECK_NUMBER (clone_number);
3098 w->clone_number = clone_number;
3099 return w->clone_number;
3100}
3101
3102DEFUN ("set-window-buffer", Fset_window_buffer, Sset_window_buffer, 2, 3, 0, 3082DEFUN ("set-window-buffer", Fset_window_buffer, Sset_window_buffer, 2, 3, 0,
3103 doc: /* Make WINDOW display BUFFER-OR-NAME as its contents. 3083 doc: /* Make WINDOW display BUFFER-OR-NAME as its contents.
3104WINDOW has to be a live window and defaults to the selected one. 3084WINDOW has to be a live window and defaults to the selected one.
@@ -3289,7 +3269,6 @@ make_parent_window (Lisp_Object window, int horflag)
3289 3269
3290 ++sequence_number; 3270 ++sequence_number;
3291 XSETFASTINT (p->sequence_number, sequence_number); 3271 XSETFASTINT (p->sequence_number, sequence_number);
3292 XSETFASTINT (p->clone_number, sequence_number);
3293 3272
3294 replace_window (window, parent, 1); 3273 replace_window (window, parent, 1);
3295 3274
@@ -3335,7 +3314,6 @@ make_window (void)
3335 XSETFASTINT (w->use_time, 0); 3314 XSETFASTINT (w->use_time, 0);
3336 ++sequence_number; 3315 ++sequence_number;
3337 XSETFASTINT (w->sequence_number, sequence_number); 3316 XSETFASTINT (w->sequence_number, sequence_number);
3338 XSETFASTINT (w->clone_number, sequence_number);
3339 w->temslot = w->last_modified = w->last_overlay_modified = Qnil; 3317 w->temslot = w->last_modified = w->last_overlay_modified = Qnil;
3340 XSETFASTINT (w->last_point, 0); 3318 XSETFASTINT (w->last_point, 0);
3341 w->last_had_star = w->vertical_scroll_bar = Qnil; 3319 w->last_had_star = w->vertical_scroll_bar = Qnil;
@@ -3415,7 +3393,7 @@ Note: This function does not operate on any subwindows of WINDOW. */)
3415 `window-min-height' or `window-min-width'. It does check that window 3393 `window-min-height' or `window-min-width'. It does check that window
3416 sizes do not drop below one line (two columns). */ 3394 sizes do not drop below one line (two columns). */
3417static int 3395static int
3418resize_window_check (struct window *w, int horflag) 3396window_resize_check (struct window *w, int horflag)
3419{ 3397{
3420 struct window *c; 3398 struct window *c;
3421 3399
@@ -3429,7 +3407,7 @@ resize_window_check (struct window *w, int horflag)
3429 while (c) 3407 while (c)
3430 { 3408 {
3431 if ((XINT (c->new_total) != XINT (w->new_total)) 3409 if ((XINT (c->new_total) != XINT (w->new_total))
3432 || !resize_window_check (c, horflag)) 3410 || !window_resize_check (c, horflag))
3433 return 0; 3411 return 0;
3434 c = NILP (c->next) ? 0 : XWINDOW (c->next); 3412 c = NILP (c->next) ? 0 : XWINDOW (c->next);
3435 } 3413 }
@@ -3442,7 +3420,7 @@ resize_window_check (struct window *w, int horflag)
3442 int sum_of_sizes = 0; 3420 int sum_of_sizes = 0;
3443 while (c) 3421 while (c)
3444 { 3422 {
3445 if (!resize_window_check (c, horflag)) 3423 if (!window_resize_check (c, horflag))
3446 return 0; 3424 return 0;
3447 sum_of_sizes = sum_of_sizes + XINT (c->new_total); 3425 sum_of_sizes = sum_of_sizes + XINT (c->new_total);
3448 c = NILP (c->next) ? 0 : XWINDOW (c->next); 3426 c = NILP (c->next) ? 0 : XWINDOW (c->next);
@@ -3461,7 +3439,7 @@ resize_window_check (struct window *w, int horflag)
3461 int sum_of_sizes = 0; 3439 int sum_of_sizes = 0;
3462 while (c) 3440 while (c)
3463 { 3441 {
3464 if (!resize_window_check (c, horflag)) 3442 if (!window_resize_check (c, horflag))
3465 return 0; 3443 return 0;
3466 sum_of_sizes = sum_of_sizes + XINT (c->new_total); 3444 sum_of_sizes = sum_of_sizes + XINT (c->new_total);
3467 c = NILP (c->next) ? 0 : XWINDOW (c->next); 3445 c = NILP (c->next) ? 0 : XWINDOW (c->next);
@@ -3474,7 +3452,7 @@ resize_window_check (struct window *w, int horflag)
3474 while (c) 3452 while (c)
3475 { 3453 {
3476 if ((XINT (c->new_total) != XINT (w->new_total)) 3454 if ((XINT (c->new_total) != XINT (w->new_total))
3477 || !resize_window_check (c, horflag)) 3455 || !window_resize_check (c, horflag))
3478 return 0; 3456 return 0;
3479 c = NILP (c->next) ? 0 : XWINDOW (c->next); 3457 c = NILP (c->next) ? 0 : XWINDOW (c->next);
3480 } 3458 }
@@ -3494,9 +3472,9 @@ resize_window_check (struct window *w, int horflag)
3494 each of these windows. 3472 each of these windows.
3495 3473
3496 This function does not perform any error checks. Make sure you have 3474 This function does not perform any error checks. Make sure you have
3497 run resize_window_check on W before applying this function. */ 3475 run window_resize_check on W before applying this function. */
3498static void 3476static void
3499resize_window_apply (struct window *w, int horflag) 3477window_resize_apply (struct window *w, int horflag)
3500{ 3478{
3501 struct window *c; 3479 struct window *c;
3502 int pos; 3480 int pos;
@@ -3530,7 +3508,7 @@ resize_window_apply (struct window *w, int horflag)
3530 XSETFASTINT (c->left_col, pos); 3508 XSETFASTINT (c->left_col, pos);
3531 else 3509 else
3532 XSETFASTINT (c->top_line, pos); 3510 XSETFASTINT (c->top_line, pos);
3533 resize_window_apply (c, horflag); 3511 window_resize_apply (c, horflag);
3534 if (!horflag) 3512 if (!horflag)
3535 pos = pos + XINT (c->total_lines); 3513 pos = pos + XINT (c->total_lines);
3536 c = NILP (c->next) ? 0 : XWINDOW (c->next); 3514 c = NILP (c->next) ? 0 : XWINDOW (c->next);
@@ -3546,7 +3524,7 @@ resize_window_apply (struct window *w, int horflag)
3546 XSETFASTINT (c->left_col, pos); 3524 XSETFASTINT (c->left_col, pos);
3547 else 3525 else
3548 XSETFASTINT (c->top_line, pos); 3526 XSETFASTINT (c->top_line, pos);
3549 resize_window_apply (c, horflag); 3527 window_resize_apply (c, horflag);
3550 if (horflag) 3528 if (horflag)
3551 pos = pos + XINT (c->total_cols); 3529 pos = pos + XINT (c->total_cols);
3552 c = NILP (c->next) ? 0 : XWINDOW (c->next); 3530 c = NILP (c->next) ? 0 : XWINDOW (c->next);
@@ -3559,7 +3537,7 @@ resize_window_apply (struct window *w, int horflag)
3559} 3537}
3560 3538
3561 3539
3562DEFUN ("resize-window-apply", Fresize_window_apply, Sresize_window_apply, 1, 2, 0, 3540DEFUN ("window-resize-apply", Fwindow_resize_apply, Swindow_resize_apply, 1, 2, 0,
3563 doc: /* Apply requested size values for window-tree of FRAME. 3541 doc: /* Apply requested size values for window-tree of FRAME.
3564Optional argument HORIZONTAL omitted or nil means apply requested height 3542Optional argument HORIZONTAL omitted or nil means apply requested height
3565values. HORIZONTAL non-nil means apply requested width values. 3543values. HORIZONTAL non-nil means apply requested width values.
@@ -3584,12 +3562,12 @@ be applied on the Elisp level. */)
3584 f = XFRAME (frame); 3562 f = XFRAME (frame);
3585 r = XWINDOW (FRAME_ROOT_WINDOW (f)); 3563 r = XWINDOW (FRAME_ROOT_WINDOW (f));
3586 3564
3587 if (!resize_window_check (r, horflag) 3565 if (!window_resize_check (r, horflag)
3588 || ! EQ (r->new_total, (horflag ? r->total_cols : r->total_lines))) 3566 || ! EQ (r->new_total, (horflag ? r->total_cols : r->total_lines)))
3589 return Qnil; 3567 return Qnil;
3590 3568
3591 BLOCK_INPUT; 3569 BLOCK_INPUT;
3592 resize_window_apply (r, horflag); 3570 window_resize_apply (r, horflag);
3593 3571
3594 windows_or_buffers_changed++; 3572 windows_or_buffers_changed++;
3595 FRAME_WINDOW_SIZES_CHANGED (f) = 1; 3573 FRAME_WINDOW_SIZES_CHANGED (f) = 1;
@@ -3641,22 +3619,22 @@ resize_frame_windows (struct frame *f, int size, int horflag)
3641 XSETINT (delta, new_size - old_size); 3619 XSETINT (delta, new_size - old_size);
3642 /* Try a "normal" resize first. */ 3620 /* Try a "normal" resize first. */
3643 resize_root_window (root, delta, horflag ? Qt : Qnil, Qnil); 3621 resize_root_window (root, delta, horflag ? Qt : Qnil, Qnil);
3644 if (resize_window_check (r, horflag) && new_size == XINT (r->new_total)) 3622 if (window_resize_check (r, horflag) && new_size == XINT (r->new_total))
3645 resize_window_apply (r, horflag); 3623 window_resize_apply (r, horflag);
3646 else 3624 else
3647 { 3625 {
3648 /* Try with "reasonable" minimum sizes next. */ 3626 /* Try with "reasonable" minimum sizes next. */
3649 resize_root_window (root, delta, horflag ? Qt : Qnil, Qt); 3627 resize_root_window (root, delta, horflag ? Qt : Qnil, Qt);
3650 if (resize_window_check (r, horflag) 3628 if (window_resize_check (r, horflag)
3651 && new_size == XINT (r->new_total)) 3629 && new_size == XINT (r->new_total))
3652 resize_window_apply (r, horflag); 3630 window_resize_apply (r, horflag);
3653 else 3631 else
3654 { 3632 {
3655 /* Finally, try with "safe" minimum sizes. */ 3633 /* Finally, try with "safe" minimum sizes. */
3656 resize_root_window (root, delta, horflag ? Qt : Qnil, Qsafe); 3634 resize_root_window (root, delta, horflag ? Qt : Qnil, Qsafe);
3657 if (resize_window_check (r, horflag) 3635 if (window_resize_check (r, horflag)
3658 && new_size == XINT (r->new_total)) 3636 && new_size == XINT (r->new_total))
3659 resize_window_apply (r, horflag); 3637 window_resize_apply (r, horflag);
3660 else 3638 else
3661 { 3639 {
3662 /* We lost. Delete all windows but the frame's 3640 /* We lost. Delete all windows but the frame's
@@ -3765,7 +3743,7 @@ set correctly. See the code of `split-window' for how this is done. */)
3765 XSETINT (p->new_total, 3743 XSETINT (p->new_total,
3766 XINT (horflag ? p->total_cols : p->total_lines) 3744 XINT (horflag ? p->total_cols : p->total_lines)
3767 - XINT (total_size)); 3745 - XINT (total_size));
3768 if (!resize_window_check (p, horflag)) 3746 if (!window_resize_check (p, horflag))
3769 error ("Window sizes don't fit"); 3747 error ("Window sizes don't fit");
3770 else 3748 else
3771 /* Undo the temporary pretension. */ 3749 /* Undo the temporary pretension. */
@@ -3773,7 +3751,7 @@ set correctly. See the code of `split-window' for how this is done. */)
3773 } 3751 }
3774 else 3752 else
3775 { 3753 {
3776 if (!resize_window_check (o, horflag)) 3754 if (!window_resize_check (o, horflag))
3777 error ("Resizing old window failed"); 3755 error ("Resizing old window failed");
3778 else if (XINT (total_size) + XINT (o->new_total) 3756 else if (XINT (total_size) + XINT (o->new_total)
3779 != XINT (horflag ? o->total_cols : o->total_lines)) 3757 != XINT (horflag ? o->total_cols : o->total_lines))
@@ -3861,13 +3839,13 @@ set correctly. See the code of `split-window' for how this is done. */)
3861 n->total_cols = o->total_cols; 3839 n->total_cols = o->total_cols;
3862 } 3840 }
3863 3841
3864 /* Iso-coordinates and sizes are assigned by resize_window_apply, 3842 /* Iso-coordinates and sizes are assigned by window_resize_apply,
3865 get them ready here. */ 3843 get them ready here. */
3866 n->new_total = total_size; 3844 n->new_total = total_size;
3867 n->new_normal = normal_size; 3845 n->new_normal = normal_size;
3868 3846
3869 BLOCK_INPUT; 3847 BLOCK_INPUT;
3870 resize_window_apply (p, horflag); 3848 window_resize_apply (p, horflag);
3871 adjust_glyphs (f); 3849 adjust_glyphs (f);
3872 /* Set buffer of NEW to buffer of reference window. Don't run 3850 /* Set buffer of NEW to buffer of reference window. Don't run
3873 any hooks. */ 3851 any hooks. */
@@ -3945,13 +3923,13 @@ when WINDOW is the only window on its frame. */)
3945 XWINDOW (s->next)->prev = sibling; 3923 XWINDOW (s->next)->prev = sibling;
3946 } 3924 }
3947 3925
3948 if (resize_window_check (r, horflag) 3926 if (window_resize_check (r, horflag)
3949 && EQ (r->new_total, (horflag ? r->total_cols : r->total_lines))) 3927 && EQ (r->new_total, (horflag ? r->total_cols : r->total_lines)))
3950 /* We can delete WINDOW now. */ 3928 /* We can delete WINDOW now. */
3951 { 3929 {
3952 /* Block input. */ 3930 /* Block input. */
3953 BLOCK_INPUT; 3931 BLOCK_INPUT;
3954 resize_window_apply (p, horflag); 3932 window_resize_apply (p, horflag);
3955 3933
3956 windows_or_buffers_changed++; 3934 windows_or_buffers_changed++;
3957 Vwindow_list = Qnil; 3935 Vwindow_list = Qnil;
@@ -4073,11 +4051,12 @@ grow_mini_window (struct window *w, int delta)
4073 4051
4074 root = FRAME_ROOT_WINDOW (f); 4052 root = FRAME_ROOT_WINDOW (f);
4075 r = XWINDOW (root); 4053 r = XWINDOW (root);
4076 value = call2 (Qresize_root_window_vertically, root, make_number (- delta)); 4054 value = call2 (Qwindow_resize_root_window_vertically,
4077 if (INTEGERP (value) && resize_window_check (r, 0)) 4055 root, make_number (- delta));
4056 if (INTEGERP (value) && window_resize_check (r, 0))
4078 { 4057 {
4079 BLOCK_INPUT; 4058 BLOCK_INPUT;
4080 resize_window_apply (r, 0); 4059 window_resize_apply (r, 0);
4081 4060
4082 /* Grow the mini-window. */ 4061 /* Grow the mini-window. */
4083 XSETFASTINT (w->top_line, XFASTINT (r->top_line) + XFASTINT (r->total_lines)); 4062 XSETFASTINT (w->top_line, XFASTINT (r->top_line) + XFASTINT (r->total_lines));
@@ -4107,12 +4086,12 @@ shrink_mini_window (struct window *w)
4107 { 4086 {
4108 root = FRAME_ROOT_WINDOW (f); 4087 root = FRAME_ROOT_WINDOW (f);
4109 r = XWINDOW (root); 4088 r = XWINDOW (root);
4110 value = call2 (Qresize_root_window_vertically, 4089 value = call2 (Qwindow_resize_root_window_vertically,
4111 root, make_number (size - 1)); 4090 root, make_number (size - 1));
4112 if (INTEGERP (value) && resize_window_check (r, 0)) 4091 if (INTEGERP (value) && window_resize_check (r, 0))
4113 { 4092 {
4114 BLOCK_INPUT; 4093 BLOCK_INPUT;
4115 resize_window_apply (r, 0); 4094 window_resize_apply (r, 0);
4116 4095
4117 /* Shrink the mini-window. */ 4096 /* Shrink the mini-window. */
4118 XSETFASTINT (w->top_line, XFASTINT (r->top_line) + XFASTINT (r->total_lines)); 4097 XSETFASTINT (w->top_line, XFASTINT (r->top_line) + XFASTINT (r->total_lines));
@@ -4150,12 +4129,12 @@ DEFUN ("resize-mini-window-internal", Fresize_mini_window_internal, Sresize_mini
4150 4129
4151 r = XWINDOW (FRAME_ROOT_WINDOW (f)); 4130 r = XWINDOW (FRAME_ROOT_WINDOW (f));
4152 height = XINT (r->total_lines) + XINT (w->total_lines); 4131 height = XINT (r->total_lines) + XINT (w->total_lines);
4153 if (resize_window_check (r, 0) 4132 if (window_resize_check (r, 0)
4154 && XINT (w->new_total) > 0 4133 && XINT (w->new_total) > 0
4155 && height == XINT (r->new_total) + XINT (w->new_total)) 4134 && height == XINT (r->new_total) + XINT (w->new_total))
4156 { 4135 {
4157 BLOCK_INPUT; 4136 BLOCK_INPUT;
4158 resize_window_apply (r, 0); 4137 window_resize_apply (r, 0);
4159 4138
4160 w->total_lines = w->new_total; 4139 w->total_lines = w->new_total;
4161 XSETFASTINT (w->top_line, XINT (r->top_line) + XINT (r->total_lines)); 4140 XSETFASTINT (w->top_line, XINT (r->top_line) + XINT (r->total_lines));
@@ -5347,8 +5326,7 @@ struct saved_window
5347{ 5326{
5348 struct vectorlike_header header; 5327 struct vectorlike_header header;
5349 5328
5350 Lisp_Object window, clone_number; 5329 Lisp_Object window, buffer, start, pointm, mark;
5351 Lisp_Object buffer, start, pointm, mark;
5352 Lisp_Object left_col, top_line, total_cols, total_lines; 5330 Lisp_Object left_col, top_line, total_cols, total_lines;
5353 Lisp_Object normal_cols, normal_lines; 5331 Lisp_Object normal_cols, normal_lines;
5354 Lisp_Object hscroll, min_hscroll; 5332 Lisp_Object hscroll, min_hscroll;
@@ -5567,7 +5545,6 @@ the return value is nil. Otherwise the value is t. */)
5567 } 5545 }
5568 } 5546 }
5569 5547
5570 w->clone_number = p->clone_number;
5571 /* If we squirreled away the buffer in the window's height, 5548 /* If we squirreled away the buffer in the window's height,
5572 restore it now. */ 5549 restore it now. */
5573 if (BUFFERP (w->total_lines)) 5550 if (BUFFERP (w->total_lines))
@@ -5850,7 +5827,6 @@ save_window_save (Lisp_Object window, struct Lisp_Vector *vector, int i)
5850 5827
5851 XSETFASTINT (w->temslot, i); i++; 5828 XSETFASTINT (w->temslot, i); i++;
5852 p->window = window; 5829 p->window = window;
5853 p->clone_number = w->clone_number;
5854 p->buffer = w->buffer; 5830 p->buffer = w->buffer;
5855 p->left_col = w->left_col; 5831 p->left_col = w->left_col;
5856 p->top_line = w->top_line; 5832 p->top_line = w->top_line;
@@ -6441,69 +6417,30 @@ init_window (void)
6441void 6417void
6442syms_of_window (void) 6418syms_of_window (void)
6443{ 6419{
6444 Qscroll_up = intern_c_string ("scroll-up"); 6420 DEFSYM (Qscroll_up, "scroll-up");
6445 staticpro (&Qscroll_up); 6421 DEFSYM (Qscroll_down, "scroll-down");
6446 6422 DEFSYM (Qscroll_command, "scroll-command");
6447 Qscroll_down = intern_c_string ("scroll-down");
6448 staticpro (&Qscroll_down);
6449
6450 Qscroll_command = intern_c_string ("scroll-command");
6451 staticpro (&Qscroll_command);
6452 6423
6453 Fput (Qscroll_up, Qscroll_command, Qt); 6424 Fput (Qscroll_up, Qscroll_command, Qt);
6454 Fput (Qscroll_down, Qscroll_command, Qt); 6425 Fput (Qscroll_down, Qscroll_command, Qt);
6455 6426
6456 staticpro (&Qwindow_configuration_change_hook); 6427 DEFSYM (Qwindow_configuration_change_hook, "window-configuration-change-hook");
6457 Qwindow_configuration_change_hook 6428 DEFSYM (Qwindowp, "windowp");
6458 = intern_c_string ("window-configuration-change-hook"); 6429 DEFSYM (Qwindow_configuration_p, "window-configuration-p");
6459 6430 DEFSYM (Qwindow_live_p, "window-live-p");
6460 Qwindowp = intern_c_string ("windowp"); 6431 DEFSYM (Qwindow_deletable_p, "window-deletable-p");
6461 staticpro (&Qwindowp); 6432 DEFSYM (Qdelete_window, "delete-window");
6462 6433 DEFSYM (Qwindow_resize_root_window, "window--resize-root-window");
6463 Qwindow_configuration_p = intern_c_string ("window-configuration-p"); 6434 DEFSYM (Qwindow_resize_root_window_vertically, "window--resize-root-window-vertically");
6464 staticpro (&Qwindow_configuration_p); 6435 DEFSYM (Qsafe, "safe");
6465 6436 DEFSYM (Qdisplay_buffer, "display-buffer");
6466 Qwindow_live_p = intern_c_string ("window-live-p"); 6437 DEFSYM (Qreplace_buffer_in_windows, "replace-buffer-in-windows");
6467 staticpro (&Qwindow_live_p); 6438 DEFSYM (Qrecord_window_buffer, "record-window-buffer");
6468 6439 DEFSYM (Qget_mru_window, "get-mru-window");
6469 Qwindow_deletable_p = intern_c_string ("window-deletable-p"); 6440 DEFSYM (Qtemp_buffer_show_hook, "temp-buffer-show-hook");
6470 staticpro (&Qwindow_deletable_p); 6441 DEFSYM (Qabove, "above");
6471 6442 DEFSYM (Qbelow, "below");
6472 Qdelete_window = intern_c_string ("delete-window"); 6443 DEFSYM (Qauto_buffer_name, "auto-buffer-name");
6473 staticpro (&Qdelete_window);
6474
6475 Qresize_root_window = intern_c_string ("resize-root-window");
6476 staticpro (&Qresize_root_window);
6477
6478 Qresize_root_window_vertically = intern_c_string ("resize-root-window-vertically");
6479 staticpro (&Qresize_root_window_vertically);
6480
6481 Qsafe = intern_c_string ("safe");
6482 staticpro (&Qsafe);
6483
6484 Qdisplay_buffer = intern_c_string ("display-buffer");
6485 staticpro (&Qdisplay_buffer);
6486
6487 Qreplace_buffer_in_windows = intern_c_string ("replace-buffer-in-windows");
6488 staticpro (&Qreplace_buffer_in_windows);
6489
6490 Qrecord_window_buffer = intern_c_string ("record-window-buffer");
6491 staticpro (&Qrecord_window_buffer);
6492
6493 Qget_mru_window = intern_c_string ("get-mru-window");
6494 staticpro (&Qget_mru_window);
6495
6496 Qtemp_buffer_show_hook = intern_c_string ("temp-buffer-show-hook");
6497 staticpro (&Qtemp_buffer_show_hook);
6498
6499 Qabove = intern_c_string ("above");
6500 staticpro (&Qabove);
6501
6502 Qbelow = intern_c_string ("below");
6503 staticpro (&Qbelow);
6504
6505 Qauto_buffer_name = intern_c_string ("auto-buffer-name");
6506 staticpro (&Qauto_buffer_name);
6507 6444
6508 staticpro (&Vwindow_list); 6445 staticpro (&Vwindow_list);
6509 6446
@@ -6634,13 +6571,12 @@ function `window-nest' and altered by the function `set-window-nest'. */);
6634 defsubr (&Sset_frame_selected_window); 6571 defsubr (&Sset_frame_selected_window);
6635 defsubr (&Spos_visible_in_window_p); 6572 defsubr (&Spos_visible_in_window_p);
6636 defsubr (&Swindow_line_height); 6573 defsubr (&Swindow_line_height);
6637 defsubr (&Swindow_clone_number);
6638 defsubr (&Swindow_buffer); 6574 defsubr (&Swindow_buffer);
6639 defsubr (&Swindow_parent); 6575 defsubr (&Swindow_parent);
6640 defsubr (&Swindow_vchild); 6576 defsubr (&Swindow_top_child);
6641 defsubr (&Swindow_hchild); 6577 defsubr (&Swindow_left_child);
6642 defsubr (&Swindow_next); 6578 defsubr (&Swindow_next_sibling);
6643 defsubr (&Swindow_prev); 6579 defsubr (&Swindow_prev_sibling);
6644 defsubr (&Swindow_splits); 6580 defsubr (&Swindow_splits);
6645 defsubr (&Sset_window_splits); 6581 defsubr (&Sset_window_splits);
6646 defsubr (&Swindow_nest); 6582 defsubr (&Swindow_nest);
@@ -6654,7 +6590,7 @@ function `window-nest' and altered by the function `set-window-nest'. */);
6654 defsubr (&Swindow_new_normal); 6590 defsubr (&Swindow_new_normal);
6655 defsubr (&Sset_window_new_total); 6591 defsubr (&Sset_window_new_total);
6656 defsubr (&Sset_window_new_normal); 6592 defsubr (&Sset_window_new_normal);
6657 defsubr (&Sresize_window_apply); 6593 defsubr (&Swindow_resize_apply);
6658 defsubr (&Swindow_body_size); 6594 defsubr (&Swindow_body_size);
6659 defsubr (&Swindow_hscroll); 6595 defsubr (&Swindow_hscroll);
6660 defsubr (&Sset_window_hscroll); 6596 defsubr (&Sset_window_hscroll);
@@ -6684,7 +6620,6 @@ function `window-nest' and altered by the function `set-window-nest'. */);
6684 defsubr (&Sdelete_window_internal); 6620 defsubr (&Sdelete_window_internal);
6685 defsubr (&Sresize_mini_window_internal); 6621 defsubr (&Sresize_mini_window_internal);
6686 defsubr (&Sset_window_buffer); 6622 defsubr (&Sset_window_buffer);
6687 defsubr (&Sset_window_clone_number);
6688 defsubr (&Srun_window_configuration_change_hook); 6623 defsubr (&Srun_window_configuration_change_hook);
6689 defsubr (&Sselect_window); 6624 defsubr (&Sselect_window);
6690 defsubr (&Sforce_window_update); 6625 defsubr (&Sforce_window_update);
diff --git a/src/window.h b/src/window.h
index c3f59e4b116..485734e907e 100644
--- a/src/window.h
+++ b/src/window.h
@@ -165,10 +165,6 @@ struct window
165 /* Unique number of window assigned when it was created. */ 165 /* Unique number of window assigned when it was created. */
166 Lisp_Object sequence_number; 166 Lisp_Object sequence_number;
167 167
168 /* Sequence number of window this window was cloned from. Identic
169 to sequence number if window was not cloned. */
170 Lisp_Object clone_number;
171
172 /* No permanent meaning; used by save-window-excursion's 168 /* No permanent meaning; used by save-window-excursion's
173 bookkeeping. */ 169 bookkeeping. */
174 Lisp_Object temslot; 170 Lisp_Object temslot;
diff --git a/src/xdisp.c b/src/xdisp.c
index f0b219702f6..a99f06a4e45 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -26428,8 +26428,7 @@ syms_of_xdisp (void)
26428 Vmessage_stack = Qnil; 26428 Vmessage_stack = Qnil;
26429 staticpro (&Vmessage_stack); 26429 staticpro (&Vmessage_stack);
26430 26430
26431 Qinhibit_redisplay = intern_c_string ("inhibit-redisplay"); 26431 DEFSYM (Qinhibit_redisplay, "inhibit-redisplay");
26432 staticpro (&Qinhibit_redisplay);
26433 26432
26434 message_dolog_marker1 = Fmake_marker (); 26433 message_dolog_marker1 = Fmake_marker ();
26435 staticpro (&message_dolog_marker1); 26434 staticpro (&message_dolog_marker1);
@@ -26454,141 +26453,72 @@ syms_of_xdisp (void)
26454 defsubr (&Sinvisible_p); 26453 defsubr (&Sinvisible_p);
26455 defsubr (&Scurrent_bidi_paragraph_direction); 26454 defsubr (&Scurrent_bidi_paragraph_direction);
26456 26455
26457 staticpro (&Qmenu_bar_update_hook); 26456 DEFSYM (Qmenu_bar_update_hook, "menu-bar-update-hook");
26458 Qmenu_bar_update_hook = intern_c_string ("menu-bar-update-hook"); 26457 DEFSYM (Qoverriding_terminal_local_map, "overriding-terminal-local-map");
26459 26458 DEFSYM (Qoverriding_local_map, "overriding-local-map");
26460 staticpro (&Qoverriding_terminal_local_map); 26459 DEFSYM (Qwindow_scroll_functions, "window-scroll-functions");
26461 Qoverriding_terminal_local_map = intern_c_string ("overriding-terminal-local-map"); 26460 DEFSYM (Qwindow_text_change_functions, "window-text-change-functions");
26462 26461 DEFSYM (Qredisplay_end_trigger_functions, "redisplay-end-trigger-functions");
26463 staticpro (&Qoverriding_local_map); 26462 DEFSYM (Qinhibit_point_motion_hooks, "inhibit-point-motion-hooks");
26464 Qoverriding_local_map = intern_c_string ("overriding-local-map"); 26463 DEFSYM (Qeval, "eval");
26465 26464 DEFSYM (QCdata, ":data");
26466 staticpro (&Qwindow_scroll_functions); 26465 DEFSYM (Qdisplay, "display");
26467 Qwindow_scroll_functions = intern_c_string ("window-scroll-functions"); 26466 DEFSYM (Qspace_width, "space-width");
26468 26467 DEFSYM (Qraise, "raise");
26469 staticpro (&Qwindow_text_change_functions); 26468 DEFSYM (Qslice, "slice");
26470 Qwindow_text_change_functions = intern_c_string ("window-text-change-functions"); 26469 DEFSYM (Qspace, "space");
26471 26470 DEFSYM (Qmargin, "margin");
26472 staticpro (&Qredisplay_end_trigger_functions); 26471 DEFSYM (Qpointer, "pointer");
26473 Qredisplay_end_trigger_functions = intern_c_string ("redisplay-end-trigger-functions"); 26472 DEFSYM (Qleft_margin, "left-margin");
26474 26473 DEFSYM (Qright_margin, "right-margin");
26475 staticpro (&Qinhibit_point_motion_hooks); 26474 DEFSYM (Qcenter, "center");
26476 Qinhibit_point_motion_hooks = intern_c_string ("inhibit-point-motion-hooks"); 26475 DEFSYM (Qline_height, "line-height");
26477 26476 DEFSYM (QCalign_to, ":align-to");
26478 Qeval = intern_c_string ("eval"); 26477 DEFSYM (QCrelative_width, ":relative-width");
26479 staticpro (&Qeval); 26478 DEFSYM (QCrelative_height, ":relative-height");
26480 26479 DEFSYM (QCeval, ":eval");
26481 QCdata = intern_c_string (":data"); 26480 DEFSYM (QCpropertize, ":propertize");
26482 staticpro (&QCdata); 26481 DEFSYM (QCfile, ":file");
26483 Qdisplay = intern_c_string ("display"); 26482 DEFSYM (Qfontified, "fontified");
26484 staticpro (&Qdisplay); 26483 DEFSYM (Qfontification_functions, "fontification-functions");
26485 Qspace_width = intern_c_string ("space-width"); 26484 DEFSYM (Qtrailing_whitespace, "trailing-whitespace");
26486 staticpro (&Qspace_width); 26485 DEFSYM (Qescape_glyph, "escape-glyph");
26487 Qraise = intern_c_string ("raise"); 26486 DEFSYM (Qnobreak_space, "nobreak-space");
26488 staticpro (&Qraise); 26487 DEFSYM (Qimage, "image");
26489 Qslice = intern_c_string ("slice"); 26488 DEFSYM (Qtext, "text");
26490 staticpro (&Qslice); 26489 DEFSYM (Qboth, "both");
26491 Qspace = intern_c_string ("space"); 26490 DEFSYM (Qboth_horiz, "both-horiz");
26492 staticpro (&Qspace); 26491 DEFSYM (Qtext_image_horiz, "text-image-horiz");
26493 Qmargin = intern_c_string ("margin"); 26492 DEFSYM (QCmap, ":map");
26494 staticpro (&Qmargin); 26493 DEFSYM (QCpointer, ":pointer");
26495 Qpointer = intern_c_string ("pointer"); 26494 DEFSYM (Qrect, "rect");
26496 staticpro (&Qpointer); 26495 DEFSYM (Qcircle, "circle");
26497 Qleft_margin = intern_c_string ("left-margin"); 26496 DEFSYM (Qpoly, "poly");
26498 staticpro (&Qleft_margin); 26497 DEFSYM (Qmessage_truncate_lines, "message-truncate-lines");
26499 Qright_margin = intern_c_string ("right-margin"); 26498 DEFSYM (Qgrow_only, "grow-only");
26500 staticpro (&Qright_margin); 26499 DEFSYM (Qinhibit_menubar_update, "inhibit-menubar-update");
26501 Qcenter = intern_c_string ("center"); 26500 DEFSYM (Qinhibit_eval_during_redisplay, "inhibit-eval-during-redisplay");
26502 staticpro (&Qcenter); 26501 DEFSYM (Qposition, "position");
26503 Qline_height = intern_c_string ("line-height"); 26502 DEFSYM (Qbuffer_position, "buffer-position");
26504 staticpro (&Qline_height); 26503 DEFSYM (Qobject, "object");
26505 QCalign_to = intern_c_string (":align-to"); 26504 DEFSYM (Qbar, "bar");
26506 staticpro (&QCalign_to); 26505 DEFSYM (Qhbar, "hbar");
26507 QCrelative_width = intern_c_string (":relative-width"); 26506 DEFSYM (Qbox, "box");
26508 staticpro (&QCrelative_width); 26507 DEFSYM (Qhollow, "hollow");
26509 QCrelative_height = intern_c_string (":relative-height"); 26508 DEFSYM (Qhand, "hand");
26510 staticpro (&QCrelative_height); 26509 DEFSYM (Qarrow, "arrow");
26511 QCeval = intern_c_string (":eval"); 26510 DEFSYM (Qtext, "text");
26512 staticpro (&QCeval); 26511 DEFSYM (Qinhibit_free_realized_faces, "inhibit-free-realized-faces");
26513 QCpropertize = intern_c_string (":propertize");
26514 staticpro (&QCpropertize);
26515 QCfile = intern_c_string (":file");
26516 staticpro (&QCfile);
26517 Qfontified = intern_c_string ("fontified");
26518 staticpro (&Qfontified);
26519 Qfontification_functions = intern_c_string ("fontification-functions");
26520 staticpro (&Qfontification_functions);
26521 Qtrailing_whitespace = intern_c_string ("trailing-whitespace");
26522 staticpro (&Qtrailing_whitespace);
26523 Qescape_glyph = intern_c_string ("escape-glyph");
26524 staticpro (&Qescape_glyph);
26525 Qnobreak_space = intern_c_string ("nobreak-space");
26526 staticpro (&Qnobreak_space);
26527 Qimage = intern_c_string ("image");
26528 staticpro (&Qimage);
26529 Qtext = intern_c_string ("text");
26530 staticpro (&Qtext);
26531 Qboth = intern_c_string ("both");
26532 staticpro (&Qboth);
26533 Qboth_horiz = intern_c_string ("both-horiz");
26534 staticpro (&Qboth_horiz);
26535 Qtext_image_horiz = intern_c_string ("text-image-horiz");
26536 staticpro (&Qtext_image_horiz);
26537 QCmap = intern_c_string (":map");
26538 staticpro (&QCmap);
26539 QCpointer = intern_c_string (":pointer");
26540 staticpro (&QCpointer);
26541 Qrect = intern_c_string ("rect");
26542 staticpro (&Qrect);
26543 Qcircle = intern_c_string ("circle");
26544 staticpro (&Qcircle);
26545 Qpoly = intern_c_string ("poly");
26546 staticpro (&Qpoly);
26547 Qmessage_truncate_lines = intern_c_string ("message-truncate-lines");
26548 staticpro (&Qmessage_truncate_lines);
26549 Qgrow_only = intern_c_string ("grow-only");
26550 staticpro (&Qgrow_only);
26551 Qinhibit_menubar_update = intern_c_string ("inhibit-menubar-update");
26552 staticpro (&Qinhibit_menubar_update);
26553 Qinhibit_eval_during_redisplay = intern_c_string ("inhibit-eval-during-redisplay");
26554 staticpro (&Qinhibit_eval_during_redisplay);
26555 Qposition = intern_c_string ("position");
26556 staticpro (&Qposition);
26557 Qbuffer_position = intern_c_string ("buffer-position");
26558 staticpro (&Qbuffer_position);
26559 Qobject = intern_c_string ("object");
26560 staticpro (&Qobject);
26561 Qbar = intern_c_string ("bar");
26562 staticpro (&Qbar);
26563 Qhbar = intern_c_string ("hbar");
26564 staticpro (&Qhbar);
26565 Qbox = intern_c_string ("box");
26566 staticpro (&Qbox);
26567 Qhollow = intern_c_string ("hollow");
26568 staticpro (&Qhollow);
26569 Qhand = intern_c_string ("hand");
26570 staticpro (&Qhand);
26571 Qarrow = intern_c_string ("arrow");
26572 staticpro (&Qarrow);
26573 Qtext = intern_c_string ("text");
26574 staticpro (&Qtext);
26575 Qinhibit_free_realized_faces = intern_c_string ("inhibit-free-realized-faces");
26576 staticpro (&Qinhibit_free_realized_faces);
26577 26512
26578 list_of_error = Fcons (Fcons (intern_c_string ("error"), 26513 list_of_error = Fcons (Fcons (intern_c_string ("error"),
26579 Fcons (intern_c_string ("void-variable"), Qnil)), 26514 Fcons (intern_c_string ("void-variable"), Qnil)),
26580 Qnil); 26515 Qnil);
26581 staticpro (&list_of_error); 26516 staticpro (&list_of_error);
26582 26517
26583 Qlast_arrow_position = intern_c_string ("last-arrow-position"); 26518 DEFSYM (Qlast_arrow_position, "last-arrow-position");
26584 staticpro (&Qlast_arrow_position); 26519 DEFSYM (Qlast_arrow_string, "last-arrow-string");
26585 Qlast_arrow_string = intern_c_string ("last-arrow-string"); 26520 DEFSYM (Qoverlay_arrow_string, "overlay-arrow-string");
26586 staticpro (&Qlast_arrow_string); 26521 DEFSYM (Qoverlay_arrow_bitmap, "overlay-arrow-bitmap");
26587
26588 Qoverlay_arrow_string = intern_c_string ("overlay-arrow-string");
26589 staticpro (&Qoverlay_arrow_string);
26590 Qoverlay_arrow_bitmap = intern_c_string ("overlay-arrow-bitmap");
26591 staticpro (&Qoverlay_arrow_bitmap);
26592 26522
26593 echo_buffer[0] = echo_buffer[1] = Qnil; 26523 echo_buffer[0] = echo_buffer[1] = Qnil;
26594 staticpro (&echo_buffer[0]); 26524 staticpro (&echo_buffer[0]);
@@ -26622,10 +26552,8 @@ syms_of_xdisp (void)
26622 staticpro (&previous_help_echo_string); 26552 staticpro (&previous_help_echo_string);
26623 help_echo_pos = -1; 26553 help_echo_pos = -1;
26624 26554
26625 Qright_to_left = intern_c_string ("right-to-left"); 26555 DEFSYM (Qright_to_left, "right-to-left");
26626 staticpro (&Qright_to_left); 26556 DEFSYM (Qleft_to_right, "left-to-right");
26627 Qleft_to_right = intern_c_string ("left-to-right");
26628 staticpro (&Qleft_to_right);
26629 26557
26630#ifdef HAVE_WINDOW_SYSTEM 26558#ifdef HAVE_WINDOW_SYSTEM
26631 DEFVAR_BOOL ("x-stretch-cursor", x_stretch_cursor_p, 26559 DEFVAR_BOOL ("x-stretch-cursor", x_stretch_cursor_p,
@@ -26945,8 +26873,7 @@ the frame's other specifications determine how to blink the cursor off. */);
26945If non-nil, windows are automatically scrolled horizontally to make 26873If non-nil, windows are automatically scrolled horizontally to make
26946point visible. */); 26874point visible. */);
26947 automatic_hscrolling_p = 1; 26875 automatic_hscrolling_p = 1;
26948 Qauto_hscroll_mode = intern_c_string ("auto-hscroll-mode"); 26876 DEFSYM (Qauto_hscroll_mode, "auto-hscroll-mode");
26949 staticpro (&Qauto_hscroll_mode);
26950 26877
26951 DEFVAR_INT ("hscroll-margin", hscroll_margin, 26878 DEFVAR_INT ("hscroll-margin", hscroll_margin,
26952 doc: /* *How many columns away from the window edge point is allowed to get 26879 doc: /* *How many columns away from the window edge point is allowed to get
@@ -27002,8 +26929,7 @@ property.
27002 26929
27003To add a prefix to non-continuation lines, use `line-prefix'. */); 26930To add a prefix to non-continuation lines, use `line-prefix'. */);
27004 Vwrap_prefix = Qnil; 26931 Vwrap_prefix = Qnil;
27005 staticpro (&Qwrap_prefix); 26932 DEFSYM (Qwrap_prefix, "wrap-prefix");
27006 Qwrap_prefix = intern_c_string ("wrap-prefix");
27007 Fmake_variable_buffer_local (Qwrap_prefix); 26933 Fmake_variable_buffer_local (Qwrap_prefix);
27008 26934
27009 DEFVAR_LISP ("line-prefix", Vline_prefix, 26935 DEFVAR_LISP ("line-prefix", Vline_prefix,
@@ -27016,8 +26942,7 @@ property.
27016 26942
27017To add a prefix to continuation lines, use `wrap-prefix'. */); 26943To add a prefix to continuation lines, use `wrap-prefix'. */);
27018 Vline_prefix = Qnil; 26944 Vline_prefix = Qnil;
27019 staticpro (&Qline_prefix); 26945 DEFSYM (Qline_prefix, "line-prefix");
27020 Qline_prefix = intern_c_string ("line-prefix");
27021 Fmake_variable_buffer_local (Qline_prefix); 26946 Fmake_variable_buffer_local (Qline_prefix);
27022 26947
27023 DEFVAR_BOOL ("inhibit-eval-during-redisplay", inhibit_eval_during_redisplay, 26948 DEFVAR_BOOL ("inhibit-eval-during-redisplay", inhibit_eval_during_redisplay,
diff --git a/src/xfaces.c b/src/xfaces.c
index 5833633c2e7..91f4b133466 100644
--- a/src/xfaces.c
+++ b/src/xfaces.c
@@ -3813,6 +3813,18 @@ Default face attributes override any local face attributes. */)
3813 Fmodify_frame_parameters (frame, Fcons (Fcons (Qfont, name), 3813 Fmodify_frame_parameters (frame, Fcons (Fcons (Qfont, name),
3814 Qnil)); 3814 Qnil));
3815 } 3815 }
3816
3817 if (STRINGP (gvec[LFACE_FOREGROUND_INDEX]))
3818 Fmodify_frame_parameters (frame,
3819 Fcons (Fcons (Qforeground_color,
3820 gvec[LFACE_FOREGROUND_INDEX]),
3821 Qnil));
3822
3823 if (STRINGP (gvec[LFACE_BACKGROUND_INDEX]))
3824 Fmodify_frame_parameters (frame,
3825 Fcons (Fcons (Qbackground_color,
3826 gvec[LFACE_BACKGROUND_INDEX]),
3827 Qnil));
3816 } 3828 }
3817 } 3829 }
3818 3830
@@ -6393,153 +6405,82 @@ DEFUN ("show-face-resources", Fshow_face_resources, Sshow_face_resources,
6393void 6405void
6394syms_of_xfaces (void) 6406syms_of_xfaces (void)
6395{ 6407{
6396 Qface = intern_c_string ("face"); 6408 DEFSYM (Qface, "face");
6397 staticpro (&Qface); 6409 DEFSYM (Qface_no_inherit, "face-no-inherit");
6398 Qface_no_inherit = intern_c_string ("face-no-inherit"); 6410 DEFSYM (Qbitmap_spec_p, "bitmap-spec-p");
6399 staticpro (&Qface_no_inherit); 6411 DEFSYM (Qframe_set_background_mode, "frame-set-background-mode");
6400 Qbitmap_spec_p = intern_c_string ("bitmap-spec-p");
6401 staticpro (&Qbitmap_spec_p);
6402 Qframe_set_background_mode = intern_c_string ("frame-set-background-mode");
6403 staticpro (&Qframe_set_background_mode);
6404 6412
6405 /* Lisp face attribute keywords. */ 6413 /* Lisp face attribute keywords. */
6406 QCfamily = intern_c_string (":family"); 6414 DEFSYM (QCfamily, ":family");
6407 staticpro (&QCfamily); 6415 DEFSYM (QCheight, ":height");
6408 QCheight = intern_c_string (":height"); 6416 DEFSYM (QCweight, ":weight");
6409 staticpro (&QCheight); 6417 DEFSYM (QCslant, ":slant");
6410 QCweight = intern_c_string (":weight"); 6418 DEFSYM (QCunderline, ":underline");
6411 staticpro (&QCweight); 6419 DEFSYM (QCinverse_video, ":inverse-video");
6412 QCslant = intern_c_string (":slant"); 6420 DEFSYM (QCreverse_video, ":reverse-video");
6413 staticpro (&QCslant); 6421 DEFSYM (QCforeground, ":foreground");
6414 QCunderline = intern_c_string (":underline"); 6422 DEFSYM (QCbackground, ":background");
6415 staticpro (&QCunderline); 6423 DEFSYM (QCstipple, ":stipple");
6416 QCinverse_video = intern_c_string (":inverse-video"); 6424 DEFSYM (QCwidth, ":width");
6417 staticpro (&QCinverse_video); 6425 DEFSYM (QCfont, ":font");
6418 QCreverse_video = intern_c_string (":reverse-video"); 6426 DEFSYM (QCfontset, ":fontset");
6419 staticpro (&QCreverse_video); 6427 DEFSYM (QCbold, ":bold");
6420 QCforeground = intern_c_string (":foreground"); 6428 DEFSYM (QCitalic, ":italic");
6421 staticpro (&QCforeground); 6429 DEFSYM (QCoverline, ":overline");
6422 QCbackground = intern_c_string (":background"); 6430 DEFSYM (QCstrike_through, ":strike-through");
6423 staticpro (&QCbackground); 6431 DEFSYM (QCbox, ":box");
6424 QCstipple = intern_c_string (":stipple"); 6432 DEFSYM (QCinherit, ":inherit");
6425 staticpro (&QCstipple);
6426 QCwidth = intern_c_string (":width");
6427 staticpro (&QCwidth);
6428 QCfont = intern_c_string (":font");
6429 staticpro (&QCfont);
6430 QCfontset = intern_c_string (":fontset");
6431 staticpro (&QCfontset);
6432 QCbold = intern_c_string (":bold");
6433 staticpro (&QCbold);
6434 QCitalic = intern_c_string (":italic");
6435 staticpro (&QCitalic);
6436 QCoverline = intern_c_string (":overline");
6437 staticpro (&QCoverline);
6438 QCstrike_through = intern_c_string (":strike-through");
6439 staticpro (&QCstrike_through);
6440 QCbox = intern_c_string (":box");
6441 staticpro (&QCbox);
6442 QCinherit = intern_c_string (":inherit");
6443 staticpro (&QCinherit);
6444 6433
6445 /* Symbols used for Lisp face attribute values. */ 6434 /* Symbols used for Lisp face attribute values. */
6446 QCcolor = intern_c_string (":color"); 6435 DEFSYM (QCcolor, ":color");
6447 staticpro (&QCcolor); 6436 DEFSYM (QCline_width, ":line-width");
6448 QCline_width = intern_c_string (":line-width"); 6437 DEFSYM (QCstyle, ":style");
6449 staticpro (&QCline_width); 6438 DEFSYM (Qreleased_button, "released-button");
6450 QCstyle = intern_c_string (":style"); 6439 DEFSYM (Qpressed_button, "pressed-button");
6451 staticpro (&QCstyle); 6440 DEFSYM (Qnormal, "normal");
6452 Qreleased_button = intern_c_string ("released-button"); 6441 DEFSYM (Qultra_light, "ultra-light");
6453 staticpro (&Qreleased_button); 6442 DEFSYM (Qextra_light, "extra-light");
6454 Qpressed_button = intern_c_string ("pressed-button"); 6443 DEFSYM (Qlight, "light");
6455 staticpro (&Qpressed_button); 6444 DEFSYM (Qsemi_light, "semi-light");
6456 Qnormal = intern_c_string ("normal"); 6445 DEFSYM (Qsemi_bold, "semi-bold");
6457 staticpro (&Qnormal); 6446 DEFSYM (Qbold, "bold");
6458 Qultra_light = intern_c_string ("ultra-light"); 6447 DEFSYM (Qextra_bold, "extra-bold");
6459 staticpro (&Qultra_light); 6448 DEFSYM (Qultra_bold, "ultra-bold");
6460 Qextra_light = intern_c_string ("extra-light"); 6449 DEFSYM (Qoblique, "oblique");
6461 staticpro (&Qextra_light); 6450 DEFSYM (Qitalic, "italic");
6462 Qlight = intern_c_string ("light"); 6451 DEFSYM (Qreverse_oblique, "reverse-oblique");
6463 staticpro (&Qlight); 6452 DEFSYM (Qreverse_italic, "reverse-italic");
6464 Qsemi_light = intern_c_string ("semi-light"); 6453 DEFSYM (Qultra_condensed, "ultra-condensed");
6465 staticpro (&Qsemi_light); 6454 DEFSYM (Qextra_condensed, "extra-condensed");
6466 Qsemi_bold = intern_c_string ("semi-bold"); 6455 DEFSYM (Qcondensed, "condensed");
6467 staticpro (&Qsemi_bold); 6456 DEFSYM (Qsemi_condensed, "semi-condensed");
6468 Qbold = intern_c_string ("bold"); 6457 DEFSYM (Qsemi_expanded, "semi-expanded");
6469 staticpro (&Qbold); 6458 DEFSYM (Qexpanded, "expanded");
6470 Qextra_bold = intern_c_string ("extra-bold"); 6459 DEFSYM (Qextra_expanded, "extra-expanded");
6471 staticpro (&Qextra_bold); 6460 DEFSYM (Qultra_expanded, "ultra-expanded");
6472 Qultra_bold = intern_c_string ("ultra-bold"); 6461 DEFSYM (Qbackground_color, "background-color");
6473 staticpro (&Qultra_bold); 6462 DEFSYM (Qforeground_color, "foreground-color");
6474 Qoblique = intern_c_string ("oblique"); 6463 DEFSYM (Qunspecified, "unspecified");
6475 staticpro (&Qoblique); 6464 DEFSYM (Qignore_defface, ":ignore-defface");
6476 Qitalic = intern_c_string ("italic"); 6465
6477 staticpro (&Qitalic); 6466 DEFSYM (Qface_alias, "face-alias");
6478 Qreverse_oblique = intern_c_string ("reverse-oblique"); 6467 DEFSYM (Qdefault, "default");
6479 staticpro (&Qreverse_oblique); 6468 DEFSYM (Qtool_bar, "tool-bar");
6480 Qreverse_italic = intern_c_string ("reverse-italic"); 6469 DEFSYM (Qregion, "region");
6481 staticpro (&Qreverse_italic); 6470 DEFSYM (Qfringe, "fringe");
6482 Qultra_condensed = intern_c_string ("ultra-condensed"); 6471 DEFSYM (Qheader_line, "header-line");
6483 staticpro (&Qultra_condensed); 6472 DEFSYM (Qscroll_bar, "scroll-bar");
6484 Qextra_condensed = intern_c_string ("extra-condensed"); 6473 DEFSYM (Qmenu, "menu");
6485 staticpro (&Qextra_condensed); 6474 DEFSYM (Qcursor, "cursor");
6486 Qcondensed = intern_c_string ("condensed"); 6475 DEFSYM (Qborder, "border");
6487 staticpro (&Qcondensed); 6476 DEFSYM (Qmouse, "mouse");
6488 Qsemi_condensed = intern_c_string ("semi-condensed"); 6477 DEFSYM (Qmode_line_inactive, "mode-line-inactive");
6489 staticpro (&Qsemi_condensed); 6478 DEFSYM (Qvertical_border, "vertical-border");
6490 Qsemi_expanded = intern_c_string ("semi-expanded"); 6479 DEFSYM (Qtty_color_desc, "tty-color-desc");
6491 staticpro (&Qsemi_expanded); 6480 DEFSYM (Qtty_color_standard_values, "tty-color-standard-values");
6492 Qexpanded = intern_c_string ("expanded"); 6481 DEFSYM (Qtty_color_by_index, "tty-color-by-index");
6493 staticpro (&Qexpanded); 6482 DEFSYM (Qtty_color_alist, "tty-color-alist");
6494 Qextra_expanded = intern_c_string ("extra-expanded"); 6483 DEFSYM (Qscalable_fonts_allowed, "scalable-fonts-allowed");
6495 staticpro (&Qextra_expanded);
6496 Qultra_expanded = intern_c_string ("ultra-expanded");
6497 staticpro (&Qultra_expanded);
6498 Qbackground_color = intern_c_string ("background-color");
6499 staticpro (&Qbackground_color);
6500 Qforeground_color = intern_c_string ("foreground-color");
6501 staticpro (&Qforeground_color);
6502 Qunspecified = intern_c_string ("unspecified");
6503 staticpro (&Qunspecified);
6504 Qignore_defface = intern_c_string (":ignore-defface");
6505 staticpro (&Qignore_defface);
6506
6507 Qface_alias = intern_c_string ("face-alias");
6508 staticpro (&Qface_alias);
6509 Qdefault = intern_c_string ("default");
6510 staticpro (&Qdefault);
6511 Qtool_bar = intern_c_string ("tool-bar");
6512 staticpro (&Qtool_bar);
6513 Qregion = intern_c_string ("region");
6514 staticpro (&Qregion);
6515 Qfringe = intern_c_string ("fringe");
6516 staticpro (&Qfringe);
6517 Qheader_line = intern_c_string ("header-line");
6518 staticpro (&Qheader_line);
6519 Qscroll_bar = intern_c_string ("scroll-bar");
6520 staticpro (&Qscroll_bar);
6521 Qmenu = intern_c_string ("menu");
6522 staticpro (&Qmenu);
6523 Qcursor = intern_c_string ("cursor");
6524 staticpro (&Qcursor);
6525 Qborder = intern_c_string ("border");
6526 staticpro (&Qborder);
6527 Qmouse = intern_c_string ("mouse");
6528 staticpro (&Qmouse);
6529 Qmode_line_inactive = intern_c_string ("mode-line-inactive");
6530 staticpro (&Qmode_line_inactive);
6531 Qvertical_border = intern_c_string ("vertical-border");
6532 staticpro (&Qvertical_border);
6533 Qtty_color_desc = intern_c_string ("tty-color-desc");
6534 staticpro (&Qtty_color_desc);
6535 Qtty_color_standard_values = intern_c_string ("tty-color-standard-values");
6536 staticpro (&Qtty_color_standard_values);
6537 Qtty_color_by_index = intern_c_string ("tty-color-by-index");
6538 staticpro (&Qtty_color_by_index);
6539 Qtty_color_alist = intern_c_string ("tty-color-alist");
6540 staticpro (&Qtty_color_alist);
6541 Qscalable_fonts_allowed = intern_c_string ("scalable-fonts-allowed");
6542 staticpro (&Qscalable_fonts_allowed);
6543 6484
6544 Vparam_value_alist = Fcons (Fcons (Qnil, Qnil), Qnil); 6485 Vparam_value_alist = Fcons (Fcons (Qnil, Qnil), Qnil);
6545 staticpro (&Vparam_value_alist); 6486 staticpro (&Vparam_value_alist);
diff --git a/src/xfns.c b/src/xfns.c
index 2b2ecf93739..c70f4bb9a82 100644
--- a/src/xfns.c
+++ b/src/xfns.c
@@ -5797,25 +5797,14 @@ syms_of_xfns (void)
5797 /* The section below is built by the lisp expression at the top of the file, 5797 /* The section below is built by the lisp expression at the top of the file,
5798 just above where these variables are declared. */ 5798 just above where these variables are declared. */
5799 /*&&& init symbols here &&&*/ 5799 /*&&& init symbols here &&&*/
5800 Qnone = intern_c_string ("none"); 5800 DEFSYM (Qnone, "none");
5801 staticpro (&Qnone); 5801 DEFSYM (Qsuppress_icon, "suppress-icon");
5802 Qsuppress_icon = intern_c_string ("suppress-icon"); 5802 DEFSYM (Qundefined_color, "undefined-color");
5803 staticpro (&Qsuppress_icon); 5803 DEFSYM (Qcompound_text, "compound-text");
5804 Qundefined_color = intern_c_string ("undefined-color"); 5804 DEFSYM (Qcancel_timer, "cancel-timer");
5805 staticpro (&Qundefined_color); 5805 DEFSYM (Qfont_param, "font-parameter");
5806 Qcompound_text = intern_c_string ("compound-text");
5807 staticpro (&Qcompound_text);
5808 Qcancel_timer = intern_c_string ("cancel-timer");
5809 staticpro (&Qcancel_timer);
5810 Qfont_param = intern_c_string ("font-parameter");
5811 staticpro (&Qfont_param);
5812 /* This is the end of symbol initialization. */ 5806 /* This is the end of symbol initialization. */
5813 5807
5814 /* Text property `display' should be nonsticky by default. */
5815 Vtext_property_default_nonsticky
5816 = Fcons (Fcons (Qdisplay, Qt), Vtext_property_default_nonsticky);
5817
5818
5819 Fput (Qundefined_color, Qerror_conditions, 5808 Fput (Qundefined_color, Qerror_conditions,
5820 pure_cons (Qundefined_color, pure_cons (Qerror, Qnil))); 5809 pure_cons (Qundefined_color, pure_cons (Qerror, Qnil)));
5821 Fput (Qundefined_color, Qerror_message, 5810 Fput (Qundefined_color, Qerror_message,
diff --git a/src/xgselect.c b/src/xgselect.c
index 0d154f6496a..9ccdd37489f 100644
--- a/src/xgselect.c
+++ b/src/xgselect.c
@@ -15,14 +15,14 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15GNU General Public License for more details. 15GNU General Public License for more details.
16 16
17You should have received a copy of the GNU General Public License 17You should have received a copy of the GNU General Public License
18along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ 18along with GNU Emacs. If not, see <http§://www.gnu.org/licenses/>. */
19 19
20#include <config.h> 20#include <config.h>
21 21
22#include <setjmp.h> 22#include <setjmp.h>
23#include "xgselect.h" 23#include "xgselect.h"
24 24
25#if defined (USE_GTK) || defined (HAVE_GCONF) 25#if defined (USE_GTK) || defined (HAVE_GCONF) || defined (HAVE_GSETTINGS)
26 26
27#include <glib.h> 27#include <glib.h>
28#include <errno.h> 28#include <errno.h>
@@ -149,13 +149,13 @@ xg_select (int max_fds, SELECT_TYPE *rfds, SELECT_TYPE *wfds, SELECT_TYPE *efds,
149 149
150 return retval; 150 return retval;
151} 151}
152#endif /* defined (USE_GTK) || defined (HAVE_GCONF) */ 152#endif /* USE_GTK || HAVE_GCONF || HAVE_GSETTINGS */
153 153
154void 154void
155xgselect_initialize (void) 155xgselect_initialize (void)
156{ 156{
157#if defined (USE_GTK) || defined (HAVE_GCONF) 157#if defined (USE_GTK) || defined (HAVE_GCONF) || defined (HAVE_GSETTINGS)
158 gfds_size = 128; 158 gfds_size = 128;
159 gfds = xmalloc (sizeof (*gfds)*gfds_size); 159 gfds = xmalloc (sizeof (*gfds)*gfds_size);
160#endif /* defined (USE_GTK) || defined (HAVE_GCONF) */ 160#endif
161} 161}
diff --git a/src/xmenu.c b/src/xmenu.c
index 1cb71187c0c..fc629b35104 100644
--- a/src/xmenu.c
+++ b/src/xmenu.c
@@ -2559,8 +2559,7 @@ DEFUN ("menu-or-popup-active-p", Fmenu_or_popup_active_p, Smenu_or_popup_active_
2559void 2559void
2560syms_of_xmenu (void) 2560syms_of_xmenu (void)
2561{ 2561{
2562 Qdebug_on_next_call = intern_c_string ("debug-on-next-call"); 2562 DEFSYM (Qdebug_on_next_call, "debug-on-next-call");
2563 staticpro (&Qdebug_on_next_call);
2564 2563
2565#ifdef USE_X_TOOLKIT 2564#ifdef USE_X_TOOLKIT
2566 widget_id_tick = (1<<16); 2565 widget_id_tick = (1<<16);
diff --git a/src/xsettings.c b/src/xsettings.c
index e2575650df9..06718df5a3c 100644
--- a/src/xsettings.c
+++ b/src/xsettings.c
@@ -34,9 +34,15 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
34 34
35#include <X11/Xproto.h> 35#include <X11/Xproto.h>
36 36
37#ifdef HAVE_GSETTINGS
38#include <glib-object.h>
39#include <gio/gio.h>
40#endif
41
37#ifdef HAVE_GCONF 42#ifdef HAVE_GCONF
38#include <gconf/gconf-client.h> 43#include <gconf/gconf-client.h>
39#endif 44#endif
45
40#ifdef HAVE_XFT 46#ifdef HAVE_XFT
41#include <X11/Xft/Xft.h> 47#include <X11/Xft/Xft.h>
42#endif 48#endif
@@ -48,10 +54,7 @@ static Lisp_Object Qmonospace_font_name, Qfont_name, Qfont_render,
48 Qtool_bar_style; 54 Qtool_bar_style;
49static Lisp_Object current_tool_bar_style; 55static Lisp_Object current_tool_bar_style;
50 56
51#ifdef HAVE_GCONF 57/* Store an config changed event in to the event queue. */
52static GConfClient *gconf_client;
53#endif
54
55 58
56static void 59static void
57store_config_changed_event (Lisp_Object arg, Lisp_Object display_name) 60store_config_changed_event (Lisp_Object arg, Lisp_Object display_name)
@@ -64,6 +67,97 @@ store_config_changed_event (Lisp_Object arg, Lisp_Object display_name)
64 kbd_buffer_store_event (&event); 67 kbd_buffer_store_event (&event);
65} 68}
66 69
70/* Return non-zero if DPYINFO is still valid. */
71static int
72dpyinfo_valid (struct x_display_info *dpyinfo)
73{
74 int found = 0;
75 if (dpyinfo != NULL)
76 {
77 struct x_display_info *d;
78 for (d = x_display_list; !found && d; d = d->next)
79 found = d == dpyinfo && d->display == dpyinfo->display;
80 }
81 return found;
82}
83
84/* Store a monospace font change event if the monospaced font changed. */
85
86#ifdef HAVE_XFT
87static void
88store_monospaced_changed (const char *newfont)
89{
90 if (current_mono_font != NULL && strcmp (newfont, current_mono_font) == 0)
91 return; /* No change. */
92
93 xfree (current_mono_font);
94 current_mono_font = xstrdup (newfont);
95
96 if (dpyinfo_valid (first_dpyinfo) && use_system_font)
97 {
98 store_config_changed_event (Qmonospace_font_name,
99 XCAR (first_dpyinfo->name_list_element));
100 }
101}
102
103/* Store a font name change event if the font name changed. */
104
105static void
106store_font_name_changed (const char *newfont)
107{
108 if (current_font != NULL && strcmp (newfont, current_font) == 0)
109 return; /* No change. */
110
111 xfree (current_font);
112 current_font = xstrdup (newfont);
113
114 if (dpyinfo_valid (first_dpyinfo))
115 {
116 store_config_changed_event (Qfont_name,
117 XCAR (first_dpyinfo->name_list_element));
118 }
119}
120#endif /* HAVE_XFT */
121
122/* Map TOOL_BAR_STYLE from a string to its correspinding Lisp value.
123 Return Qnil if TOOL_BAR_STYLE is not known. */
124
125static Lisp_Object
126map_tool_bar_style (const char *tool_bar_style)
127{
128 Lisp_Object style = Qnil;
129 if (tool_bar_style)
130 {
131 if (strcmp (tool_bar_style, "both") == 0)
132 style = Qboth;
133 else if (strcmp (tool_bar_style, "both-horiz") == 0)
134 style = Qboth_horiz;
135 else if (strcmp (tool_bar_style, "icons") == 0)
136 style = Qimage;
137 else if (strcmp (tool_bar_style, "text") == 0)
138 style = Qtext;
139 }
140
141 return style;
142}
143
144/* Store a tool bar style change event if the tool bar style changed. */
145
146static void
147store_tool_bar_style_changed (const char *newstyle,
148 struct x_display_info *dpyinfo)
149{
150 Lisp_Object style = map_tool_bar_style (newstyle);
151 if (EQ (current_tool_bar_style, style))
152 return; /* No change. */
153
154 current_tool_bar_style = style;
155 if (dpyinfo_valid (dpyinfo))
156 store_config_changed_event (Qtool_bar_style,
157 XCAR (dpyinfo->name_list_element));
158}
159
160
67#define XSETTINGS_FONT_NAME "Gtk/FontName" 161#define XSETTINGS_FONT_NAME "Gtk/FontName"
68#define XSETTINGS_TOOL_BAR_STYLE "Gtk/ToolbarStyle" 162#define XSETTINGS_TOOL_BAR_STYLE "Gtk/ToolbarStyle"
69 163
@@ -83,55 +177,128 @@ struct xsettings
83 FcBool aa, hinting; 177 FcBool aa, hinting;
84 int rgba, lcdfilter, hintstyle; 178 int rgba, lcdfilter, hintstyle;
85 double dpi; 179 double dpi;
86#endif
87 180
88 char *font; 181 char *font;
182#endif
183
89 char *tb_style; 184 char *tb_style;
90 185
91 unsigned seen; 186 unsigned seen;
92}; 187};
93 188
189#ifdef HAVE_GSETTINGS
190#define GSETTINGS_SCHEMA "org.gnome.desktop.interface"
191#define GSETTINGS_TOOL_BAR_STYLE "toolbar-style"
192
193#ifdef HAVE_XFT
194#define GSETTINGS_MONO_FONT "monospace-font-name"
195#define GSETTINGS_FONT_NAME "font-name"
196#endif
197
198
199/* The single GSettings instance, or NULL if not connected to GSettings. */
200
201static GSettings *gsettings_client;
202
203/* Callback called when something changed in GSettings. */
204
205static void
206something_changed_gsettingsCB (GSettings *settings,
207 gchar *key,
208 gpointer user_data)
209{
210 GVariant *val;
211
212 if (strcmp (key, GSETTINGS_TOOL_BAR_STYLE) == 0)
213 {
214 val = g_settings_get_value (settings, GSETTINGS_TOOL_BAR_STYLE);
215 if (val)
216 {
217 g_variant_ref_sink (val);
218 if (g_variant_is_of_type (val, G_VARIANT_TYPE_STRING))
219 {
220 const gchar *newstyle = g_variant_get_string (val, NULL);
221 store_tool_bar_style_changed (newstyle, first_dpyinfo);
222 }
223 g_variant_unref (val);
224 }
225 }
226#ifdef HAVE_XFT
227 else if (strcmp (key, GSETTINGS_MONO_FONT) == 0)
228 {
229 val = g_settings_get_value (settings, GSETTINGS_MONO_FONT);
230 if (val)
231 {
232 g_variant_ref_sink (val);
233 if (g_variant_is_of_type (val, G_VARIANT_TYPE_STRING))
234 {
235 const gchar *newfont = g_variant_get_string (val, NULL);
236 store_monospaced_changed (newfont);
237 }
238 g_variant_unref (val);
239 }
240 }
241 else if (strcmp (key, GSETTINGS_FONT_NAME) == 0)
242 {
243 val = g_settings_get_value (settings, GSETTINGS_FONT_NAME);
244 if (val)
245 {
246 g_variant_ref_sink (val);
247 if (g_variant_is_of_type (val, G_VARIANT_TYPE_STRING))
248 {
249 const gchar *newfont = g_variant_get_string (val, NULL);
250 store_font_name_changed (newfont);
251 }
252 g_variant_unref (val);
253 }
254 }
255#endif /* HAVE_XFT */
256}
257
258#endif /* HAVE_GSETTINGS */
259
94#ifdef HAVE_GCONF 260#ifdef HAVE_GCONF
261#define GCONF_TOOL_BAR_STYLE "/desktop/gnome/interface/toolbar_style"
262#ifdef HAVE_XFT
263#define GCONF_MONO_FONT "/desktop/gnome/interface/monospace_font_name"
264#define GCONF_FONT_NAME "/desktop/gnome/interface/font_name"
265#endif
95 266
96#define SYSTEM_MONO_FONT "/desktop/gnome/interface/monospace_font_name" 267/* The single GConf instance, or NULL if not connected to GConf. */
97#define SYSTEM_FONT "/desktop/gnome/interface/font_name"
98 268
99/* Callback called when something changed in GConf that we care about, 269static GConfClient *gconf_client;
100 that is SYSTEM_MONO_FONT. */ 270
271/* Callback called when something changed in GConf that we care about. */
101 272
102static void 273static void
103something_changedCB (GConfClient *client, 274something_changed_gconfCB (GConfClient *client,
104 guint cnxn_id, 275 guint cnxn_id,
105 GConfEntry *entry, 276 GConfEntry *entry,
106 gpointer user_data) 277 gpointer user_data)
107{ 278{
108 GConfValue *v = gconf_entry_get_value (entry); 279 GConfValue *v = gconf_entry_get_value (entry);
280 const char *key = gconf_entry_get_key (entry);
109 281
110 if (!v) return; 282 if (!v || v->type != GCONF_VALUE_STRING || ! key) return;
111 if (v->type == GCONF_VALUE_STRING) 283 if (strcmp (key, GCONF_TOOL_BAR_STYLE) == 0)
112 { 284 {
113 const char *value = gconf_value_get_string (v); 285 const char *value = gconf_value_get_string (v);
114 if (current_mono_font != NULL && strcmp (value, current_mono_font) == 0) 286 store_tool_bar_style_changed (value, first_dpyinfo);
115 return; /* No change. */
116
117 xfree (current_mono_font);
118 current_mono_font = xstrdup (value);
119 } 287 }
120 288#ifdef HAVE_XFT
121 289 else if (strcmp (key, GCONF_MONO_FONT) == 0)
122 if (first_dpyinfo != NULL) 290 {
291 const char *value = gconf_value_get_string (v);
292 store_monospaced_changed (value);
293 }
294 else if (strcmp (key, GCONF_FONT_NAME) == 0)
123 { 295 {
124 /* Check if display still open */ 296 const char *value = gconf_value_get_string (v);
125 struct x_display_info *dpyinfo; 297 store_font_name_changed (value);
126 int found = 0;
127 for (dpyinfo = x_display_list; !found && dpyinfo; dpyinfo = dpyinfo->next)
128 found = dpyinfo == first_dpyinfo;
129
130 if (found && use_system_font)
131 store_config_changed_event (Qmonospace_font_name,
132 XCAR (first_dpyinfo->name_list_element));
133 } 298 }
299#endif /* HAVE_XFT */
134} 300}
301
135#endif /* HAVE_GCONF */ 302#endif /* HAVE_GCONF */
136 303
137#ifdef HAVE_XFT 304#ifdef HAVE_XFT
@@ -274,14 +441,14 @@ parse_settings (unsigned char *prop,
274 bytes_parsed += 4; /* Skip serial for this value */ 441 bytes_parsed += 4; /* Skip serial for this value */
275 if (bytes_parsed > bytes) return BadLength; 442 if (bytes_parsed > bytes) return BadLength;
276 443
277 want_this = 444 want_this =
278#ifdef HAVE_XFT 445#ifdef HAVE_XFT
279 (nlen > 6 && strncmp (name, "Xft/", 4) == 0) 446 (nlen > 6 && strncmp (name, "Xft/", 4) == 0)
447 || strcmp (XSETTINGS_FONT_NAME, name) == 0
280 || 448 ||
281#endif 449#endif
282 (strcmp (XSETTINGS_FONT_NAME, name) == 0) 450 strcmp (XSETTINGS_TOOL_BAR_STYLE, name) == 0;
283 || (strcmp (XSETTINGS_TOOL_BAR_STYLE, name) == 0); 451
284
285 switch (type) 452 switch (type)
286 { 453 {
287 case 0: /* Integer */ 454 case 0: /* Integer */
@@ -322,17 +489,17 @@ parse_settings (unsigned char *prop,
322 if (want_this) 489 if (want_this)
323 { 490 {
324 ++settings_seen; 491 ++settings_seen;
325 if (strcmp (name, XSETTINGS_FONT_NAME) == 0) 492 if (strcmp (name, XSETTINGS_TOOL_BAR_STYLE) == 0)
326 {
327 settings->font = xstrdup (sval);
328 settings->seen |= SEEN_FONT;
329 }
330 else if (strcmp (name, XSETTINGS_TOOL_BAR_STYLE) == 0)
331 { 493 {
332 settings->tb_style = xstrdup (sval); 494 settings->tb_style = xstrdup (sval);
333 settings->seen |= SEEN_TB_STYLE; 495 settings->seen |= SEEN_TB_STYLE;
334 } 496 }
335#ifdef HAVE_XFT 497#ifdef HAVE_XFT
498 else if (strcmp (name, XSETTINGS_FONT_NAME) == 0)
499 {
500 settings->font = xstrdup (sval);
501 settings->seen |= SEEN_FONT;
502 }
336 else if (strcmp (name, "Xft/Antialias") == 0) 503 else if (strcmp (name, "Xft/Antialias") == 0)
337 { 504 {
338 settings->seen |= SEEN_AA; 505 settings->seen |= SEEN_AA;
@@ -397,6 +564,10 @@ parse_settings (unsigned char *prop,
397 return settings_seen; 564 return settings_seen;
398} 565}
399 566
567/* Read settings from the XSettings property window on display for DPYINFO.
568 Store settings read in SETTINGS.
569 Return non-zero if successful, zero if not. */
570
400static int 571static int
401read_settings (struct x_display_info *dpyinfo, struct xsettings *settings) 572read_settings (struct x_display_info *dpyinfo, struct xsettings *settings)
402{ 573{
@@ -426,6 +597,8 @@ read_settings (struct x_display_info *dpyinfo, struct xsettings *settings)
426 return rc != 0; 597 return rc != 0;
427} 598}
428 599
600/* Apply Xft settings in SETTINGS to the Xft library.
601 If SEND_EVENT_P is non-zero store a Lisp event that Xft settings changed. */
429 602
430static void 603static void
431apply_xft_settings (struct x_display_info *dpyinfo, 604apply_xft_settings (struct x_display_info *dpyinfo,
@@ -444,9 +617,9 @@ apply_xft_settings (struct x_display_info *dpyinfo,
444 pat); 617 pat);
445 FcPatternGetBool (pat, FC_ANTIALIAS, 0, &oldsettings.aa); 618 FcPatternGetBool (pat, FC_ANTIALIAS, 0, &oldsettings.aa);
446 FcPatternGetBool (pat, FC_HINTING, 0, &oldsettings.hinting); 619 FcPatternGetBool (pat, FC_HINTING, 0, &oldsettings.hinting);
447# ifdef FC_HINT_STYLE 620#ifdef FC_HINT_STYLE
448 FcPatternGetInteger (pat, FC_HINT_STYLE, 0, &oldsettings.hintstyle); 621 FcPatternGetInteger (pat, FC_HINT_STYLE, 0, &oldsettings.hintstyle);
449# endif 622#endif
450 FcPatternGetInteger (pat, FC_LCD_FILTER, 0, &oldsettings.lcdfilter); 623 FcPatternGetInteger (pat, FC_LCD_FILTER, 0, &oldsettings.lcdfilter);
451 FcPatternGetInteger (pat, FC_RGBA, 0, &oldsettings.rgba); 624 FcPatternGetInteger (pat, FC_RGBA, 0, &oldsettings.rgba);
452 FcPatternGetDouble (pat, FC_DPI, 0, &oldsettings.dpi); 625 FcPatternGetDouble (pat, FC_DPI, 0, &oldsettings.dpi);
@@ -485,7 +658,7 @@ apply_xft_settings (struct x_display_info *dpyinfo,
485 oldsettings.lcdfilter = settings->lcdfilter; 658 oldsettings.lcdfilter = settings->lcdfilter;
486 } 659 }
487 660
488# ifdef FC_HINT_STYLE 661#ifdef FC_HINT_STYLE
489 if ((settings->seen & SEEN_HINTSTYLE) != 0 662 if ((settings->seen & SEEN_HINTSTYLE) != 0
490 && oldsettings.hintstyle != settings->hintstyle) 663 && oldsettings.hintstyle != settings->hintstyle)
491 { 664 {
@@ -494,7 +667,7 @@ apply_xft_settings (struct x_display_info *dpyinfo,
494 ++changed; 667 ++changed;
495 oldsettings.hintstyle = settings->hintstyle; 668 oldsettings.hintstyle = settings->hintstyle;
496 } 669 }
497# endif 670#endif
498 671
499 if ((settings->seen & SEEN_DPI) != 0 && oldsettings.dpi != settings->dpi 672 if ((settings->seen & SEEN_DPI) != 0 && oldsettings.dpi != settings->dpi
500 && settings->dpi > 0) 673 && settings->dpi > 0)
@@ -545,11 +718,13 @@ apply_xft_settings (struct x_display_info *dpyinfo,
545#endif /* HAVE_XFT */ 718#endif /* HAVE_XFT */
546} 719}
547 720
721/* Read XSettings from the display for DPYINFO.
722 If SEND_EVENT_P is non-zero store a Lisp event settings that changed. */
723
548static void 724static void
549read_and_apply_settings (struct x_display_info *dpyinfo, int send_event_p) 725read_and_apply_settings (struct x_display_info *dpyinfo, int send_event_p)
550{ 726{
551 struct xsettings settings; 727 struct xsettings settings;
552 Lisp_Object dpyname = XCAR (dpyinfo->name_list_element);
553 728
554 if (!read_settings (dpyinfo, &settings)) 729 if (!read_settings (dpyinfo, &settings))
555 return; 730 return;
@@ -557,38 +732,29 @@ read_and_apply_settings (struct x_display_info *dpyinfo, int send_event_p)
557 apply_xft_settings (dpyinfo, True, &settings); 732 apply_xft_settings (dpyinfo, True, &settings);
558 if (settings.seen & SEEN_TB_STYLE) 733 if (settings.seen & SEEN_TB_STYLE)
559 { 734 {
560 Lisp_Object style = Qnil; 735 if (send_event_p)
561 if (strcmp (settings.tb_style, "both") == 0) 736 store_tool_bar_style_changed (settings.tb_style, dpyinfo);
562 style = Qboth; 737 else
563 else if (strcmp (settings.tb_style, "both-horiz") == 0) 738 current_tool_bar_style = map_tool_bar_style (settings.tb_style);
564 style = Qboth_horiz;
565 else if (strcmp (settings.tb_style, "icons") == 0)
566 style = Qimage;
567 else if (strcmp (settings.tb_style, "text") == 0)
568 style = Qtext;
569 if (!NILP (style) && !EQ (style, current_tool_bar_style))
570 {
571 current_tool_bar_style = style;
572 if (send_event_p)
573 store_config_changed_event (Qtool_bar_style, dpyname);
574 }
575 xfree (settings.tb_style); 739 xfree (settings.tb_style);
576 } 740 }
577 741#ifdef HAVE_XFT
578 if (settings.seen & SEEN_FONT) 742 if (settings.seen & SEEN_FONT)
579 { 743 {
580 if (!current_font || strcmp (current_font, settings.font) != 0) 744 if (send_event_p)
745 store_font_name_changed (settings.font);
746 else
581 { 747 {
582 xfree (current_font); 748 xfree (current_font);
583 current_font = settings.font; 749 current_font = xstrdup (settings.font);
584 if (send_event_p)
585 store_config_changed_event (Qfont_name, dpyname);
586 } 750 }
587 else 751 xfree (settings.font);
588 xfree (settings.font);
589 } 752 }
753#endif
590} 754}
591 755
756/* Check if EVENT for the display in DPYINFO is XSettings related. */
757
592void 758void
593xft_settings_event (struct x_display_info *dpyinfo, XEvent *event) 759xft_settings_event (struct x_display_info *dpyinfo, XEvent *event)
594{ 760{
@@ -630,41 +796,130 @@ xft_settings_event (struct x_display_info *dpyinfo, XEvent *event)
630 read_and_apply_settings (dpyinfo, True); 796 read_and_apply_settings (dpyinfo, True);
631} 797}
632 798
799/* Initialize GSettings and read startup values. */
800
801static void
802init_gsettings (void)
803{
804#ifdef HAVE_GSETTINGS
805 GVariant *val;
806 const gchar *const *schemas;
807 int schema_found = 0;
808
809#ifdef HAVE_G_TYPE_INIT
810 g_type_init ();
811#endif
812
813 schemas = g_settings_list_schemas();
814 if (schemas == NULL) return;
815 while (! schema_found && *schemas != NULL)
816 schema_found = strcmp (*schemas++, GSETTINGS_SCHEMA) == 0;
817 if (!schema_found) return;
818
819 gsettings_client = g_settings_new (GSETTINGS_SCHEMA);
820 if (!gsettings_client) return;
821 g_object_ref_sink (G_OBJECT (gsettings_client));
822 g_signal_connect (G_OBJECT (gsettings_client), "changed",
823 G_CALLBACK (something_changed_gsettingsCB), NULL);
824
825 val = g_settings_get_value (gsettings_client, GSETTINGS_TOOL_BAR_STYLE);
826 if (val)
827 {
828 g_variant_ref_sink (val);
829 if (g_variant_is_of_type (val, G_VARIANT_TYPE_STRING))
830 current_tool_bar_style
831 = map_tool_bar_style (g_variant_get_string (val, NULL));
832 g_variant_unref (val);
833 }
834
835#ifdef HAVE_XFT
836 val = g_settings_get_value (gsettings_client, GSETTINGS_MONO_FONT);
837 if (val)
838 {
839 g_variant_ref_sink (val);
840 if (g_variant_is_of_type (val, G_VARIANT_TYPE_STRING))
841 current_mono_font = xstrdup (g_variant_get_string (val, NULL));
842 g_variant_unref (val);
843 }
844
845 val = g_settings_get_value (gsettings_client, GSETTINGS_FONT_NAME);
846 if (val)
847 {
848 g_variant_ref_sink (val);
849 if (g_variant_is_of_type (val, G_VARIANT_TYPE_STRING))
850 current_font = xstrdup (g_variant_get_string (val, NULL));
851 g_variant_unref (val);
852 }
853#endif /* HAVE_XFT */
854
855#endif /* HAVE_GSETTINGS */
856}
857
858/* Init GConf and read startup values. */
633 859
634static void 860static void
635init_gconf (void) 861init_gconf (void)
636{ 862{
637#if defined (HAVE_GCONF) && defined (HAVE_XFT) 863#if defined (HAVE_GCONF)
638 char *s; 864 char *s;
639 865
640#ifdef HAVE_G_TYPE_INIT 866#ifdef HAVE_G_TYPE_INIT
641 g_type_init (); 867 g_type_init ();
642#endif 868#endif
869
643 gconf_client = gconf_client_get_default (); 870 gconf_client = gconf_client_get_default ();
644 s = gconf_client_get_string (gconf_client, SYSTEM_MONO_FONT, NULL); 871 gconf_client_set_error_handling (gconf_client, GCONF_CLIENT_HANDLE_NONE);
872 gconf_client_add_dir (gconf_client,
873 GCONF_TOOL_BAR_STYLE,
874 GCONF_CLIENT_PRELOAD_ONELEVEL,
875 NULL);
876 gconf_client_notify_add (gconf_client,
877 GCONF_TOOL_BAR_STYLE,
878 something_changed_gconfCB,
879 NULL, NULL, NULL);
880
881 s = gconf_client_get_string (gconf_client, GCONF_TOOL_BAR_STYLE, NULL);
882 if (s)
883 {
884 current_tool_bar_style = map_tool_bar_style (s);
885 g_free (s);
886 }
887
888#ifdef HAVE_XFT
889 s = gconf_client_get_string (gconf_client, GCONF_MONO_FONT, NULL);
645 if (s) 890 if (s)
646 { 891 {
647 current_mono_font = xstrdup (s); 892 current_mono_font = xstrdup (s);
648 g_free (s); 893 g_free (s);
649 } 894 }
650 s = gconf_client_get_string (gconf_client, SYSTEM_FONT, NULL); 895 s = gconf_client_get_string (gconf_client, GCONF_FONT_NAME, NULL);
651 if (s) 896 if (s)
652 { 897 {
653 current_font = xstrdup (s); 898 current_font = xstrdup (s);
654 g_free (s); 899 g_free (s);
655 } 900 }
656 gconf_client_set_error_handling (gconf_client, GCONF_CLIENT_HANDLE_NONE);
657 gconf_client_add_dir (gconf_client, 901 gconf_client_add_dir (gconf_client,
658 SYSTEM_MONO_FONT, 902 GCONF_MONO_FONT,
903 GCONF_CLIENT_PRELOAD_ONELEVEL,
904 NULL);
905 gconf_client_notify_add (gconf_client,
906 GCONF_MONO_FONT,
907 something_changed_gconfCB,
908 NULL, NULL, NULL);
909 gconf_client_add_dir (gconf_client,
910 GCONF_FONT_NAME,
659 GCONF_CLIENT_PRELOAD_ONELEVEL, 911 GCONF_CLIENT_PRELOAD_ONELEVEL,
660 NULL); 912 NULL);
661 gconf_client_notify_add (gconf_client, 913 gconf_client_notify_add (gconf_client,
662 SYSTEM_MONO_FONT, 914 GCONF_FONT_NAME,
663 something_changedCB, 915 something_changed_gconfCB,
664 NULL, NULL, NULL); 916 NULL, NULL, NULL);
665#endif /* HAVE_GCONF && HAVE_XFT */ 917#endif /* HAVE_XFT */
918#endif /* HAVE_GCONF */
666} 919}
667 920
921/* Init Xsettings and read startup values. */
922
668static void 923static void
669init_xsettings (struct x_display_info *dpyinfo) 924init_xsettings (struct x_display_info *dpyinfo)
670{ 925{
@@ -689,8 +944,12 @@ xsettings_initialize (struct x_display_info *dpyinfo)
689 if (first_dpyinfo == NULL) first_dpyinfo = dpyinfo; 944 if (first_dpyinfo == NULL) first_dpyinfo = dpyinfo;
690 init_gconf (); 945 init_gconf ();
691 init_xsettings (dpyinfo); 946 init_xsettings (dpyinfo);
947 init_gsettings ();
692} 948}
693 949
950/* Return the system monospaced font.
951 May be NULL if not known. */
952
694const char * 953const char *
695xsettings_get_system_font (void) 954xsettings_get_system_font (void)
696{ 955{
@@ -698,6 +957,9 @@ xsettings_get_system_font (void)
698} 957}
699 958
700#ifdef USE_LUCID 959#ifdef USE_LUCID
960/* Return the system font.
961 May be NULL if not known. */
962
701const char * 963const char *
702xsettings_get_system_normal_font (void) 964xsettings_get_system_normal_font (void)
703{ 965{
@@ -746,16 +1008,16 @@ syms_of_xsettings (void)
746 current_mono_font = NULL; 1008 current_mono_font = NULL;
747 current_font = NULL; 1009 current_font = NULL;
748 first_dpyinfo = NULL; 1010 first_dpyinfo = NULL;
1011#ifdef HAVE_GSETTINGS
1012 gsettings_client = NULL;
1013#endif
749#ifdef HAVE_GCONF 1014#ifdef HAVE_GCONF
750 gconf_client = NULL; 1015 gconf_client = NULL;
751#endif 1016#endif
752 1017
753 Qmonospace_font_name = intern_c_string ("monospace-font-name"); 1018 DEFSYM (Qmonospace_font_name, "monospace-font-name");
754 staticpro (&Qmonospace_font_name); 1019 DEFSYM (Qfont_name, "font-name");
755 Qfont_name = intern_c_string ("font-name"); 1020 DEFSYM (Qfont_render, "font-render");
756 staticpro (&Qfont_name);
757 Qfont_render = intern_c_string ("font-render");
758 staticpro (&Qfont_render);
759 defsubr (&Sfont_get_system_font); 1021 defsubr (&Sfont_get_system_font);
760 defsubr (&Sfont_get_system_normal_font); 1022 defsubr (&Sfont_get_system_normal_font);
761 1023
@@ -772,14 +1034,13 @@ If this variable is nil, Emacs ignores system font changes. */);
772 1034
773#ifdef HAVE_XFT 1035#ifdef HAVE_XFT
774 Fprovide (intern_c_string ("font-render-setting"), Qnil); 1036 Fprovide (intern_c_string ("font-render-setting"), Qnil);
775#ifdef HAVE_GCONF 1037#if defined (HAVE_GCONF) || defined (HAVE_GSETTINGS)
776 Fprovide (intern_c_string ("system-font-setting"), Qnil); 1038 Fprovide (intern_c_string ("system-font-setting"), Qnil);
777#endif 1039#endif
778#endif 1040#endif
779 1041
780 current_tool_bar_style = Qnil; 1042 current_tool_bar_style = Qnil;
781 Qtool_bar_style = intern_c_string ("tool-bar-style"); 1043 DEFSYM (Qtool_bar_style, "tool-bar-style");
782 staticpro (&Qtool_bar_style);
783 defsubr (&Stool_bar_get_system_style); 1044 defsubr (&Stool_bar_get_system_style);
784 1045
785 Fprovide (intern_c_string ("dynamic-setting"), Qnil); 1046 Fprovide (intern_c_string ("dynamic-setting"), Qnil);
diff --git a/src/xterm.c b/src/xterm.c
index bc7592795c4..20516ee9d6f 100644
--- a/src/xterm.c
+++ b/src/xterm.c
@@ -10698,11 +10698,8 @@ syms_of_xterm (void)
10698 staticpro (&last_mouse_scroll_bar); 10698 staticpro (&last_mouse_scroll_bar);
10699 last_mouse_scroll_bar = Qnil; 10699 last_mouse_scroll_bar = Qnil;
10700 10700
10701 staticpro (&Qvendor_specific_keysyms); 10701 DEFSYM (Qvendor_specific_keysyms, "vendor-specific-keysyms");
10702 Qvendor_specific_keysyms = intern_c_string ("vendor-specific-keysyms"); 10702 DEFSYM (Qlatin_1, "latin-1");
10703
10704 staticpro (&Qlatin_1);
10705 Qlatin_1 = intern_c_string ("latin-1");
10706 10703
10707 staticpro (&last_mouse_press_frame); 10704 staticpro (&last_mouse_press_frame);
10708 last_mouse_press_frame = Qnil; 10705 last_mouse_press_frame = Qnil;
@@ -10711,8 +10708,7 @@ syms_of_xterm (void)
10711 xg_default_icon_file = make_pure_c_string ("icons/hicolor/scalable/apps/emacs.svg"); 10708 xg_default_icon_file = make_pure_c_string ("icons/hicolor/scalable/apps/emacs.svg");
10712 staticpro (&xg_default_icon_file); 10709 staticpro (&xg_default_icon_file);
10713 10710
10714 Qx_gtk_map_stock = intern_c_string ("x-gtk-map-stock"); 10711 DEFSYM (Qx_gtk_map_stock, "x-gtk-map-stock");
10715 staticpro (&Qx_gtk_map_stock);
10716#endif 10712#endif
10717 10713
10718 DEFVAR_BOOL ("x-use-underline-position-properties", 10714 DEFVAR_BOOL ("x-use-underline-position-properties",