aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJoakim Verona2011-11-22 15:46:22 +0100
committerJoakim Verona2011-11-22 15:46:22 +0100
commita9c1e05adddf6011c61c0df582c5f2ed423f35c8 (patch)
tree489fac119296416ba2f3530fd3bcb70efbbbdaa6 /src
parent40bb789236e486a3f36eefb2840c293369ce2af3 (diff)
parentb5afc20930c91159a1cbf629bcaa7e251653dc74 (diff)
downloademacs-a9c1e05adddf6011c61c0df582c5f2ed423f35c8.tar.gz
emacs-a9c1e05adddf6011c61c0df582c5f2ed423f35c8.zip
upstream
Diffstat (limited to 'src')
-rw-r--r--src/ChangeLog114
-rw-r--r--src/ChangeLog.12
-rw-r--r--src/ChangeLog.106
-rw-r--r--src/ChangeLog.1178
-rw-r--r--src/ChangeLog.214
-rw-r--r--src/ChangeLog.38
-rw-r--r--src/ChangeLog.44
-rw-r--r--src/ChangeLog.52
-rw-r--r--src/ChangeLog.64
-rw-r--r--src/ChangeLog.74
-rw-r--r--src/ChangeLog.810
-rw-r--r--src/ChangeLog.92
-rw-r--r--src/alloc.c8
-rw-r--r--src/bidi.c2
-rw-r--r--src/buffer.c4
-rw-r--r--src/buffer.h2
-rw-r--r--src/casetab.c2
-rw-r--r--src/ccl.c4
-rw-r--r--src/character.c2
-rw-r--r--src/character.h2
-rw-r--r--src/charset.c2
-rw-r--r--src/chartab.c2
-rw-r--r--src/dbusbind.c2
-rw-r--r--src/dispextern.h7
-rw-r--r--src/dispnew.c36
-rw-r--r--src/fileio.c11
-rw-r--r--src/fns.c2
-rw-r--r--src/fontset.c4
-rw-r--r--src/frame.c11
-rw-r--r--src/ftfont.c4
-rw-r--r--src/ftxfont.c2
-rw-r--r--src/gtkutil.c8
-rw-r--r--src/image.c4
-rw-r--r--src/insdel.c2
-rw-r--r--src/intervals.c43
-rw-r--r--src/intervals.h68
-rw-r--r--src/keyboard.c6
-rw-r--r--src/keymap.c4
-rw-r--r--src/lisp.h5
-rw-r--r--src/lread.c2
-rw-r--r--src/m/ibms390.h27
-rw-r--r--src/m/ibms390x.h2
-rw-r--r--src/m/intel386.h2
-rw-r--r--src/m/template.h8
-rw-r--r--src/msdos.c2
-rw-r--r--src/nsfont.m14
-rw-r--r--src/nsterm.h2
-rw-r--r--src/print.c2
-rw-r--r--src/process.c48
-rw-r--r--src/puresize.h16
-rw-r--r--src/s/cygwin.h3
-rw-r--r--src/s/hpux10-20.h8
-rw-r--r--src/search.c4
-rw-r--r--src/sound.c2
-rw-r--r--src/sysdep.c2
-rw-r--r--src/w32.c6
-rw-r--r--src/w32console.c3
-rw-r--r--src/w32fns.c6
-rw-r--r--src/w32font.c20
-rw-r--r--src/w32menu.c6
-rw-r--r--src/w32proc.c6
-rw-r--r--src/w32term.c10
-rw-r--r--src/w32uniscribe.c4
-rw-r--r--src/w32xfns.c3
-rw-r--r--src/window.c57
-rw-r--r--src/window.h2
-rw-r--r--src/xdisp.c119
-rw-r--r--src/xfns.c4
-rw-r--r--src/xmenu.c2
-rw-r--r--src/xterm.c8
70 files changed, 523 insertions, 374 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index e1854d7ffcd..a0f83560603 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,115 @@
12011-11-21 Lars Magne Ingebrigtsen <larsi@gnus.org>
2
3 * process.c (wait_reading_process_output): Fix asynchrounous
4 GnuTLS socket handling on some versions of the GnuTLS library.
5 (wait_reading_process_output): Add comment and URL.
6
72011-11-21 Jan Djärv <jan.h.d@swipnet.se>
8
9 * xterm.c (x_clear_frame): Reinstate the XClearWindow call.
10
112011-11-21 Chong Yidong <cyd@gnu.org>
12
13 * window.c (Fnext_window, Fprevious_window): Doc fix.
14
152011-11-20 Stefan Monnier <monnier@iro.umontreal.ca>
16
17 * window.c (get_phys_cursor_glyph): Fix Lisp_Object/int mixup.
18
192011-11-20 Juanma Barranquero <lekktu@gmail.com>
20
21 * nsfont.m (syms_of_nsfont) <ns-reg-to-script>: Fix typo.
22
232011-11-20 Martin Rudalics <rudalics@gmx.at>
24
25 * window.c (Fset_window_combination_limit): Rename argument
26 STATUS to LIMIT.
27 (Vwindow_combination_limit): Remove "status" from doc-string.
28
292011-11-20 Andreas Schwab <schwab@linux-m68k.org>
30
31 * m/ibms390.h: Remove.
32 * m/ibms390x.h: Don't include "ibms390.h".
33
342011-11-20 Stefan Monnier <monnier@iro.umontreal.ca>
35
36 * fileio.c (Finsert_file_contents): Add missing gcpro1 variable.
37 Suggested by Dmitry Antipov <dmantipov@yandex.ru>.
38
392011-11-20 Juanma Barranquero <lekktu@gmail.com>
40
41 * casetab.c (Fset_case_table):
42 * charset.c (Fcharset_after): Fix typos.
43
442011-11-20 Paul Eggert <eggert@cs.ucla.edu>
45
46 Standardize on VIRT_ADDR_VARIES behavior (Bug#10042).
47 Otherwise, valgrind does not work on some platforms.
48 Problem reported by Andreas Schwab in
49 <http://lists.gnu.org/archive/html/emacs-devel/2011-11/msg00081.html>.
50 * puresize.h (pure, PURE_P): Always behave as if VIRT_ADDR_VARIES
51 is set, removing the need for VIRT_ADDRESS_VARIES.
52 (PURE_P): Use a more-efficient implementation that needs just one
53 comparison, not two: on x86-64 with GCC 4.6.2, this cut down the
54 number of instructions from 6 (xorl, cmpq, jge, xorl, cmpq, setge)
55 to 4 (xorl, subq, cmpq, setbe).
56 * alloc.c (pure): Always extern now, since that's the
57 VIRT_ADDR_VARIES behavior.
58 (PURE_POINTER_P): Use a single comparison, not two, for
59 consistency with the new puresize.h.
60 * lisp.h (PNTR_COMPARISON_TYPE): Remove; no longer needed.
61 * m/ibms390.h, m/intel386.h, m/template.h, s/cygwin.h, s/hpux10-20.h:
62 Remove VIRT_ADDR_VARIES no longer needed.
63
642011-11-19 Eli Zaretskii <eliz@gnu.org>
65
66 * xdisp.c (x_write_glyphs, draw_phys_cursor_glyph)
67 (erase_phys_cursor, update_window_cursor, show_mouse_face)
68 (cursor_in_mouse_face_p): If the cursor position is out of bounds,
69 behave as if the cursor position were at the window margin.
70
71 * window.c (get_phys_cursor_glyph): If the window is hscrolled,
72 and the cursor position is out of bounds, behave as if the cursor
73 position were at the window margin. (Bug#10075)
74
752011-11-18 Chong Yidong <cyd@gnu.org>
76
77 * window.c (Fwindow_combination_limit): Make first argument
78 non-optional, since it is meaningless for live windows like the
79 selected window.
80
812011-11-18 Dmitry Antipov <dmantipov@yandex.ru>
82
83 * keymap.c (Fwhere_is_internal): Add missing RETURN_UNGCPROs.
84
852011-11-18 Stefan Monnier <monnier@iro.umontreal.ca>
86
87 * intervals.c: Fix grafting over the whole buffer (bug#10071).
88 (graft_intervals_into_buffer): Simplify.
89
902011-11-18 Eli Zaretskii <eliz@gnu.org>
91
92 * dispnew.c (swap_glyph_pointers): Swap the used[] arrays and the
93 hash values of the two rows.
94 (copy_row_except_pointers): Preserve the used[] arrays and the
95 hash values of the two rows. (Bug#10035)
96 (add_row_entry): Add xassert to verify that ROW's hash code is valid.
97
98 * xdisp.c (row_hash): New function, body extracted from
99 compute_line_metrics.
100 (compute_line_metrics): Call row_hash, instead of computing the
101 hash code inline.
102
103 * dispnew.c (verify_row_hash): Call row_hash for computing the
104 hash code of a row, instead of duplicating code from xdisp.c.
105
106 * dispextern.h (row_hash): Add prototype.
107
1082011-11-18 Tassilo Horn <tassilo@member.fsf.org>
109
110 * frame.c (delete_frame): Don't delete the terminal when the last
111 X frame is closed if emacs is built with GTK toolkit.
112
12011-11-17 Juanma Barranquero <lekktu@gmail.com> 1132011-11-17 Juanma Barranquero <lekktu@gmail.com>
2 114
3 * window.c (syms_of_window) <window-combination-resize>: Fix typo. 115 * window.c (syms_of_window) <window-combination-resize>: Fix typo.
@@ -371,7 +483,7 @@
371 483
372 Fix the `xbytecode' command. 484 Fix the `xbytecode' command.
373 * .gdbinit (xprintbytestr): New command. 485 * .gdbinit (xprintbytestr): New command.
374 (xwhichsymbols): Renamed from `which'; all callers changed. 486 (xwhichsymbols): Rename from `which'; all callers changed.
375 (xbytecode): Print the byte-code string as well. 487 (xbytecode): Print the byte-code string as well.
376 488
3772011-10-29 Kim Storm <storm@cua.dk> 4892011-10-29 Kim Storm <storm@cua.dk>
diff --git a/src/ChangeLog.1 b/src/ChangeLog.1
index efe77648458..7fef45f36da 100644
--- a/src/ChangeLog.1
+++ b/src/ChangeLog.1
@@ -2237,7 +2237,7 @@
2237 2237
2238 * data.c (Fset): 2238 * data.c (Fset):
2239 If Vautoload_queue non-nil, record function and old definition 2239 If Vautoload_queue non-nil, record function and old definition
2240 by consing onto Vautoload_qeueue. 2240 by consing onto Vautoload_queue.
2241 2241
2242 * fns.c (Fprovide): 2242 * fns.c (Fprovide):
2243 If Vautoload_queue is non-nil, record old value of Vfeatures. 2243 If Vautoload_queue is non-nil, record old value of Vfeatures.
diff --git a/src/ChangeLog.10 b/src/ChangeLog.10
index 181b11b5a2b..99ab02577d5 100644
--- a/src/ChangeLog.10
+++ b/src/ChangeLog.10
@@ -6387,7 +6387,7 @@
63872005-11-20 Nick Roberts <nickrob@snap.net.nz> 63872005-11-20 Nick Roberts <nickrob@snap.net.nz>
6388 6388
6389 * lisp.h: Use typedef when Lisp_Object is EMACS_INT so that 6389 * lisp.h: Use typedef when Lisp_Object is EMACS_INT so that
6390 this type is recognised when debugging. 6390 this type is recognized when debugging.
6391 6391
63922005-11-19 Andreas Schwab <schwab@suse.de> 63922005-11-19 Andreas Schwab <schwab@suse.de>
6393 6393
@@ -13398,7 +13398,7 @@
133982004-07-04 John Paul Wallington <jpw@gnu.org> 133982004-07-04 John Paul Wallington <jpw@gnu.org>
13399 13399
13400 * fileio.c (read_file_name_completion_ignore_case): New variable. 13400 * fileio.c (read_file_name_completion_ignore_case): New variable.
13401 (syms_of_fileio): Declare and initialise it. 13401 (syms_of_fileio): Declare and initialize it.
13402 (Fread_file_name): Bind `completion-ignore-case' to respect it. 13402 (Fread_file_name): Bind `completion-ignore-case' to respect it.
13403 13403
134042004-07-03 Eli Zaretskii <eliz@gnu.org> 134042004-07-03 Eli Zaretskii <eliz@gnu.org>
@@ -18755,7 +18755,7 @@
18755 18755
187562003-05-21 Dave Love <fx@gnu.org> 187562003-05-21 Dave Love <fx@gnu.org>
18757 18757
18758 [Merged from unicode branch.] 18758 [Merged from Unicode branch.]
18759 18759
18760 * xfns.c (x_window, x_window): Use use_xim. 18760 * xfns.c (x_window, x_window): Use use_xim.
18761 18761
diff --git a/src/ChangeLog.11 b/src/ChangeLog.11
index 73ac5fd4e00..07d4f4ec116 100644
--- a/src/ChangeLog.11
+++ b/src/ChangeLog.11
@@ -4839,7 +4839,7 @@
4839 4839
48402010-08-13 Jason Rumney <jasonr@gnu.org> 48402010-08-13 Jason Rumney <jasonr@gnu.org>
4841 4841
4842 * w32menu.c (simple_dialog_show): Use unicode message box if available. 4842 * w32menu.c (simple_dialog_show): Use Unicode message box if available.
4843 (MessageBoxW_Proc): New function typedef. 4843 (MessageBoxW_Proc): New function typedef.
4844 (unicode-message-box): New function pointer. 4844 (unicode-message-box): New function pointer.
4845 (globals_of_w32menu): Import it from user32.dll. (Bug#5629) 4845 (globals_of_w32menu): Import it from user32.dll. (Bug#5629)
@@ -5896,7 +5896,7 @@
5896 * eval.c (Feval, Ffuncall): Use the new names. 5896 * eval.c (Feval, Ffuncall): Use the new names.
5897 5897
5898 * lisp.h (struct Lisp_Subr): Rename `am' to aMANY and add aUNEVALLED. 5898 * lisp.h (struct Lisp_Subr): Rename `am' to aMANY and add aUNEVALLED.
5899 (DEFUN): Add braces around the union initialisation and use ## to 5899 (DEFUN): Add braces around the union initialization and use ## to
5900 specify the right union alternative and avoid a cast. 5900 specify the right union alternative and avoid a cast.
5901 5901
59022010-07-18 Juanma Barranquero <lekktu@gmail.com> 59022010-07-18 Juanma Barranquero <lekktu@gmail.com>
@@ -6604,9 +6604,9 @@
6604 * keyboard.c (input_available_signal): Declare. 6604 * keyboard.c (input_available_signal): Declare.
6605 (kbd_buffer_nr_stored): New function. 6605 (kbd_buffer_nr_stored): New function.
6606 (kbd_buffer_store_event_hold): If kbd_buffer_nr_stored returns 6606 (kbd_buffer_store_event_hold): If kbd_buffer_nr_stored returns
6607 more than KBD_BUFFER_SIZE/2, stop reding input (Bug#6571). 6607 more than KBD_BUFFER_SIZE/2, stop reading input (Bug#6571).
6608 (kbd_buffer_get_event): If input is suspended and kbd_buffer_nr_stored 6608 (kbd_buffer_get_event): If input is suspended and kbd_buffer_nr_stored
6609 returns less than KBD_BUFFER_SIZE/4, resume reding input (Bug#6571). 6609 returns less than KBD_BUFFER_SIZE/4, resume reading input (Bug#6571).
6610 (tty_read_avail_input): If input is on hold, return. 6610 (tty_read_avail_input): If input is on hold, return.
6611 Don't read more that free slots in kbd_buffer (Bug#6571). 6611 Don't read more that free slots in kbd_buffer (Bug#6571).
6612 6612
@@ -7199,7 +7199,7 @@
7199 7199
72002010-06-27 Chong Yidong <cyd@stupidchicken.com> 72002010-06-27 Chong Yidong <cyd@stupidchicken.com>
7201 7201
7202 * xfns.c (Fx_create_frame): Don't consult X resouces when setting 7202 * xfns.c (Fx_create_frame): Don't consult X resources when setting
7203 menu-bar-lines and tool-bar-lines. Use menu-bar-mode and 7203 menu-bar-lines and tool-bar-lines. Use menu-bar-mode and
7204 tool-bar-mode, which are now set using these X resources at 7204 tool-bar-mode, which are now set using these X resources at
7205 startup, to determine the defaults (Bug#2249). 7205 startup, to determine the defaults (Bug#2249).
@@ -7683,7 +7683,7 @@
7683 7683
76842010-05-20 Juri Linkov <juri@jurta.org> 76842010-05-20 Juri Linkov <juri@jurta.org>
7685 7685
7686 * fileio.c (Fdelete_file): Change interative spec to use 7686 * fileio.c (Fdelete_file): Change interactive spec to use
7687 `read-file-name' like in `find-file-read-args' where the default 7687 `read-file-name' like in `find-file-read-args' where the default
7688 value is `default-directory' instead of `buffer-file-name'. 7688 value is `default-directory' instead of `buffer-file-name'.
7689 http://lists.gnu.org/archive/html/emacs-devel/2010-05/msg00533.html 7689 http://lists.gnu.org/archive/html/emacs-devel/2010-05/msg00533.html
@@ -8991,8 +8991,8 @@
89912010-04-13 Jan Djärv <jan.h.d@swipnet.se> 89912010-04-13 Jan Djärv <jan.h.d@swipnet.se>
8992 8992
8993 * gtkutil.c (xg_set_geometry): Set geometry for PPosition also. 8993 * gtkutil.c (xg_set_geometry): Set geometry for PPosition also.
8994 (x_wm_set_size_hint): Dont set position flags, gtk_window_parse_geometry 8994 (x_wm_set_size_hint): Don't set position flags,
8995 does that. 8995 gtk_window_parse_geometry does that.
8996 8996
8997 * xfns.c (Fx_create_frame, x_create_tip_frame): Set default border width 8997 * xfns.c (Fx_create_frame, x_create_tip_frame): Set default border width
8998 to zero. 8998 to zero.
@@ -9266,7 +9266,7 @@
9266 9266
9267 Get rid of the direct_output optimizations. 9267 Get rid of the direct_output optimizations.
9268 * keyboard.c (nonundocount): Remove extern declaration. 9268 * keyboard.c (nonundocount): Remove extern declaration.
9269 (command_loop_1): Remove brittle optimisation for cheap and 9269 (command_loop_1): Remove brittle optimization for cheap and
9270 common operations. 9270 common operations.
9271 * xdisp.c (redisplay_internal): Don't bother checking 9271 * xdisp.c (redisplay_internal): Don't bother checking
9272 redisplay_performed_directly_p any more. 9272 redisplay_performed_directly_p any more.
@@ -9864,8 +9864,8 @@
9864 9864
98652010-01-27 Jason Rumney <jasonr@gnu.org> 98652010-01-27 Jason Rumney <jasonr@gnu.org>
9866 9866
9867 * w32inevt.c (w32_kbd_patch_key): Save the unicode character. 9867 * w32inevt.c (w32_kbd_patch_key): Save the Unicode character.
9868 (key_event): Use unicode for characters 128 and higher (Bug#4567). 9868 (key_event): Use Unicode for characters 128 and higher (Bug#4567).
9869 9869
98702010-01-27 Kenichi Handa <handa@m17n.org> 98702010-01-27 Kenichi Handa <handa@m17n.org>
9871 9871
@@ -11541,7 +11541,7 @@
11541 (syms_of_nsfont): Declare it. 11541 (syms_of_nsfont): Declare it.
11542 (ns_registry_to_script): New function. 11542 (ns_registry_to_script): New function.
11543 (ns_get_req_script): Call it. 11543 (ns_get_req_script): Call it.
11544 (ns_findfonts): Don't give up on non-unicode registry. 11544 (ns_findfonts): Don't give up on non-Unicode registry.
11545 11545
11546 * font.c (DEFAULT_ENCODING) [HAVE_NS]: Remove special case. 11546 * font.c (DEFAULT_ENCODING) [HAVE_NS]: Remove special case.
11547 11547
@@ -11923,7 +11923,7 @@
11923 11923
11924 * process.c (status_notify): Don't perform redisplay. 11924 * process.c (status_notify): Don't perform redisplay.
11925 (Fdelete_process, list_processes_1, process_send_signal): 11925 (Fdelete_process, list_processes_1, process_send_signal):
11926 Expliticly perform redisplay. 11926 Explicitly perform redisplay.
11927 (wait_reading_process_output): Always check process status, but 11927 (wait_reading_process_output): Always check process status, but
11928 don't perform redisplay unless DO_DISPLAY is non-zero (Bug#2930). 11928 don't perform redisplay unless DO_DISPLAY is non-zero (Bug#2930).
11929 11929
@@ -12481,7 +12481,7 @@
12481 12481
12482 * dbusbind.c (XD_SYMBOL_TO_DBUS_TYPE): Convert macro into function 12482 * dbusbind.c (XD_SYMBOL_TO_DBUS_TYPE): Convert macro into function
12483 xd_symbol_to_dbus_type. With Solaris 2.11, it was said to compile 12483 xd_symbol_to_dbus_type. With Solaris 2.11, it was said to compile
12484 for hours, when optimzation is enabled. 12484 for hours, when optimization is enabled.
12485 (xd_signature, xd_append_arg, xd_retrieve_arg, xd_initialize) 12485 (xd_signature, xd_append_arg, xd_retrieve_arg, xd_initialize)
12486 (xd_read_message): Make them static. 12486 (xd_read_message): Make them static.
12487 12487
@@ -13149,7 +13149,7 @@
13149 (ftfont_has_char): Special handling of `ja' and `ko' adstyle. 13149 (ftfont_has_char): Special handling of `ja' and `ko' adstyle.
13150 13150
13151 * font.c (font_sort_entites): Change the meaning of the arg 13151 * font.c (font_sort_entites): Change the meaning of the arg
13152 BEST-ONLY. Don't optimize for VEC of lenght 1. 13152 BEST-ONLY. Don't optimize for VEC of length 1.
13153 (font_select_entity): Just return the value of font_sort_entites. 13153 (font_select_entity): Just return the value of font_sort_entites.
13154 13154
13155 * xfaces.c (merge_face_vectors): Reflect font properties in 13155 * xfaces.c (merge_face_vectors): Reflect font properties in
@@ -16072,7 +16072,7 @@
160722008-09-07 Andreas Schwab <schwab@suse.de> 160722008-09-07 Andreas Schwab <schwab@suse.de>
16073 16073
16074 * callproc.c (Fcall_process): Don't hold references to string data 16074 * callproc.c (Fcall_process): Don't hold references to string data
16075 across garbage collection. Move initialisation of new_argv down 16075 across garbage collection. Move initialization of new_argv down
16076 to avoid compiler bug. 16076 to avoid compiler bug.
16077 16077
160782008-09-07 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de> 160782008-09-07 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
@@ -17147,10 +17147,10 @@
17147 17147
171482008-07-30 Jason Rumney <jasonr@gnu.org> 171482008-07-30 Jason Rumney <jasonr@gnu.org>
17149 17149
17150 * w32font.h (struct w32font_info): Use unicode version of textmetrics. 17150 * w32font.h (struct w32font_info): Use Unicode version of textmetrics.
17151 17151
17152 * w32font.c (w32font_encode_char): Leave as unicode if in range. 17152 * w32font.c (w32font_encode_char): Leave as Unicode if in range.
17153 (w32font_open_internal): Get unicode version of textmetrics. 17153 (w32font_open_internal): Get Unicode version of textmetrics.
17154 Don't enable or disable glyph indices here. 17154 Don't enable or disable glyph indices here.
17155 (w32font_open): Disable use of glyph indices. 17155 (w32font_open): Disable use of glyph indices.
17156 17156
@@ -19178,7 +19178,7 @@
191782008-06-10 Jason Rumney <jasonr@gnu.org> 191782008-06-10 Jason Rumney <jasonr@gnu.org>
19179 19179
19180 * w32uniscribe.c (add_opentype_font_name_to_list): 19180 * w32uniscribe.c (add_opentype_font_name_to_list):
19181 Skip non unicode fonts. 19181 Skip non Unicode fonts.
19182 19182
191832008-06-10 Chong Yidong <cyd@stupidchicken.com> 191832008-06-10 Chong Yidong <cyd@stupidchicken.com>
19184 19184
@@ -19248,7 +19248,7 @@
19248 * w32menu.c (Fx_popup_menu): Unwind protect while building menu. 19248 * w32menu.c (Fx_popup_menu): Unwind protect while building menu.
19249 (parse_single_submenu): Remove. 19249 (parse_single_submenu): Remove.
19250 (digest_single_submenu): Remove. 19250 (digest_single_submenu): Remove.
19251 (syms_of_w32menu): Don't initialise variables that have moved 19251 (syms_of_w32menu): Don't initialize variables that have moved
19252 to menu.c. 19252 to menu.c.
19253 (set_frame_menubar): Sync with version in xmenu.c. 19253 (set_frame_menubar): Sync with version in xmenu.c.
19254 (w32_menu_show): Sync with xmenu_show in xmenu.c. 19254 (w32_menu_show): Sync with xmenu_show in xmenu.c.
@@ -19647,7 +19647,7 @@
19647 `raster' specified. 19647 `raster' specified.
19648 (add_font_entity_to_list): Allow non-opentype truetype fonts back 19648 (add_font_entity_to_list): Allow non-opentype truetype fonts back
19649 in the uniscribe backend, but disallow any font that has no 19649 in the uniscribe backend, but disallow any font that has no
19650 unicode subrange support. 19650 Unicode subrange support.
19651 19651
196522008-05-29 Juanma Barranquero <lekktu@gmail.com> 196522008-05-29 Juanma Barranquero <lekktu@gmail.com>
19653 19653
@@ -21290,7 +21290,7 @@
21290 (CACHE_BLOCKSIZE): New constants. 21290 (CACHE_BLOCKSIZE): New constants.
21291 21291
21292 * w32font.c (Qja, Qko, Qzh): New symbols. 21292 * w32font.c (Qja, Qko, Qzh): New symbols.
21293 (syms_of_w32font): Initialise them. 21293 (syms_of_w32font): Initialize them.
21294 (font_matches_spec): Use them to filter by language. 21294 (font_matches_spec): Use them to filter by language.
21295 (recompute_cached_metrics): Remove function. 21295 (recompute_cached_metrics): Remove function.
21296 (compute_metrics, clear_cached_metrics): New functions. 21296 (compute_metrics, clear_cached_metrics): New functions.
@@ -21813,8 +21813,8 @@
218132008-03-06 Jason Rumney <jasonr@gnu.org> 218132008-03-06 Jason Rumney <jasonr@gnu.org>
21814 21814
21815 * w32font.c (w32_registry): Take font_type argument. Use ANSI 21815 * w32font.c (w32_registry): Take font_type argument. Use ANSI
21816 when charset not specified. Only translate ANSI to unicode when 21816 when charset not specified. Only translate ANSI to Unicode when
21817 font_type is truetype. 21817 font_type is TrueType.
21818 (w32font_coverage_ok): New function. 21818 (w32font_coverage_ok): New function.
21819 (add_font_entity_to_list): Use it to filter unsuitable fonts. 21819 (add_font_entity_to_list): Use it to filter unsuitable fonts.
21820 21820
@@ -23463,10 +23463,10 @@
23463 (w32font_list, w32font_match): Use it. 23463 (w32font_list, w32font_match): Use it.
23464 (w32font_open): Don't populate subranges. 23464 (w32font_open): Don't populate subranges.
23465 (w32font_has_char): Use script Lisp symbols, not subrange bitmask. 23465 (w32font_has_char): Use script Lisp symbols, not subrange bitmask.
23466 (w32font_encode_char): Always return unicode code-point as-is. 23466 (w32font_encode_char): Always return Unicode code-point as-is.
23467 (w32font_text_extents): Supply a transformation matrix to 23467 (w32font_text_extents): Supply a transformation matrix to
23468 GetGlyphOutline. Never look up by glyph index. Avoid looping 23468 GetGlyphOutline. Never look up by glyph index. Avoid looping
23469 twice. Use unicode version of GetTexExtentPoint32 instead of 23469 twice. Use Unicode version of GetTexExtentPoint32 instead of
23470 glyph index version. 23470 glyph index version.
23471 (set_fonts_frame): Remove. 23471 (set_fonts_frame): Remove.
23472 (w32_enumfont_pattern_entity): Add frame parameter, use it to 23472 (w32_enumfont_pattern_entity): Add frame parameter, use it to
@@ -25081,7 +25081,7 @@
25081 * keymap.c (describe_vector): Handle default value of a char table. 25081 * keymap.c (describe_vector): Handle default value of a char table.
25082 25082
25083 * fontset.c (fontset_face): Handle fallback fonts correctly. 25083 * fontset.c (fontset_face): Handle fallback fonts correctly.
25084 (Ffontset_info): Return infomation about fallback fonts. 25084 (Ffontset_info): Return information about fallback fonts.
25085 25085
250862008-02-01 Kenichi Handa <handa@m17n.org> 250862008-02-01 Kenichi Handa <handa@m17n.org>
25087 25087
@@ -25425,16 +25425,16 @@
25425 (pfnGetFontUnicodeRanges): New dynamically loaded function. 25425 (pfnGetFontUnicodeRanges): New dynamically loaded function.
25426 (w32_initialize): Try to load it. 25426 (w32_initialize): Try to load it.
25427 (x_get_font_repertory): Use it if available. 25427 (x_get_font_repertory): Use it if available.
25428 (w32_encode_char): Add shortcut for unicode output. 25428 (w32_encode_char): Add shortcut for Unicode output.
25429 25429
25430 * w32fns.c (w32_load_system_font): Default charset to -1. 25430 * w32fns.c (w32_load_system_font): Default charset to -1.
25431 (x_to_w32_charset): Match all fonts for unicode. 25431 (x_to_w32_charset): Match all fonts for Unicode.
25432 (w32_to_x_charset): New parameter matching. Don't return partial 25432 (w32_to_x_charset): New parameter matching. Don't return partial
25433 or wildcard charsets. 25433 or wildcard charsets.
25434 (w32_to_all_x_charsets): Don't return partial or wildcard charsets. 25434 (w32_to_all_x_charsets): Don't return partial or wildcard charsets.
25435 (w32_codepage_for_font): Return CP_UNICODE for unicode. 25435 (w32_codepage_for_font): Return CP_UNICODE for Unicode.
25436 (w32_to_x_font): Match charset to real charset. 25436 (w32_to_x_font): Match charset to real charset.
25437 (enum_font_cb2): Always list unicode versions. 25437 (enum_font_cb2): Always list Unicode versions.
25438 25438
25439 * makefile.w32-in (temacs): Increase EMHEAP. 25439 * makefile.w32-in (temacs): Increase EMHEAP.
25440 25440
@@ -25458,7 +25458,7 @@
25458 25458
25459 * w32fns.c (Fx_create_frame, x_create_tip_frame): Use new version 25459 * w32fns.c (Fx_create_frame, x_create_tip_frame): Use new version
25460 of x_new_fontset. 25460 of x_new_fontset.
25461 (w32_load_system_font): Initialize charset as unicode. 25461 (w32_load_system_font): Initialize charset as Unicode.
25462 font_info.encoding becomes encoding_type. 25462 font_info.encoding becomes encoding_type.
25463 (w32_to_x_font): Use decode_coding_c_string in place of decode_coding. 25463 (w32_to_x_font): Use decode_coding_c_string in place of decode_coding.
25464 (x_to_w32_font): Use encode_coding_object in place of encode_coding. 25464 (x_to_w32_font): Use encode_coding_object in place of encode_coding.
@@ -27685,7 +27685,7 @@
27685 * xterm.c (handle_one_xevent): Revert to counting chars not bytes. 27685 * xterm.c (handle_one_xevent): Revert to counting chars not bytes.
27686 27686
27687 * w32term.c (w32_read_socket) <WM_CHAR>: Decode characters outside 27687 * w32term.c (w32_read_socket) <WM_CHAR>: Decode characters outside
27688 the unicode range available in MULE by locale-coding-system. 27688 the Unicode range available in MULE by locale-coding-system.
27689 Improve dbcs lead byte detection. Set event timestamp and modifiers 27689 Improve dbcs lead byte detection. Set event timestamp and modifiers
27690 earlier. 27690 earlier.
27691 27691
@@ -29136,7 +29136,7 @@
29136 29136
29137 * lisp.h (defvar_per_buffer, DEFVAR_PER_BUFFER): 29137 * lisp.h (defvar_per_buffer, DEFVAR_PER_BUFFER):
29138 * lread.c (defvar_per_buffer): 29138 * lread.c (defvar_per_buffer):
29139 * abbrev.c (syms_of_abbrev) <local-abbrev-tabl>: Move to buffer.c. 29139 * abbrev.c (syms_of_abbrev) <local-abbrev-table>: Move to buffer.c.
29140 29140
29141 * window.c (candidate_window_p): Only consider as visible frames that 29141 * window.c (candidate_window_p): Only consider as visible frames that
29142 are on the same terminal. 29142 are on the same terminal.
@@ -29651,7 +29651,7 @@
29651 29651
29652 * callproc.c (child_setup, getenv_internal): Use the 29652 * callproc.c (child_setup, getenv_internal): Use the
29653 display-environment-variable and term-environment-variable frame params. 29653 display-environment-variable and term-environment-variable frame params.
29654 (set_initial_environment): Initialise Vprocess_environment. 29654 (set_initial_environment): Initialize Vprocess_environment.
29655 29655
29656 * config.in: Disable multi-keyboard support on a mac. 29656 * config.in: Disable multi-keyboard support on a mac.
29657 29657
@@ -30873,7 +30873,7 @@
308732007-06-17 Jason Rumney <jasonr@gnu.org> 308732007-06-17 Jason Rumney <jasonr@gnu.org>
30874 30874
30875 * w32menu.c (add_menu_item): Don't use multibyte string functions on 30875 * w32menu.c (add_menu_item): Don't use multibyte string functions on
30876 unicode strings. 30876 Unicode strings.
30877 30877
308782007-06-16 Juanma Barranquero <lekktu@gmail.com> 308782007-06-16 Juanma Barranquero <lekktu@gmail.com>
30879 30879
@@ -30892,7 +30892,7 @@
308922007-06-14 Jason Rumney <jasonr@gnu.org> 308922007-06-14 Jason Rumney <jasonr@gnu.org>
30893 30893
30894 * w32.c (get_process_times_fn): New function pointer. 30894 * w32.c (get_process_times_fn): New function pointer.
30895 (globals_of_w32): Intialize it if present in kernel32.dll. 30895 (globals_of_w32): Initialize it if present in kernel32.dll.
30896 (w32_get_internal_run_time): New function. 30896 (w32_get_internal_run_time): New function.
30897 30897
30898 * editfns.c (Fget_internal_run_time) [WINDOWSNT]: Use it. 30898 * editfns.c (Fget_internal_run_time) [WINDOWSNT]: Use it.
@@ -31298,7 +31298,7 @@
31298 (term_mouse_highlight, term_mouse_movement, term_mouse_position) 31298 (term_mouse_highlight, term_mouse_movement, term_mouse_position)
31299 (term_mouse_click, handle_one_term_event, Fterm_open_connection) 31299 (term_mouse_click, handle_one_term_event, Fterm_open_connection)
31300 (Fterm_close_connection): New functions. 31300 (Fterm_close_connection): New functions.
31301 (term_init): Initialise mouse_face_window. 31301 (term_init): Initialize mouse_face_window.
31302 31302
313032007-05-19 Chong Yidong <cyd@stupidchicken.com> 313032007-05-19 Chong Yidong <cyd@stupidchicken.com>
31304 31304
diff --git a/src/ChangeLog.2 b/src/ChangeLog.2
index 05e448c043c..62e3de22b09 100644
--- a/src/ChangeLog.2
+++ b/src/ChangeLog.2
@@ -1152,7 +1152,7 @@
1152 1152
11531987-07-29 Richard Mlynarik (mly@prep) 11531987-07-29 Richard Mlynarik (mly@prep)
1154 1154
1155 * lread.c (init_read): Initialise load_in_progress. 1155 * lread.c (init_read): Initialize load_in_progress.
1156 1156
11571987-07-28 Richard M. Stallman (rms@prep) 11571987-07-28 Richard M. Stallman (rms@prep)
1158 1158
@@ -2251,7 +2251,7 @@
22511987-01-16 Richard Mlynarik (mly@prep) 22511987-01-16 Richard Mlynarik (mly@prep)
2252 2252
2253 * xfns.c (Fx_set_{background,cursor,mouse}_color): 2253 * xfns.c (Fx_set_{background,cursor,mouse}_color):
2254 Initialise save_color. 2254 Initialize save_color.
2255 2255
2256 * fileio.c, search.c, sysdep.c, filelock.c, editfns.c, process.c: 2256 * fileio.c, search.c, sysdep.c, filelock.c, editfns.c, process.c:
2257 Delete/replace unused/conditionalised variables 2257 Delete/replace unused/conditionalised variables
@@ -3002,7 +3002,7 @@
30021986-11-18 Richard Mlynarik (mly@prep) 30021986-11-18 Richard Mlynarik (mly@prep)
3003 3003
3004 * emacs.c (main): 3004 * emacs.c (main):
3005 Giving `inhibit_x_windows' an initialisation loses; 3005 Giving `inhibit_x_windows' an initialization loses;
3006 do it explicitly. 3006 do it explicitly.
3007 3007
3008 * xfns.c (Fx_rubber_band): 3008 * xfns.c (Fx_rubber_band):
@@ -3291,7 +3291,7 @@
32911986-11-03 Richard Mlynarik (mly@prep) 32911986-11-03 Richard Mlynarik (mly@prep)
3292 3292
3293 * xterm.c (stufflines): 3293 * xterm.c (stufflines):
3294 Initialise signal mask. 3294 Initialize signal mask.
3295 3295
3296 * xterm.h: 3296 * xterm.h:
3297 Add definition of sigmask 3297 Add definition of sigmask
@@ -3346,7 +3346,7 @@
3346 New function. 3346 New function.
3347 3347
3348 * window.c (Fset_window_hscroll): 3348 * window.c (Fset_window_hscroll):
3349 Don't inhibit redisplay optimisations if hscroll is same. 3349 Don't inhibit redisplay optimizations if hscroll is same.
3350 3350
3351 * ymakefile: 3351 * ymakefile:
3352 rm ../etc/DOC to avoid make-docfile overwriting any files which 3352 rm ../etc/DOC to avoid make-docfile overwriting any files which
@@ -3358,7 +3358,7 @@
3358 VMS changes from Sasaki 3358 VMS changes from Sasaki
3359 3359
3360 * termcap.c (tgetent): 3360 * termcap.c (tgetent):
3361 Make sure `indirect' initialised. 3361 Make sure `indirect' initialized.
3362 3362
3363 * xfns.c (grey_p and callers): 3363 * xfns.c (grey_p and callers):
3364 New function to compensate for ugly chauvinistic American 3364 New function to compensate for ugly chauvinistic American
@@ -3496,7 +3496,7 @@
3496 core-dump) 3496 core-dump)
3497 3497
3498 Dike out global-minor-modes. This wasn't actually being used by 3498 Dike out global-minor-modes. This wasn't actually being used by
3499 anything (due to a bug) and wasn't even being initialised! 3499 anything (due to a bug) and wasn't even being initialized!
3500 minor-mode-alist does what this thought it was doing. 3500 minor-mode-alist does what this thought it was doing.
3501 3501
35021986-10-11 Richard Mlynarik (mly@prep) 35021986-10-11 Richard Mlynarik (mly@prep)
diff --git a/src/ChangeLog.3 b/src/ChangeLog.3
index cdfe63fc59c..cbf867829c7 100644
--- a/src/ChangeLog.3
+++ b/src/ChangeLog.3
@@ -6089,7 +6089,7 @@
6089 shrink below the minimum, this code would only try to delete it if 6089 shrink below the minimum, this code would only try to delete it if
6090 it had a parent. Well, even if the window doesn't have a parent, 6090 it had a parent. Well, even if the window doesn't have a parent,
6091 you want Fdelete_window to signal an error, since you're trying to 6091 you want Fdelete_window to signal an error, since you're trying to
6092 resize one of the undeleteable windows into nothingness. So call 6092 resize one of the undeletable windows into nothingness. So call
6093 Fdelete_window even if the window doesn't have a parent. 6093 Fdelete_window even if the window doesn't have a parent.
6094 6094
6095 * window.c (MINSIZE): Add kludge so that the minibuffer is always 6095 * window.c (MINSIZE): Add kludge so that the minibuffer is always
@@ -9010,7 +9010,7 @@
9010 * keyboard.c (cmd_error): If an error occurs before somebody has 9010 * keyboard.c (cmd_error): If an error occurs before somebody has
9011 provided a screen to print it on, print it to stderr and exit 9011 provided a screen to print it on, print it to stderr and exit
9012 Emacs. Handle batch-mode errors with the same code. 9012 Emacs. Handle batch-mode errors with the same code.
9013 * lisp.h (Qexternal_debugging_ouput): New extern declaration, for 9013 * lisp.h (Qexternal_debugging_output): New extern declaration, for
9014 use in cmd_error. 9014 use in cmd_error.
9015 9015
9016 * screen.c (Fscreen_pixel_size, Fset_screen_position): Doc fix. 9016 * screen.c (Fscreen_pixel_size, Fset_screen_position): Doc fix.
@@ -13137,7 +13137,7 @@
13137 * print.c: Include dispextern.h. 13137 * print.c: Include dispextern.h.
13138 (printchar, strout): Use message_buf. 13138 (printchar, strout): Use message_buf.
13139 13139
13140 * sysdep.c (get_screen_size): Don't use MscreenWidth, MscreenLenght. 13140 * sysdep.c (get_screen_size): Don't use MscreenWidth, MscreenLength.
13141 * term.c: Likewise. 13141 * term.c: Likewise.
13142 13142
13143 * scroll.c (CalcIDCosts, CalcIDCosts1, CalcLID): These now take a 13143 * scroll.c (CalcIDCosts, CalcIDCosts1, CalcLID): These now take a
@@ -13147,7 +13147,7 @@
13147 (do_scrolling): Use alloca for queue. 13147 (do_scrolling): Use alloca for queue.
13148 13148
13149 * dispnew.c (remake_screen_structures): Allocate message_buf. 13149 * dispnew.c (remake_screen_structures): Allocate message_buf.
13150 Don't use MscreenWidth, MscreenLenght. 13150 Don't use MscreenWidth, MscreenLength.
13151 13151
13152 * xdisp.c: bf_cur replaced with current_buffer. 13152 * xdisp.c: bf_cur replaced with current_buffer.
13153 Calls to SetBfx deleted. 13153 Calls to SetBfx deleted.
diff --git a/src/ChangeLog.4 b/src/ChangeLog.4
index 208d9c2cdb0..88c9e3dbf71 100644
--- a/src/ChangeLog.4
+++ b/src/ChangeLog.4
@@ -3656,7 +3656,7 @@
3656 3656
3657 * m/delta.h (BROKEN_CLOSEDIR): Added because closedir is interruptible. 3657 * m/delta.h (BROKEN_CLOSEDIR): Added because closedir is interruptible.
3658 (HAVE_UNISTD_H): Deleted because configure takes care of it. 3658 (HAVE_UNISTD_H): Deleted because configure takes care of it.
3659 (C_SWITCH_MACHINE): Added optimisation options for gnu cc. 3659 (C_SWITCH_MACHINE): Added optimization options for gnu cc.
3660 3660
36611993-12-17 Mike Long (mike.long@analog.com) 36611993-12-17 Mike Long (mike.long@analog.com)
3662 3662
@@ -5007,7 +5007,7 @@
5007 Change display code to handle the `invisible' text property. 5007 Change display code to handle the `invisible' text property.
5008 * dispnew.c (direct_output_for_insert): Fail if character 5008 * dispnew.c (direct_output_for_insert): Fail if character
5009 just inserted has text properties. 5009 just inserted has text properties.
5010 (direct_ouput_forward_char): Fail if moving near invisible chars. 5010 (direct_output_forward_char): Fail if moving near invisible chars.
5011 * indent.c (compute_motion): Compute correctly for invisible text. 5011 * indent.c (compute_motion): Compute correctly for invisible text.
5012 (vmotion): Take care of invisible newlines. 5012 (vmotion): Take care of invisible newlines.
5013 * intervals.c (set_point): Ignore `invisible' property 5013 * intervals.c (set_point): Ignore `invisible' property
diff --git a/src/ChangeLog.5 b/src/ChangeLog.5
index 1f21e9fb99c..ee79917a34d 100644
--- a/src/ChangeLog.5
+++ b/src/ChangeLog.5
@@ -3463,7 +3463,7 @@
3463 3463
3464 * lisp.h (running_asynch_code): New global flag. 3464 * lisp.h (running_asynch_code): New global flag.
3465 * emacs.c (running_asynch_code): New global flag. 3465 * emacs.c (running_asynch_code): New global flag.
3466 (main): Initialise it. 3466 (main): Initialize it.
3467 * process.c (read_process_output, exec_sentinel): Set and 3467 * process.c (read_process_output, exec_sentinel): Set and
3468 reset the running_asynch_code global flag and restore match data. 3468 reset the running_asynch_code global flag and restore match data.
3469 3469
diff --git a/src/ChangeLog.6 b/src/ChangeLog.6
index 141a570040c..af97d0de7b4 100644
--- a/src/ChangeLog.6
+++ b/src/ChangeLog.6
@@ -1182,7 +1182,7 @@
1182 support in sys_select. 1182 support in sys_select.
1183 1183
1184 (term_ntproc): New function. 1184 (term_ntproc): New function.
1185 (init_ntproc): New function to initialise socket support and make 1185 (init_ntproc): New function to initialize socket support and make
1186 initial std handles non-inheritable. Also ensure stdin, stdout 1186 initial std handles non-inheritable. Also ensure stdin, stdout
1187 and stderr have valid handles so that pipes and sockets can't 1187 and stderr have valid handles so that pipes and sockets can't
1188 inadvertently use fd 0, 1, or 2. 1188 inadvertently use fd 0, 1, or 2.
@@ -1440,7 +1440,7 @@
1440 Correctly detect when default_directory is absolute. 1440 Correctly detect when default_directory is absolute.
1441 Be strict when looking for MSDOS drive specifier; defer calling 1441 Be strict when looking for MSDOS drive specifier; defer calling
1442 getdefdir. Ignore drive specifier if name now has UNC prefix. 1442 getdefdir. Ignore drive specifier if name now has UNC prefix.
1443 Correctly recognise if name is not absolute when trying simple 1443 Correctly recognize if name is not absolute when trying simple
1444 method to expand; return original string if possible. 1444 method to expand; return original string if possible.
1445 Skip dir sep after ~ or ~user. 1445 Skip dir sep after ~ or ~user.
1446 Use getpwnam instead of HOME for ~user on NT. 1446 Use getpwnam instead of HOME for ~user on NT.
diff --git a/src/ChangeLog.7 b/src/ChangeLog.7
index 73d0d45e9c1..fc97acdeb1e 100644
--- a/src/ChangeLog.7
+++ b/src/ChangeLog.7
@@ -5774,7 +5774,7 @@
5774 5774
5775 (w32_initialize): Set input mode. Use w32_msg_worker instead 5775 (w32_initialize): Set input mode. Use w32_msg_worker instead
5776 of windows_msg_worker. Dynamically link proportional scroll bar 5776 of windows_msg_worker. Dynamically link proportional scroll bar
5777 functions and intialize proportional scroll bar variables. 5777 functions and initialize proportional scroll bar variables.
5778 (syms_of_w32term): DEFVAR new variables. 5778 (syms_of_w32term): DEFVAR new variables.
5779 5779
5780 * w32term.h (w32_output): New fields menubar_widget, menubar_active, 5780 * w32term.h (w32_output): New fields menubar_widget, menubar_active,
@@ -10963,7 +10963,7 @@
109631996-08-28 Morten Welinder <terra@diku.dk> 109631996-08-28 Morten Welinder <terra@diku.dk>
10964 10964
10965 * minibuf.c (Vhistory_length, Qhistory_length): New variables. 10965 * minibuf.c (Vhistory_length, Qhistory_length): New variables.
10966 (syms_of_minibuf): Register and initialise these. 10966 (syms_of_minibuf): Register and initialize these.
10967 (read_minibuf): Truncate history list if needed. 10967 (read_minibuf): Truncate history list if needed.
10968 10968
109691996-08-28 Richard Stallman <rms@psilocin.gnu.ai.mit.edu> 109691996-08-28 Richard Stallman <rms@psilocin.gnu.ai.mit.edu>
diff --git a/src/ChangeLog.8 b/src/ChangeLog.8
index 00e4a1f62c8..e21af17657f 100644
--- a/src/ChangeLog.8
+++ b/src/ChangeLog.8
@@ -2723,7 +2723,7 @@
2723 (CURSOR_FACE_ID, MOUSE_FACE_ID): New. 2723 (CURSOR_FACE_ID, MOUSE_FACE_ID): New.
2724 2724
2725 * xfaces.c (Qscroll_bar, Qcursor, Qborder, Qmouse): New. 2725 * xfaces.c (Qscroll_bar, Qcursor, Qborder, Qmouse): New.
2726 (syms_of_xfaces): Intialize new symbols. 2726 (syms_of_xfaces): Initialize new symbols.
2727 2727
2728 * fns.c (Fmakehash): Take one argument, test, make all the 2728 * fns.c (Fmakehash): Take one argument, test, make all the
2729 rest keyword arguments. 2729 rest keyword arguments.
@@ -9227,7 +9227,7 @@
9227 * xdisp.c (store_frame_title_char): New function to store a 9227 * xdisp.c (store_frame_title_char): New function to store a
9228 single character for the frame title with re-allocation of 9228 single character for the frame title with re-allocation of
9229 frame_title_buf. 9229 frame_title_buf.
9230 (init_xdisp): Intialize frame_title_.* variables to null. 9230 (init_xdisp): Initialize frame_title_.* variables to null.
9231 9231
9232 * dispnew.c (quit_error_check): Removed. 9232 * dispnew.c (quit_error_check): Removed.
9233 9233
@@ -12321,7 +12321,7 @@
12321 (enumfont_t): Remove unused head pointer. 12321 (enumfont_t): Remove unused head pointer.
12322 (enum_font_cb2): Dereference elfLogFont. 12322 (enum_font_cb2): Dereference elfLogFont.
12323 (w32_list_bdf_fonts): New function. 12323 (w32_list_bdf_fonts): New function.
12324 (w32_list_fonts): Use one_w32_dispay_info instead of insisting on 12324 (w32_list_fonts): Use one_w32_display_info instead of insisting on
12325 valid frame. Remove MessageBox. Support BDF fonts. 12325 valid frame. Remove MessageBox. Support BDF fonts.
12326 (Fw32_find_bdf_fonts): New function. 12326 (Fw32_find_bdf_fonts): New function.
12327 (syms_of_w32fns): Add Vw32_bdf_filename_alist and 12327 (syms_of_w32fns): Add Vw32_bdf_filename_alist and
@@ -13266,7 +13266,7 @@
13266 13266
13267 * charset.c (Fchar_bytes): Doc fix. 13267 * charset.c (Fchar_bytes): Doc fix.
13268 (char_bytes): Fix returned value to match returned type. 13268 (char_bytes): Fix returned value to match returned type.
13269 (syms_of_charset): Fix type clash in initialisation of 13269 (syms_of_charset): Fix type clash in initialization of
13270 Vauto_fill_chars. 13270 Vauto_fill_chars.
13271 13271
132721998-10-29 Geoff Voelker <voelker@cs.washington.edu> 132721998-10-29 Geoff Voelker <voelker@cs.washington.edu>
@@ -13429,7 +13429,7 @@
13429 `x-list-fonts.c'. 13429 `x-list-fonts.c'.
13430 (w32_get_font_info, w32_query_font, w32_find_ccl_program): New 13430 (w32_get_font_info, w32_query_font, w32_find_ccl_program): New
13431 functions for fontset support - adapted from x_ equivalents. 13431 functions for fontset support - adapted from x_ equivalents.
13432 (syms_of_w32fns): New lisp variables initialised. Function 13432 (syms_of_w32fns): New lisp variables initialized. Function
13433 pointers for fontset.c set up. 13433 pointers for fontset.c set up.
13434 13434
13435 * w32term.c: Include fontset.h. Define codepage macros. 13435 * w32term.c: Include fontset.h. Define codepage macros.
diff --git a/src/ChangeLog.9 b/src/ChangeLog.9
index 9e7bd24f792..6f007992bef 100644
--- a/src/ChangeLog.9
+++ b/src/ChangeLog.9
@@ -5150,7 +5150,7 @@
51502000-11-27 Jason Rumney <jasonr@gnu.org> 51502000-11-27 Jason Rumney <jasonr@gnu.org>
5151 5151
5152 * w32fns.c (w32_load_system_font): Always mark font as double byte 5152 * w32fns.c (w32_load_system_font): Always mark font as double byte
5153 if codepage is unicode. 5153 if codepage is Unicode.
5154 5154
51552000-11-27 Gerd Moellmann <gerd@gnu.org> 51552000-11-27 Gerd Moellmann <gerd@gnu.org>
5156 5156
diff --git a/src/alloc.c b/src/alloc.c
index 5d04bd77872..96d63f53cf9 100644
--- a/src/alloc.c
+++ b/src/alloc.c
@@ -203,9 +203,6 @@ static int malloc_hysteresis;
203 remapping on more recent systems because this is less important 203 remapping on more recent systems because this is less important
204 nowadays than in the days of small memories and timesharing. */ 204 nowadays than in the days of small memories and timesharing. */
205 205
206#ifndef VIRT_ADDR_VARIES
207static
208#endif
209EMACS_INT pure[(PURESIZE + sizeof (EMACS_INT) - 1) / sizeof (EMACS_INT)] = {1,}; 206EMACS_INT pure[(PURESIZE + sizeof (EMACS_INT) - 1) / sizeof (EMACS_INT)] = {1,};
210#define PUREBEG (char *) pure 207#define PUREBEG (char *) pure
211 208
@@ -222,10 +219,7 @@ static ptrdiff_t pure_bytes_used_before_overflow;
222/* Value is non-zero if P points into pure space. */ 219/* Value is non-zero if P points into pure space. */
223 220
224#define PURE_POINTER_P(P) \ 221#define PURE_POINTER_P(P) \
225 (((PNTR_COMPARISON_TYPE) (P) \ 222 ((uintptr_t) (P) - (uintptr_t) purebeg <= pure_size)
226 < (PNTR_COMPARISON_TYPE) ((char *) purebeg + pure_size)) \
227 && ((PNTR_COMPARISON_TYPE) (P) \
228 >= (PNTR_COMPARISON_TYPE) purebeg))
229 223
230/* Index in pure at which next pure Lisp object will be allocated.. */ 224/* Index in pure at which next pure Lisp object will be allocated.. */
231 225
diff --git a/src/bidi.c b/src/bidi.c
index e688637a408..e0337927ec5 100644
--- a/src/bidi.c
+++ b/src/bidi.c
@@ -51,7 +51,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
51 51
52 A note about references to UAX#9 rules: if the reference says 52 A note about references to UAX#9 rules: if the reference says
53 something like "X9/Retaining", it means that you need to refer to 53 something like "X9/Retaining", it means that you need to refer to
54 rule X9 and to its modifications decribed in the "Implementation 54 rule X9 and to its modifications described in the "Implementation
55 Notes" section of UAX#9, under "Retaining Format Codes". */ 55 Notes" section of UAX#9, under "Retaining Format Codes". */
56 56
57#include <config.h> 57#include <config.h>
diff --git a/src/buffer.c b/src/buffer.c
index 90b43d29fc8..a327a1650f1 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -4400,7 +4400,7 @@ static int mmap_fd_1;
4400 4400
4401static int mmap_page_size; 4401static int mmap_page_size;
4402 4402
4403/* 1 means mmap has been intialized. */ 4403/* 1 means mmap has been initialized. */
4404 4404
4405static int mmap_initialized_p; 4405static int mmap_initialized_p;
4406 4406
@@ -4439,7 +4439,7 @@ static int mmap_initialized_p;
4439#define MMAP_ALLOCATED_P(start, end) 1 4439#define MMAP_ALLOCATED_P(start, end) 1
4440#endif 4440#endif
4441 4441
4442/* Perform necessary intializations for the use of mmap. */ 4442/* Perform necessary initializations for the use of mmap. */
4443 4443
4444static void 4444static void
4445mmap_init (void) 4445mmap_init (void)
diff --git a/src/buffer.h b/src/buffer.h
index a6b82abf053..fa65a4b81fd 100644
--- a/src/buffer.h
+++ b/src/buffer.h
@@ -978,7 +978,7 @@ extern int last_per_buffer_idx;
978 variable has an index > 0 associated with it, except when it always 978 variable has an index > 0 associated with it, except when it always
979 has buffer-local values, in which case the index is -1. If this is 979 has buffer-local values, in which case the index is -1. If this is
980 0, this is a bug and means that the slot of VAR in 980 0, this is a bug and means that the slot of VAR in
981 buffer_local_flags wasn't intiialized. */ 981 buffer_local_flags wasn't initialized. */
982 982
983#define PER_BUFFER_VAR_IDX(VAR) \ 983#define PER_BUFFER_VAR_IDX(VAR) \
984 PER_BUFFER_IDX (PER_BUFFER_VAR_OFFSET (VAR)) 984 PER_BUFFER_IDX (PER_BUFFER_VAR_OFFSET (VAR))
diff --git a/src/casetab.c b/src/casetab.c
index 3433b313c03..575a48ed146 100644
--- a/src/casetab.c
+++ b/src/casetab.c
@@ -95,7 +95,7 @@ CANONICALIZE maps each character to a canonical equivalent;
95 any two characters that are related by case-conversion have the same 95 any two characters that are related by case-conversion have the same
96 canonical equivalent character; it may be nil, in which case it is 96 canonical equivalent character; it may be nil, in which case it is
97 deduced from DOWNCASE and UPCASE. 97 deduced from DOWNCASE and UPCASE.
98EQUIVALENCES is a map that cyclicly permutes each equivalence class 98EQUIVALENCES is a map that cyclically permutes each equivalence class
99 (of characters with the same canonical equivalent); it may be nil, 99 (of characters with the same canonical equivalent); it may be nil,
100 in which case it is deduced from CANONICALIZE. */) 100 in which case it is deduced from CANONICALIZE. */)
101 (Lisp_Object table) 101 (Lisp_Object table)
diff --git a/src/ccl.c b/src/ccl.c
index 6366f1acb88..84d7a6a25ff 100644
--- a/src/ccl.c
+++ b/src/ccl.c
@@ -47,7 +47,7 @@ static Lisp_Object Qcode_conversion_map;
47static Lisp_Object Qcode_conversion_map_id; 47static Lisp_Object Qcode_conversion_map_id;
48 48
49/* Symbols of ccl program have this property, a value of the property 49/* Symbols of ccl program have this property, a value of the property
50 is an index for Vccl_protram_table. */ 50 is an index for Vccl_program_table. */
51static Lisp_Object Qccl_program_idx; 51static Lisp_Object Qccl_program_idx;
52 52
53/* Table of registered CCL programs. Each element is a vector of 53/* Table of registered CCL programs. Each element is a vector of
@@ -826,7 +826,7 @@ while (0)
826 : (charset = CHARSET_FROM_ID ((id)), DECODE_CHAR (charset, (code)))) 826 : (charset = CHARSET_FROM_ID ((id)), DECODE_CHAR (charset, (code))))
827 827
828/* Encode character C by some of charsets in CHARSET_LIST. Set ID to 828/* Encode character C by some of charsets in CHARSET_LIST. Set ID to
829 the id of the used charset, ENCODED to the resulf of encoding. 829 the id of the used charset, ENCODED to the result of encoding.
830 Assume that we can use the variable `charset'. */ 830 Assume that we can use the variable `charset'. */
831 831
832#define CCL_ENCODE_CHAR(c, charset_list, id, encoded) \ 832#define CCL_ENCODE_CHAR(c, charset_list, id, encoded) \
diff --git a/src/character.c b/src/character.c
index a21760c8ab2..88b1f11b96b 100644
--- a/src/character.c
+++ b/src/character.c
@@ -669,7 +669,7 @@ str_as_multibyte (unsigned char *str, EMACS_INT len, EMACS_INT nbytes,
669} 669}
670 670
671/* Parse unibyte string at STR of LEN bytes, and return the number of 671/* Parse unibyte string at STR of LEN bytes, and return the number of
672 bytes it may ocupy when converted to multibyte string by 672 bytes it may occupy when converted to multibyte string by
673 `str_to_multibyte'. */ 673 `str_to_multibyte'. */
674 674
675EMACS_INT 675EMACS_INT
diff --git a/src/character.h b/src/character.h
index 09bcf17ab96..5ae6cb8c49c 100644
--- a/src/character.h
+++ b/src/character.h
@@ -596,7 +596,7 @@ sanitize_char_width (EMACS_INT width)
596 ? ASCII_CHAR_WIDTH (c) \ 596 ? ASCII_CHAR_WIDTH (c) \
597 : sanitize_char_width (XINT (CHAR_TABLE_REF (Vchar_width_table, c)))) 597 : sanitize_char_width (XINT (CHAR_TABLE_REF (Vchar_width_table, c))))
598 598
599/* If C is a variation selector, return the index numnber of the 599/* If C is a variation selector, return the index of the
600 variation selector (1..256). Otherwise, return 0. */ 600 variation selector (1..256). Otherwise, return 0. */
601 601
602#define CHAR_VARIATION_SELECTOR_P(c) \ 602#define CHAR_VARIATION_SELECTOR_P(c) \
diff --git a/src/charset.c b/src/charset.c
index 266753f9d05..b6921a762b6 100644
--- a/src/charset.c
+++ b/src/charset.c
@@ -2082,7 +2082,7 @@ that case, find the charset from what supported by that coding system. */)
2082DEFUN ("charset-after", Fcharset_after, Scharset_after, 0, 1, 0, 2082DEFUN ("charset-after", Fcharset_after, Scharset_after, 0, 1, 0,
2083 doc: /* 2083 doc: /*
2084Return charset of a character in the current buffer at position POS. 2084Return charset of a character in the current buffer at position POS.
2085If POS is nil, it defauls to the current point. 2085If POS is nil, it defaults to the current point.
2086If POS is out of range, the value is nil. */) 2086If POS is out of range, the value is nil. */)
2087 (Lisp_Object pos) 2087 (Lisp_Object pos)
2088{ 2088{
diff --git a/src/chartab.c b/src/chartab.c
index 724b3076a11..8d903749284 100644
--- a/src/chartab.c
+++ b/src/chartab.c
@@ -747,7 +747,7 @@ equivalent and can be merged. It defaults to `equal'. */)
747 ARG is passed to C_FUNCTION when that is called. 747 ARG is passed to C_FUNCTION when that is called.
748 748
749 It returns the value of last character covered by TABLE (not the 749 It returns the value of last character covered by TABLE (not the
750 value inheritted from the parent), and by side-effect, the car part 750 value inherited from the parent), and by side-effect, the car part
751 of RANGE is updated to the minimum character C where C and all the 751 of RANGE is updated to the minimum character C where C and all the
752 following characters in TABLE have the same value. */ 752 following characters in TABLE have the same value. */
753 753
diff --git a/src/dbusbind.c b/src/dbusbind.c
index 52e08d8ee2a..7984be3564b 100644
--- a/src/dbusbind.c
+++ b/src/dbusbind.c
@@ -184,7 +184,7 @@ static int xd_in_read_queued_messages = 0;
184#endif 184#endif
185 185
186/* This was a macro. On Solaris 2.11 it was said to compile for 186/* This was a macro. On Solaris 2.11 it was said to compile for
187 hours, when optimzation is enabled. So we have transferred it into 187 hours, when optimization is enabled. So we have transferred it into
188 a function. */ 188 a function. */
189/* Determine the DBusType of a given Lisp symbol. OBJECT must be one 189/* Determine the DBusType of a given Lisp symbol. OBJECT must be one
190 of the predefined D-Bus type symbols. */ 190 of the predefined D-Bus type symbols. */
diff --git a/src/dispextern.h b/src/dispextern.h
index 006ceb31a5a..a45c5cc138f 100644
--- a/src/dispextern.h
+++ b/src/dispextern.h
@@ -2677,11 +2677,11 @@ struct redisplay_interface
2677 void (*flush_display) (struct frame *f); 2677 void (*flush_display) (struct frame *f);
2678 2678
2679 /* Flush the display of frame F if non-NULL. This is called 2679 /* Flush the display of frame F if non-NULL. This is called
2680 during redisplay, and should be NULL on systems which flushes 2680 during redisplay, and should be NULL on systems which flush
2681 automatically before reading input. */ 2681 automatically before reading input. */
2682 void (*flush_display_optional) (struct frame *f); 2682 void (*flush_display_optional) (struct frame *f);
2683 2683
2684 /* Clear the mouse hightlight in window W, if there is any. */ 2684 /* Clear the mouse highlight in window W, if there is any. */
2685 void (*clear_window_mouse_face) (struct window *w); 2685 void (*clear_window_mouse_face) (struct window *w);
2686 2686
2687 /* Set *LEFT and *RIGHT to the left and right overhang of GLYPH on 2687 /* Set *LEFT and *RIGHT to the left and right overhang of GLYPH on
@@ -3154,6 +3154,9 @@ void compute_fringe_widths (struct frame *, int);
3154void w32_init_fringe (struct redisplay_interface *); 3154void w32_init_fringe (struct redisplay_interface *);
3155void w32_reset_fringes (void); 3155void w32_reset_fringes (void);
3156#endif 3156#endif
3157
3158extern unsigned row_hash (struct glyph_row *);
3159
3157/* Defined in image.c */ 3160/* Defined in image.c */
3158 3161
3159#ifdef HAVE_WINDOW_SYSTEM 3162#ifdef HAVE_WINDOW_SYSTEM
diff --git a/src/dispnew.c b/src/dispnew.c
index 700952f6ae3..b920693688c 100644
--- a/src/dispnew.c
+++ b/src/dispnew.c
@@ -438,18 +438,7 @@ margin_glyphs_to_reserve (struct window *w, int total_glyphs, Lisp_Object margin
438int 438int
439verify_row_hash (struct glyph_row *row) 439verify_row_hash (struct glyph_row *row)
440{ 440{
441 int area, k; 441 return row->hash == row_hash (row);
442 unsigned row_hash = 0;
443
444 for (area = LEFT_MARGIN_AREA; area < LAST_AREA; ++area)
445 for (k = 0; k < row->used[area]; ++k)
446 row_hash = ((((row_hash << 4) + (row_hash >> 24)) & 0x0fffffff)
447 + row->glyphs[area][k].u.val
448 + row->glyphs[area][k].face_id
449 + row->glyphs[area][k].padding_p
450 + (row->glyphs[area][k].type << 2));
451
452 return row_hash == row->hash;
453} 442}
454#endif 443#endif
455 444
@@ -1087,37 +1076,55 @@ swap_glyphs_in_rows (struct glyph_row *a, struct glyph_row *b)
1087 1076
1088#endif /* 0 */ 1077#endif /* 0 */
1089 1078
1090/* Exchange pointers to glyph memory between glyph rows A and B. */ 1079/* Exchange pointers to glyph memory between glyph rows A and B. Also
1080 exchange the used[] array and the hash values of the rows, because
1081 these should all go together for the row's hash value to be
1082 correct. */
1091 1083
1092static inline void 1084static inline void
1093swap_glyph_pointers (struct glyph_row *a, struct glyph_row *b) 1085swap_glyph_pointers (struct glyph_row *a, struct glyph_row *b)
1094{ 1086{
1095 int i; 1087 int i;
1088 unsigned hash_tem = a->hash;
1089
1096 for (i = 0; i < LAST_AREA + 1; ++i) 1090 for (i = 0; i < LAST_AREA + 1; ++i)
1097 { 1091 {
1098 struct glyph *temp = a->glyphs[i]; 1092 struct glyph *temp = a->glyphs[i];
1093 short used_tem = a->used[i];
1094
1099 a->glyphs[i] = b->glyphs[i]; 1095 a->glyphs[i] = b->glyphs[i];
1100 b->glyphs[i] = temp; 1096 b->glyphs[i] = temp;
1097 a->used[i] = b->used[i];
1098 b->used[i] = used_tem;
1101 } 1099 }
1100 a->hash = b->hash;
1101 b->hash = hash_tem;
1102} 1102}
1103 1103
1104 1104
1105/* Copy glyph row structure FROM to glyph row structure TO, except 1105/* Copy glyph row structure FROM to glyph row structure TO, except
1106 that glyph pointers in the structures are left unchanged. */ 1106 that glyph pointers, the `used' counts, and the hash values in the
1107 structures are left unchanged. */
1107 1108
1108static inline void 1109static inline void
1109copy_row_except_pointers (struct glyph_row *to, struct glyph_row *from) 1110copy_row_except_pointers (struct glyph_row *to, struct glyph_row *from)
1110{ 1111{
1111 struct glyph *pointers[1 + LAST_AREA]; 1112 struct glyph *pointers[1 + LAST_AREA];
1113 short used[1 + LAST_AREA];
1114 unsigned hashval;
1112 1115
1113 /* Save glyph pointers of TO. */ 1116 /* Save glyph pointers of TO. */
1114 memcpy (pointers, to->glyphs, sizeof to->glyphs); 1117 memcpy (pointers, to->glyphs, sizeof to->glyphs);
1118 memcpy (used, to->used, sizeof to->used);
1119 hashval = to->hash;
1115 1120
1116 /* Do a structure assignment. */ 1121 /* Do a structure assignment. */
1117 *to = *from; 1122 *to = *from;
1118 1123
1119 /* Restore original pointers of TO. */ 1124 /* Restore original pointers of TO. */
1120 memcpy (to->glyphs, pointers, sizeof to->glyphs); 1125 memcpy (to->glyphs, pointers, sizeof to->glyphs);
1126 memcpy (to->used, used, sizeof to->used);
1127 to->hash = hashval;
1121} 1128}
1122 1129
1123 1130
@@ -4240,6 +4247,7 @@ add_row_entry (struct glyph_row *row)
4240 ptrdiff_t i = row->hash % row_table_size; 4247 ptrdiff_t i = row->hash % row_table_size;
4241 4248
4242 entry = row_table[i]; 4249 entry = row_table[i];
4250 xassert (entry || verify_row_hash (row));
4243 while (entry && !row_equal_p (entry->row, row, 1)) 4251 while (entry && !row_equal_p (entry->row, row, 1))
4244 entry = entry->next; 4252 entry = entry->next;
4245 4253
diff --git a/src/fileio.c b/src/fileio.c
index 44a85ab1977..7e75e6285f0 100644
--- a/src/fileio.c
+++ b/src/fileio.c
@@ -62,7 +62,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
62 62
63#ifdef DOS_NT 63#ifdef DOS_NT
64/* On Windows, drive letters must be alphabetic - on DOS, the Netware 64/* On Windows, drive letters must be alphabetic - on DOS, the Netware
65 redirector allows the six letters between 'Z' and 'a' as well. */ 65 redirector allows the six letters between 'Z' and 'a' as well. */
66#ifdef MSDOS 66#ifdef MSDOS
67#define IS_DRIVE(x) ((x) >= 'A' && (x) <= 'z') 67#define IS_DRIVE(x) ((x) >= 'A' && (x) <= 'z')
68#endif 68#endif
@@ -70,7 +70,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
70#define IS_DRIVE(x) isalpha ((unsigned char) (x)) 70#define IS_DRIVE(x) isalpha ((unsigned char) (x))
71#endif 71#endif
72/* Need to lower-case the drive letter, or else expanded 72/* Need to lower-case the drive letter, or else expanded
73 filenames will sometimes compare inequal, because 73 filenames will sometimes compare unequal, because
74 `expand-file-name' doesn't always down-case the drive letter. */ 74 `expand-file-name' doesn't always down-case the drive letter. */
75#define DRIVE_LETTER(x) (tolower ((unsigned char) (x))) 75#define DRIVE_LETTER(x) (tolower ((unsigned char) (x)))
76#endif 76#endif
@@ -338,7 +338,7 @@ Given a Unix syntax file name, returns a string ending in slash. */)
338 338
339 while (p != beg && !IS_DIRECTORY_SEP (p[-1]) 339 while (p != beg && !IS_DIRECTORY_SEP (p[-1])
340#ifdef DOS_NT 340#ifdef DOS_NT
341 /* only recognise drive specifier at the beginning */ 341 /* only recognize drive specifier at the beginning */
342 && !(p[-1] == ':' 342 && !(p[-1] == ':'
343 /* handle the "/:d:foo" and "/:foo" cases correctly */ 343 /* handle the "/:d:foo" and "/:foo" cases correctly */
344 && ((p == beg + 2 && !IS_DIRECTORY_SEP (*beg)) 344 && ((p == beg + 2 && !IS_DIRECTORY_SEP (*beg))
@@ -401,7 +401,7 @@ or the entire name if it contains no slash. */)
401 401
402 while (p != beg && !IS_DIRECTORY_SEP (p[-1]) 402 while (p != beg && !IS_DIRECTORY_SEP (p[-1])
403#ifdef DOS_NT 403#ifdef DOS_NT
404 /* only recognise drive specifier at beginning */ 404 /* only recognize drive specifier at beginning */
405 && !(p[-1] == ':' 405 && !(p[-1] == ':'
406 /* handle the "/:d:foo" case correctly */ 406 /* handle the "/:d:foo" case correctly */
407 && (p == beg + 2 || (p == beg + 4 && IS_DIRECTORY_SEP (*beg)))) 407 && (p == beg + 2 || (p == beg + 4 && IS_DIRECTORY_SEP (*beg))))
@@ -3686,6 +3686,7 @@ variable `last-coding-system-used' to the coding system actually used. */)
3686 int this_count = SPECPDL_INDEX (); 3686 int this_count = SPECPDL_INDEX ();
3687 int multibyte = ! NILP (BVAR (current_buffer, enable_multibyte_characters)); 3687 int multibyte = ! NILP (BVAR (current_buffer, enable_multibyte_characters));
3688 Lisp_Object conversion_buffer; 3688 Lisp_Object conversion_buffer;
3689 struct gcpro gcpro1;
3689 3690
3690 conversion_buffer = code_conversion_save (1, multibyte); 3691 conversion_buffer = code_conversion_save (1, multibyte);
3691 3692
@@ -3706,7 +3707,7 @@ variable `last-coding-system-used' to the coding system actually used. */)
3706 { 3707 {
3707 /* We read one bunch by one (READ_BUF_SIZE bytes) to allow 3708 /* We read one bunch by one (READ_BUF_SIZE bytes) to allow
3708 quitting while reading a huge while. */ 3709 quitting while reading a huge while. */
3709 /* try is reserved in some compilers (Microsoft C) */ 3710 /* `try'' is reserved in some compilers (Microsoft C). */
3710 EMACS_INT trytry = min (total - how_much, 3711 EMACS_INT trytry = min (total - how_much,
3711 READ_BUF_SIZE - unprocessed); 3712 READ_BUF_SIZE - unprocessed);
3712 3713
diff --git a/src/fns.c b/src/fns.c
index 392f447a6d8..04b51d10d9b 100644
--- a/src/fns.c
+++ b/src/fns.c
@@ -3252,7 +3252,7 @@ DEFUN ("base64-decode-string", Fbase64_decode_string, Sbase64_decode_string,
3252 return decoded_string; 3252 return decoded_string;
3253} 3253}
3254 3254
3255/* Base64-decode the data at FROM of LENGHT bytes into TO. If 3255/* Base64-decode the data at FROM of LENGTH bytes into TO. If
3256 MULTIBYTE is nonzero, the decoded result should be in multibyte 3256 MULTIBYTE is nonzero, the decoded result should be in multibyte
3257 form. If NCHARS_RETRUN is not NULL, store the number of produced 3257 form. If NCHARS_RETRUN is not NULL, store the number of produced
3258 characters in *NCHARS_RETURN. */ 3258 characters in *NCHARS_RETURN. */
diff --git a/src/fontset.c b/src/fontset.c
index 34b2131832f..9697f62ea72 100644
--- a/src/fontset.c
+++ b/src/fontset.c
@@ -905,7 +905,7 @@ face_suitable_for_char_p (struct face *face, int c)
905 905
906 906
907/* Return ID of face suitable for displaying character C on frame F. 907/* Return ID of face suitable for displaying character C on frame F.
908 FACE must be reazlied for ASCII characters in advance. Called from 908 FACE must be realized for ASCII characters in advance. Called from
909 the macro FACE_FOR_CHAR. */ 909 the macro FACE_FOR_CHAR. */
910 910
911int 911int
@@ -1346,7 +1346,7 @@ accumulate_script_ranges (Lisp_Object arg, Lisp_Object range, Lisp_Object val)
1346 1346
1347 In FONTSET, set FONT_DEF in a fashion specified by ADD for 1347 In FONTSET, set FONT_DEF in a fashion specified by ADD for
1348 characters in RANGE and ranges in SCRIPT_RANGE_LIST before RANGE. 1348 characters in RANGE and ranges in SCRIPT_RANGE_LIST before RANGE.
1349 The consumed ranges are poped up from SCRIPT_RANGE_LIST, and the 1349 The consumed ranges are popped up from SCRIPT_RANGE_LIST, and the
1350 new SCRIPT_RANGE_LIST is stored in ARG. 1350 new SCRIPT_RANGE_LIST is stored in ARG.
1351 1351
1352 If ASCII is nil, don't set FONT_DEF for ASCII characters. It is 1352 If ASCII is nil, don't set FONT_DEF for ASCII characters. It is
diff --git a/src/frame.c b/src/frame.c
index c14f4db91da..039ed6543cb 100644
--- a/src/frame.c
+++ b/src/frame.c
@@ -374,7 +374,7 @@ make_frame (int mini_p)
374 374
375 /* Use set_window_buffer, not Fset_window_buffer, and don't let 375 /* Use set_window_buffer, not Fset_window_buffer, and don't let
376 hooks be run by it. The reason is that the whole frame/window 376 hooks be run by it. The reason is that the whole frame/window
377 arrangement is not yet fully intialized at this point. Windows 377 arrangement is not yet fully initialized at this point. Windows
378 don't have the right size, glyph matrices aren't initialized 378 don't have the right size, glyph matrices aren't initialized
379 etc. Running Lisp functions at this point surely ends in a 379 etc. Running Lisp functions at this point surely ends in a
380 SEGV. */ 380 SEGV. */
@@ -1359,6 +1359,13 @@ delete_frame (Lisp_Object frame, Lisp_Object force)
1359 /* If needed, delete the terminal that this frame was on. 1359 /* If needed, delete the terminal that this frame was on.
1360 (This must be done after the frame is killed.) */ 1360 (This must be done after the frame is killed.) */
1361 terminal->reference_count--; 1361 terminal->reference_count--;
1362#ifdef USE_GTK
1363 /* FIXME: Deleting the terminal crashes emacs because of a GTK
1364 bug.
1365 http://lists.gnu.org/archive/html/emacs-devel/2011-10/msg00363.html */
1366 if (terminal->reference_count == 0 && terminal->type == output_x_window)
1367 terminal->reference_count = 1;
1368#endif /* USE_GTK */
1362 if (terminal->reference_count == 0) 1369 if (terminal->reference_count == 0)
1363 { 1370 {
1364 Lisp_Object tmp; 1371 Lisp_Object tmp;
@@ -1705,7 +1712,7 @@ If omitted, FRAME defaults to the currently selected frame. */)
1705} 1712}
1706 1713
1707/* Update the display_time slot of the buffers shown in WINDOW 1714/* Update the display_time slot of the buffers shown in WINDOW
1708 and all its descendents. */ 1715 and all its descendants. */
1709 1716
1710static void 1717static void
1711make_frame_visible_1 (Lisp_Object window) 1718make_frame_visible_1 (Lisp_Object window)
diff --git a/src/ftfont.c b/src/ftfont.c
index 7858a31be21..5c540f9bf82 100644
--- a/src/ftfont.c
+++ b/src/ftfont.c
@@ -272,7 +272,7 @@ ftfont_pattern_entity (FcPattern *p, Lisp_Object extra)
272 } 272 }
273 else 273 else
274 { 274 {
275 /* As this font is not scalable, parhaps this is a BDF or PCF 275 /* As this font is not scalable, perhaps this is a BDF or PCF
276 font. */ 276 font. */
277 FT_Face ft_face; 277 FT_Face ft_face;
278 278
@@ -730,7 +730,7 @@ ftfont_spec_pattern (Lisp_Object spec, char *otlayout, struct OpenTypeSpec **ots
730 730
731 if ((n = FONT_SLANT_NUMERIC (spec)) >= 0 731 if ((n = FONT_SLANT_NUMERIC (spec)) >= 0
732 && n < 100) 732 && n < 100)
733 /* Fontconfig doesn't support reverse-italic/obligue. */ 733 /* Fontconfig doesn't support reverse-italic/oblique. */
734 return NULL; 734 return NULL;
735 735
736 if (INTEGERP (AREF (spec, FONT_DPI_INDEX))) 736 if (INTEGERP (AREF (spec, FONT_DPI_INDEX)))
diff --git a/src/ftxfont.c b/src/ftxfont.c
index bbba3ca8163..608cfd8d44d 100644
--- a/src/ftxfont.c
+++ b/src/ftxfont.c
@@ -55,7 +55,7 @@ struct ftxfont_frame_data
55{ 55{
56 /* Background and foreground colors. */ 56 /* Background and foreground colors. */
57 XColor colors[2]; 57 XColor colors[2];
58 /* GCs interporationg the above colors. gcs[0] is for a color 58 /* GCs interpolating the above colors. gcs[0] is for a color
59 closest to BACKGROUND, and gcs[5] is for a color closest to 59 closest to BACKGROUND, and gcs[5] is for a color closest to
60 FOREGROUND. */ 60 FOREGROUND. */
61 GC gcs[6]; 61 GC gcs[6];
diff --git a/src/gtkutil.c b/src/gtkutil.c
index 0b7fd41f5f6..7e6f5c3164d 100644
--- a/src/gtkutil.c
+++ b/src/gtkutil.c
@@ -127,7 +127,7 @@ xg_set_screen (GtkWidget *w, FRAME_PTR f)
127 127
128 Returns non-zero if display could be opened, zero if display could not 128 Returns non-zero if display could be opened, zero if display could not
129 be opened, and less than zero if the GTK version doesn't support 129 be opened, and less than zero if the GTK version doesn't support
130 multipe displays. */ 130 multiple displays. */
131 131
132void 132void
133xg_display_open (char *display_name, Display **dpy) 133xg_display_open (char *display_name, Display **dpy)
@@ -348,7 +348,7 @@ file_for_image (Lisp_Object image)
348 348
349/* For the image defined in IMG, make and return a GtkImage. For displays with 349/* For the image defined in IMG, make and return a GtkImage. For displays with
350 8 planes or less we must make a GdkPixbuf and apply the mask manually. 350 8 planes or less we must make a GdkPixbuf and apply the mask manually.
351 Otherwise the highlightning and dimming the tool bar code in GTK does 351 Otherwise the highlighting and dimming the tool bar code in GTK does
352 will look bad. For display with more than 8 planes we just use the 352 will look bad. For display with more than 8 planes we just use the
353 pixmap and mask directly. For monochrome displays, GTK doesn't seem 353 pixmap and mask directly. For monochrome displays, GTK doesn't seem
354 able to use external pixmaps, it looks bad whatever we do. 354 able to use external pixmaps, it looks bad whatever we do.
@@ -2363,7 +2363,7 @@ xg_create_one_menuitem (widget_value *item,
2363 HIGHLIGHT_CB is the callback to call when entering/leaving menu items. 2363 HIGHLIGHT_CB is the callback to call when entering/leaving menu items.
2364 POP_UP_P is non-zero if we shall create a popup menu. 2364 POP_UP_P is non-zero if we shall create a popup menu.
2365 MENU_BAR_P is non-zero if we shall create a menu bar. 2365 MENU_BAR_P is non-zero if we shall create a menu bar.
2366 ADD_TEAROFF_P is non-zero if we shall add a teroff menu item. Ignored 2366 ADD_TEAROFF_P is non-zero if we shall add a tearoff menu item. Ignored
2367 if MENU_BAR_P is non-zero. 2367 if MENU_BAR_P is non-zero.
2368 TOPMENU is the topmost GtkWidget that others shall be placed under. 2368 TOPMENU is the topmost GtkWidget that others shall be placed under.
2369 It may be NULL, in that case we create the appropriate widget 2369 It may be NULL, in that case we create the appropriate widget
@@ -4262,7 +4262,7 @@ xg_make_tool_item (FRAME_PTR f,
4262#endif 4262#endif
4263 gtk_tool_item_set_homogeneous (ti, FALSE); 4263 gtk_tool_item_set_homogeneous (ti, FALSE);
4264 4264
4265 /* Callback to save modifyer mask (Shift/Control, etc). GTK makes 4265 /* Callback to save modifier mask (Shift/Control, etc). GTK makes
4266 no distinction based on modifiers in the activate callback, 4266 no distinction based on modifiers in the activate callback,
4267 so we have to do it ourselves. */ 4267 so we have to do it ourselves. */
4268 g_signal_connect (wb, "button-release-event", 4268 g_signal_connect (wb, "button-release-event",
diff --git a/src/image.c b/src/image.c
index e80f2b72102..8b61c7eefbc 100644
--- a/src/image.c
+++ b/src/image.c
@@ -7754,7 +7754,7 @@ imagemagick_load_image (struct frame *f, struct image *img,
7754 } 7754 }
7755 7755
7756 /* Finally we are done manipulating the image. Figure out the 7756 /* Finally we are done manipulating the image. Figure out the
7757 resulting width/height and transfer ownerwship to Emacs. */ 7757 resulting width/height and transfer ownership to Emacs. */
7758 height = MagickGetImageHeight (image_wand); 7758 height = MagickGetImageHeight (image_wand);
7759 width = MagickGetImageWidth (image_wand); 7759 width = MagickGetImageWidth (image_wand);
7760 7760
@@ -7786,7 +7786,7 @@ imagemagick_load_image (struct frame *f, struct image *img,
7786 goto imagemagick_error; 7786 goto imagemagick_error;
7787 } 7787 }
7788 7788
7789 /* Copy imagegmagick image to x with primitive yet robust pixel 7789 /* Copy imagemagick image to x with primitive yet robust pixel
7790 pusher loop. This has been tested a lot with many different 7790 pusher loop. This has been tested a lot with many different
7791 images. */ 7791 images. */
7792 7792
diff --git a/src/insdel.c b/src/insdel.c
index 01e5c57b2b0..e39a362eac7 100644
--- a/src/insdel.c
+++ b/src/insdel.c
@@ -1316,7 +1316,7 @@ replace_range (EMACS_INT from, EMACS_INT to, Lisp_Object new,
1316 1316
1317 UNGCPRO; 1317 UNGCPRO;
1318 1318
1319 /* Make args be valid */ 1319 /* Make args be valid. */
1320 if (from < BEGV) 1320 if (from < BEGV)
1321 from = BEGV; 1321 from = BEGV;
1322 if (to > ZV) 1322 if (to > ZV)
diff --git a/src/intervals.c b/src/intervals.c
index a78c7f07f6c..05b7175ac3f 100644
--- a/src/intervals.c
+++ b/src/intervals.c
@@ -1317,7 +1317,7 @@ interval_deletion_adjustment (register INTERVAL tree, register EMACS_INT from,
1317 if (NULL_INTERVAL_P (tree)) 1317 if (NULL_INTERVAL_P (tree))
1318 return 0; 1318 return 0;
1319 1319
1320 /* Left branch */ 1320 /* Left branch. */
1321 if (relative_position < LEFT_TOTAL_LENGTH (tree)) 1321 if (relative_position < LEFT_TOTAL_LENGTH (tree))
1322 { 1322 {
1323 EMACS_INT subtract = interval_deletion_adjustment (tree->left, 1323 EMACS_INT subtract = interval_deletion_adjustment (tree->left,
@@ -1327,7 +1327,7 @@ interval_deletion_adjustment (register INTERVAL tree, register EMACS_INT from,
1327 CHECK_TOTAL_LENGTH (tree); 1327 CHECK_TOTAL_LENGTH (tree);
1328 return subtract; 1328 return subtract;
1329 } 1329 }
1330 /* Right branch */ 1330 /* Right branch. */
1331 else if (relative_position >= (TOTAL_LENGTH (tree) 1331 else if (relative_position >= (TOTAL_LENGTH (tree)
1332 - RIGHT_TOTAL_LENGTH (tree))) 1332 - RIGHT_TOTAL_LENGTH (tree)))
1333 { 1333 {
@@ -1699,54 +1699,37 @@ graft_intervals_into_buffer (INTERVAL source, EMACS_INT position,
1699 Qnil, buf, 0); 1699 Qnil, buf, 0);
1700 } 1700 }
1701 if (! NULL_INTERVAL_P (BUF_INTERVALS (buffer))) 1701 if (! NULL_INTERVAL_P (BUF_INTERVALS (buffer)))
1702 /* Shouldn't be necessary. -stef */ 1702 /* Shouldn't be necessary. --Stef */
1703 BUF_INTERVALS (buffer) = balance_an_interval (BUF_INTERVALS (buffer)); 1703 BUF_INTERVALS (buffer) = balance_an_interval (BUF_INTERVALS (buffer));
1704 return; 1704 return;
1705 } 1705 }
1706 1706
1707 if (NULL_INTERVAL_P (tree)) 1707 eassert (length == TOTAL_LENGTH (source));
1708 { 1708
1709 /* The inserted text constitutes the whole buffer, so 1709 if ((BUF_Z (buffer) - BUF_BEG (buffer)) == length)
1710 { /* The inserted text constitutes the whole buffer, so
1710 simply copy over the interval structure. */ 1711 simply copy over the interval structure. */
1711 if ((BUF_Z (buffer) - BUF_BEG (buffer)) == TOTAL_LENGTH (source))
1712 {
1713 Lisp_Object buf; 1712 Lisp_Object buf;
1714 XSETBUFFER (buf, buffer); 1713 XSETBUFFER (buf, buffer);
1715 BUF_INTERVALS (buffer) = reproduce_tree_obj (source, buf); 1714 BUF_INTERVALS (buffer) = reproduce_tree_obj (source, buf);
1716 BUF_INTERVALS (buffer)->position = BEG; 1715 BUF_INTERVALS (buffer)->position = BUF_BEG (buffer);
1717 BUF_INTERVALS (buffer)->up_obj = 1; 1716 eassert (BUF_INTERVALS (buffer)->up_obj == 1);
1718
1719 return; 1717 return;
1720 } 1718 }
1721 1719 else if (NULL_INTERVAL_P (tree))
1722 /* Create an interval tree in which to place a copy 1720 { /* Create an interval tree in which to place a copy
1723 of the intervals of the inserted string. */ 1721 of the intervals of the inserted string. */
1724 {
1725 Lisp_Object buf; 1722 Lisp_Object buf;
1726 XSETBUFFER (buf, buffer); 1723 XSETBUFFER (buf, buffer);
1727 tree = create_root_interval (buf); 1724 tree = create_root_interval (buf);
1728 } 1725 }
1729 }
1730 else if (TOTAL_LENGTH (tree) == TOTAL_LENGTH (source))
1731 /* If the buffer contains only the new string, but
1732 there was already some interval tree there, then it may be
1733 some zero length intervals. Eventually, do something clever
1734 about inserting properly. For now, just waste the old intervals. */
1735 {
1736 BUF_INTERVALS (buffer) = reproduce_tree (source, INTERVAL_PARENT (tree));
1737 BUF_INTERVALS (buffer)->position = BEG;
1738 BUF_INTERVALS (buffer)->up_obj = 1;
1739 /* Explicitly free the old tree here. */
1740
1741 return;
1742 }
1743 /* Paranoia -- the text has already been added, so this buffer 1726 /* Paranoia -- the text has already been added, so this buffer
1744 should be of non-zero length. */ 1727 should be of non-zero length. */
1745 else if (TOTAL_LENGTH (tree) == 0) 1728 else if (TOTAL_LENGTH (tree) == 0)
1746 abort (); 1729 abort ();
1747 1730
1748 this = under = find_interval (tree, position); 1731 this = under = find_interval (tree, position);
1749 if (NULL_INTERVAL_P (under)) /* Paranoia */ 1732 if (NULL_INTERVAL_P (under)) /* Paranoia. */
1750 abort (); 1733 abort ();
1751 over = find_interval (source, interval_start_pos (source)); 1734 over = find_interval (source, interval_start_pos (source));
1752 1735
@@ -1917,7 +1900,7 @@ set_point (EMACS_INT charpos)
1917 current buffer, and the invisible property has a `stickiness' such that 1900 current buffer, and the invisible property has a `stickiness' such that
1918 inserting a character at position POS would inherit the property it, 1901 inserting a character at position POS would inherit the property it,
1919 return POS + ADJ, otherwise return POS. If TEST_INTANG is non-zero, 1902 return POS + ADJ, otherwise return POS. If TEST_INTANG is non-zero,
1920 then intangibility is required as well as invisibleness. 1903 then intangibility is required as well as invisibility.
1921 1904
1922 TEST_OFFS should be either 0 or -1, and ADJ should be either 1 or -1. 1905 TEST_OFFS should be either 0 or -1, and ADJ should be either 1 or -1.
1923 1906
diff --git a/src/intervals.h b/src/intervals.h
index 720598fe7a6..977f3d965a4 100644
--- a/src/intervals.h
+++ b/src/intervals.h
@@ -64,71 +64,71 @@ struct interval
64 Lisp_Object plist; 64 Lisp_Object plist;
65}; 65};
66 66
67/* These are macros for dealing with the interval tree. */ 67/* These are macros for dealing with the interval tree. */
68 68
69/* Size of the structure used to represent an interval */ 69/* Size of the structure used to represent an interval. */
70#define INTERVAL_SIZE (sizeof (struct interval)) 70#define INTERVAL_SIZE (sizeof (struct interval))
71 71
72/* Size of a pointer to an interval structure */ 72/* Size of a pointer to an interval structure. */
73#define INTERVAL_PTR_SIZE (sizeof (struct interval *)) 73#define INTERVAL_PTR_SIZE (sizeof (struct interval *))
74 74
75#define NULL_INTERVAL_P(i) ((i) == NULL_INTERVAL) 75#define NULL_INTERVAL_P(i) ((i) == NULL_INTERVAL)
76 76
77/* True if this interval has no right child. */ 77/* True if this interval has no right child. */
78#define NULL_RIGHT_CHILD(i) ((i)->right == NULL_INTERVAL) 78#define NULL_RIGHT_CHILD(i) ((i)->right == NULL_INTERVAL)
79 79
80/* True if this interval has no left child. */ 80/* True if this interval has no left child. */
81#define NULL_LEFT_CHILD(i) ((i)->left == NULL_INTERVAL) 81#define NULL_LEFT_CHILD(i) ((i)->left == NULL_INTERVAL)
82 82
83/* True if this interval has no parent. */ 83/* True if this interval has no parent. */
84#define NULL_PARENT(i) ((i)->up_obj || (i)->up.interval == 0) 84#define NULL_PARENT(i) ((i)->up_obj || (i)->up.interval == 0)
85 85
86/* True if this interval is the left child of some other interval. */ 86/* True if this interval is the left child of some other interval. */
87#define AM_LEFT_CHILD(i) (! NULL_PARENT (i) \ 87#define AM_LEFT_CHILD(i) (! NULL_PARENT (i) \
88 && INTERVAL_PARENT (i)->left == (i)) 88 && INTERVAL_PARENT (i)->left == (i))
89 89
90/* True if this interval is the right child of some other interval. */ 90/* True if this interval is the right child of some other interval. */
91#define AM_RIGHT_CHILD(i) (! NULL_PARENT (i) \ 91#define AM_RIGHT_CHILD(i) (! NULL_PARENT (i) \
92 && INTERVAL_PARENT (i)->right == (i)) 92 && INTERVAL_PARENT (i)->right == (i))
93 93
94/* True if this interval has no children. */ 94/* True if this interval has no children. */
95#define LEAF_INTERVAL_P(i) ((i)->left == NULL_INTERVAL \ 95#define LEAF_INTERVAL_P(i) ((i)->left == NULL_INTERVAL \
96 && (i)->right == NULL_INTERVAL) 96 && (i)->right == NULL_INTERVAL)
97 97
98/* True if this interval has no parent and is therefore the root. */ 98/* True if this interval has no parent and is therefore the root. */
99#define ROOT_INTERVAL_P(i) (NULL_PARENT (i)) 99#define ROOT_INTERVAL_P(i) (NULL_PARENT (i))
100 100
101/* True if this interval is the only interval in the interval tree. */ 101/* True if this interval is the only interval in the interval tree. */
102#define ONLY_INTERVAL_P(i) (ROOT_INTERVAL_P ((i)) && LEAF_INTERVAL_P ((i))) 102#define ONLY_INTERVAL_P(i) (ROOT_INTERVAL_P ((i)) && LEAF_INTERVAL_P ((i)))
103 103
104/* True if this interval has both left and right children. */ 104/* True if this interval has both left and right children. */
105#define BOTH_KIDS_P(i) ((i)->left != NULL_INTERVAL \ 105#define BOTH_KIDS_P(i) ((i)->left != NULL_INTERVAL \
106 && (i)->right != NULL_INTERVAL) 106 && (i)->right != NULL_INTERVAL)
107 107
108/* The total size of all text represented by this interval and all its 108/* The total size of all text represented by this interval and all its
109 children in the tree. This is zero if the interval is null. */ 109 children in the tree. This is zero if the interval is null. */
110#define TOTAL_LENGTH(i) ((i) == NULL_INTERVAL ? 0 : (i)->total_length) 110#define TOTAL_LENGTH(i) ((i) == NULL_INTERVAL ? 0 : (i)->total_length)
111 111
112/* The size of text represented by this interval alone. */ 112/* The size of text represented by this interval alone. */
113#define LENGTH(i) ((i) == NULL_INTERVAL ? 0 : (TOTAL_LENGTH ((i)) \ 113#define LENGTH(i) ((i) == NULL_INTERVAL ? 0 : (TOTAL_LENGTH ((i)) \
114 - TOTAL_LENGTH ((i)->right) \ 114 - TOTAL_LENGTH ((i)->right) \
115 - TOTAL_LENGTH ((i)->left))) 115 - TOTAL_LENGTH ((i)->left)))
116 116
117/* The position of the character just past the end of I. Note that 117/* The position of the character just past the end of I. Note that
118 the position cache i->position must be valid for this to work. */ 118 the position cache i->position must be valid for this to work. */
119#define INTERVAL_LAST_POS(i) ((i)->position + LENGTH ((i))) 119#define INTERVAL_LAST_POS(i) ((i)->position + LENGTH ((i)))
120 120
121/* The total size of the left subtree of this interval. */ 121/* The total size of the left subtree of this interval. */
122#define LEFT_TOTAL_LENGTH(i) ((i)->left ? (i)->left->total_length : 0) 122#define LEFT_TOTAL_LENGTH(i) ((i)->left ? (i)->left->total_length : 0)
123 123
124/* The total size of the right subtree of this interval. */ 124/* The total size of the right subtree of this interval. */
125#define RIGHT_TOTAL_LENGTH(i) ((i)->right ? (i)->right->total_length : 0) 125#define RIGHT_TOTAL_LENGTH(i) ((i)->right ? (i)->right->total_length : 0)
126 126
127 127
128/* These macros are for dealing with the interval properties. */ 128/* These macros are for dealing with the interval properties. */
129 129
130/* True if this is a default interval, which is the same as being null 130/* True if this is a default interval, which is the same as being null
131 or having no properties. */ 131 or having no properties. */
132#define DEFAULT_INTERVAL_P(i) (NULL_INTERVAL_P (i) || EQ ((i)->plist, Qnil)) 132#define DEFAULT_INTERVAL_P(i) (NULL_INTERVAL_P (i) || EQ ((i)->plist, Qnil))
133 133
134/* Test what type of parent we have. Three possibilities: another 134/* Test what type of parent we have. Three possibilities: another
@@ -169,7 +169,7 @@ struct interval
169 } \ 169 } \
170 while (0) 170 while (0)
171 171
172/* Reset this interval to its vanilla, or no-property state. */ 172/* Reset this interval to its vanilla, or no-property state. */
173#define RESET_INTERVAL(i) \ 173#define RESET_INTERVAL(i) \
174{ \ 174{ \
175 (i)->total_length = (i)->position = 0; \ 175 (i)->total_length = (i)->position = 0; \
@@ -181,7 +181,7 @@ struct interval
181 (i)->plist = Qnil; \ 181 (i)->plist = Qnil; \
182} 182}
183 183
184/* Copy the cached property values of interval FROM to interval TO. */ 184/* Copy the cached property values of interval FROM to interval TO. */
185#define COPY_INTERVAL_CACHE(from,to) \ 185#define COPY_INTERVAL_CACHE(from,to) \
186{ \ 186{ \
187 (to)->write_protect = (from)->write_protect; \ 187 (to)->write_protect = (from)->write_protect; \
@@ -190,7 +190,7 @@ struct interval
190 (to)->rear_sticky = (from)->rear_sticky; \ 190 (to)->rear_sticky = (from)->rear_sticky; \
191} 191}
192 192
193/* Copy only the set bits of FROM's cache. */ 193/* Copy only the set bits of FROM's cache. */
194#define MERGE_INTERVAL_CACHE(from,to) \ 194#define MERGE_INTERVAL_CACHE(from,to) \
195{ \ 195{ \
196 if ((from)->write_protect) (to)->write_protect = 1; \ 196 if ((from)->write_protect) (to)->write_protect = 1; \
@@ -201,18 +201,18 @@ struct interval
201 201
202/* Macro determining whether the properties of an interval being 202/* Macro determining whether the properties of an interval being
203 inserted should be merged with the properties of the text where 203 inserted should be merged with the properties of the text where
204 they are being inserted. */ 204 they are being inserted. */
205#define MERGE_INSERTIONS(i) 1 205#define MERGE_INSERTIONS(i) 1
206 206
207/* Macro determining if an invisible interval should be displayed 207/* Macro determining if an invisible interval should be displayed
208 as a special glyph, or not at all. */ 208 as a special glyph, or not at all. */
209#define DISPLAY_INVISIBLE_GLYPH(i) 0 209#define DISPLAY_INVISIBLE_GLYPH(i) 0
210 210
211/* Is this interval visible? Replace later with cache access */ 211/* Is this interval visible? Replace later with cache access. */
212#define INTERVAL_VISIBLE_P(i) \ 212#define INTERVAL_VISIBLE_P(i) \
213 (! NULL_INTERVAL_P (i) && NILP (textget ((i)->plist, Qinvisible))) 213 (! NULL_INTERVAL_P (i) && NILP (textget ((i)->plist, Qinvisible)))
214 214
215/* Is this interval writable? Replace later with cache access */ 215/* Is this interval writable? Replace later with cache access. */
216#define INTERVAL_WRITABLE_P(i) \ 216#define INTERVAL_WRITABLE_P(i) \
217 (! NULL_INTERVAL_P (i) \ 217 (! NULL_INTERVAL_P (i) \
218 && (NILP (textget ((i)->plist, Qread_only)) \ 218 && (NILP (textget ((i)->plist, Qread_only)) \
@@ -222,7 +222,7 @@ struct interval
222 : !NILP (Vinhibit_read_only))))) \ 222 : !NILP (Vinhibit_read_only))))) \
223 223
224/* Macros to tell whether insertions before or after this interval 224/* Macros to tell whether insertions before or after this interval
225 should stick to it. */ 225 should stick to it. */
226/* Replace later with cache access */ 226/* Replace later with cache access */
227/*#define FRONT_STICKY_P(i) ((i)->front_sticky != 0) 227/*#define FRONT_STICKY_P(i) ((i)->front_sticky != 0)
228 #define END_STICKY_P(i) ((i)->rear_sticky != 0)*/ 228 #define END_STICKY_P(i) ((i)->rear_sticky != 0)*/
@@ -245,11 +245,11 @@ struct interval
245 ? !NILP (prop) \ 245 ? !NILP (prop) \
246 : invisible_p (prop, BVAR (current_buffer, invisibility_spec))) 246 : invisible_p (prop, BVAR (current_buffer, invisibility_spec)))
247 247
248/* Declared in alloc.c */ 248/* Declared in alloc.c. */
249 249
250extern INTERVAL make_interval (void); 250extern INTERVAL make_interval (void);
251 251
252/* Declared in intervals.c */ 252/* Declared in intervals.c. */
253 253
254extern INTERVAL create_root_interval (Lisp_Object); 254extern INTERVAL create_root_interval (Lisp_Object);
255extern void copy_properties (INTERVAL, INTERVAL); 255extern void copy_properties (INTERVAL, INTERVAL);
@@ -288,12 +288,12 @@ extern INTERVAL validate_interval_range (Lisp_Object, Lisp_Object *,
288 Lisp_Object *, int); 288 Lisp_Object *, int);
289extern INTERVAL interval_of (EMACS_INT, Lisp_Object); 289extern INTERVAL interval_of (EMACS_INT, Lisp_Object);
290 290
291/* Defined in xdisp.c */ 291/* Defined in xdisp.c. */
292extern int invisible_p (Lisp_Object, Lisp_Object); 292extern int invisible_p (Lisp_Object, Lisp_Object);
293 293
294/* Declared in textprop.c */ 294/* Declared in textprop.c. */
295 295
296/* Types of hooks. */ 296/* Types of hooks. */
297extern Lisp_Object Qpoint_left; 297extern Lisp_Object Qpoint_left;
298extern Lisp_Object Qpoint_entered; 298extern Lisp_Object Qpoint_entered;
299extern Lisp_Object Qmodification_hooks; 299extern Lisp_Object Qmodification_hooks;
@@ -301,11 +301,11 @@ extern Lisp_Object Qcategory;
301extern Lisp_Object Qlocal_map; 301extern Lisp_Object Qlocal_map;
302extern Lisp_Object Qkeymap; 302extern Lisp_Object Qkeymap;
303 303
304/* Visual properties text (including strings) may have. */ 304/* Visual properties text (including strings) may have. */
305extern Lisp_Object Qfont; 305extern Lisp_Object Qfont;
306extern Lisp_Object Qinvisible, Qintangible; 306extern Lisp_Object Qinvisible, Qintangible;
307 307
308/* Sticky properties */ 308/* Sticky properties. */
309extern Lisp_Object Qfront_sticky, Qrear_nonsticky; 309extern Lisp_Object Qfront_sticky, Qrear_nonsticky;
310 310
311EXFUN (Fget_char_property, 3); 311EXFUN (Fget_char_property, 3);
diff --git a/src/keyboard.c b/src/keyboard.c
index 8b94ee6b5d1..bee91c6b5cf 100644
--- a/src/keyboard.c
+++ b/src/keyboard.c
@@ -4823,7 +4823,7 @@ const char *const lispy_function_keys[] =
4823 "ico-00", /* VK_ICO_00 0xE4 */ 4823 "ico-00", /* VK_ICO_00 0xE4 */
4824 0, /* VK_PROCESSKEY 0xE5 - used by IME */ 4824 0, /* VK_PROCESSKEY 0xE5 - used by IME */
4825 "ico-clear", /* VK_ICO_CLEAR 0xE6 */ 4825 "ico-clear", /* VK_ICO_CLEAR 0xE6 */
4826 0, /* VK_PACKET 0xE7 - used to pass unicode chars */ 4826 0, /* VK_PACKET 0xE7 - used to pass Unicode chars */
4827 0, /* 0xE8 */ 4827 0, /* 0xE8 */
4828 "reset", /* VK_OEM_RESET 0xE9 */ 4828 "reset", /* VK_OEM_RESET 0xE9 */
4829 "jump", /* VK_OEM_JUMP 0xEA */ 4829 "jump", /* VK_OEM_JUMP 0xEA */
@@ -10153,7 +10153,7 @@ will read just one key sequence. */)
10153 ! NILP (can_return_switch_frame), 0); 10153 ! NILP (can_return_switch_frame), 0);
10154 10154
10155#if 0 /* The following is fine for code reading a key sequence and 10155#if 0 /* The following is fine for code reading a key sequence and
10156 then proceeding with a lenghty computation, but it's not good 10156 then proceeding with a lengthy computation, but it's not good
10157 for code reading keys in a loop, like an input method. */ 10157 for code reading keys in a loop, like an input method. */
10158#ifdef HAVE_WINDOW_SYSTEM 10158#ifdef HAVE_WINDOW_SYSTEM
10159 if (display_hourglass_p) 10159 if (display_hourglass_p)
@@ -12120,7 +12120,7 @@ This variable is keyboard-local. */);
12120Function key definitions that apply to all terminal devices should go 12120Function key definitions that apply to all terminal devices should go
12121here. If a mapping is defined in both the current 12121here. If a mapping is defined in both the current
12122`local-function-key-map' binding and this variable, then the local 12122`local-function-key-map' binding and this variable, then the local
12123definition will take precendence. */); 12123definition will take precedence. */);
12124 Vfunction_key_map = Fmake_sparse_keymap (Qnil); 12124 Vfunction_key_map = Fmake_sparse_keymap (Qnil);
12125 12125
12126 DEFVAR_LISP ("key-translation-map", Vkey_translation_map, 12126 DEFVAR_LISP ("key-translation-map", Vkey_translation_map,
diff --git a/src/keymap.c b/src/keymap.c
index 6f9cf288f6d..b429ca968d7 100644
--- a/src/keymap.c
+++ b/src/keymap.c
@@ -2624,11 +2624,11 @@ remapped command in the returned list. */)
2624 /* We have a list of advertised bindings. */ 2624 /* We have a list of advertised bindings. */
2625 while (CONSP (tem)) 2625 while (CONSP (tem))
2626 if (EQ (shadow_lookup (keymaps, XCAR (tem), Qnil, 0), definition)) 2626 if (EQ (shadow_lookup (keymaps, XCAR (tem), Qnil, 0), definition))
2627 return XCAR (tem); 2627 RETURN_UNGCPRO (XCAR (tem));
2628 else 2628 else
2629 tem = XCDR (tem); 2629 tem = XCDR (tem);
2630 if (EQ (shadow_lookup (keymaps, tem, Qnil, 0), definition)) 2630 if (EQ (shadow_lookup (keymaps, tem, Qnil, 0), definition))
2631 return tem; 2631 RETURN_UNGCPRO (tem);
2632 } 2632 }
2633 2633
2634 sequences = Freverse (where_is_internal (definition, keymaps, 2634 sequences = Freverse (where_is_internal (definition, keymaps,
diff --git a/src/lisp.h b/src/lisp.h
index 5407956c202..2056b7caff8 100644
--- a/src/lisp.h
+++ b/src/lisp.h
@@ -947,7 +947,7 @@ struct Lisp_Vector
947 947
948/* Compute A OP B, using the unsigned comparison operator OP. A and B 948/* Compute A OP B, using the unsigned comparison operator OP. A and B
949 should be integer expressions. This is not the same as 949 should be integer expressions. This is not the same as
950 mathemeatical comparison; for example, UNSIGNED_CMP (0, <, -1) 950 mathematical comparison; for example, UNSIGNED_CMP (0, <, -1)
951 returns 1. For efficiency, prefer plain unsigned comparison if A 951 returns 1. For efficiency, prefer plain unsigned comparison if A
952 and B's sizes both fit (after integer promotion). */ 952 and B's sizes both fit (after integer promotion). */
953#define UNSIGNED_CMP(a, op, b) \ 953#define UNSIGNED_CMP(a, op, b) \
@@ -1881,9 +1881,6 @@ typedef struct {
1881 CHECK_NATNUM (tmp); \ 1881 CHECK_NATNUM (tmp); \
1882 XSETCDR ((x), tmp); \ 1882 XSETCDR ((x), tmp); \
1883 } while (0) 1883 } while (0)
1884
1885/* Cast pointers to this type to compare them. */
1886#define PNTR_COMPARISON_TYPE uintptr_t
1887 1884
1888/* Define a built-in function for calling from Lisp. 1885/* Define a built-in function for calling from Lisp.
1889 `lname' should be the name to give the function in Lisp, 1886 `lname' should be the name to give the function in Lisp,
diff --git a/src/lread.c b/src/lread.c
index 110f3e62f71..f1f6f0cbd78 100644
--- a/src/lread.c
+++ b/src/lread.c
@@ -3984,7 +3984,7 @@ init_obarray (void)
3984 Qnil = intern_c_string ("nil"); 3984 Qnil = intern_c_string ("nil");
3985 3985
3986 /* Fmake_symbol inits fields of new symbols with Qunbound and Qnil, 3986 /* Fmake_symbol inits fields of new symbols with Qunbound and Qnil,
3987 so those two need to be fixed manally. */ 3987 so those two need to be fixed manually. */
3988 SET_SYMBOL_VAL (XSYMBOL (Qunbound), Qunbound); 3988 SET_SYMBOL_VAL (XSYMBOL (Qunbound), Qunbound);
3989 XSYMBOL (Qunbound)->function = Qunbound; 3989 XSYMBOL (Qunbound)->function = Qunbound;
3990 XSYMBOL (Qunbound)->plist = Qnil; 3990 XSYMBOL (Qunbound)->plist = Qnil;
diff --git a/src/m/ibms390.h b/src/m/ibms390.h
deleted file mode 100644
index c309035dc5c..00000000000
--- a/src/m/ibms390.h
+++ /dev/null
@@ -1,27 +0,0 @@
1/* Machine description file for IBM S390 in 32-bit mode
2
3Copyright (C) 1985-1986, 2001-2011 Free Software Foundation, Inc.
4
5This file is part of GNU Emacs.
6
7GNU Emacs is free software: you can redistribute it and/or modify
8it under the terms of the GNU General Public License as published by
9the Free Software Foundation, either version 3 of the License, or
10(at your option) any later version.
11
12GNU Emacs is distributed in the hope that it will be useful,
13but WITHOUT ANY WARRANTY; without even the implied warranty of
14MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15GNU General Public License for more details.
16
17You should have received a copy of the GNU General Public License
18along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
19
20
21/* Define VIRT_ADDR_VARIES if the virtual addresses of
22 pure and impure space as loaded can vary, and even their
23 relative order cannot be relied on.
24
25 Otherwise Emacs assumes that text space precedes data space,
26 numerically. */
27#define VIRT_ADDR_VARIES
diff --git a/src/m/ibms390x.h b/src/m/ibms390x.h
index 04092d6e1ac..5ea7974b052 100644
--- a/src/m/ibms390x.h
+++ b/src/m/ibms390x.h
@@ -17,8 +17,6 @@ GNU General Public License for more details.
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 "ibms390.h"
21
22#define BITS_PER_LONG 64 20#define BITS_PER_LONG 64
23#define BITS_PER_EMACS_INT 64 21#define BITS_PER_EMACS_INT 64
24 22
diff --git a/src/m/intel386.h b/src/m/intel386.h
index 16f0645715c..114b7fef963 100644
--- a/src/m/intel386.h
+++ b/src/m/intel386.h
@@ -19,7 +19,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
19 19
20 20
21#ifdef WINDOWSNT 21#ifdef WINDOWSNT
22#define VIRT_ADDR_VARIES
23#define DATA_START get_data_start () 22#define DATA_START get_data_start ()
24#endif 23#endif
25 24
@@ -28,4 +27,3 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
28/* we cannot get the maximum address for brk */ 27/* we cannot get the maximum address for brk */
29#define ULIMIT_BREAK_VALUE (32*1024*1024) 28#define ULIMIT_BREAK_VALUE (32*1024*1024)
30#endif 29#endif
31
diff --git a/src/m/template.h b/src/m/template.h
index 54fb0da9521..38649e8ac6d 100644
--- a/src/m/template.h
+++ b/src/m/template.h
@@ -21,14 +21,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
21 does not define it automatically. 21 does not define it automatically.
22 Ones defined so far include m68k and many others */ 22 Ones defined so far include m68k and many others */
23 23
24/* Define VIRT_ADDR_VARIES if the virtual addresses of
25 pure and impure space as loaded can vary, and even their
26 relative order cannot be relied on.
27
28 Otherwise Emacs assumes that text space precedes data space,
29 numerically. */
30#define VIRT_ADDR_VARIES
31
32/* After adding support for a new machine, modify the large case 24/* After adding support for a new machine, modify the large case
33 statement in configure.in to recognize reasonable 25 statement in configure.in to recognize reasonable
34 configuration names, and add a description of the system to 26 configuration names, and add a description of the system to
diff --git a/src/msdos.c b/src/msdos.c
index 6b6e365a165..4c08c5b29e0 100644
--- a/src/msdos.c
+++ b/src/msdos.c
@@ -1342,7 +1342,7 @@ static void
1342IT_copy_glyphs (int xfrom, int xto, size_t len, int ypos) 1342IT_copy_glyphs (int xfrom, int xto, size_t len, int ypos)
1343{ 1343{
1344 /* The offsets of source and destination relative to the 1344 /* The offsets of source and destination relative to the
1345 conventional memorty selector. */ 1345 conventional memory selector. */
1346 int from = 2 * (xfrom + screen_size_X * ypos) + ScreenPrimary; 1346 int from = 2 * (xfrom + screen_size_X * ypos) + ScreenPrimary;
1347 int to = 2 * (xto + screen_size_X * ypos) + ScreenPrimary; 1347 int to = 2 * (xto + screen_size_X * ypos) + ScreenPrimary;
1348 1348
diff --git a/src/nsfont.m b/src/nsfont.m
index c4d9123faef..7d691ced6e1 100644
--- a/src/nsfont.m
+++ b/src/nsfont.m
@@ -256,7 +256,7 @@ ns_char_width (NSFont *sfont, int c)
256 256
257 257
258/* Return whether set1 covers set2 to a reasonable extent given by pct. 258/* Return whether set1 covers set2 to a reasonable extent given by pct.
259 We check, out of each 16 unicode char range containing chars in set2, 259 We check, out of each 16 Unicode char range containing chars in set2,
260 whether at least one character is present in set1. 260 whether at least one character is present in set1.
261 This must be true for pct of the pairs to consider it covering. */ 261 This must be true for pct of the pairs to consider it covering. */
262static BOOL 262static BOOL
@@ -297,7 +297,7 @@ static NSString
297 297
298 298
299/* Convert OTF 4-letter script code to emacs script name. (Why can't 299/* Convert OTF 4-letter script code to emacs script name. (Why can't
300 everyone just use some standard unicode names for these?) */ 300 everyone just use some standard Unicode names for these?) */
301static NSString 301static NSString
302*ns_otf_to_script (Lisp_Object otf) 302*ns_otf_to_script (Lisp_Object otf)
303{ 303{
@@ -329,7 +329,7 @@ static NSString
329 329
330/* Searches the :script, :lang, and :otf extra-bundle properties of the spec, 330/* Searches the :script, :lang, and :otf extra-bundle properties of the spec,
331 plus registry regular property, for something that can be mapped to a 331 plus registry regular property, for something that can be mapped to a
332 unicode script. Empty string returned if no script spec found. */ 332 Unicode script. Empty string returned if no script spec found. */
333static NSString 333static NSString
334*ns_get_req_script (Lisp_Object font_spec) 334*ns_get_req_script (Lisp_Object font_spec)
335{ 335{
@@ -385,7 +385,7 @@ accumulate_script_ranges (Lisp_Object arg, Lisp_Object range, Lisp_Object val)
385} 385}
386 386
387 387
388/* Use the unicode range information in Vchar_script_table to convert a script 388/* Use the Unicode range information in Vchar_script_table to convert a script
389 name into an NSCharacterSet. */ 389 name into an NSCharacterSet. */
390static NSCharacterSet 390static NSCharacterSet
391*ns_script_to_charset (NSString *scriptName) 391*ns_script_to_charset (NSString *scriptName)
@@ -426,7 +426,7 @@ static NSCharacterSet
426 If none are found, we reduce the percentage and try again, until 5%. 426 If none are found, we reduce the percentage and try again, until 5%.
427 This provides a font with at least some characters if such can be found. 427 This provides a font with at least some characters if such can be found.
428 We don't use isSupersetOfSet: because (a) it doesn't work on Tiger, and 428 We don't use isSupersetOfSet: because (a) it doesn't work on Tiger, and
429 (b) need approximate match as fonts covering full unicode ranges are rare. */ 429 (b) need approximate match as fonts covering full Unicode ranges are rare. */
430static NSSet 430static NSSet
431*ns_get_covering_families (NSString *script, float pct) 431*ns_get_covering_families (NSString *script, float pct)
432{ 432{
@@ -1292,7 +1292,7 @@ ns_uni_to_glyphs (struct nsfont_info *font_info, unsigned char block)
1292 if (!unichars || !(font_info->glyphs[block])) 1292 if (!unichars || !(font_info->glyphs[block]))
1293 abort (); 1293 abort ();
1294 1294
1295 /* create a string containing all unicode characters in this block */ 1295 /* create a string containing all Unicode characters in this block */
1296 for (idx = block<<8, i =0; i<0x100; idx++, i++) 1296 for (idx = block<<8, i =0; i<0x100; idx++, i++)
1297 if (idx < 0xD800 || idx > 0xDFFF) 1297 if (idx < 0xD800 || idx > 0xDFFF)
1298 unichars[i] = idx; 1298 unichars[i] = idx;
@@ -1487,5 +1487,5 @@ syms_of_nsfont (void)
1487 DEFSYM (Qroman, "roman"); 1487 DEFSYM (Qroman, "roman");
1488 DEFSYM (Qmedium, "medium"); 1488 DEFSYM (Qmedium, "medium");
1489 DEFVAR_LISP ("ns-reg-to-script", Vns_reg_to_script, 1489 DEFVAR_LISP ("ns-reg-to-script", Vns_reg_to_script,
1490 doc: /* Internal use: maps font registry to unicode script. */); 1490 doc: /* Internal use: maps font registry to Unicode script. */);
1491} 1491}
diff --git a/src/nsterm.h b/src/nsterm.h
index 574d31c962a..52246caac84 100644
--- a/src/nsterm.h
+++ b/src/nsterm.h
@@ -470,7 +470,7 @@ struct nsfont_info
470 XCharStruct max_bounds; 470 XCharStruct max_bounds;
471 /* we compute glyph codes and metrics on-demand in blocks of 256 indexed 471 /* we compute glyph codes and metrics on-demand in blocks of 256 indexed
472 by hibyte, lobyte */ 472 by hibyte, lobyte */
473 unsigned short **glyphs; /* map unicode index to glyph */ 473 unsigned short **glyphs; /* map Unicode index to glyph */
474 struct font_metrics **metrics; 474 struct font_metrics **metrics;
475}; 475};
476 476
diff --git a/src/print.c b/src/print.c
index 1d6998d8f1a..0fdb750f370 100644
--- a/src/print.c
+++ b/src/print.c
@@ -1637,7 +1637,7 @@ print_object (Lisp_Object obj, register Lisp_Object printcharfun, int escapeflag
1637 /* Detect circular list. */ 1637 /* Detect circular list. */
1638 if (NILP (Vprint_circle)) 1638 if (NILP (Vprint_circle))
1639 { 1639 {
1640 /* Simple but imcomplete way. */ 1640 /* Simple but incomplete way. */
1641 if (i != 0 && EQ (obj, halftail)) 1641 if (i != 0 && EQ (obj, halftail))
1642 { 1642 {
1643 sprintf (buf, " . #%"pMd, i / 2); 1643 sprintf (buf, " . #%"pMd, i / 2);
diff --git a/src/process.c b/src/process.c
index 53382d804f2..a02ba44ae71 100644
--- a/src/process.c
+++ b/src/process.c
@@ -1414,7 +1414,7 @@ usage: (start-process NAME BUFFER PROGRAM &rest PROGRAM-ARGS) */)
1414 val = XCDR (Vdefault_process_coding_system); 1414 val = XCDR (Vdefault_process_coding_system);
1415 } 1415 }
1416 XPROCESS (proc)->encode_coding_system = val; 1416 XPROCESS (proc)->encode_coding_system = val;
1417 /* Note: At this momemnt, the above coding system may leave 1417 /* Note: At this moment, the above coding system may leave
1418 text-conversion or eol-conversion unspecified. They will be 1418 text-conversion or eol-conversion unspecified. They will be
1419 decided after we read output from the process and decode it by 1419 decided after we read output from the process and decode it by
1420 some coding system, or just before we actually send a text to 1420 some coding system, or just before we actually send a text to
@@ -4620,15 +4620,43 @@ wait_reading_process_output (int time_limit, int microsecs, int read_kbd,
4620 some data in the TCP buffers so that select works, but 4620 some data in the TCP buffers so that select works, but
4621 with custom pull/push functions we need to check if some 4621 with custom pull/push functions we need to check if some
4622 data is available in the buffers manually. */ 4622 data is available in the buffers manually. */
4623 if (nfds == 0 && 4623 if (nfds == 0)
4624 wait_proc && wait_proc->gnutls_p /* Check for valid process. */ 4624 {
4625 /* Do we have pending data? */ 4625 if (! wait_proc)
4626 && emacs_gnutls_record_check_pending (wait_proc->gnutls_state) > 0) 4626 {
4627 { 4627 /* We're not waiting on a specific process, so loop
4628 nfds = 1; 4628 through all the channels and check for data.
4629 /* Set to Available. */ 4629 This is a workaround needed for some versions of
4630 FD_SET (wait_proc->infd, &Available); 4630 the gnutls library -- 2.12.14 has been confirmed
4631 } 4631 to need it. See
4632 http://comments.gmane.org/gmane.emacs.devel/145074 */
4633 struct Lisp_Process *proc;
4634 for (channel = 0; channel < MAXDESC; ++channel)
4635 {
4636 if (! NILP (chan_process[channel]) &&
4637 (proc = XPROCESS (chan_process[channel])) != NULL &&
4638 proc->gnutls_p &&
4639 proc->infd &&
4640 emacs_gnutls_record_check_pending (proc->gnutls_state) > 0)
4641 {
4642 nfds++;
4643 FD_SET (proc->infd, &Available);
4644 }
4645 }
4646 }
4647 else
4648 {
4649 /* Check this specific channel. */
4650 if (wait_proc->gnutls_p && /* Check for valid process. */
4651 /* Do we have pending data? */
4652 emacs_gnutls_record_check_pending (wait_proc->gnutls_state) > 0)
4653 {
4654 nfds = 1;
4655 /* Set to Available. */
4656 FD_SET (wait_proc->infd, &Available);
4657 }
4658 }
4659 }
4632#endif 4660#endif
4633 } 4661 }
4634 4662
diff --git a/src/puresize.h b/src/puresize.h
index c26c496a757..4290c30c68d 100644
--- a/src/puresize.h
+++ b/src/puresize.h
@@ -75,21 +75,7 @@ extern void pure_write_error (void) NO_RETURN;
75 75
76/* Define PURE_P. */ 76/* Define PURE_P. */
77 77
78#ifdef VIRT_ADDR_VARIES
79/* For machines where text and data can go anywhere
80 in virtual memory. */
81
82extern EMACS_INT pure[]; 78extern EMACS_INT pure[];
83 79
84#define PURE_P(obj) \ 80#define PURE_P(obj) \
85 ((PNTR_COMPARISON_TYPE) XPNTR (obj) < (PNTR_COMPARISON_TYPE) ((char *) pure + PURESIZE) \ 81 ((uintptr_t) XPNTR (obj) - (uintptr_t) pure <= PURESIZE)
86 && (PNTR_COMPARISON_TYPE) XPNTR (obj) >= (PNTR_COMPARISON_TYPE) pure)
87
88#else /* not VIRT_ADDR_VARIES */
89
90extern char my_edata[];
91
92#define PURE_P(obj) \
93 ((PNTR_COMPARISON_TYPE) XPNTR (obj) < (PNTR_COMPARISON_TYPE) my_edata)
94
95#endif /* VIRT_ADDRESS_VARIES */
diff --git a/src/s/cygwin.h b/src/s/cygwin.h
index af5308ff7bb..8f5a0ab1fc7 100644
--- a/src/s/cygwin.h
+++ b/src/s/cygwin.h
@@ -91,9 +91,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
91 why it needed to be changed. */ 91 why it needed to be changed. */
92#define GC_MARK_STACK GC_MAKE_GCPROS_NOOPS 92#define GC_MARK_STACK GC_MAKE_GCPROS_NOOPS
93 93
94/* Virtual addresses of pure and impure space can vary, as on Windows. */
95#define VIRT_ADDR_VARIES
96
97/* Emacs supplies its own malloc, but glib (part of Gtk+) calls 94/* Emacs supplies its own malloc, but glib (part of Gtk+) calls
98 memalign and on Cygwin, that becomes the Cygwin-supplied memalign. 95 memalign and on Cygwin, that becomes the Cygwin-supplied memalign.
99 As malloc is not the Cygwin malloc, the Cygwin memalign always 96 As malloc is not the Cygwin malloc, the Cygwin memalign always
diff --git a/src/s/hpux10-20.h b/src/s/hpux10-20.h
index 37199bcc29b..be457498add 100644
--- a/src/s/hpux10-20.h
+++ b/src/s/hpux10-20.h
@@ -100,14 +100,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
100 header sections which lose when `static' is defined away, as it is 100 header sections which lose when `static' is defined away, as it is
101 on HP-UX. (You get duplicate symbol errors on linking). */ 101 on HP-UX. (You get duplicate symbol errors on linking). */
102#undef _FILE_OFFSET_BITS 102#undef _FILE_OFFSET_BITS
103
104/* Define VIRT_ADDR_VARIES if the virtual addresses of
105 pure and impure space as loaded can vary, and even their
106 relative order cannot be relied on.
107
108 Otherwise Emacs assumes that text space precedes data space,
109 numerically. */
110#define VIRT_ADDR_VARIES
111 103
112/* The data segment on this machine always starts at address 0x40000000. */ 104/* The data segment on this machine always starts at address 0x40000000. */
113#define DATA_SEG_BITS 0x40000000 105#define DATA_SEG_BITS 0x40000000
diff --git a/src/search.c b/src/search.c
index a3b4e1dcbce..a6a0fddb137 100644
--- a/src/search.c
+++ b/src/search.c
@@ -1892,7 +1892,7 @@ boyer_moore (EMACS_INT n, unsigned char *base_pat,
1892 || CHAR_HEAD_P (cursor[1])) 1892 || CHAR_HEAD_P (cursor[1]))
1893 && (CHAR_HEAD_P (cursor[0]) 1893 && (CHAR_HEAD_P (cursor[0])
1894 /* Check if this is the last byte of 1894 /* Check if this is the last byte of
1895 a translable character. */ 1895 a translatable character. */
1896 || (translate_prev_byte1 == cursor[-1] 1896 || (translate_prev_byte1 == cursor[-1]
1897 && (CHAR_HEAD_P (translate_prev_byte1) 1897 && (CHAR_HEAD_P (translate_prev_byte1)
1898 || (translate_prev_byte2 == cursor[-2] 1898 || (translate_prev_byte2 == cursor[-2]
@@ -1991,7 +1991,7 @@ boyer_moore (EMACS_INT n, unsigned char *base_pat,
1991 || CHAR_HEAD_P (ptr[1])) 1991 || CHAR_HEAD_P (ptr[1]))
1992 && (CHAR_HEAD_P (ptr[0]) 1992 && (CHAR_HEAD_P (ptr[0])
1993 /* Check if this is the last byte of a 1993 /* Check if this is the last byte of a
1994 translable character. */ 1994 translatable character. */
1995 || (translate_prev_byte1 == ptr[-1] 1995 || (translate_prev_byte1 == ptr[-1]
1996 && (CHAR_HEAD_P (translate_prev_byte1) 1996 && (CHAR_HEAD_P (translate_prev_byte1)
1997 || (translate_prev_byte2 == ptr[-2] 1997 || (translate_prev_byte2 == ptr[-2]
diff --git a/src/sound.c b/src/sound.c
index 39007574afc..4e9758d27df 100644
--- a/src/sound.c
+++ b/src/sound.c
@@ -267,7 +267,7 @@ struct sound
267 read from the start of a sound file. */ 267 read from the start of a sound file. */
268 char *header; 268 char *header;
269 269
270 /* Number of bytes raed from sound file. This is always <= 270 /* Number of bytes read from sound file. This is always <=
271 MAX_SOUND_HEADER_BYTES. */ 271 MAX_SOUND_HEADER_BYTES. */
272 int header_size; 272 int header_size;
273 273
diff --git a/src/sysdep.c b/src/sysdep.c
index d666f8dbb79..ae200308bf3 100644
--- a/src/sysdep.c
+++ b/src/sysdep.c
@@ -1663,7 +1663,7 @@ init_signals (void)
1663 sys_siglist[SIGQUIT] = "Quit"; 1663 sys_siglist[SIGQUIT] = "Quit";
1664# endif 1664# endif
1665# ifdef SIGRETRACT 1665# ifdef SIGRETRACT
1666 sys_siglist[SIGRETRACT] = "Need to relinguish monitor mode"; 1666 sys_siglist[SIGRETRACT] = "Need to relinquish monitor mode";
1667# endif 1667# endif
1668# ifdef SIGSAK 1668# ifdef SIGSAK
1669 sys_siglist[SIGSAK] = "Secure attention"; 1669 sys_siglist[SIGSAK] = "Secure attention";
diff --git a/src/w32.c b/src/w32.c
index c752333c68d..304445e2238 100644
--- a/src/w32.c
+++ b/src/w32.c
@@ -3057,7 +3057,7 @@ generate_inode_val (const char * name)
3057 unsigned hash; 3057 unsigned hash;
3058 3058
3059 /* Get the truly canonical filename, if it exists. (Note: this 3059 /* Get the truly canonical filename, if it exists. (Note: this
3060 doesn't resolve aliasing due to subst commands, or recognise hard 3060 doesn't resolve aliasing due to subst commands, or recognize hard
3061 links. */ 3061 links. */
3062 if (!w32_get_long_filename ((char *)name, fullname, MAX_PATH)) 3062 if (!w32_get_long_filename ((char *)name, fullname, MAX_PATH))
3063 abort (); 3063 abort ();
@@ -3403,7 +3403,7 @@ stat (const char * path, struct stat * buf)
3403 FILE_FLAG_BACKUP_SEMANTICS, NULL)) 3403 FILE_FLAG_BACKUP_SEMANTICS, NULL))
3404 != INVALID_HANDLE_VALUE) 3404 != INVALID_HANDLE_VALUE)
3405 { 3405 {
3406 /* This is more accurate in terms of gettting the correct number 3406 /* This is more accurate in terms of getting the correct number
3407 of links, but is quite slow (it is noticeable when Emacs is 3407 of links, but is quite slow (it is noticeable when Emacs is
3408 making a list of file name completions). */ 3408 making a list of file name completions). */
3409 BY_HANDLE_FILE_INFORMATION info; 3409 BY_HANDLE_FILE_INFORMATION info;
@@ -5845,7 +5845,7 @@ term_ntproc (void)
5845void 5845void
5846init_ntproc (void) 5846init_ntproc (void)
5847{ 5847{
5848 /* Initialise the socket interface now if available and requested by 5848 /* Initialize the socket interface now if available and requested by
5849 the user by defining PRELOAD_WINSOCK; otherwise loading will be 5849 the user by defining PRELOAD_WINSOCK; otherwise loading will be
5850 delayed until open-network-stream is called (w32-has-winsock can 5850 delayed until open-network-stream is called (w32-has-winsock can
5851 also be used to dynamically load or reload winsock). 5851 also be used to dynamically load or reload winsock).
diff --git a/src/w32console.c b/src/w32console.c
index 49bf56ddee9..30c71f1c276 100644
--- a/src/w32console.c
+++ b/src/w32console.c
@@ -748,7 +748,7 @@ syms_of_ntterm (void)
748 doc: /* Non-nil means make terminal frames use the full screen buffer dimensions. 748 doc: /* Non-nil means make terminal frames use the full screen buffer dimensions.
749This is desirable when running Emacs over telnet. 749This is desirable when running Emacs over telnet.
750A value of nil means use the current console window dimensions; this 750A value of nil means use the current console window dimensions; this
751may be preferrable when working directly at the console with a large 751may be preferable when working directly at the console with a large
752scroll-back buffer. */); 752scroll-back buffer. */);
753 w32_use_full_screen_buffer = 0; 753 w32_use_full_screen_buffer = 0;
754 754
@@ -757,4 +757,3 @@ scroll-back buffer. */);
757 defsubr (&Sset_cursor_size); 757 defsubr (&Sset_cursor_size);
758 defsubr (&Sset_message_beep); 758 defsubr (&Sset_message_beep);
759} 759}
760
diff --git a/src/w32fns.c b/src/w32fns.c
index 4a6da46141c..434861320a5 100644
--- a/src/w32fns.c
+++ b/src/w32fns.c
@@ -2262,7 +2262,7 @@ w32_msg_pump (deferred_msg * msg_buf)
2262 some third party shell extensions can cause it to be used in 2262 some third party shell extensions can cause it to be used in
2263 system dialogs, which causes a crash if it is not initialized. 2263 system dialogs, which causes a crash if it is not initialized.
2264 This is a known bug in Windows, which was fixed long ago, but 2264 This is a known bug in Windows, which was fixed long ago, but
2265 the patch for XP is not publically available until XP SP3, 2265 the patch for XP is not publicly available until XP SP3,
2266 and older versions will never be patched. */ 2266 and older versions will never be patched. */
2267 CoInitialize (NULL); 2267 CoInitialize (NULL);
2268 w32_createwindow ((struct frame *) msg.wParam); 2268 w32_createwindow ((struct frame *) msg.wParam);
@@ -2880,7 +2880,7 @@ w32_wnd_proc (HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
2880 key.dwControlKeyState = modifiers; 2880 key.dwControlKeyState = modifiers;
2881 2881
2882 add = w32_kbd_patch_key (&key); 2882 add = w32_kbd_patch_key (&key);
2883 /* 0 means an unrecognised keycode, negative means 2883 /* 0 means an unrecognized keycode, negative means
2884 dead key. Ignore both. */ 2884 dead key. Ignore both. */
2885 while (--add >= 0) 2885 while (--add >= 0)
2886 { 2886 {
@@ -2943,7 +2943,7 @@ w32_wnd_proc (HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
2943 break; 2943 break;
2944 2944
2945 case WM_IME_CHAR: 2945 case WM_IME_CHAR:
2946 /* If we can't get the IME result as unicode, use default processing, 2946 /* If we can't get the IME result as Unicode, use default processing,
2947 which will at least allow characters decodable in the system locale 2947 which will at least allow characters decodable in the system locale
2948 get through. */ 2948 get through. */
2949 if (!get_composition_string_fn) 2949 if (!get_composition_string_fn)
diff --git a/src/w32font.c b/src/w32font.c
index bd58e7e757b..5cc37c0e74f 100644
--- a/src/w32font.c
+++ b/src/w32font.c
@@ -462,7 +462,7 @@ w32font_has_char (Lisp_Object entity, int c)
462 Return a glyph code of FONT for character C (Unicode code point). 462 Return a glyph code of FONT for character C (Unicode code point).
463 If FONT doesn't have such a glyph, return FONT_INVALID_CODE. 463 If FONT doesn't have such a glyph, return FONT_INVALID_CODE.
464 464
465 For speed, the gdi backend uses unicode (Emacs calls encode_char 465 For speed, the gdi backend uses Unicode (Emacs calls encode_char
466 far too often for it to be efficient). But we still need to detect 466 far too often for it to be efficient). But we still need to detect
467 which characters are not supported by the font. 467 which characters are not supported by the font.
468 */ 468 */
@@ -620,7 +620,7 @@ w32font_text_extents (struct font *font, unsigned *code,
620 total_width = size.cx; 620 total_width = size.cx;
621 } 621 }
622 622
623 /* On 95/98/ME, only some unicode functions are available, so fallback 623 /* On 95/98/ME, only some Unicode functions are available, so fallback
624 on doing a dummy draw to find the total width. */ 624 on doing a dummy draw to find the total width. */
625 if (!total_width) 625 if (!total_width)
626 { 626 {
@@ -1153,7 +1153,7 @@ w32_enumfont_pattern_entity (Lisp_Object frame,
1153 else 1153 else
1154 ASET (entity, FONT_SIZE_INDEX, make_number (0)); 1154 ASET (entity, FONT_SIZE_INDEX, make_number (0));
1155 1155
1156 /* Cache unicode codepoints covered by this font, as there is no other way 1156 /* Cache Unicode codepoints covered by this font, as there is no other way
1157 of getting this information easily. */ 1157 of getting this information easily. */
1158 if (font_type & TRUETYPE_FONTTYPE) 1158 if (font_type & TRUETYPE_FONTTYPE)
1159 { 1159 {
@@ -1514,7 +1514,7 @@ add_font_entity_to_list (ENUMLOGFONTEX *logical_font,
1514 /* Skip non matching fonts. */ 1514 /* Skip non matching fonts. */
1515 1515
1516 /* For uniscribe backend, consider only truetype or opentype fonts 1516 /* For uniscribe backend, consider only truetype or opentype fonts
1517 that have some unicode coverage. */ 1517 that have some Unicode coverage. */
1518 if (match_data->opentype_only 1518 if (match_data->opentype_only
1519 && ((!(physical_font->ntmTm.ntmFlags & NTMFLAGS_OPENTYPE) 1519 && ((!(physical_font->ntmTm.ntmFlags & NTMFLAGS_OPENTYPE)
1520 && !(font_type & TRUETYPE_FONTTYPE)) 1520 && !(font_type & TRUETYPE_FONTTYPE))
@@ -1557,7 +1557,7 @@ add_font_entity_to_list (ENUMLOGFONTEX *logical_font,
1557 Lisp_Object spec_charset = AREF (match_data->orig_font_spec, 1557 Lisp_Object spec_charset = AREF (match_data->orig_font_spec,
1558 FONT_REGISTRY_INDEX); 1558 FONT_REGISTRY_INDEX);
1559 1559
1560 /* iso10646-1 fonts must contain unicode mapping tables. */ 1560 /* iso10646-1 fonts must contain Unicode mapping tables. */
1561 if (EQ (spec_charset, Qiso10646_1)) 1561 if (EQ (spec_charset, Qiso10646_1))
1562 { 1562 {
1563 if (!is_unicode) 1563 if (!is_unicode)
@@ -1572,7 +1572,7 @@ add_font_entity_to_list (ENUMLOGFONTEX *logical_font,
1572 && !(physical_font->ntmFontSig.fsUsb[0] & 0x007F001F)) 1572 && !(physical_font->ntmFontSig.fsUsb[0] & 0x007F001F))
1573 return 1; 1573 return 1;
1574 } 1574 }
1575 /* unicode-sip fonts must contain characters in unicode plane 2. 1575 /* unicode-sip fonts must contain characters in Unicode plane 2.
1576 so look for bit 57 (surrogates) in the Unicode subranges, plus 1576 so look for bit 57 (surrogates) in the Unicode subranges, plus
1577 the bits for CJK ranges that include those characters. */ 1577 the bits for CJK ranges that include those characters. */
1578 else if (EQ (spec_charset, Qunicode_sip)) 1578 else if (EQ (spec_charset, Qunicode_sip))
@@ -1597,7 +1597,7 @@ add_font_entity_to_list (ENUMLOGFONTEX *logical_font,
1597 ASET (entity, FONT_REGISTRY_INDEX, spec_charset); 1597 ASET (entity, FONT_REGISTRY_INDEX, spec_charset);
1598 } 1598 }
1599 /* Otherwise if using the uniscribe backend, report ANSI and DEFAULT 1599 /* Otherwise if using the uniscribe backend, report ANSI and DEFAULT
1600 fonts as unicode and skip other charsets. */ 1600 fonts as Unicode and skip other charsets. */
1601 else if (match_data->opentype_only) 1601 else if (match_data->opentype_only)
1602 { 1602 {
1603 if (logical_font->elfLogFont.lfCharSet == ANSI_CHARSET 1603 if (logical_font->elfLogFont.lfCharSet == ANSI_CHARSET
@@ -1640,7 +1640,7 @@ x_to_w32_charset (char * lpcs)
1640 if (strncmp (lpcs, "*-#", 3) == 0) 1640 if (strncmp (lpcs, "*-#", 3) == 0)
1641 return atoi (lpcs + 3); 1641 return atoi (lpcs + 3);
1642 1642
1643 /* All Windows fonts qualify as unicode. */ 1643 /* All Windows fonts qualify as Unicode. */
1644 if (!strncmp (lpcs, "iso10646", 8)) 1644 if (!strncmp (lpcs, "iso10646", 8))
1645 return DEFAULT_CHARSET; 1645 return DEFAULT_CHARSET;
1646 1646
@@ -1925,7 +1925,7 @@ w32_registry (LONG w32_charset, DWORD font_type)
1925{ 1925{
1926 char *charset; 1926 char *charset;
1927 1927
1928 /* If charset is defaulted, charset is unicode or unknown, depending on 1928 /* If charset is defaulted, charset is Unicode or unknown, depending on
1929 font type. */ 1929 font type. */
1930 if (w32_charset == DEFAULT_CHARSET) 1930 if (w32_charset == DEFAULT_CHARSET)
1931 return font_type == TRUETYPE_FONTTYPE ? Qiso10646_1 : Qunknown; 1931 return font_type == TRUETYPE_FONTTYPE ? Qiso10646_1 : Qunknown;
@@ -2080,7 +2080,7 @@ fill_in_logfont (FRAME_PTR f, LOGFONT *logfont, Lisp_Object font_spec)
2080 { 2080 {
2081 Lisp_Object key, val; 2081 Lisp_Object key, val;
2082 key = XCAR (tmp), val = XCDR (tmp); 2082 key = XCAR (tmp), val = XCDR (tmp);
2083 /* Only use QCscript if charset is not provided, or is unicode 2083 /* Only use QCscript if charset is not provided, or is Unicode
2084 and a single script is specified. This is rather crude, 2084 and a single script is specified. This is rather crude,
2085 and is only used to narrow down the fonts returned where 2085 and is only used to narrow down the fonts returned where
2086 there is a definite match. Some scripts, such as latin, han, 2086 there is a definite match. Some scripts, such as latin, han,
diff --git a/src/w32menu.c b/src/w32menu.c
index 39d101e7bd5..9b2d014cd58 100644
--- a/src/w32menu.c
+++ b/src/w32menu.c
@@ -1219,7 +1219,7 @@ simple_dialog_show (FRAME_PTR f, Lisp_Object contents, Lisp_Object header)
1219 is_simple_dialog, we don't need to worry about checking contents 1219 is_simple_dialog, we don't need to worry about checking contents
1220 to see what type of dialog to use. */ 1220 to see what type of dialog to use. */
1221 1221
1222 /* Use unicode if possible, so any language can be displayed. */ 1222 /* Use Unicode if possible, so any language can be displayed. */
1223 if (unicode_message_box) 1223 if (unicode_message_box)
1224 { 1224 {
1225 WCHAR *text, *title; 1225 WCHAR *text, *title;
@@ -1476,7 +1476,7 @@ add_menu_item (HMENU menu, widget_value *wv, HMENU item)
1476 utf16_string); 1476 utf16_string);
1477 if (!return_value) 1477 if (!return_value)
1478 { 1478 {
1479 /* On W9x/ME, unicode menus are not supported, though AppendMenuW 1479 /* On W9x/ME, Unicode menus are not supported, though AppendMenuW
1480 apparently does exist at least in some cases and appears to be 1480 apparently does exist at least in some cases and appears to be
1481 stubbed out to do nothing. out_string is UTF-8, but since 1481 stubbed out to do nothing. out_string is UTF-8, but since
1482 our standard menus are in English and this is only going to 1482 our standard menus are in English and this is only going to
@@ -1486,7 +1486,7 @@ add_menu_item (HMENU menu, widget_value *wv, HMENU item)
1486 AppendMenu (menu, fuFlags, 1486 AppendMenu (menu, fuFlags,
1487 item != NULL ? (UINT) item: (UINT) wv->call_data, 1487 item != NULL ? (UINT) item: (UINT) wv->call_data,
1488 out_string); 1488 out_string);
1489 /* Don't use unicode menus in future. */ 1489 /* Don't use Unicode menus in future. */
1490 unicode_append_menu = NULL; 1490 unicode_append_menu = NULL;
1491 } 1491 }
1492 1492
diff --git a/src/w32proc.c b/src/w32proc.c
index 279816bcc3e..254a32503c4 100644
--- a/src/w32proc.c
+++ b/src/w32proc.c
@@ -122,12 +122,12 @@ new_child (void)
122 122
123 for (cp = child_procs + (child_proc_count-1); cp >= child_procs; cp--) 123 for (cp = child_procs + (child_proc_count-1); cp >= child_procs; cp--)
124 if (!CHILD_ACTIVE (cp)) 124 if (!CHILD_ACTIVE (cp))
125 goto Initialise; 125 goto Initialize;
126 if (child_proc_count == MAX_CHILDREN) 126 if (child_proc_count == MAX_CHILDREN)
127 return NULL; 127 return NULL;
128 cp = &child_procs[child_proc_count++]; 128 cp = &child_procs[child_proc_count++];
129 129
130 Initialise: 130 Initialize:
131 memset (cp, 0, sizeof (*cp)); 131 memset (cp, 0, sizeof (*cp));
132 cp->fd = -1; 132 cp->fd = -1;
133 cp->pid = -1; 133 cp->pid = -1;
@@ -821,7 +821,7 @@ sys_spawnve (int mode, char *cmdname, char **argv, char **envp)
821 821
822 The w32 GNU-based library from Cygnus doubles quotes to escape 822 The w32 GNU-based library from Cygnus doubles quotes to escape
823 them, while MSVC uses backslash for escaping. (Actually the MSVC 823 them, while MSVC uses backslash for escaping. (Actually the MSVC
824 startup code does attempt to recognise doubled quotes and accept 824 startup code does attempt to recognize doubled quotes and accept
825 them, but gets it wrong and ends up requiring three quotes to get a 825 them, but gets it wrong and ends up requiring three quotes to get a
826 single embedded quote!) So by default we decide whether to use 826 single embedded quote!) So by default we decide whether to use
827 quote or backslash as the escape character based on whether the 827 quote or backslash as the escape character based on whether the
diff --git a/src/w32term.c b/src/w32term.c
index e9fa16ba325..a2ccdd21f7d 100644
--- a/src/w32term.c
+++ b/src/w32term.c
@@ -4506,7 +4506,7 @@ w32_read_socket (struct terminal *terminal, int expected,
4506 } 4506 }
4507 4507
4508 /* If window has been obscured or exposed by another window 4508 /* If window has been obscured or exposed by another window
4509 being maximised or minimised/restored, then recheck 4509 being maximized or minimized/restored, then recheck
4510 visibility of all frames. Direct changes to our own 4510 visibility of all frames. Direct changes to our own
4511 windows get handled by WM_SIZE. */ 4511 windows get handled by WM_SIZE. */
4512#if 0 4512#if 0
@@ -5576,7 +5576,7 @@ x_raise_frame (struct frame *f)
5576 input focus anyway (so the window with focus will never be 5576 input focus anyway (so the window with focus will never be
5577 completely obscured) - if not, then just moving the mouse over it 5577 completely obscured) - if not, then just moving the mouse over it
5578 is sufficient to give it focus. On Windows, the user must actually 5578 is sufficient to give it focus. On Windows, the user must actually
5579 click on the frame (preferrably the title bar so as not to move 5579 click on the frame (preferably the title bar so as not to move
5580 point), which is more awkward. Also, no other Windows program 5580 point), which is more awkward. Also, no other Windows program
5581 raises a window to the top but leaves another window (possibly now 5581 raises a window to the top but leaves another window (possibly now
5582 completely obscured) with input focus. 5582 completely obscured) with input focus.
@@ -5692,10 +5692,10 @@ x_make_frame_visible (struct frame *f)
5692 5692
5693 /* According to a report in emacs-devel 2008-06-03, SW_SHOWNORMAL 5693 /* According to a report in emacs-devel 2008-06-03, SW_SHOWNORMAL
5694 causes unexpected behavior when unminimizing frames that were 5694 causes unexpected behavior when unminimizing frames that were
5695 previously maximised. But only SW_SHOWNORMAL works properly for 5695 previously maximized. But only SW_SHOWNORMAL works properly for
5696 frames that were truely hidden (using make-frame-invisible), so 5696 frames that were truely hidden (using make-frame-invisible), so
5697 we need it to avoid Bug#5482. It seems that async_iconified 5697 we need it to avoid Bug#5482. It seems that async_iconified
5698 is only set for minimised windows that are still visible, so 5698 is only set for minimized windows that are still visible, so
5699 use that to determine the appropriate flag to pass ShowWindow. */ 5699 use that to determine the appropriate flag to pass ShowWindow. */
5700 my_show_window (f, FRAME_W32_WINDOW (f), 5700 my_show_window (f, FRAME_W32_WINDOW (f),
5701 f->async_iconified ? SW_RESTORE : SW_SHOWNORMAL); 5701 f->async_iconified ? SW_RESTORE : SW_SHOWNORMAL);
@@ -6164,7 +6164,7 @@ w32_term_init (Lisp_Object display_name, char *xrm_option, char *resource_name)
6164 dpyinfo->has_palette = GetDeviceCaps (hdc, RASTERCAPS) & RC_PALETTE; 6164 dpyinfo->has_palette = GetDeviceCaps (hdc, RASTERCAPS) & RC_PALETTE;
6165 ReleaseDC (NULL, hdc); 6165 ReleaseDC (NULL, hdc);
6166 6166
6167 /* initialise palette with white and black */ 6167 /* initialize palette with white and black */
6168 { 6168 {
6169 XColor color; 6169 XColor color;
6170 w32_defined_color (0, "white", &color, 1); 6170 w32_defined_color (0, "white", &color, 1);
diff --git a/src/w32uniscribe.c b/src/w32uniscribe.c
index 36197b3b28a..63da3b9e962 100644
--- a/src/w32uniscribe.c
+++ b/src/w32uniscribe.c
@@ -469,7 +469,7 @@ uniscribe_encode_char (struct font *font, int c)
469 469
470 /* Non BMP characters must be handled by the uniscribe shaping 470 /* Non BMP characters must be handled by the uniscribe shaping
471 engine as GDI functions (except blindly displaying lines of 471 engine as GDI functions (except blindly displaying lines of
472 unicode text) and the promising looking ScriptGetCMap do not 472 Unicode text) and the promising looking ScriptGetCMap do not
473 convert surrogate pairs to glyph indexes correctly. */ 473 convert surrogate pairs to glyph indexes correctly. */
474 { 474 {
475 items = (SCRIPT_ITEM *) alloca (sizeof (SCRIPT_ITEM) * 2 + 1); 475 items = (SCRIPT_ITEM *) alloca (sizeof (SCRIPT_ITEM) * 2 + 1);
@@ -581,7 +581,7 @@ add_opentype_font_name_to_list (ENUMLOGFONTEX *logical_font,
581 && font_type != TRUETYPE_FONTTYPE) 581 && font_type != TRUETYPE_FONTTYPE)
582 return 1; 582 return 1;
583 583
584 /* Skip fonts that have no unicode coverage. */ 584 /* Skip fonts that have no Unicode coverage. */
585 if (!physical_font->ntmFontSig.fsUsb[3] 585 if (!physical_font->ntmFontSig.fsUsb[3]
586 && !physical_font->ntmFontSig.fsUsb[2] 586 && !physical_font->ntmFontSig.fsUsb[2]
587 && !physical_font->ntmFontSig.fsUsb[1] 587 && !physical_font->ntmFontSig.fsUsb[1]
diff --git a/src/w32xfns.c b/src/w32xfns.c
index fbbf11bd65c..fc2d5904d67 100644
--- a/src/w32xfns.c
+++ b/src/w32xfns.c
@@ -188,7 +188,7 @@ get_next_msg (W32Msg * lpmsg, BOOL bWait)
188 } 188 }
189 189
190 nQueue--; 190 nQueue--;
191 /* Consolidate WM_PAINT messages to optimise redrawing. */ 191 /* Consolidate WM_PAINT messages to optimize redrawing. */
192 if (lpmsg->msg.message == WM_PAINT && nQueue) 192 if (lpmsg->msg.message == WM_PAINT && nQueue)
193 { 193 {
194 int_msg * lpCur = lpHead; 194 int_msg * lpCur = lpHead;
@@ -441,4 +441,3 @@ void
441x_sync (void *f) 441x_sync (void *f)
442{ 442{
443} 443}
444
diff --git a/src/window.c b/src/window.c
index a7daa1353bd..728e811f304 100644
--- a/src/window.c
+++ b/src/window.c
@@ -467,10 +467,8 @@ Return nil if WINDOW has no previous sibling. */)
467 return decode_any_window (window)->prev; 467 return decode_any_window (window)->prev;
468} 468}
469 469
470DEFUN ("window-combination-limit", Fwindow_combination_limit, Swindow_combination_limit, 0, 1, 0, 470DEFUN ("window-combination-limit", Fwindow_combination_limit, Swindow_combination_limit, 1, 1, 0,
471 doc: /* Return combination limit of window WINDOW. 471 doc: /* Return combination limit of window WINDOW.
472If WINDOW is omitted or nil, it defaults to the selected window.
473
474If the return value is nil, child windows of WINDOW can be recombined with 472If the return value is nil, child windows of WINDOW can be recombined with
475WINDOW's siblings. A return value of t means that child windows of 473WINDOW's siblings. A return value of t means that child windows of
476WINDOW are never \(re-)combined with WINDOW's siblings. */) 474WINDOW are never \(re-)combined with WINDOW's siblings. */)
@@ -480,18 +478,16 @@ WINDOW are never \(re-)combined with WINDOW's siblings. */)
480} 478}
481 479
482DEFUN ("set-window-combination-limit", Fset_window_combination_limit, Sset_window_combination_limit, 2, 2, 0, 480DEFUN ("set-window-combination-limit", Fset_window_combination_limit, Sset_window_combination_limit, 2, 2, 0,
483 doc: /* Set combination limit of window WINDOW to STATUS; return STATUS. 481 doc: /* Set combination limit of window WINDOW to LIMIT; return LIMIT.
484If WINDOW is omitted or nil, it defaults to the selected window. 482If LIMIT is nil, child windows of WINDOW can be recombined with
485 483WINDOW's siblings. LIMIT t means that child windows of WINDOW are
486If STATUS is nil, child windows of WINDOW can be recombined with
487WINDOW's siblings. STATUS t means that child windows of WINDOW are
488never \(re-)combined with WINDOW's siblings. Other values are reserved 484never \(re-)combined with WINDOW's siblings. Other values are reserved
489for future use. */) 485for future use. */)
490 (Lisp_Object window, Lisp_Object status) 486 (Lisp_Object window, Lisp_Object limit)
491{ 487{
492 register struct window *w = decode_any_window (window); 488 register struct window *w = decode_any_window (window);
493 489
494 w->combination_limit = status; 490 w->combination_limit = limit;
495 491
496 return w->combination_limit; 492 return w->combination_limit;
497} 493}
@@ -2187,7 +2183,7 @@ next_window (Lisp_Object window, Lisp_Object minibuf, Lisp_Object all_frames, in
2187 2183
2188 2184
2189DEFUN ("next-window", Fnext_window, Snext_window, 0, 3, 0, 2185DEFUN ("next-window", Fnext_window, Snext_window, 0, 3, 0,
2190 doc: /* Return window following WINDOW in cyclic ordering of windows. 2186 doc: /* Return live window after WINDOW in the cyclic ordering of windows.
2191WINDOW must be a live window and defaults to the selected one. The 2187WINDOW must be a live window and defaults to the selected one. The
2192optional arguments MINIBUF and ALL-FRAMES specify the set of windows to 2188optional arguments MINIBUF and ALL-FRAMES specify the set of windows to
2193consider. 2189consider.
@@ -2226,7 +2222,7 @@ windows, eventually ending up back at the window you started with.
2226 2222
2227 2223
2228DEFUN ("previous-window", Fprevious_window, Sprevious_window, 0, 3, 0, 2224DEFUN ("previous-window", Fprevious_window, Sprevious_window, 0, 3, 0,
2229 doc: /* Return window preceding WINDOW in cyclic ordering of windows. 2225 doc: /* Return live window before WINDOW in the cyclic ordering of windows.
2230WINDOW must be a live window and defaults to the selected one. The 2226WINDOW must be a live window and defaults to the selected one. The
2231optional arguments MINIBUF and ALL-FRAMES specify the set of windows to 2227optional arguments MINIBUF and ALL-FRAMES specify the set of windows to
2232consider. 2228consider.
@@ -5782,13 +5778,30 @@ get_phys_cursor_glyph (struct window *w)
5782{ 5778{
5783 struct glyph_row *row; 5779 struct glyph_row *row;
5784 struct glyph *glyph; 5780 struct glyph *glyph;
5781 int hpos = w->phys_cursor.hpos;
5782
5783 if (!(w->phys_cursor.vpos >= 0
5784 && w->phys_cursor.vpos < w->current_matrix->nrows))
5785 return NULL;
5786
5787 row = MATRIX_ROW (w->current_matrix, w->phys_cursor.vpos);
5788 if (!row->enabled_p)
5789 return NULL;
5790
5791 if (XINT (w->hscroll))
5792 {
5793 /* When the window is hscrolled, cursor hpos can legitimately be
5794 out of bounds, but we draw the cursor at the corresponding
5795 window margin in that case. */
5796 if (!row->reversed_p && hpos < 0)
5797 hpos = 0;
5798 if (row->reversed_p && hpos >= row->used[TEXT_AREA])
5799 hpos = row->used[TEXT_AREA] - 1;
5800 }
5785 5801
5786 if (w->phys_cursor.vpos >= 0 5802 if (row->used[TEXT_AREA] > hpos
5787 && w->phys_cursor.vpos < w->current_matrix->nrows 5803 && 0 <= hpos)
5788 && (row = MATRIX_ROW (w->current_matrix, w->phys_cursor.vpos), 5804 glyph = row->glyphs[TEXT_AREA] + hpos;
5789 row->enabled_p)
5790 && row->used[TEXT_AREA] > w->phys_cursor.hpos)
5791 glyph = row->glyphs[TEXT_AREA] + w->phys_cursor.hpos;
5792 else 5805 else
5793 glyph = NULL; 5806 glyph = NULL;
5794 5807
@@ -6524,10 +6537,10 @@ sibling.
6524 6537
6525Other values are reserved for future use. 6538Other values are reserved for future use.
6526 6539
6527The value of this variable is also assigned to the combination-limit 6540The value of this variable is also assigned to the combination limit of
6528status of the new parent window. The combination-limit status of a 6541the new parent window. The combination limit of a window can be
6529window can be retrieved via the function `window-combination-limit' and 6542retrieved via the function `window-combination-limit' and altered by the
6530altered by the function `set-window-combination-limit'. */); 6543function `set-window-combination-limit'. */);
6531 Vwindow_combination_limit = Qnil; 6544 Vwindow_combination_limit = Qnil;
6532 6545
6533 defsubr (&Sselected_window); 6546 defsubr (&Sselected_window);
diff --git a/src/window.h b/src/window.h
index de0f7307a51..df29ca1368f 100644
--- a/src/window.h
+++ b/src/window.h
@@ -268,7 +268,7 @@ struct window
268 /* List of buffers re-shown in this window. */ 268 /* List of buffers re-shown in this window. */
269 Lisp_Object next_buffers; 269 Lisp_Object next_buffers;
270 270
271 /* An alist with parameteres. */ 271 /* An alist with parameters. */
272 Lisp_Object window_parameters; 272 Lisp_Object window_parameters;
273 273
274 /* No Lisp data may follow below this point without changing 274 /* No Lisp data may follow below this point without changing
diff --git a/src/xdisp.c b/src/xdisp.c
index 747b91fa4ab..7c415e485b5 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -1450,7 +1450,7 @@ pos_visible_p (struct window *w, EMACS_INT charpos, int *x, int *y,
1450 position is CHARPOS. For the contingency that we 1450 position is CHARPOS. For the contingency that we
1451 didn't, and stopped at the first newline from the 1451 didn't, and stopped at the first newline from the
1452 display string, move back over the glyphs 1452 display string, move back over the glyphs
1453 prfoduced from the string, until we find the 1453 produced from the string, until we find the
1454 rightmost glyph not from the string. */ 1454 rightmost glyph not from the string. */
1455 if (IT_CHARPOS (it3) != charpos && EQ (it3.object, string)) 1455 if (IT_CHARPOS (it3) != charpos && EQ (it3.object, string))
1456 { 1456 {
@@ -14170,7 +14170,7 @@ set_cursor_from_row (struct window *w, struct glyph_row *row,
14170 || (STRINGP (g1->object) 14170 || (STRINGP (g1->object)
14171 && (!NILP (Fget_char_property (make_number (g1->charpos), 14171 && (!NILP (Fget_char_property (make_number (g1->charpos),
14172 Qcursor, g1->object)) 14172 Qcursor, g1->object))
14173 /* pevious candidate is from the same display 14173 /* previous candidate is from the same display
14174 string as this one, and the display string 14174 string as this one, and the display string
14175 came from a text property */ 14175 came from a text property */
14176 || (EQ (g1->object, glyph->object) 14176 || (EQ (g1->object, glyph->object)
@@ -15092,7 +15092,7 @@ redisplay_window (Lisp_Object window, int just_this_one_p)
15092 int current_matrix_up_to_date_p = 0; 15092 int current_matrix_up_to_date_p = 0;
15093 int used_current_matrix_p = 0; 15093 int used_current_matrix_p = 0;
15094 /* This is less strict than current_matrix_up_to_date_p. 15094 /* This is less strict than current_matrix_up_to_date_p.
15095 It indictes that the buffer contents and narrowing are unchanged. */ 15095 It indicates that the buffer contents and narrowing are unchanged. */
15096 int buffer_unchanged_p = 0; 15096 int buffer_unchanged_p = 0;
15097 int temp_scroll_step = 0; 15097 int temp_scroll_step = 0;
15098 int count = SPECPDL_INDEX (); 15098 int count = SPECPDL_INDEX ();
@@ -17102,7 +17102,7 @@ try_window_id (struct window *w)
17102 last_unchanged_at_beg_row = find_last_unchanged_at_beg_row (w); 17102 last_unchanged_at_beg_row = find_last_unchanged_at_beg_row (w);
17103 if (last_unchanged_at_beg_row) 17103 if (last_unchanged_at_beg_row)
17104 { 17104 {
17105 /* Avoid starting to display in the moddle of a character, a TAB 17105 /* Avoid starting to display in the middle of a character, a TAB
17106 for instance. This is easier than to set up the iterator 17106 for instance. This is easier than to set up the iterator
17107 exactly, and it's not a frequent case, so the additional 17107 exactly, and it's not a frequent case, so the additional
17108 effort wouldn't really pay off. */ 17108 effort wouldn't really pay off. */
@@ -18054,6 +18054,23 @@ insert_left_trunc_glyphs (struct it *it)
18054 } 18054 }
18055} 18055}
18056 18056
18057/* Compute the hash code for ROW. */
18058unsigned
18059row_hash (struct glyph_row *row)
18060{
18061 int area, k;
18062 unsigned hashval = 0;
18063
18064 for (area = LEFT_MARGIN_AREA; area < LAST_AREA; ++area)
18065 for (k = 0; k < row->used[area]; ++k)
18066 hashval = ((((hashval << 4) + (hashval >> 24)) & 0x0fffffff)
18067 + row->glyphs[area][k].u.val
18068 + row->glyphs[area][k].face_id
18069 + row->glyphs[area][k].padding_p
18070 + (row->glyphs[area][k].type << 2));
18071
18072 return hashval;
18073}
18057 18074
18058/* Compute the pixel height and width of IT->glyph_row. 18075/* Compute the pixel height and width of IT->glyph_row.
18059 18076
@@ -18140,17 +18157,7 @@ compute_line_metrics (struct it *it)
18140 } 18157 }
18141 18158
18142 /* Compute a hash code for this row. */ 18159 /* Compute a hash code for this row. */
18143 { 18160 row->hash = row_hash (row);
18144 int area, i;
18145 row->hash = 0;
18146 for (area = LEFT_MARGIN_AREA; area < LAST_AREA; ++area)
18147 for (i = 0; i < row->used[area]; ++i)
18148 row->hash = ((((row->hash << 4) + (row->hash >> 24)) & 0x0fffffff)
18149 + row->glyphs[area][i].u.val
18150 + row->glyphs[area][i].face_id
18151 + row->glyphs[area][i].padding_p
18152 + (row->glyphs[area][i].type << 2));
18153 }
18154 18161
18155 it->max_ascent = it->max_descent = 0; 18162 it->max_ascent = it->max_descent = 0;
18156 it->max_phys_ascent = it->max_phys_descent = 0; 18163 it->max_phys_ascent = it->max_phys_descent = 0;
@@ -24895,9 +24902,17 @@ x_produce_glyphs (struct it *it)
24895void 24902void
24896x_write_glyphs (struct glyph *start, int len) 24903x_write_glyphs (struct glyph *start, int len)
24897{ 24904{
24898 int x, hpos; 24905 int x, hpos, chpos = updated_window->phys_cursor.hpos;
24899 24906
24900 xassert (updated_window && updated_row); 24907 xassert (updated_window && updated_row);
24908 /* When the window is hscrolled, cursor hpos can legitimately be out
24909 of bounds, but we draw the cursor at the corresponding window
24910 margin in that case. */
24911 if (!updated_row->reversed_p && chpos < 0)
24912 chpos = 0;
24913 if (updated_row->reversed_p && chpos >= updated_row->used[TEXT_AREA])
24914 chpos = updated_row->used[TEXT_AREA] - 1;
24915
24901 BLOCK_INPUT; 24916 BLOCK_INPUT;
24902 24917
24903 /* Write glyphs. */ 24918 /* Write glyphs. */
@@ -24912,8 +24927,8 @@ x_write_glyphs (struct glyph *start, int len)
24912 if (updated_area == TEXT_AREA 24927 if (updated_area == TEXT_AREA
24913 && updated_window->phys_cursor_on_p 24928 && updated_window->phys_cursor_on_p
24914 && updated_window->phys_cursor.vpos == output_cursor.vpos 24929 && updated_window->phys_cursor.vpos == output_cursor.vpos
24915 && updated_window->phys_cursor.hpos >= hpos 24930 && chpos >= hpos
24916 && updated_window->phys_cursor.hpos < hpos + len) 24931 && chpos < hpos + len)
24917 updated_window->phys_cursor_on_p = 0; 24932 updated_window->phys_cursor_on_p = 0;
24918 24933
24919 UNBLOCK_INPUT; 24934 UNBLOCK_INPUT;
@@ -25430,8 +25445,17 @@ draw_phys_cursor_glyph (struct window *w, struct glyph_row *row,
25430 { 25445 {
25431 int on_p = w->phys_cursor_on_p; 25446 int on_p = w->phys_cursor_on_p;
25432 int x1; 25447 int x1;
25433 x1 = draw_glyphs (w, w->phys_cursor.x, row, TEXT_AREA, 25448 int hpos = w->phys_cursor.hpos;
25434 w->phys_cursor.hpos, w->phys_cursor.hpos + 1, 25449
25450 /* When the window is hscrolled, cursor hpos can legitimately be
25451 out of bounds, but we draw the cursor at the corresponding
25452 window margin in that case. */
25453 if (!row->reversed_p && hpos < 0)
25454 hpos = 0;
25455 if (row->reversed_p && hpos >= row->used[TEXT_AREA])
25456 hpos = row->used[TEXT_AREA] - 1;
25457
25458 x1 = draw_glyphs (w, w->phys_cursor.x, row, TEXT_AREA, hpos, hpos + 1,
25435 hl, 0); 25459 hl, 0);
25436 w->phys_cursor_on_p = on_p; 25460 w->phys_cursor_on_p = on_p;
25437 25461
@@ -25519,6 +25543,14 @@ erase_phys_cursor (struct window *w)
25519 : (w->phys_cursor.hpos >= cursor_row->used[TEXT_AREA]))) 25543 : (w->phys_cursor.hpos >= cursor_row->used[TEXT_AREA])))
25520 goto mark_cursor_off; 25544 goto mark_cursor_off;
25521 25545
25546 /* When the window is hscrolled, cursor hpos can legitimately be out
25547 of bounds, but we draw the cursor at the corresponding window
25548 margin in that case. */
25549 if (!cursor_row->reversed_p && hpos < 0)
25550 hpos = 0;
25551 if (cursor_row->reversed_p && hpos >= cursor_row->used[TEXT_AREA])
25552 hpos = cursor_row->used[TEXT_AREA] - 1;
25553
25522 /* If the cursor is in the mouse face area, redisplay that when 25554 /* If the cursor is in the mouse face area, redisplay that when
25523 we clear the cursor. */ 25555 we clear the cursor. */
25524 if (! NILP (hlinfo->mouse_face_window) 25556 if (! NILP (hlinfo->mouse_face_window)
@@ -25662,8 +25694,26 @@ update_window_cursor (struct window *w, int on)
25662 of being deleted. */ 25694 of being deleted. */
25663 if (w->current_matrix) 25695 if (w->current_matrix)
25664 { 25696 {
25697 int hpos = w->phys_cursor.hpos;
25698 int vpos = w->phys_cursor.vpos;
25699 struct glyph_row *row;
25700
25701 if (vpos >= w->current_matrix->nrows
25702 || hpos >= w->current_matrix->matrix_w)
25703 return;
25704
25705 row = MATRIX_ROW (w->current_matrix, vpos);
25706
25707 /* When the window is hscrolled, cursor hpos can legitimately be
25708 out of bounds, but we draw the cursor at the corresponding
25709 window margin in that case. */
25710 if (!row->reversed_p && hpos < 0)
25711 hpos = 0;
25712 if (row->reversed_p && hpos >= row->used[TEXT_AREA])
25713 hpos = row->used[TEXT_AREA] - 1;
25714
25665 BLOCK_INPUT; 25715 BLOCK_INPUT;
25666 display_and_set_cursor (w, on, w->phys_cursor.hpos, w->phys_cursor.vpos, 25716 display_and_set_cursor (w, on, hpos, vpos,
25667 w->phys_cursor.x, w->phys_cursor.y); 25717 w->phys_cursor.x, w->phys_cursor.y);
25668 UNBLOCK_INPUT; 25718 UNBLOCK_INPUT;
25669 } 25719 }
@@ -25833,9 +25883,18 @@ show_mouse_face (Mouse_HLInfo *hlinfo, enum draw_glyphs_face draw)
25833 if (FRAME_WINDOW_P (f) 25883 if (FRAME_WINDOW_P (f)
25834 && phys_cursor_on_p && !w->phys_cursor_on_p) 25884 && phys_cursor_on_p && !w->phys_cursor_on_p)
25835 { 25885 {
25886 int hpos = w->phys_cursor.hpos;
25887
25888 /* When the window is hscrolled, cursor hpos can legitimately be
25889 out of bounds, but we draw the cursor at the corresponding
25890 window margin in that case. */
25891 if (!row->reversed_p && hpos < 0)
25892 hpos = 0;
25893 if (row->reversed_p && hpos >= row->used[TEXT_AREA])
25894 hpos = row->used[TEXT_AREA] - 1;
25895
25836 BLOCK_INPUT; 25896 BLOCK_INPUT;
25837 display_and_set_cursor (w, 1, 25897 display_and_set_cursor (w, 1, hpos, w->phys_cursor.vpos,
25838 w->phys_cursor.hpos, w->phys_cursor.vpos,
25839 w->phys_cursor.x, w->phys_cursor.y); 25898 w->phys_cursor.x, w->phys_cursor.y);
25840 UNBLOCK_INPUT; 25899 UNBLOCK_INPUT;
25841 } 25900 }
@@ -25934,7 +25993,19 @@ coords_in_mouse_face_p (struct window *w, int hpos, int vpos)
25934int 25993int
25935cursor_in_mouse_face_p (struct window *w) 25994cursor_in_mouse_face_p (struct window *w)
25936{ 25995{
25937 return coords_in_mouse_face_p (w, w->phys_cursor.hpos, w->phys_cursor.vpos); 25996 int hpos = w->phys_cursor.hpos;
25997 int vpos = w->phys_cursor.vpos;
25998 struct glyph_row *row = MATRIX_ROW (w->current_matrix, vpos);
25999
26000 /* When the window is hscrolled, cursor hpos can legitimately be out
26001 of bounds, but we draw the cursor at the corresponding window
26002 margin in that case. */
26003 if (!row->reversed_p && hpos < 0)
26004 hpos = 0;
26005 if (row->reversed_p && hpos >= row->used[TEXT_AREA])
26006 hpos = row->used[TEXT_AREA] - 1;
26007
26008 return coords_in_mouse_face_p (w, hpos, vpos);
25938} 26009}
25939 26010
25940 26011
diff --git a/src/xfns.c b/src/xfns.c
index 6de412c4e68..c68149cce11 100644
--- a/src/xfns.c
+++ b/src/xfns.c
@@ -2962,7 +2962,7 @@ x_default_font_parameter (struct frame *f, Lisp_Object parms)
2962 2962
2963 if (NILP (font_param)) 2963 if (NILP (font_param))
2964 { 2964 {
2965 /* System font should take precedendce over X resources. We suggest this 2965 /* System font should take precedence over X resources. We suggest this
2966 regardless of font-use-system-font because .emacs may not have been 2966 regardless of font-use-system-font because .emacs may not have been
2967 read yet. */ 2967 read yet. */
2968 const char *system_font = xsettings_get_system_font (); 2968 const char *system_font = xsettings_get_system_font ();
@@ -5914,7 +5914,7 @@ the tool bar buttons. */);
5914 x_gtk_whole_detached_tool_bar = 0; 5914 x_gtk_whole_detached_tool_bar = 0;
5915 5915
5916 DEFVAR_BOOL ("x-gtk-use-system-tooltips", x_gtk_use_system_tooltips, 5916 DEFVAR_BOOL ("x-gtk-use-system-tooltips", x_gtk_use_system_tooltips,
5917 doc: /* *If non-nil with a Gtk+ built Emacs, the Gtk+ toolip is used. 5917 doc: /* *If non-nil with a Gtk+ built Emacs, the Gtk+ tooltip is used.
5918Otherwise use Emacs own tooltip implementation. 5918Otherwise use Emacs own tooltip implementation.
5919When using Gtk+ tooltips, the tooltip face is not used. */); 5919When using Gtk+ tooltips, the tooltip face is not used. */);
5920 x_gtk_use_system_tooltips = 1; 5920 x_gtk_use_system_tooltips = 1;
diff --git a/src/xmenu.c b/src/xmenu.c
index 0dd652b566d..4b7bbfd73dc 100644
--- a/src/xmenu.c
+++ b/src/xmenu.c
@@ -1304,7 +1304,7 @@ free_frame_menubar (FRAME_PTR f)
1304#ifdef USE_MOTIF 1304#ifdef USE_MOTIF
1305 /* Removing the menu bar magically changes the shell widget's x 1305 /* Removing the menu bar magically changes the shell widget's x
1306 and y position of (0, 0) which, when the menu bar is turned 1306 and y position of (0, 0) which, when the menu bar is turned
1307 on again, leads to pull-down menuss appearing in strange 1307 on again, leads to pull-down menus appearing in strange
1308 positions near the upper-left corner of the display. This 1308 positions near the upper-left corner of the display. This
1309 happens only with some window managers like twm and ctwm, 1309 happens only with some window managers like twm and ctwm,
1310 but not with other like Motif's mwm or kwm, because the 1310 but not with other like Motif's mwm or kwm, because the
diff --git a/src/xterm.c b/src/xterm.c
index f8af8ae3df0..f750c00cea0 100644
--- a/src/xterm.c
+++ b/src/xterm.c
@@ -2972,9 +2972,7 @@ x_clear_frame (struct frame *f)
2972 follow an explicit cursor_to. */ 2972 follow an explicit cursor_to. */
2973 BLOCK_INPUT; 2973 BLOCK_INPUT;
2974 2974
2975 /* The following call is commented out because it does not seem to accomplish 2975 XClearWindow (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f));
2976 anything, apart from causing flickering during window resize. */
2977 /* XClearWindow (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f)); */
2978 2976
2979 /* We have to clear the scroll bars. If we have changed colors or 2977 /* We have to clear the scroll bars. If we have changed colors or
2980 something like that, then they should be notified. */ 2978 something like that, then they should be notified. */
@@ -4193,7 +4191,7 @@ static Boolean xaw3d_arrow_scroll;
4193 4191
4194/* Whether the drag scrolling maintains the mouse at the top of the 4192/* Whether the drag scrolling maintains the mouse at the top of the
4195 thumb. If not, resizing the thumb needs to be done more carefully 4193 thumb. If not, resizing the thumb needs to be done more carefully
4196 to avoid jerkyness. */ 4194 to avoid jerkiness. */
4197 4195
4198static Boolean xaw3d_pick_top; 4196static Boolean xaw3d_pick_top;
4199 4197
@@ -8779,7 +8777,7 @@ x_wait_for_event (struct frame *f, int eventtype)
8779 pending_event_wait.f = f; 8777 pending_event_wait.f = f;
8780 pending_event_wait.eventtype = eventtype; 8778 pending_event_wait.eventtype = eventtype;
8781 8779
8782 /* Set timeout to 0.1 second. Hopefully not noticable. 8780 /* Set timeout to 0.1 second. Hopefully not noticeable.
8783 Maybe it should be configurable. */ 8781 Maybe it should be configurable. */
8784 EMACS_SET_SECS_USECS (tmo, 0, 100000); 8782 EMACS_SET_SECS_USECS (tmo, 0, 100000);
8785 EMACS_GET_TIME (tmo_at); 8783 EMACS_GET_TIME (tmo_at);