aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/ChangeLog156
-rw-r--r--src/ChangeLog.740
-rw-r--r--src/ChangeLog.8792
-rw-r--r--src/Makefile.in18
-rw-r--r--src/abbrev.c809
-rw-r--r--src/config.in5
-rw-r--r--src/dispextern.h40
-rw-r--r--src/dispnew.c2
-rw-r--r--src/emacs.c6
-rw-r--r--src/frame.c12
-rw-r--r--src/gtkutil.c20
-rw-r--r--src/image.c7
-rw-r--r--src/keyboard.c208
-rw-r--r--src/lisp.h14
-rw-r--r--src/m/ibmps2-aix.h1
-rw-r--r--src/m/is386.h1
-rw-r--r--src/m/sparc.h12
-rw-r--r--src/m/sun2.h12
-rw-r--r--src/m/sun386.h12
-rw-r--r--src/macfns.c4
-rw-r--r--src/macterm.c1
-rw-r--r--src/makefile.w32-in3
-rw-r--r--src/puresize.h2
-rw-r--r--src/s/ms-w32.h1
-rw-r--r--src/s/msdos.h1
-rw-r--r--src/s/ptx.h1
-rw-r--r--src/s/sco4.h2
-rw-r--r--src/s/sco5.h2
-rw-r--r--src/s/usg5-3.h1
-rw-r--r--src/s/usg5-4.h1
-rw-r--r--src/s/windows95.h8
-rw-r--r--src/sunfns.c519
-rw-r--r--src/termhooks.h19
-rw-r--r--src/textprop.c2
-rw-r--r--src/unexmacosx.c38
-rw-r--r--src/w32fns.c31
-rw-r--r--src/w32term.c26
-rw-r--r--src/w32term.h4
-rw-r--r--src/xdisp.c111
-rw-r--r--src/xfaces.c79
-rw-r--r--src/xfns.c32
-rw-r--r--src/xselect.c4
-rw-r--r--src/xterm.c65
-rw-r--r--src/xterm.h37
44 files changed, 1056 insertions, 2105 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index 36e6ca3b00d..4cf00fc3c30 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,157 @@
12007-11-10 Stefan Monnier <monnier@iro.umontreal.ca>
2
3 * xdisp.c (load_overlay_strings): Fix copy&paste typo.
4
52007-11-09 Jason Rumney <jasonr@gnu.org>
6
7 * s/ms-w32.c (USE_TOOLKIT_SCROLL_BARS): Define.
8
9 * w32term.c (w32_scroll_bar_handle_click): Use SCROLL_BAR_CLICK_EVENT.
10
11 * keyboard.c (discard_mouse_events, make_lispy_event) [WINDOWSNT]:
12 Remove W32_SCROLL_BAR_CLICK_EVENT.
13
14 * termhooks.h (enum event_kind) [WINDOWSNT]: Likewise.
15 Add MULTIMEDIA_KEY_EVENT.
16
17 * keyboard.c (lispy_function_keys) [WINDOWSNT]: Add more keys.
18 (lispy_multimedia_keys) [WINDOWSNT]: New array.
19 (make_lispy_event) [WINDOWSNT]: Use it to translate
20 MULTIMEDIA_KEY_EVENT.
21
22 * w32term.h (WM_APPCOMMAND): Define if not already.
23 (GET_APPCOMMAND_LPARAM): Likewise.
24
25 * w32term.c (w32_read_socket): Generate MULTIMEDIA_KEY_EVENT from
26 WM_APPCOMMAND.
27
28 * w32fns.c (w32_pass_multimedia_buttons_to_system): New user option.
29 (syms_of_w32fns): Export and initialize it.
30 (w32_wnd_proc): Pass WM_APPCOMMAND on to w32_read_socket.
31
322007-11-09 Chong Yidong <cyd@stupidchicken.com>
33
34 * dispextern.h (struct it): Don't define OVERLAY_STRING_CHUNK_SIZE
35 twice.
36
37 * xdisp.c (handle_face_prop): Fix last change.
38
392007-11-09 Richard Stallman <rms@gnu.org>
40
41 * xdisp.c (handle_face_prop): Test for strings that came from overlays,
42 not just for after-strings and before-strings.
43 Call face_for_overlay_string and pass the overlay to it.
44 (handle_display_prop): Determine whether property came from an overlay.
45 Pass OVERLAY arg to handle_single_display_spec.
46 (handle_single_display_spec): New arg OVERLAY sets it->from_overlay.
47 (load_overlay_strings): Fill in it->string_overlays.
48 (get_overlay_strings_1, push_it, pop_it): Handle it->from_overlays.
49
50 * xfaces.c (face_for_overlay_string): Function renamed from
51 face_at_buffer_position_no_overlays, and add arg OVERLAY.
52
53 * dispextern.h (struct it): New elt string_overlays.
54 New elt from_overlay, also in stack.
55 Rearrange a few elements.
56 (face_for_overlay_string): Decl renamed from
57 face_at_buffer_position_no_overlays, and add argument.
58
592007-11-09 Richard Stallman <rms@gnu.org>
60
61 * xdisp.c (handle_face_prop): Use face_at_buffer_position_no_overlays
62 to get the base face for an overlay string.
63
64 * dispextern.h (face_at_buffer_position_no_overlays): Add decl.
65
66 * xfaces.c (face_at_buffer_position_no_overlays): New function.
67
68 * xdisp.c (handle_stop): Move some code out of loop.
69
702007-11-09 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
71
72 * macfns.c [USE_ATSUI] (Fmac_atsu_font_face_attributes):
73 Fix conversion from Lisp object to ATSUFontID.
74
752007-11-09 Jason Rumney <jasonr@gnu.org>
76
77 * xdisp.c (Fformat_mode_line): Do nothing when noninteractive.
78
792007-11-09 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
80
81 * unexmacosx.c (unexec_regions_recorder, unexec_regions_merge):
82 Don't assume regions are aligned to page boundary.
83 (print_load_command_name): Add LC_UUID if defined.
84
852007-11-09 Richard Stallman <rms@gnu.org>
86
87 * emacs.c (syms_of_emacs) <installation-directory>: Reflow docstring.
88
892007-11-07 Jason Rumney <jasonr@gnu.org>
90
91 * s/windows95.h: Remove.
92
932007-11-06 Jan Dj,Ad(Brv <jan.h.d@swipnet.se>
94
95 * gtkutil.c (xg_tool_bar_menu_proxy): Handle GTK_IMAGE_ICON_NAME and
96 abort with a message on unhandled store_type values.
97
982007-11-01 Jan Dj,Ad(Brv <jan.h.d@swipnet.se>
99
100 * xterm.c, xfns.c, xselect.c, xterm.h, s/msdos.h, s/sco4.h, s/sco5.h:
101 Remove HAVE_X11R5 and HAVE_X11R4.
102
1032007-11-01 Dan Nicolaescu <dann@ics.uci.edu>
104
105 * Makefile.in: Remove references to sunfns.c and sunfns.o.
106
1072007-11-01 Johan Bockg,Ae(Brd <bojohan@gnu.org>
108
109 * macterm.c, w32term.c, xterm.c (x_draw_stretch_glyph_string):
110 Don't set s->stippled_p here, since it has already been set by
111 x_set_glyph_string_gc from x_draw_glyph_string.
112
1132007-11-01 Dan Nicolaescu <dann@ics.uci.edu>
114
115 * sunfns.c: Remove file
116
117 * m/sun386.h:
118 * m/sun2.h:
119 * m/sparc.h: Remove Sun windows code.
120
1212007-10-31 Stefan Monnier <monnier@iro.umontreal.ca>
122
123 * keyboard.c (syms_of_keyboard): Initialize the initial_kboard.
124 (init_keyboard): Set current_kboard's window-system to nil.
125 (tty_read_avail_input): Typo.
126 * frame.c (make_initial_frame): Don't initialize the initial_kboard.
127
1282007-10-31 Dan Nicolaescu <dann@ics.uci.edu>
129
130 * s/usg5-4.h:
131 * s/usg5-3.h:
132 * s/ptx.h:
133 * m/is386.h:
134 * m/ibmps2-aix.h:
135 * Makefile.in: Remove all mentions of X10
136
137 * dispnew.c (syms_of_display): Don't mention version 10.
138
1392007-10-28 Juanma Barranquero <lekktu@gmail.com>
140
141 * makefile.w32-in (OBJ1): Remove abbrev.$(O).
142 ($(BLD)/abbrev.$(O)): Remove.
143
1442007-10-28 Stefan Monnier <monnier@iro.umontreal.ca>
145
146 Rewrite abbrev.c in Elisp.
147 * image.c (Qcount): Don't declare as extern.
148 (syms_of_image): Initialize and staticpro `Qcount'.
149 * puresize.h (BASE_PURESIZE): Increase for the new abbrev.el functions.
150 * emacs.c (main): Don't call syms_of_abbrev.
151 * Makefile.in (obj): Remove abbrev.o.
152 (abbrev.o): Remove.
153 * abbrev.c: Remove.
154
12007-10-26 Martin Rudalics <rudalics@gmx.at> 1552007-10-26 Martin Rudalics <rudalics@gmx.at>
2 156
3 * window.c (window_min_size_2): Don't count header-line. 157 * window.c (window_min_size_2): Don't count header-line.
@@ -5,7 +159,7 @@
52007-10-26 Dan Nicolaescu <dann@ics.uci.edu> 1592007-10-26 Dan Nicolaescu <dann@ics.uci.edu>
6 160
7 * frame.h (struct frame): Move all bit fields after the first bit 161 * frame.h (struct frame): Move all bit fields after the first bit
8 field to take advantage of the available space. Group all the 162 field to take advantage of the available space. Group all the
9 chars together to reduce wasted space due to padding. 163 chars together to reduce wasted space due to padding.
10 164
112007-10-26 Juanma Barranquero <lekktu@gmail.com> 1652007-10-26 Juanma Barranquero <lekktu@gmail.com>
diff --git a/src/ChangeLog.7 b/src/ChangeLog.7
index 514204939ee..09880efa16d 100644
--- a/src/ChangeLog.7
+++ b/src/ChangeLog.7
@@ -1481,7 +1481,7 @@
14811998-05-07 Eli Zaretskii <eliz@mescaline.gnu.org> 14811998-05-07 Eli Zaretskii <eliz@mescaline.gnu.org>
1482 1482
1483 * process.c (init_process, syms_of_process) [not subprocesses]: 1483 * process.c (init_process, syms_of_process) [not subprocesses]:
1484 Make definition consistent with prototypes on lisp.h 1484 Make definition consistent with prototypes on lisp.h.
1485 1485
14861998-05-07 Kenichi Handa <handa@etl.go.jp> 14861998-05-07 Kenichi Handa <handa@etl.go.jp>
1487 1487
@@ -1777,7 +1777,7 @@
1777 1777
1778 * emacs.c (standard_args): Apply --unibyte/multibyte after --nw. 1778 * emacs.c (standard_args): Apply --unibyte/multibyte after --nw.
1779 1779
1780 * lisp.h: Include initial_obarray from lread.c 1780 * lisp.h: Include initial_obarray from lread.c.
1781 1781
1782 * data.c (set_internal): Test keywordness only in initial obarray. 1782 * data.c (set_internal): Test keywordness only in initial obarray.
1783 1783
@@ -2217,7 +2217,7 @@
2217 * window.c (Fset_window_configuration): Fix mixing of Lisp_Object 2217 * window.c (Fset_window_configuration): Fix mixing of Lisp_Object
2218 and int. 2218 and int.
2219 2219
2220 * sysdep.c (init_sys_modes): Fix mixing of Lisp_Object and int 2220 * sysdep.c (init_sys_modes): Fix mixing of Lisp_Object and int.
2221 2221
2222 * search.c (compile_pattern, compile_pattern_1): Fix mixing of 2222 * search.c (compile_pattern, compile_pattern_1): Fix mixing of
2223 Lisp_Object and int. 2223 Lisp_Object and int.
@@ -2246,7 +2246,7 @@
2246 * fileio.c (Fwrite_region): Fix mixing of Lisp_Object and int. 2246 * fileio.c (Fwrite_region): Fix mixing of Lisp_Object and int.
2247 2247
2248 * editfns.c (Fchar_after, Fchar_before): Fix mixing of Lisp_Object 2248 * editfns.c (Fchar_after, Fchar_before): Fix mixing of Lisp_Object
2249 and int 2249 and int.
2250 2250
2251 * coding.c (code_convert_region): Fix mixing of Lisp_Object and 2251 * coding.c (code_convert_region): Fix mixing of Lisp_Object and
2252 int. 2252 int.
@@ -2624,7 +2624,7 @@
26241998-03-21 Richard Stallman <rms@delysid.gnu.org> 26241998-03-21 Richard Stallman <rms@delysid.gnu.org>
2625 2625
2626 * dired.c (Fdirectory_files): 2626 * dired.c (Fdirectory_files):
2627 In FULL case, compute number of characters 2627 In FULL case, compute number of characters.
2628 2628
2629 * fns.c (substring_both, Fsubstring): Use make_specified_string. 2629 * fns.c (substring_both, Fsubstring): Use make_specified_string.
2630 (concat): Make string result unibyte or multibyte as appropriate. 2630 (concat): Make string result unibyte or multibyte as appropriate.
@@ -3077,7 +3077,7 @@
30771998-03-04 Kenichi HANDA <handa@etl.go.jp> 30771998-03-04 Kenichi HANDA <handa@etl.go.jp>
3078 3078
3079 * buffer.c (Fset_buffer_multibyte): Fix arg for chars_in_text. 3079 * buffer.c (Fset_buffer_multibyte): Fix arg for chars_in_text.
3080 Be sure not to have a multibyte sequence striding over the GAP 3080 Be sure not to have a multibyte sequence striding over the GAP.
3081 3081
3082 * charset.c (strwidth): Make it work for invalid bytes sequence. 3082 * charset.c (strwidth): Make it work for invalid bytes sequence.
3083 (Fstring_width): Give byte length of STR to strwidth. 3083 (Fstring_width): Give byte length of STR to strwidth.
@@ -4166,7 +4166,7 @@
4166 insert_from_string. Scan string by bytes and chars. 4166 insert_from_string. Scan string by bytes and chars.
4167 (Ftry_completion): Use size_byte while comparing. 4167 (Ftry_completion): Use size_byte while comparing.
4168 (Fall_completions): Use size_byte while comparing. 4168 (Fall_completions): Use size_byte while comparing.
4169 (test_completion): 4169 (test_completion): Pass both kinds of size to oblookup.
4170 4170
4171 * editfns.c (syms_of_editfns): Delete defsubr for sref. 4171 * editfns.c (syms_of_editfns): Delete defsubr for sref.
4172 4172
@@ -4358,7 +4358,6 @@
4358 (insert_1, indented_beyond_p): Decls changed. 4358 (insert_1, indented_beyond_p): Decls changed.
4359 (move_gap_both, del_range_byte, del_range_both, del_range_2) 4359 (move_gap_both, del_range_byte, del_range_both, del_range_2)
4360 (scan_newline, Ffile_locked_p): New decls. 4360 (scan_newline, Ffile_locked_p): New decls.
4361 (struct Lisp_Marker):
4362 4361
4363 * search.c (scan_newline): Always restore prev value of immediate_quit. 4362 * search.c (scan_newline): Always restore prev value of immediate_quit.
4364 4363
@@ -5200,7 +5199,7 @@
5200 5199
52011997-10-21 Kenichi Handa <handa@etl.go.jp> 52001997-10-21 Kenichi Handa <handa@etl.go.jp>
5202 5201
5203 * Makefile.in (xselect.o): Depend on buffer.h 5202 * Makefile.in (xselect.o): Depend on buffer.h.
5204 5203
5205 * coding.c (Qcoding_system_spec): Deleted. 5204 * coding.c (Qcoding_system_spec): Deleted.
5206 (Vcoding_system_list, Vcoding_system_alist): New variables. 5205 (Vcoding_system_list, Vcoding_system_alist): New variables.
@@ -5844,7 +5843,7 @@
5844 placed in the main popup instead of a blank-named submenu. This 5843 placed in the main popup instead of a blank-named submenu. This
5845 seems to be an undocumented feature of x-popup-menu. 5844 seems to be an undocumented feature of x-popup-menu.
5846 (list_of_items): New argument HMENU. 5845 (list_of_items): New argument HMENU.
5847 Use 1 and 0 instead of Qt and Qnil for enable in add_menu_item 5846 Use 1 and 0 instead of Qt and Qnil for enable in add_menu_item.
5848 5847
58491997-09-02 Geoff Voelker <voelker@cs.washington.edu> 58481997-09-02 Geoff Voelker <voelker@cs.washington.edu>
5850 5849
@@ -7383,7 +7382,7 @@
7383 (x_new_fontset): If frame F has already using FONTSET, avoid the 7382 (x_new_fontset): If frame F has already using FONTSET, avoid the
7384 duplicated work. Use FS_LOAD_FONT. 7383 duplicated work. Use FS_LOAD_FONT.
7385 (x_list_fonts): Call Fassoc to search Valternate_charset_table. 7384 (x_list_fonts): Call Fassoc to search Valternate_charset_table.
7386 (x_load_font): Get around a buf of XListFonts 7385 (x_load_font): Get around a buf of XListFonts.
7387 7386
73881997-06-20 Richard Stallman <rms@psilocin.gnu.ai.mit.edu> 73871997-06-20 Richard Stallman <rms@psilocin.gnu.ai.mit.edu>
7389 7388
@@ -7619,7 +7618,7 @@
7619 * Makefile.in (XOBJ, MSDOS_OBJ, SOME_MACHINE_OBJECTS): Delete xfaces.o. 7618 * Makefile.in (XOBJ, MSDOS_OBJ, SOME_MACHINE_OBJECTS): Delete xfaces.o.
7620 (obj): Add xfaces.o. 7619 (obj): Add xfaces.o.
7621 (FACE_SUPPORT, SOME_MACHINE_LISP): Delete faces.elc. 7620 (FACE_SUPPORT, SOME_MACHINE_LISP): Delete faces.elc.
7622 (shortlisp, lisp): Add faces.elc 7621 (shortlisp, lisp): Add faces.elc.
7623 7622
7624 * emacs.c (main): Call syms_of_xfaces whenever ! HAVE_NTGUI. 7623 * emacs.c (main): Call syms_of_xfaces whenever ! HAVE_NTGUI.
7625 7624
@@ -7907,7 +7906,7 @@
7907 (r_alloc_init) [DOUG_LEA_MALLOC]: Call mallopt, 7906 (r_alloc_init) [DOUG_LEA_MALLOC]: Call mallopt,
7908 instead of setting __malloc_extra_blocks. 7907 instead of setting __malloc_extra_blocks.
7909 7908
7910Thu May 15 22:21:18 1997 Ken'ichi Handa <handa@diazepam.gnu.ai.mit.edu> 79091997-05-15 Ken'ichi Handa <handa@diazepam.gnu.ai.mit.edu>
7911 7910
7912 * Makefile.in (charset.o): Add disptab.h in dependency list. 7911 * Makefile.in (charset.o): Add disptab.h in dependency list.
7913 7912
@@ -8578,13 +8577,12 @@ Thu May 15 22:21:18 1997 Ken'ichi Handa <handa@diazepam.gnu.ai.mit.edu>
8578 * xterm.c (dumpglyphs): Clip and highlight glyphs displayed with 8577 * xterm.c (dumpglyphs): Clip and highlight glyphs displayed with
8579 fonts of wrong size. 8578 fonts of wrong size.
8580 8579
8581Sun Apr 6 10:26:53 1997 Eli Zaretskii <eliz@wombat.gnu.ai.mit.edu> 85801997-04-06 Eli Zaretskii <eliz@wombat.gnu.ai.mit.edu>
8582 8581
8583 * emacs.c (init_cmdargs) [MSDOS]: Make the change that sets 8582 * emacs.c (init_cmdargs) [MSDOS]: Make the change that sets
8584 `installation-directory' if `info' is found as its subdirectory or 8583 `installation-directory' if `info' is found as its subdirectory or
8585 sibling, be conditioned on MSDOS (it makes trouble on Unix). 8584 sibling, be conditioned on MSDOS (it makes trouble on Unix).
8586 8585
8587
85881997-04-05 Richard Stallman <rms@psilocin.gnu.ai.mit.edu> 85861997-04-05 Richard Stallman <rms@psilocin.gnu.ai.mit.edu>
8589 8587
8590 * coding.c (Ffind_coding_system): Doc fix. 8588 * coding.c (Ffind_coding_system): Doc fix.
@@ -8818,7 +8816,7 @@ Sun Apr 6 10:26:53 1997 Eli Zaretskii <eliz@wombat.gnu.ai.mit.edu>
8818 * coding.c (setup_coding_system): Now, flags of ISO2022 coding 8816 * coding.c (setup_coding_system): Now, flags of ISO2022 coding
8819 systems contains charsets instead of charset IDs. Correct setting 8817 systems contains charsets instead of charset IDs. Correct setting
8820 coding->symbol and coding->eol_type. The performance improved. 8818 coding->symbol and coding->eol_type. The performance improved.
8821 (encode_coding) : Fix typo ("=" -> "=="). 8819 (encode_coding): Fix typo ("=" -> "==").
8822 (detect_coding_iso2022, decode_coding_iso2022): Make the code 8820 (detect_coding_iso2022, decode_coding_iso2022): Make the code
8823 robust against invalid SI and SO. 8821 robust against invalid SI and SO.
8824 (ENCODE_RESET_PLANE_AND_REGISTER): Argument `eol' is deleted. 8822 (ENCODE_RESET_PLANE_AND_REGISTER): Argument `eol' is deleted.
@@ -8914,7 +8912,7 @@ Sun Apr 6 10:26:53 1997 Eli Zaretskii <eliz@wombat.gnu.ai.mit.edu>
8914 8912
89151997-02-22 Tsugutomo ENAMI <enami@ba2.so-net.or.jp> 89131997-02-22 Tsugutomo ENAMI <enami@ba2.so-net.or.jp>
8916 8914
8917 * regex.c: Include charset.h and category.h 8915 * regex.c: Include charset.h and category.h.
8918 8916
8919 [!emacs] (BASE_LEADING_CODE_P, WORD_BOUNDARY_P, CHAR_HEAD_P) 8917 [!emacs] (BASE_LEADING_CODE_P, WORD_BOUNDARY_P, CHAR_HEAD_P)
8920 (SINGLE_BYTE_CHAR_P, SAME_CHARSET_P, MULTIBYTE_FORM_LENGTH) 8918 (SINGLE_BYTE_CHAR_P, SAME_CHARSET_P, MULTIBYTE_FORM_LENGTH)
@@ -9407,7 +9405,7 @@ Sun Apr 6 10:26:53 1997 Eli Zaretskii <eliz@wombat.gnu.ai.mit.edu>
9407 9405
9408 * emacs.c (main): Don't extend stack limit too far. 9406 * emacs.c (main): Don't extend stack limit too far.
9409 9407
9410Sun Feb 2 10:36:26 1997 Eli Zaretskii <eliz@wombat.gnu.ai.mit.edu> 94081997-02-02 Eli Zaretskii <eliz@wombat.gnu.ai.mit.edu>
9411 9409
9412 * msdos.c (dos_rawgetc): When international keyboard doesn't have 9410 * msdos.c (dos_rawgetc): When international keyboard doesn't have
9413 to be supported, recognize Alt-key combinations even if the Alt 9411 to be supported, recognize Alt-key combinations even if the Alt
@@ -10403,7 +10401,7 @@ Sun Feb 2 10:36:26 1997 Eli Zaretskii <eliz@wombat.gnu.ai.mit.edu>
10403 10401
10404 * xfns.c (Fx_create_frame): Default Qvertical_scroll_bars to `left'. 10402 * xfns.c (Fx_create_frame): Default Qvertical_scroll_bars to `left'.
10405 10403
10406Fri Sep 20 02:37:37 1996 Marcus Daniels <marcus@sayre.sysc.pdx.edu> 104041996-09-20 Marcus Daniels <marcus@sayre.sysc.pdx.edu>
10407 10405
10408 * xterm.c (XTclear_end_of_line): Shift end-of-line when there is a 10406 * xterm.c (XTclear_end_of_line): Shift end-of-line when there is a
10409 left-side scroll bar by FRAME_LEFT_SCROLL_BAR_WIDTH. 10407 left-side scroll bar by FRAME_LEFT_SCROLL_BAR_WIDTH.
@@ -10710,13 +10708,13 @@ Fri Sep 20 02:37:37 1996 Marcus Daniels <marcus@sayre.sysc.pdx.edu>
10710 (XMARKBIT): Test BITS_PER_EMACS_INT to conditionalize fast definition. 10708 (XMARKBIT): Test BITS_PER_EMACS_INT to conditionalize fast definition.
10711 * m/alpha.h (BITS_PER_EMACS_INT): New definition. 10709 * m/alpha.h (BITS_PER_EMACS_INT): New definition.
10712 10710
10713 * s/sol2.h (LIBS_SYSTEM): Use -lkstat instead of -lelf -lkvm 10711 * s/sol2.h (LIBS_SYSTEM): Use -lkstat instead of -lelf -lkvm.
10714 10712
10715 * process.c (create_process): Test HAVE_SETPGID for using setpgid. 10713 * process.c (create_process): Test HAVE_SETPGID for using setpgid.
10716 10714
10717 * config.in (HAVE_SETPGID): Add #undef. 10715 * config.in (HAVE_SETPGID): Add #undef.
10718 10716
10719 * keymap.c (syms_of_keymap): staticpro current_global_map; 10717 * keymap.c (syms_of_keymap): staticpro current_global_map.
10720 10718
10721 * intervals.c (get_local_map): Call indirect-function. 10719 * intervals.c (get_local_map): Call indirect-function.
10722 10720
diff --git a/src/ChangeLog.8 b/src/ChangeLog.8
index b156e4e39f8..da95bbd8a0b 100644
--- a/src/ChangeLog.8
+++ b/src/ChangeLog.8
@@ -6,26 +6,26 @@
6 6
71999-12-31 William M. Perry <wmperry@aventail.com> 71999-12-31 William M. Perry <wmperry@aventail.com>
8 8
9 * xfns.c (jpeg_format): Add the :data keyword 9 * xfns.c (jpeg_format): Add the :data keyword.
10 (jpeg_image_p): JPEG is valid with :file _or_ :data 10 (jpeg_image_p): JPEG is valid with :file _or_ :data.
11 (jpeg_memory_src): Define new JPEG image source to read from a 11 (jpeg_memory_src): Define new JPEG image source to read from a
12 memory buffer. 12 memory buffer.
13 (jpeg_load): Pay attention to the :data keyword if specified. 13 (jpeg_load): Pay attention to the :data keyword if specified.
14 Instantiates a jpeg_memory_src instead of jpeg_stdio_src if found. 14 Instantiates a jpeg_memory_src instead of jpeg_stdio_src if found.
15 (png_format): Add the :data keyword 15 (png_format): Add the :data keyword.
16 (png_image_p): PNG is valid with :file _or_ :data 16 (png_image_p): PNG is valid with :file _or_ :data.
17 (png_read_from_memory): New PNG read function to read from a 17 (png_read_from_memory): New PNG read function to read from a
18 memory buffer. 18 memory buffer.
19 (png_load): Pay attention to the :data keyword if specified. 19 (png_load): Pay attention to the :data keyword if specified.
20 Use png_set_read_fn() instead of png_init_io() if specified. 20 Use png_set_read_fn() instead of png_init_io() if specified.
21 (tiff_format): Add the :data keyword for TIFF images. 21 (tiff_format): Add the :data keyword for TIFF images.
22 (tiff_image_p): TIFF is valid with :file _or_ :data 22 (tiff_image_p): TIFF is valid with :file _or_ :data.
23 (tiff_read_from_memory): Define new TIFF I/O functions to read 23 (tiff_read_from_memory): Define new TIFF I/O functions to read
24 from a memory buffer. 24 from a memory buffer.
25 (tiff_load): Pay attention to the :data keyword if specified. 25 (tiff_load): Pay attention to the :data keyword if specified.
26 Uses TIFFClientOpen() instead of TIFFOpen() if specified. 26 Uses TIFFClientOpen() instead of TIFFOpen() if specified.
27 (gif_format): Add the :data keyword 27 (gif_format): Add the :data keyword.
28 (gif_image_p): GIF is valid with :file _or_ :data 28 (gif_image_p): GIF is valid with :file _or_ :data.
29 (gif_read_from_memory): New GIF input function to read from a 29 (gif_read_from_memory): New GIF input function to read from a
30 memory buffer. 30 memory buffer.
31 (gif_load): Pay attention to the :data keyword. Uses DGifOpen() 31 (gif_load): Pay attention to the :data keyword. Uses DGifOpen()
@@ -237,7 +237,7 @@
2371999-12-15 Eli Zaretskii <eliz@is.elta.co.il> 2371999-12-15 Eli Zaretskii <eliz@is.elta.co.il>
238 238
239 * dispextern.h (FACE_TTY_DEFAULT_FG_COLOR) 239 * dispextern.h (FACE_TTY_DEFAULT_FG_COLOR)
240 (FACE_TTY_DEFAULT_BG_COLOR): New macros. 240 (FACE_TTY_DEFAULT_BG_COLOR): New macros.
241 241
242 * xfaces.c (Qunspecified_fg, Qunspecified_bg): New variables. 242 * xfaces.c (Qunspecified_fg, Qunspecified_bg): New variables.
243 (syms_of_xfaces): Initialize and staticpro them. 243 (syms_of_xfaces): Initialize and staticpro them.
@@ -561,7 +561,7 @@
561 (produce_glyphs): When called, it->what can be IT_COMPOSITION. 561 (produce_glyphs): When called, it->what can be IT_COMPOSITION.
562 Delete codes for a composite character. 562 Delete codes for a composite character.
563 563
564 * textprop.c (Vtext_property_default_nonsticky): New variable 564 * textprop.c (Vtext_property_default_nonsticky): New variable.
565 (syms_of_textprop): Declare it as a Lisp variable. 565 (syms_of_textprop): Declare it as a Lisp variable.
566 566
567 * window.c (Frecenter): Clear all caches of compositions. 567 * window.c (Frecenter): Clear all caches of compositions.
@@ -687,7 +687,7 @@
687 687
6881999-12-09 Dave Love <fx@gnu.org> 6881999-12-09 Dave Love <fx@gnu.org>
689 689
690 * frame.h: (PIX_TYPE) [! HAVE_X_WINDOWS]: Define PIX_TYPE. 690 * frame.h (PIX_TYPE) [! HAVE_X_WINDOWS]: Define PIX_TYPE.
691 691
6921999-12-08 Gerd Moellmann <gerd@gnu.org> 6921999-12-08 Gerd Moellmann <gerd@gnu.org>
693 693
@@ -766,8 +766,8 @@
766 (tty_defined_color): New function. 766 (tty_defined_color): New function.
767 (defined_color): Rewrite to support any type of frame. 767 (defined_color): Rewrite to support any type of frame.
768 (tty_color_name): New function. 768 (tty_color_name): New function.
769 (face_color_supported_p, Fface_color_gray_p, 769 (face_color_supported_p, Fface_color_gray_p)
770 Fface_color_supported_p): Support non-X frames. 770 (Fface_color_supported_p): Support non-X frames.
771 (load_color): Enclose the color name in quotes, in the log 771 (load_color): Enclose the color name in quotes, in the log
772 messages. Remove DOS-specific version of load_color. 772 messages. Remove DOS-specific version of load_color.
773 (realize_tty_face): Take the supported colors from 773 (realize_tty_face): Take the supported colors from
@@ -795,10 +795,10 @@
795 selected_frame. 795 selected_frame.
796 (struct x_output): Remove unused members; document who uses each 796 (struct x_output): Remove unused members; document who uses each
797 member. 797 member.
798 (FRAME_PARAM_FACES, FRAME_N_PARAM_FACES, FRAME_DEFAULT_PARAM_FACE, 798 (FRAME_PARAM_FACES, FRAME_N_PARAM_FACES, FRAME_DEFAULT_PARAM_FACE)
799 FRAME_MODE_LINE_PARAM_FACE, FRAME_COMPUTED_FACES, 799 (FRAME_MODE_LINE_PARAM_FACE, FRAME_COMPUTED_FACES)
800 FRAME_N_COMPUTED_FACES, FRAME_SIZE_COMPUTED_FACES, 800 (FRAME_N_COMPUTED_FACES, FRAME_SIZE_COMPUTED_FACES)
801 FRAME_DEFAULT_FACE, FRAME_MODE_LINE_FACE, unload_color): Remove 801 (FRAME_DEFAULT_FACE, FRAME_MODE_LINE_FACE, unload_color): Remove
802 unused macro definintions. 802 unused macro definintions.
803 803
804 * msdos.c (IT_set_frame_parameters): Don't call 804 * msdos.c (IT_set_frame_parameters): Don't call
@@ -826,9 +826,9 @@
826 changed. 826 changed.
827 (Fxw_display_color_p): Renamed from Fx_display_color_p; all 827 (Fxw_display_color_p): Renamed from Fx_display_color_p; all
828 callers changed. 828 callers changed.
829 (x_window_to_frame, x_any_window_to_frame, 829 (x_window_to_frame, x_any_window_to_frame)
830 x_non_menubar_window_to_frame, x_menubar_window_to_frame, 830 (x_non_menubar_window_to_frame, x_menubar_window_to_frame)
831 x_top_window_to_frame): Use !FRAME_X_P instead of 831 (x_top_window_to_frame): Use !FRAME_X_P instead of
832 f->output_data.nothing. 832 f->output_data.nothing.
833 * xterm.h (x_defined_color): Rename from defined_color. 833 * xterm.h (x_defined_color): Rename from defined_color.
834 834
@@ -898,7 +898,7 @@
8981999-11-28 Gerd Moellmann <gerd@gnu.org> 8981999-11-28 Gerd Moellmann <gerd@gnu.org>
899 899
900 * systime.h (EMACS_TIME_CMP, EMACS_TIME_EQ, EMACS_TIME_NE) 900 * systime.h (EMACS_TIME_CMP, EMACS_TIME_EQ, EMACS_TIME_NE)
901 (EMACS_TIME_GT, EMACS_TIME_GE, EMACS_TIME_LT,EMACS_TIME_LE): New 901 (EMACS_TIME_GT, EMACS_TIME_GE, EMACS_TIME_LT, EMACS_TIME_LE): New
902 macros. 902 macros.
903 903
904 * config.in (HAVE_SETITIMER, HAVE_UALARM): New. 904 * config.in (HAVE_SETITIMER, HAVE_UALARM): New.
@@ -1211,7 +1211,7 @@
1211 Add extern declaration for byte_stack_list. 1211 Add extern declaration for byte_stack_list.
1212 1212
1213 * bytecode.c (struct byte_stack): New. 1213 * bytecode.c (struct byte_stack): New.
1214 (byte_stack_list, mark_byte_stack, relocate_byte_pcs): New 1214 (byte_stack_list, mark_byte_stack, relocate_byte_pcs): New.
1215 (BEFORE_POTENTIAL_GC, AFTER_POTENTIAL_GC): New. 1215 (BEFORE_POTENTIAL_GC, AFTER_POTENTIAL_GC): New.
1216 (FETCH, PUSH, POP, DISCARD, TOP, MAYBE_GC): Rewritten. 1216 (FETCH, PUSH, POP, DISCARD, TOP, MAYBE_GC): Rewritten.
1217 (HANDLE_RELOCATION): Removed. 1217 (HANDLE_RELOCATION): Removed.
@@ -1378,38 +1378,38 @@
1378 * alloc.c: Undef HIDE_LISP_IMPLEMENTATION before including 1378 * alloc.c: Undef HIDE_LISP_IMPLEMENTATION before including
1379 lisp.h. 1379 lisp.h.
1380 1380
1381 * buffer.c (Fbuffer_list, Fget_file_buffer, get_truename_buffer, 1381 * buffer.c (Fbuffer_list, Fget_file_buffer, get_truename_buffer)
1382 Fbuffer_local_variables, Fother_buffer, record_buffer, 1382 (Fbuffer_local_variables, Fother_buffer, record_buffer)
1383 set_buffer_internal_1, Fbury_buffer, Fkill_all_local_variables, 1383 (set_buffer_internal_1, Fbury_buffer, Fkill_all_local_variables)
1384 swap_out_buffer_local_variables, overlays_at, overlays_in, 1384 (swap_out_buffer_local_variables, overlays_at, overlays_in)
1385 overlay_touches_p, overlay_strings, recenter_overlay_lists, 1385 (overlay_touches_p, overlay_strings, recenter_overlay_lists)
1386 fix_overlays_in_range, fix_overlays_before, Foverlay_get, 1386 (fix_overlays_in_range, fix_overlays_before, Foverlay_get)
1387 Foverlay_put, report_overlay_modification, evaporate_overlays): 1387 (Foverlay_put, report_overlay_modification, evaporate_overlays):
1388 Use XCAR, XCDR, and XFLOAT_DATA instead of explicit member 1388 Use XCAR, XCDR, and XFLOAT_DATA instead of explicit member
1389 references. 1389 references.
1390 * data.c (Fcar, Fcar_safe, Fcdr, Fcdr_safe, Fsetcar, Fsetcdr, 1390 * data.c (Fcar, Fcar_safe, Fcdr, Fcdr_safe, Fsetcar, Fsetcdr)
1391 swap_in_symval_forwarding, set_internal, default_value, 1391 (swap_in_symval_forwarding, set_internal, default_value)
1392 Fset_default, Fmake_variable_buffer_local, Fmake_local_variable, 1392 (Fset_default, Fmake_variable_buffer_local, Fmake_local_variable)
1393 Fmake_variable_frame_local, Flocal_variable_p, 1393 (Fmake_variable_frame_local, Flocal_variable_p)
1394 Flocal_variable_if_set_p, arithcompare, Fzerop, cons_to_long, 1394 (Flocal_variable_if_set_p, arithcompare, Fzerop, cons_to_long)
1395 Fnumber_to_string, float_arith_driver, Fadd1, Fsub1): Likewise. 1395 (Fnumber_to_string, float_arith_driver, Fadd1, Fsub1): Likewise.
1396 * dispnew.c (Fframe_or_buffer_changed_p): Likewise. 1396 * dispnew.c (Fframe_or_buffer_changed_p): Likewise.
1397 * emacs.c (main): Likewise. 1397 * emacs.c (main): Likewise.
1398 * fontset.c (fs_load_font, fs_register_fontset, 1398 * fontset.c (fs_load_font, fs_register_fontset)
1399 CACHED_FONTSET_NAME, CACHED_FONTSET_REGEX, Fquery_fontset, 1399 (CACHED_FONTSET_NAME, CACHED_FONTSET_REGEX, Fquery_fontset)
1400 Fnew_fontset, Fset_fontset_font): Likewise. 1400 (Fnew_fontset, Fset_fontset_font): Likewise.
1401 * frame.c (do_switch_frame, next_frame, prev_frame, 1401 * frame.c (do_switch_frame, next_frame, prev_frame)
1402 other_visible_frames, Fdelete_frame, Fvisible_frame_list): 1402 (other_visible_frames, Fdelete_frame, Fvisible_frame_list):
1403 Likewise. 1403 Likewise.
1404 * keyboard.c (read_char, help_char_p, event_to_kboard, 1404 * keyboard.c (read_char, help_char_p, event_to_kboard)
1405 kbd_buffer_get_event, timer_start_idle, timer_check, 1405 (kbd_buffer_get_event, timer_start_idle, timer_check)
1406 make_lispy_event, apply_modifiers, reorder_modifiers, 1406 (make_lispy_event, apply_modifiers, reorder_modifiers)
1407 Fevent_convert_list, lucid_event_type_list_p, menu_bar_items, 1407 (Fevent_convert_list, lucid_event_type_list_p, menu_bar_items)
1408 menu_bar_one_keymap, menu_item_eval_property_1, parse_menu_item, 1408 (menu_bar_one_keymap, menu_item_eval_property_1, parse_menu_item)
1409 tool_bar_items, read_char_x_menu_prompt, read_key_sequence, 1409 (tool_bar_items, read_char_x_menu_prompt, read_key_sequence)
1410 Fcommand_execute, Fexecute_extended_command): Likewise. 1410 (Fcommand_execute, Fexecute_extended_command): Likewise.
1411 * minibuf.c (read_minibuf, get_minibuffer, Ftry_completion, 1411 * minibuf.c (read_minibuf, get_minibuffer, Ftry_completion)
1412 Fall_completions): Likewise. 1412 (Fall_completions): Likewise.
1413 * window.c (Fset_window_margins): Likewise. 1413 * window.c (Fset_window_margins): Likewise.
1414 1414
1415 * callint.c (quotify_args): Don't explicitly use struct 1415 * callint.c (quotify_args): Don't explicitly use struct
@@ -1477,9 +1477,9 @@
1477 1477
1478 * coding.h (emacs_strerror, Vlocale_coding_system): New decls. 1478 * coding.h (emacs_strerror, Vlocale_coding_system): New decls.
1479 1479
1480 * config.in (HAVE_STDIO_EXT_H, HAVE_TM_GMTOFF, HAVE___FPENDING, 1480 * config.in (HAVE_STDIO_EXT_H, HAVE_TM_GMTOFF, HAVE___FPENDING)
1481 HAVE_FTELLO, HAVE_GETLOADAVG, HAVE_MBLEN, HAVE_MBRLEN, 1481 (HAVE_FTELLO, HAVE_GETLOADAVG, HAVE_MBLEN, HAVE_MBRLEN)
1482 HAVE_STRSIGNAL): New macros. 1482 (HAVE_STRSIGNAL): New macros.
1483 (BITS_PER_LONG): Default to 64 if _LP64 is defined. 1483 (BITS_PER_LONG): Default to 64 if _LP64 is defined.
1484 <stdlib.h>: Include if HAVE_STDLIB_H is defined and NOT_C_CODE isn't. 1484 <stdlib.h>: Include if HAVE_STDLIB_H is defined and NOT_C_CODE isn't.
1485 1485
@@ -1501,14 +1501,14 @@
1501 emacs_memftimeu, passing ut, instead of emacs_memftime. 1501 emacs_memftimeu, passing ut, instead of emacs_memftime.
1502 1502
1503 * emacs.c: Include <locale.h> if HAVE_SETLOCALE is defined. 1503 * emacs.c: Include <locale.h> if HAVE_SETLOCALE is defined.
1504 (Vmessages_locale, Vprevious_messages_locale, Vtime_locale, 1504 (Vmessages_locale, Vprevious_messages_locale, Vtime_locale)
1505 Vprevious_time_locale): New variables. 1505 (Vprevious_time_locale): New variables.
1506 (main): Invoke setlocale early, so that initial error messages are 1506 (main): Invoke setlocale early, so that initial error messages are
1507 localized properly. But skip locale-setting if LC_ALL is "C". 1507 localized properly. But skip locale-setting if LC_ALL is "C".
1508 Fix up locale when it's safe to do so. 1508 Fix up locale when it's safe to do so.
1509 (fixup_locale): Moved here from xterm.c. 1509 (fixup_locale): Moved here from xterm.c.
1510 (synchronize_locale, synchronize_time_locale, 1510 (synchronize_locale, synchronize_time_locale)
1511 synchronize_messages_locale): New functions. 1511 (synchronize_messages_locale): New functions.
1512 (syms_of_emacs): Accommodate above changes. 1512 (syms_of_emacs): Accommodate above changes.
1513 1513
1514 * fileio.c (report_file_error): Convert strerror output according 1514 * fileio.c (report_file_error): Convert strerror output according
@@ -1526,9 +1526,9 @@
1526 default these values to long, BITS_PER_LONG, and unsigned long. 1526 default these values to long, BITS_PER_LONG, and unsigned long.
1527 (VALBITS, MARKBIT, XINT): Do not assume 32-bit EMACS_INT. 1527 (VALBITS, MARKBIT, XINT): Do not assume 32-bit EMACS_INT.
1528 (PNTR_COMPARISON_TYPE): Default to EMACS_UINT, not to unsigned int. 1528 (PNTR_COMPARISON_TYPE): Default to EMACS_UINT, not to unsigned int.
1529 (code_convert_string_norecord, fixup_locale, 1529 (code_convert_string_norecord, fixup_locale)
1530 synchronize_messages_locale, synchronize_time_locale, 1530 (synchronize_messages_locale, synchronize_time_locale)
1531 emacs_open, emacs_close, emacs_read, emacs_write): New decls. 1531 (emacs_open, emacs_close, emacs_read, emacs_write): New decls.
1532 All Emacs callers of open, close, read, write changed to use 1532 All Emacs callers of open, close, read, write changed to use
1533 emacs_open, emacs_close, emacs_read, emacs_write. 1533 emacs_open, emacs_close, emacs_read, emacs_write.
1534 1534
@@ -1579,13 +1579,13 @@
1579 s/hpux.h, s/iris3-5.h, s/iris3-6.h, s/irix3-3.h, s/osf1.h, s/rtu.h, 1579 s/hpux.h, s/iris3-5.h, s/iris3-6.h, s/irix3-3.h, s/osf1.h, s/rtu.h,
1580 s/sunos4-1.h, s/unipl5-0.h, s/unipl5-2.h, s/usg5-0.h, s/usg5-2-2.h, 1580 s/sunos4-1.h, s/unipl5-0.h, s/unipl5-2.h, s/usg5-0.h, s/usg5-2-2.h,
1581 s/usg5-2.h, s/usg5-3.h, s/xenix.h: 1581 s/usg5-2.h, s/usg5-3.h, s/xenix.h:
1582 (open, close, read, write, INTERRUPTIBLE_OPEN, 1582 (open, close, read, write, INTERRUPTIBLE_OPEN)
1583 INTERRUPTIBLE_CLOSE, INTERRUPTIBLE_IO): Remove. 1583 (INTERRUPTIBLE_CLOSE, INTERRUPTIBLE_IO): Remove.
1584 1584
1585 * s/sol2-5.h (_LARGEFILE_SOURCE, _FILE_OFFSET_BITS): New macros. 1585 * s/sol2-5.h (_LARGEFILE_SOURCE, _FILE_OFFSET_BITS): New macros.
1586 1586
1587 * sysdep.c (sys_read, sys_write, read, write, sys_close, close, 1587 * sysdep.c (sys_read, sys_write, read, write, sys_close, close)
1588 sys_open, open): Remove. 1588 (sys_open, open): Remove.
1589 (emacs_open, emacs_close, emacs_read, emacs_write): Always define; 1589 (emacs_open, emacs_close, emacs_read, emacs_write): Always define;
1590 the old INTERRUPTIBLE_OPEN, INTERRUPTIBLE_CLOSE, and INTERRUPTIBLE_IO 1590 the old INTERRUPTIBLE_OPEN, INTERRUPTIBLE_CLOSE, and INTERRUPTIBLE_IO
1591 macros are no longer used. 1591 macros are no longer used.
@@ -1711,8 +1711,8 @@
17111999-10-17 Miles Bader <miles@gnu.org> 17111999-10-17 Miles Bader <miles@gnu.org>
1712 1712
1713 * editfns.c (Qfield): New variable. 1713 * editfns.c (Qfield): New variable.
1714 (find_field, Ferase_field, Ffield_string, 1714 (find_field, Ferase_field, Ffield_string)
1715 Ffield_beginning, Ffield_end, Fconstrain_to_field): New functions. 1715 (Ffield_beginning, Ffield_end, Fconstrain_to_field): New functions.
1716 (Fline_beginning_position, Fline_end_position): Constrain to any field. 1716 (Fline_beginning_position, Fline_end_position): Constrain to any field.
1717 (make_buffer_string_both): Remove minibuffer-prompt hack. 1717 (make_buffer_string_both): Remove minibuffer-prompt hack.
1718 (syms_of_editfns): Initialize Qfield, and subr entries for 1718 (syms_of_editfns): Initialize Qfield, and subr entries for
@@ -1823,9 +1823,8 @@
1823 (Fbitmap_spec_p): Replaces Fpixmap_spec_p. 1823 (Fbitmap_spec_p): Replaces Fpixmap_spec_p.
1824 (load_pixmap): Use Fbitmap_spec_p and Qbitmap_spec_p instead of 1824 (load_pixmap): Use Fbitmap_spec_p and Qbitmap_spec_p instead of
1825 Fpixmap_spec_p and Qpixmap_spec_p. 1825 Fpixmap_spec_p and Qpixmap_spec_p.
1826 (load_face_colors, check_lface_attrs, 1826 (load_face_colors, check_lface_attrs, merge_face_vector_with_property)
1827 merge_face_vector_with_property, 1827 (Finternal_set_lisp_face_attribute): Use Fbitmap_spec_p.
1828 Finternal_set_lisp_face_attribute): Use Fbitmap_spec_p.
1829 (syms_of_xfaces): Initialize Qbitmap_spec_p, defsubr 1828 (syms_of_xfaces): Initialize Qbitmap_spec_p, defsubr
1830 Fbitmap_spec_p. 1829 Fbitmap_spec_p.
1831 1830
@@ -1922,8 +1921,8 @@
1922 * xfns.c (image_error): Use add_to_log. 1921 * xfns.c (image_error): Use add_to_log.
1923 1922
1924 * xfaces.c (load_pixmap): Call add_to_log without frame parameter. 1923 * xfaces.c (load_pixmap): Call add_to_log without frame parameter.
1925 (load_face_font_or_fontset, load_color, 1924 (load_face_font_or_fontset, load_color)
1926 merge_face_vector_with_property): Ditto. 1925 (merge_face_vector_with_property): Ditto.
1927 1926
1928 * dispextern.h: Add prototype for add_to_log. 1927 * dispextern.h: Add prototype for add_to_log.
1929 1928
@@ -1942,8 +1941,8 @@
1942 1941
1943 * window.c (window_min_size): Add parameter ignore_fixed_p. 1942 * window.c (window_min_size): Add parameter ignore_fixed_p.
1944 (change_window_height): Call window_min_size with new parameter. 1943 (change_window_height): Call window_min_size with new parameter.
1945 (shrink_window_lowest_first, save_restore_orig_size, 1944 (shrink_window_lowest_first, save_restore_orig_size)
1946 grow_mini_window, shrink_mini_window): New. 1945 (grow_mini_window, shrink_mini_window): New.
1947 (make_window, replace_window): Initialize orig_top and 1946 (make_window, replace_window): Initialize orig_top and
1948 orig_height. 1947 orig_height.
1949 (enlarge_window): Renamed from change_window_height. Make it 1948 (enlarge_window): Renamed from change_window_height. Make it
@@ -1991,8 +1990,8 @@
1991 conditinally compiled section in #ifdef. 1990 conditinally compiled section in #ifdef.
1992 (toplevel): Include stdio.h. 1991 (toplevel): Include stdio.h.
1993 1992
1994 * keymap.c (Flookup_key, Faccessible_keymaps, describe_vector, 1993 * keymap.c (Flookup_key, Faccessible_keymaps, describe_vector)
1995 keys_of_keymap, syms_of_keymap): Remove unused variables. 1994 (keys_of_keymap, syms_of_keymap): Remove unused variables.
1996 1995
19971999-09-20 Gerd Moellmann <gerd@gnu.org> 19961999-09-20 Gerd Moellmann <gerd@gnu.org>
1998 1997
@@ -2012,8 +2011,8 @@
2012 2011
20131999-09-19 Gerd Moellmann <gerd@gnu.org> 20121999-09-19 Gerd Moellmann <gerd@gnu.org>
2014 2013
2015 * syntax.c (update_syntax_table, find_defun_start, back_comment, 2014 * syntax.c (update_syntax_table, find_defun_start, back_comment)
2016 describe_syntax, skip_chars): Remove unused variables. 2015 (describe_syntax, skip_chars): Remove unused variables.
2017 (back_comment, forw_comment): Add braces to if-statement with 2016 (back_comment, forw_comment): Add braces to if-statement with
2018 if-else as dependent statement. 2017 if-else as dependent statement.
2019 2018
@@ -2022,30 +2021,30 @@
2022 conditional expressions. 2021 conditional expressions.
2023 (create_process): Put declaration of sigchld in #if 0. 2022 (create_process): Put declaration of sigchld in #if 0.
2024 (Fopen_network_stream): Removed unused variables. 2023 (Fopen_network_stream): Removed unused variables.
2025 (Fopen_network_stream, wait_reading_process_input, 2024 (Fopen_network_stream, wait_reading_process_input)
2026 wait_reading_process_input, send_process, send_process): Ditto. 2025 (wait_reading_process_input, send_process, send_process): Ditto.
2027 (toplevel): Add prototypes for set_waiting_for_input and 2026 (toplevel): Add prototypes for set_waiting_for_input and
2028 keyboard_bit_set. 2027 keyboard_bit_set.
2029 2028
2030 * abbrev.c (Fexpand_abbrev): Remove unused variables. 2029 * abbrev.c (Fexpand_abbrev): Remove unused variables.
2031 2030
2032 * textprop.c (Fset_text_properties): Remove unused variables. 2031 * textprop.c (Fset_text_properties): Remove unused variables.
2033 (text_property_list, verify_interval_modification, 2032 (text_property_list, verify_interval_modification)
2034 interval_has_all_properties): Ditto. 2033 (interval_has_all_properties): Ditto.
2035 2034
2036 * callproc.c (toplevel) [HAVE_UNISTD_H]: Include unistd.h. 2035 * callproc.c (toplevel) [HAVE_UNISTD_H]: Include unistd.h.
2037 (Fcall_process): Remove unused variable. 2036 (Fcall_process): Remove unused variable.
2038 2037
2039 * keyboard.c (Frecursive_edit): Remove unused variable. 2038 * keyboard.c (Frecursive_edit): Remove unused variable.
2040 (command_loop_1, safe_run_hooks, kbd_buffer_get_event, 2039 (command_loop_1, safe_run_hooks, kbd_buffer_get_event)
2041 timer_check, make_lispy_event, menu_bar_items, 2040 (timer_check, make_lispy_event, menu_bar_items)
2042 menu_bar_one_keymap, menu_bar_item, parse_menu_item, 2041 (menu_bar_one_keymap, menu_bar_item, parse_menu_item)
2043 parse_tool_bar_item, read_char_x_menu_prompt, read_key_sequence, 2042 (parse_tool_bar_item, read_char_x_menu_prompt, read_key_sequence)
2044 kbd_buffer_get_event, make_lispy_event, read_char_x_menu_prompt, 2043 (kbd_buffer_get_event, make_lispy_event, read_char_x_menu_prompt)
2045 read_key_sequence): Ditto. Fread_key_sequence, 2044 (read_key_sequence): Ditto.
2046 Fread_key_sequence_vector, Fsuspend_emacs): Ditto. 2045 (Fread_key_sequence, Fread_key_sequence_vector, Fsuspend_emacs): Ditto.
2047 (read_key_sequence) [GOBBLE_FIRST_EVENT]: Put local variables only 2046 (read_key_sequence) [GOBBLE_FIRST_EVENT]: Put local variables only
2048 used when GOBBLE_FIRST_EVENT is defined in #ifdef 2047 used when GOBBLE_FIRST_EVENT is defined in #ifdef.
2049 (Fexecute_extended_command): Cast XINT to long for %ld. 2048 (Fexecute_extended_command): Cast XINT to long for %ld.
2050 (toplevel) [HAVE_UNISTD_H]: Include unistd.h. 2049 (toplevel) [HAVE_UNISTD_H]: Include unistd.h.
2051 (toplevel): Include sys/types.h. 2050 (toplevel): Include sys/types.h.
@@ -2059,8 +2058,8 @@
2059 * buffer.h: Add prototype for r_re_alloc. 2058 * buffer.h: Add prototype for r_re_alloc.
2060 2059
2061 * insdel.c (copy_text): Removed unused variables. 2060 * insdel.c (copy_text): Removed unused variables.
2062 (count_combining_after, count_combining_after, insert_1_both, 2061 (count_combining_after, count_combining_after, insert_1_both)
2063 insert_from_string_1, insert_from_buffer_1, check_markers): Ditto. 2062 (insert_from_string_1, insert_from_buffer_1, check_markers): Ditto.
2064 (adjust_after_replace, replace_range): Add parentheses to logical 2063 (adjust_after_replace, replace_range): Add parentheses to logical
2065 expressions. Remove unused variables. 2064 expressions. Remove unused variables.
2066 (CHECK_BYTE_COMBINING_FOR_INSERT): Add parentheses to logical 2065 (CHECK_BYTE_COMBINING_FOR_INSERT): Add parentheses to logical
@@ -2108,17 +2107,17 @@
2108 * intervals.c (rotate_right, rotate_left): Add braces to avoid 2107 * intervals.c (rotate_right, rotate_left): Add braces to avoid
2109 ambiguous else warning. 2108 ambiguous else warning.
2110 (split_interval_left): Remove unused variables. 2109 (split_interval_left): Remove unused variables.
2111 (previous_interval, adjust_intervals_for_deletion, 2110 (previous_interval, adjust_intervals_for_deletion)
2112 set_point_both, set_point_both, set_intervals_multibyte_1): Ditto. 2111 (set_point_both, set_point_both, set_intervals_multibyte_1): Ditto.
2113 (icount, idepth, zero_length): Move into #if 0 section below 2112 (icount, idepth, zero_length): Move into #if 0 section below
2114 original position where these are used. 2113 original position where these are used.
2115 2114
2116 * buffer.h [REL_ALLOC]: Add prototypes for r_alloc and r_alloc_free. 2115 * buffer.h [REL_ALLOC]: Add prototypes for r_alloc and r_alloc_free.
2117 2116
2118 * buffer.c (Fkill_buffer): Remove unused variables. 2117 * buffer.c (Fkill_buffer): Remove unused variables.
2119 (Fkill_buffer, overlays_at, overlays_in, recenter_overlay_lists, 2118 (Fkill_buffer, overlays_at, overlays_in, recenter_overlay_lists)
2120 fix_overlays_in_range, Fmove_overlay, Fprevious_overlay_change, 2119 (fix_overlays_in_range, Fmove_overlay, Fprevious_overlay_change)
2121 init_buffer_once, (syms_of_buffer): Ditto. 2120 (init_buffer_once, syms_of_buffer): Ditto.
2122 2121
2123 * xrdb.c (get_fallback): Remove unused variable. 2122 * xrdb.c (get_fallback): Remove unused variable.
2124 (x_load_resources): Ditto. Put local variable used for Motif only 2123 (x_load_resources): Ditto. Put local variable used for Motif only
@@ -2178,15 +2177,15 @@
2178 * xdisp.c (resize_mini_window): Don't report changed window 2177 * xdisp.c (resize_mini_window): Don't report changed window
2179 height if it actually hasn't changed. 2178 height if it actually hasn't changed.
2180 2179
2181 * widget.c (set_frame_size, EmacsFrameSetCharSize): Remove 2180 * widget.c (set_frame_size, EmacsFrameSetCharSize): Remove
2182 unused variables. 2181 unused variables.
2183 (mark_shell_size_user_specified): Put in #if 0 because not used. 2182 (mark_shell_size_user_specified): Put in #if 0 because not used.
2184 (create_frame_gcs): Put in #if 0 because currently unused. 2183 (create_frame_gcs): Put in #if 0 because currently unused.
2185 (first_frame_p): Ditto. 2184 (first_frame_p): Ditto.
2186 2185
2187 * xmenu.c (single_menu_item, Fx_popup_menu, Fx_popup_menu, 2186 * xmenu.c (single_menu_item, Fx_popup_menu, Fx_popup_menu)
2188 single_submenu, update_frame_menubar, set_frame_menubar, 2187 (single_submenu, update_frame_menubar, set_frame_menubar)
2189 free_frame_menubar, xmenu_show, xdialog_show): Remove unused 2188 (free_frame_menubar, xmenu_show, xdialog_show): Remove unused
2190 variables. 2189 variables.
2191 2190
2192 * print.c (PRINTFULLP): Removed because it is no longer used and 2191 * print.c (PRINTFULLP): Removed because it is no longer used and
@@ -2202,8 +2201,8 @@
2202 2201
22031999-09-14 Ken Raeburn <raeburn@gnu.org> 22021999-09-14 Ken Raeburn <raeburn@gnu.org>
2204 2203
2205 * print.c (Ferror_message_string, print_error_message, 2204 * print.c (Ferror_message_string, print_error_message)
2206 print_object): Use XCAR, XCDR and XFLOAT_DATA instead of explicit 2205 (print_object): Use XCAR, XCDR and XFLOAT_DATA instead of explicit
2207 member access. 2206 member access.
2208 2207
22091999-09-14 Gerd Moellmann <gerd@gnu.org> 22081999-09-14 Gerd Moellmann <gerd@gnu.org>
@@ -2222,10 +2221,10 @@
2222 (x_set_menu_bar_lines): Put local variable used only for 2221 (x_set_menu_bar_lines): Put local variable used only for
2223 non-toolkit case in #ifdef/#endif. 2222 non-toolkit case in #ifdef/#endif.
2224 (x_figure_window_size): Remove unused variable(s). 2223 (x_figure_window_size): Remove unused variable(s).
2225 (x_figure_window_size, x_window, lookup_image, 2224 (x_figure_window_size, x_window, lookup_image)
2226 xbm_read_bitmap_file_data, x_build_heuristic_mask, pbm_load, 2225 (xbm_read_bitmap_file_data, x_build_heuristic_mask, pbm_load)
2227 png_load, jpeg_load, gif_load, x_create_tip_frame, 2226 (png_load, jpeg_load, gif_load, x_create_tip_frame)
2228 x_create_tip_frame, Fx_show_tip, x_set_border_pixel): Ditto. 2227 (x_create_tip_frame, Fx_show_tip, x_set_border_pixel): Ditto.
2229 2228
2230 * xterm.c (x_scroll_bar_handle_click): Compile only if 2229 * xterm.c (x_scroll_bar_handle_click): Compile only if
2231 not USE_TOOLKIT_SCROLL_BARS. 2230 not USE_TOOLKIT_SCROLL_BARS.
@@ -2235,8 +2234,8 @@
2235 x_kill_gs_process. 2234 x_kill_gs_process.
2236 2235
2237 * xterm.c (x_produce_glyphs): Remove unused variable(s). 2236 * xterm.c (x_produce_glyphs): Remove unused variable(s).
2238 (x_alloc_nearest_color_for_widget, note_tool_bar_highlight, 2237 (x_alloc_nearest_color_for_widget, note_tool_bar_highlight)
2239 x_set_toolkit_scroll_bar_thumb): Ditto. 2238 (x_set_toolkit_scroll_bar_thumb): Ditto.
2240 (x_scroll_bar_create): Move local variable to the 2239 (x_scroll_bar_create): Move local variable to the
2241 conditionally compiled section of code where it is used. 2240 conditionally compiled section of code where it is used.
2242 (x_scroll_bar_create): Remove unused variable(s). 2241 (x_scroll_bar_create): Remove unused variable(s).
@@ -2255,8 +2254,8 @@
2255 to use do-while. 2254 to use do-while.
2256 2255
2257 * fns.c (SXHASH_COMBINE): Add missing parentheses. 2256 * fns.c (SXHASH_COMBINE): Add missing parentheses.
2258 (Fchar_table_range, Fset_char_table_default, mapcar1, 2257 (Fchar_table_range, Fset_char_table_default, mapcar1)
2259 Fyes_or_no_p, sweep_weak_hash_tables): Remove unused variable(s). 2258 (Fyes_or_no_p, sweep_weak_hash_tables): Remove unused variable(s).
2260 2259
2261 * lisp.h: Add prototype for getloadavg. 2260 * lisp.h: Add prototype for getloadavg.
2262 2261
@@ -2285,9 +2284,9 @@
2285 * xdisp.c (QCfile): Move here from xfns.c. 2284 * xdisp.c (QCfile): Move here from xfns.c.
2286 (syms_of_xdisp): Initialize it. 2285 (syms_of_xdisp): Initialize it.
2287 (message2_nolog): Change for Lisp_Object selected_frame. 2286 (message2_nolog): Change for Lisp_Object selected_frame.
2288 (message3_nolog, message_with_string, message, 2287 (message3_nolog, message_with_string, message)
2289 setup_echo_area_for_printing, truncate_echo_area, 2288 (setup_echo_area_for_printing, truncate_echo_area)
2290 prepare_menu_bars, redisplay_internal, Fdump_tool_bar_row): Ditto. 2289 (prepare_menu_bars, redisplay_internal, Fdump_tool_bar_row): Ditto.
2291 2290
22921999-09-13 Dave Love <fx@gnu.org> 22911999-09-13 Dave Love <fx@gnu.org>
2293 2292
@@ -2338,11 +2337,11 @@
2338 (Fdump_face): Ditto. 2337 (Fdump_face): Ditto.
2339 2338
2340 * term.c (OUTPUT): Change for Lisp_Object selected_frame. 2339 * term.c (OUTPUT): Change for Lisp_Object selected_frame.
2341 (OUTPUT_IF, ring_bell, set_terminal_modes, reset_terminal_modes, 2340 (OUTPUT_IF, ring_bell, set_terminal_modes, reset_terminal_modes)
2342 set_terminal_window, set_scroll_region, reassert_line_highlight, 2341 (set_terminal_window, set_scroll_region, reassert_line_highlight)
2343 change_line_highlight, cursor_to, raw_cursor_to, clear_to_end, 2342 (change_line_highlight, cursor_to, raw_cursor_to, clear_to_end)
2344 clear_end_of_line, clear_end_of_line_raw, clear_end_of_line_raw, 2343 (clear_end_of_line, clear_end_of_line_raw, clear_end_of_line_raw)
2345 encode_terminal_code, write_glyphs, term_init): Ditto. 2344 (encode_terminal_code, write_glyphs, term_init): Ditto.
2346 2345
2347 * sysdep.c (reset_sys_modes): Change for Lisp_Object selected_frame. 2346 * sysdep.c (reset_sys_modes): Change for Lisp_Object selected_frame.
2348 (kbd_input_ast, read_input_waiting): Ditto. 2347 (kbd_input_ast, read_input_waiting): Ditto.
@@ -2352,10 +2351,10 @@
2352 (read_minibuf): Ditto. 2351 (read_minibuf): Ditto.
2353 2352
2354 * keyboard.c (command_loop_1): Change for Lisp_Object selected_frame. 2353 * keyboard.c (command_loop_1): Change for Lisp_Object selected_frame.
2355 (cmd_error_internal, command_loop_1, read_char, 2354 (cmd_error_internal, command_loop_1, read_char)
2356 kbd_buffer_get_event, read_avail_input, 2355 (kbd_buffer_get_event, read_avail_input)
2357 read_char_minibuf_menu_prompt, read_key_sequence, Fsuspend_emacs, 2356 (read_char_minibuf_menu_prompt, read_key_sequence, Fsuspend_emacs)
2358 interrupt_signal, quit_throw_to_read_char): Ditto. 2357 (interrupt_signal, quit_throw_to_read_char): Ditto.
2359 2358
2360 * fontset.c (Ffont_info): Change for Lisp_Object selected_frame. 2359 * fontset.c (Ffont_info): Change for Lisp_Object selected_frame.
2361 (Ffontset_info): DItto. 2360 (Ffontset_info): DItto.
@@ -2364,8 +2363,8 @@
2364 2363
2365 * dispnew.c (selected_frame): Make it a Lisp_Object. 2364 * dispnew.c (selected_frame): Make it a Lisp_Object.
2366 (adjust_frame_glyphs_initially): Change for Lisp_Object selected_frame. 2365 (adjust_frame_glyphs_initially): Change for Lisp_Object selected_frame.
2367 (direct_output_for_insert, direct_output_forward_char, 2366 (direct_output_for_insert, direct_output_forward_char)
2368 init_display): Ditto. 2367 (init_display): Ditto.
2369 2368
2370 * data.c (swap_in_symval_forwarding): Change for Lisp_Object 2369 * data.c (swap_in_symval_forwarding): Change for Lisp_Object
2371 selected_frame. 2370 selected_frame.
@@ -2379,20 +2378,20 @@
2379 (Fselected_frame): Ditto. 2378 (Fselected_frame): Ditto.
2380 (Fframe_first_window): Use SELECTED_FRAME. 2379 (Fframe_first_window): Use SELECTED_FRAME.
2381 (Fframe_root_window): Change for Lisp_Object selected_frame. 2380 (Fframe_root_window): Change for Lisp_Object selected_frame.
2382 (Fframe_selected_window, Fset_frame_selected_window, Fnext_frame, 2381 (Fframe_selected_window, Fset_frame_selected_window, Fnext_frame)
2383 Fprevious_frame, other_visible_frames, Fdelete_frame, 2382 (Fprevious_frame, other_visible_frames, Fdelete_frame)
2384 Fmouse_position, Fmouse_pixel_position, Fmake_frame_visible, 2383 (Fmouse_position, Fmouse_pixel_position, Fmake_frame_visible)
2385 Fmake_frame_invisible, Ficonify_frame, Fraise_frame, Flower_frame, 2384 (Fmake_frame_invisible, Ficonify_frame, Fraise_frame, Flower_frame)
2386 Fframe_parameters, Fmodify_frame_parameters, Fframe_char_height, 2385 (Fframe_parameters, Fmodify_frame_parameters, Fframe_char_height)
2387 Fframe_char_width, Fframe_pixel_height, Fframe_pixel_width, 2386 (Fframe_char_width, Fframe_pixel_height, Fframe_pixel_width)
2388 Fset_frame_height, Fset_frame_width): Ditto. 2387 (Fset_frame_height, Fset_frame_width): Ditto.
2389 2388
23901999-09-13 Gerd Moellmann <gerd@gnu.org> 23891999-09-13 Gerd Moellmann <gerd@gnu.org>
2391 2390
2392 * xdisp.c (message2_nolog): Change for Lisp_Object selected_frame. 2391 * xdisp.c (message2_nolog): Change for Lisp_Object selected_frame.
2393 (message3_nolog, message_with_string, message, 2392 (message3_nolog, message_with_string, message)
2394 setup_echo_area_for_printing, truncate_echo_area, 2393 (setup_echo_area_for_printing, truncate_echo_area)
2395 prepare_menu_bars, redisplay_internal, Fdump_tool_bar_row): Ditto. 2394 (prepare_menu_bars, redisplay_internal, Fdump_tool_bar_row): Ditto.
2396 2395
2397 * xmenu.c (Fx_popup_menu): Change for Lisp_Object selected_frame. 2396 * xmenu.c (Fx_popup_menu): Change for Lisp_Object selected_frame.
2398 (Fx_popup_dialog): Ditto. 2397 (Fx_popup_dialog): Ditto.
@@ -2406,48 +2405,48 @@
2406 2405
2407 * window.c (Fminibuffer_window): Change for Lisp_Object 2406 * window.c (Fminibuffer_window): Change for Lisp_Object
2408 selected_frame. 2407 selected_frame.
2409 (Fwindow_at, Fprevious_window, window_loop, select_window_1, 2408 (Fwindow_at, Fprevious_window, window_loop, select_window_1)
2410 display_buffer_1, Fdisplay_buffer, temp_output_buffer_show, 2409 (display_buffer_1, Fdisplay_buffer, temp_output_buffer_show)
2411 Fcurrent_window_configuration, init_window_once): Ditto. 2410 (Fcurrent_window_configuration, init_window_once): Ditto.
2412 2411
2413 * frame.h (SELECTED_FRAME): New. 2412 * frame.h (SELECTED_FRAME): New.
2414 2413
24151999-09-12 Ken Raeburn <raeburn@gnu.org> 24141999-09-12 Ken Raeburn <raeburn@gnu.org>
2416 2415
2417 * category.c (word_boundary_p): Use XCAR and XCDR. 2416 * category.c (word_boundary_p): Use XCAR and XCDR.
2418 * ccl.c (ccl_driver, resolve_symbol_ccl_program, 2417 * ccl.c (ccl_driver, resolve_symbol_ccl_program)
2419 Fregister_code_conversion_map): Likewise. 2418 (Fregister_code_conversion_map): Likewise.
2420 * coding.c (setup_coding_system, detect_coding_system, 2419 * coding.c (setup_coding_system, detect_coding_system)
2421 Ffind_operation_coding_system, Fset_coding_priority_internal): 2420 (Ffind_operation_coding_system, Fset_coding_priority_internal):
2422 Likewise. 2421 Likewise.
2423 * doc.c (get_doc_string, Fdocumentation, 2422 * doc.c (get_doc_string, Fdocumentation)
2424 store_function_docstring): Likewise. 2423 (store_function_docstring): Likewise.
2425 * editfns.c (save_restriction_restore): Likewise. 2424 * editfns.c (save_restriction_restore): Likewise.
2426 * eval.c (Fcond, Fmacroexpand, Fcondition_case, wants_debugger, 2425 * eval.c (Fcond, Fmacroexpand, Fcondition_case, wants_debugger)
2427 skip_debugger, find_handler_clause, Fautoload, Fapply, 2426 (skip_debugger, find_handler_clause, Fautoload, Fapply)
2428 run_hook_with_args, run_hook_list_with_args, Ffetch_bytecode): 2427 (run_hook_with_args, run_hook_list_with_args, Ffetch_bytecode):
2429 Likewise. 2428 Likewise.
2430 * fileio.c (Ffind_file_name_handler, Finsert_file_contents, 2429 * fileio.c (Ffind_file_name_handler, Finsert_file_contents)
2431 Fwrite_region, do_auto_save_unwind, Fdo_auto_save, 2430 (Fwrite_region, do_auto_save_unwind, Fdo_auto_save)
2432 Fread_file_name): Likewise. 2431 (Fread_file_name): Likewise.
2433 * filelock.c (unlock_all_files): Likewise. 2432 * filelock.c (unlock_all_files): Likewise.
2434 * insdel.c (Fcombine_after_change_execute): Likewise. 2433 * insdel.c (Fcombine_after_change_execute): Likewise.
2435 * intervals.c (adjust_intervals_for_insertion): Likewise. 2434 * intervals.c (adjust_intervals_for_insertion): Likewise.
2436 * keymap.c (get_keymap_1, Fkeymap_parent, Fset_keymap_parent, 2435 * keymap.c (get_keymap_1, Fkeymap_parent, Fset_keymap_parent)
2437 Fset_keymap_parent, fix_submap_inheritance, access_keymap, 2436 (Fset_keymap_parent, fix_submap_inheritance, access_keymap)
2438 store_in_keymap, Fcopy_keymap, define_as_prefix, 2437 (store_in_keymap, Fcopy_keymap, define_as_prefix)
2439 current_minor_maps, Faccessible_keymaps, 2438 (current_minor_maps, Faccessible_keymaps)
2440 accessible_keymaps_char_table, Fkey_description, 2439 (accessible_keymaps_char_table, Fkey_description)
2441 Fwhere_is_internal, where_is_internal_2, where_is_internal_1, 2440 (Fwhere_is_internal, where_is_internal_2, where_is_internal_1)
2442 describe_buffer_bindings, describe_map_tree, shadow_lookup, 2441 (describe_buffer_bindings, describe_map_tree, shadow_lookup)
2443 describe_map): Likewise. 2442 (describe_map): Likewise.
2444 * lread.c (Fload, load_unwind, close_load_descs, read_vector, 2443 * lread.c (Fload, load_unwind, close_load_descs, read_vector)
2445 read_list, init_lread): Likewise. 2444 (read_list, init_lread): Likewise.
2446 * search.c (Fmatch_data): Likewise. 2445 * search.c (Fmatch_data): Likewise.
2447 * sunfns.c (Fsun_menu_internal): Likewise. 2446 * sunfns.c (Fsun_menu_internal): Likewise.
2448 * syntax.c (describe_syntax): Likewise. 2447 * syntax.c (describe_syntax): Likewise.
2449 * undo.c (record_insert, record_delete, Fundo_boundary, 2448 * undo.c (record_insert, record_delete, Fundo_boundary)
2450 truncate_undo_list): Likewise. 2449 (truncate_undo_list): Likewise.
2451 * vmsproc.c (child_sig): Likewise. 2450 * vmsproc.c (child_sig): Likewise.
2452 2451
2453 * editfns.c (Fformat): Use XFLOAT_DATA. 2452 * editfns.c (Fformat): Use XFLOAT_DATA.
@@ -2531,63 +2530,63 @@
2531 2530
25321999-09-12 Ken Raeburn <raeburn@gnu.org> 25311999-09-12 Ken Raeburn <raeburn@gnu.org>
2533 2532
2534 * alloc.c (Fcons, pure_cons, Fpurecopy, Fgarbage_collect, 2533 * alloc.c (Fcons, pure_cons, Fpurecopy, Fgarbage_collect)
2535 mark_object, mark_buffer): Use XCAR and XCDR. 2534 (mark_object, mark_buffer): Use XCAR and XCDR.
2536 * bytecode.c (Fbyte_code): Likewise. 2535 * bytecode.c (Fbyte_code): Likewise.
2537 * callint.c (Fcall_interactively, Fprefix_numeric_value): 2536 * callint.c (Fcall_interactively, Fprefix_numeric_value):
2538 Likewise. 2537 Likewise.
2539 * callproc.c (Fcall_process, Fcall_process_region, child_setup, 2538 * callproc.c (Fcall_process, Fcall_process_region, child_setup)
2540 getenv_internal): Likewise. 2539 (getenv_internal): Likewise.
2541 * dired.c (file_name_completion): Likewise. 2540 * dired.c (file_name_completion): Likewise.
2542 * fns.c (Fsafe_length, concat, Fcopy_alist, Fmember, Fmemq, Fassq, 2541 * fns.c (Fsafe_length, concat, Fcopy_alist, Fmember, Fmemq, Fassq)
2543 assq_no_quit, Fassoc, Frassq, Frassoc, Fdelq, Fdelete, Freverse, 2542 (assq_no_quit, Fassoc, Frassq, Frassoc, Fdelq, Fdelete, Freverse)
2544 Fplist_get, Fplist_put, internal_equal, mapcar1): Likewise. 2543 (Fplist_get, Fplist_put, internal_equal, mapcar1): Likewise.
2545 * indent.c (Fcompute_motion): Likewise. 2544 * indent.c (Fcompute_motion): Likewise.
2546 * process.c (decode_status, Fprocess_status, Fprocess_exit_status, 2545 * process.c (decode_status, Fprocess_status, Fprocess_exit_status)
2547 list_processes_1, Fstart_process, Fopen_network_stream, 2546 (list_processes_1, Fstart_process, Fopen_network_stream)
2548 wait_reading_process_input, read_process_output_call, 2547 (wait_reading_process_input, read_process_output_call)
2549 kill_buffer_processes, sigchld_handler, exec_sentinel_unwind, 2548 (kill_buffer_processes, sigchld_handler, exec_sentinel_unwind)
2550 status_notify, wait_reading_process_input): Likewise. 2549 (status_notify, wait_reading_process_input): Likewise.
2551 * textprop.c (PLIST_ELT_P, property_value, set_properties, 2550 * textprop.c (PLIST_ELT_P, property_value, set_properties)
2552 extend_property_ranges): Likewise. 2551 (extend_property_ranges): Likewise.
2553 * w32faces.c (Fpixmap_spec_p, merge_face_list): Likewise. 2552 * w32faces.c (Fpixmap_spec_p, merge_face_list): Likewise.
2554 * w32fns.c (x_window_to_frame, x_set_frame_parameters, 2553 * w32fns.c (x_window_to_frame, x_set_frame_parameters)
2555 x_report_frame_params, x_set_cursor_type, x_icon_type, 2554 (x_report_frame_params, x_set_cursor_type, x_icon_type)
2556 x_figure_window_size, Fx_create_frame, w32_load_system_font, 2555 (x_figure_window_size, Fx_create_frame, w32_load_system_font)
2557 w32_load_font, enum_font_cb2, w32_list_bdf_fonts, w32_list_fonts, 2556 (w32_load_font, enum_font_cb2, w32_list_bdf_fonts, w32_list_fonts)
2558 w32_list_synthesized_fonts, w32_find_ccl_program, Fx_list_fonts, 2557 (w32_list_synthesized_fonts, w32_find_ccl_program, Fx_list_fonts)
2559 Fw32_find_bdf_fonts, w32_find_bdf_fonts_in_dir, 2558 (Fw32_find_bdf_fonts, w32_find_bdf_fonts_in_dir)
2560 x_display_info_for_name, Fx_display_list): Likewise. 2559 (x_display_info_for_name, Fx_display_list): Likewise.
2561 * w32menu.c (menubar_id_to_frame, single_keymap_panes, 2560 * w32menu.c (menubar_id_to_frame, single_keymap_panes)
2562 Fx_popup_menu, Fx_popup_dialog): Likewise. 2561 (Fx_popup_menu, Fx_popup_dialog): Likewise.
2563 * w32proc.c (Fw32_set_keyboard_layout): Likewise. 2562 * w32proc.c (Fw32_set_keyboard_layout): Likewise.
2564 * w32term.c (x_window_to_scroll_bar, w32_read_socket, 2563 * w32term.c (x_window_to_scroll_bar, w32_read_socket)
2565 w32_term_init, x_delete_display): Likewise. 2564 (w32_term_init, x_delete_display): Likewise.
2566 * xfns.c (x_window_to_frame, x_any_window_to_frame, 2565 * xfns.c (x_window_to_frame, x_any_window_to_frame)
2567 x_non_menubar_window_to_frame, x_menubar_window_to_frame, 2566 (x_non_menubar_window_to_frame, x_menubar_window_to_frame)
2568 x_top_window_to_frame, x_set_frame_parameters, 2567 (x_top_window_to_frame, x_set_frame_parameters)
2569 x_report_frame_params, x_set_cursor_type, x_icon_type, 2568 (x_report_frame_params, x_set_cursor_type, x_icon_type)
2570 x_figure_window_size, Fx_create_frame, x_display_info_for_name, 2569 (x_figure_window_size, Fx_create_frame, x_display_info_for_name)
2571 Fx_display_list, x_create_tip_frame): Likewise. 2570 (Fx_display_list, x_create_tip_frame): Likewise.
2572 * xmenu.c (menubar_id_to_frame, single_keymap_panes, 2571 * xmenu.c (menubar_id_to_frame, single_keymap_panes)
2573 Fx_popup_menu, Fx_popup_dialog): Likewise. 2572 (Fx_popup_menu, Fx_popup_dialog): Likewise.
2574 * xselect.c (x_own_selection, x_get_local_selection, 2573 * xselect.c (x_own_selection, x_get_local_selection)
2575 x_handle_selection_request, x_handle_selection_clear, 2574 (x_handle_selection_request, x_handle_selection_clear)
2576 x_clear_frame_selections, wait_for_property_change_unwind, 2575 (x_clear_frame_selections, wait_for_property_change_unwind)
2577 wait_for_property_change, x_handle_property_notify, 2576 (wait_for_property_change, x_handle_property_notify)
2578 copy_multiple_data, x_get_foreign_selection, 2577 (copy_multiple_data, x_get_foreign_selection)
2579 lisp_data_to_selection_data, clean_local_selection_data, 2578 (lisp_data_to_selection_data, clean_local_selection_data)
2580 x_handle_selection_notify, Fx_get_selection_internal, 2579 (x_handle_selection_notify, Fx_get_selection_internal)
2581 x_disown_buffer_selections): Likewise. 2580 (x_disown_buffer_selections): Likewise.
2582 * xterm.c (x_window_to_scroll_bar, XTread_socket, x_list_fonts, 2581 * xterm.c (x_window_to_scroll_bar, XTread_socket, x_list_fonts)
2583 x_load_font, x_find_ccl_program, x_term_init, x_delete_display): 2582 (x_load_font, x_find_ccl_program, x_term_init, x_delete_display):
2584 Likewise. 2583 Likewise.
2585 2584
2586 * alloc.c (make_float, make_pure_float, Fpurecopy): Use 2585 * alloc.c (make_float, make_pure_float, Fpurecopy): Use
2587 XFLOAT_DATA. 2586 XFLOAT_DATA.
2588 * bytecode.c (Fbyte_code): Likewise. 2587 * bytecode.c (Fbyte_code): Likewise.
2589 * floatfns.c (extract_float, Fexpt, Fabs, rounding_driver, 2588 * floatfns.c (extract_float, Fexpt, Fabs, rounding_driver)
2590 fmod_float): Likewise. 2589 (fmod_float): Likewise.
2591 2590
25921999-09-11 Richard Stallman <rms@gnu.org> 25911999-09-11 Richard Stallman <rms@gnu.org>
2593 2592
@@ -2599,8 +2598,8 @@
2599 * charset.h (GET_TRANSLATION_TABLE): Use XCDR. 2598 * charset.h (GET_TRANSLATION_TABLE): Use XCDR.
2600 * frame.h (FOR_EACH_FRAME): Use XCAR and XCDR. 2599 * frame.h (FOR_EACH_FRAME): Use XCAR and XCDR.
2601 (PIXEL_X_FROM_CANON_X, PIXEL_Y_FROM_CANON_Y): Use XFLOAT_DATA. 2600 (PIXEL_X_FROM_CANON_X, PIXEL_Y_FROM_CANON_Y): Use XFLOAT_DATA.
2602 * keyboard.h (EVENT_HEAD, EVENT_START, EVENT_END, POSN_WINDOW, 2601 * keyboard.h (EVENT_HEAD, EVENT_START, EVENT_END, POSN_WINDOW)
2603 POSN_BUFFER_POSN, POSN_WINDOW_POSN, POSN_TIMESTAMP): Use XCAR and 2602 (POSN_BUFFER_POSN, POSN_WINDOW_POSN, POSN_TIMESTAMP): Use XCAR and
2604 XCDR. 2603 XCDR.
2605 * syntax.h (SYNTAX, SYNTAX_WITH_FLAGS, SYNTAX_MATCH): Use XCAR and 2604 * syntax.h (SYNTAX, SYNTAX_WITH_FLAGS, SYNTAX_MATCH): Use XCAR and
2606 XCDR. 2605 XCDR.
@@ -2616,8 +2615,8 @@
2616 2615
2617 * print.c: Support print-circle and related features. 2616 * print.c: Support print-circle and related features.
2618 (Vprint_gensym_alist): Removed. 2617 (Vprint_gensym_alist): Removed.
2619 (Vprint_circle, Vprint_continuous_numbering, print_number_index 2618 (Vprint_circle, Vprint_continuous_numbering, print_number_index)
2620 Vprint_number_table): New variables. 2619 (Vprint_number_table): New variables.
2621 (PRINT_NUMBER_OBJECT, PRINT_NUMBER_STATUS): New macros. 2620 (PRINT_NUMBER_OBJECT, PRINT_NUMBER_STATUS): New macros.
2622 (PRINTPREPARE, PRINTFINISH): Don't set Vprint_gensym_alist. 2621 (PRINTPREPARE, PRINTFINISH): Don't set Vprint_gensym_alist.
2623 (print, print_preprocess, print_preprocess_string, print_object): 2622 (print, print_preprocess, print_preprocess_string, print_object):
@@ -2720,8 +2719,8 @@
2720 2719
2721 * xfaces.c (realize_basic_faces): Realize new basic faces. 2720 * xfaces.c (realize_basic_faces): Realize new basic faces.
2722 2721
2723 * dispextern.h (SCROLL_BAR_FACE_ID, BORDER_FACE_ID, 2722 * dispextern.h (SCROLL_BAR_FACE_ID, BORDER_FACE_ID)
2724 CURSOR_FACE_ID, MOUSE_FACE_ID): New. 2723 (CURSOR_FACE_ID, MOUSE_FACE_ID): New.
2725 2724
2726 * xfaces.c (Qscroll_bar, Qcursor, Qborder, Qmouse): New. 2725 * xfaces.c (Qscroll_bar, Qcursor, Qborder, Qmouse): New.
2727 (syms_of_xfaces): Intialize new symbols. 2726 (syms_of_xfaces): Intialize new symbols.
@@ -2857,7 +2856,7 @@
2857 2856
28581999-09-03 Richard Stallman <rms@gnu.org> 28571999-09-03 Richard Stallman <rms@gnu.org>
2859 2858
2860 * callproc.c: Delete the system-independent include of stdlib.h 2859 * callproc.c: Delete the system-independent include of stdlib.h.
2861 (leaving only the one in the WINDOWSNT conditional). 2860 (leaving only the one in the WINDOWSNT conditional).
2862 2861
28631999-09-03 Andrew Choi <choi@cs.hku.hk> 28621999-09-03 Andrew Choi <choi@cs.hku.hk>
@@ -2880,8 +2879,8 @@
2880 (Fmodify_frame_parameters) [macintosh]: 2879 (Fmodify_frame_parameters) [macintosh]:
2881 Call mac_set_frame_parameter in macterm.c. 2880 Call mac_set_frame_parameter in macterm.c.
2882 2881
2883 * keyboard.c [macintosh]: Set KBD_BUFFER_SIZE to a smaller value 2882 * keyboard.c [macintosh]: Set KBD_BUFFER_SIZE to a smaller value (512)
2884 (512) because Mac compilers limit local data of a function to 32K. 2883 because Mac compilers limit local data of a function to 32K.
2885 2884
2886 * make-docfiles.c: Correctly handle input files with Mac-style eol's. 2885 * make-docfiles.c: Correctly handle input files with Mac-style eol's.
2887 2886
@@ -2926,8 +2925,8 @@
2926 (Fset_window_point): Remove references to deleted variables. 2925 (Fset_window_point): Remove references to deleted variables.
2927 (Fset_window_start): Ditto. 2926 (Fset_window_start): Ditto.
2928 2927
2929 * xdisp.c (Vresize_mini_config, resize_mini_frame, 2928 * xdisp.c (Vresize_mini_config, resize_mini_frame)
2930 resize_mini_initial_height): Removed. 2929 (resize_mini_initial_height): Removed.
2931 (syms_of_xdisp): Remove references to these variables. 2930 (syms_of_xdisp): Remove references to these variables.
2932 (resize_mini_window): Don't save window configuration, freeze 2931 (resize_mini_window): Don't save window configuration, freeze
2933 window starts instead. Enlarge window until displaying an empty 2932 window starts instead. Enlarge window until displaying an empty
@@ -3205,8 +3204,8 @@
3205 (resize_mini_window): Save/restore window configuration 3204 (resize_mini_window): Save/restore window configuration
3206 differently. 3205 differently.
3207 3206
3208 * lisp.h (Vresize_mini_config, resize_mini_frame, 3207 * lisp.h (Vresize_mini_config, resize_mini_frame)
3209 resize_mini_initial_height): Add extern declarations. 3208 (resize_mini_initial_height): Add extern declarations.
3210 3209
3211 * xterm.c (expose_window_tree): Fix typo CANON_Y_UNIT to 3210 * xterm.c (expose_window_tree): Fix typo CANON_Y_UNIT to
3212 CANON_X_UNIT. 3211 CANON_X_UNIT.
@@ -3244,7 +3243,7 @@
3244 3243
3245 * xdisp.c (Vresize_mini_config): New. 3244 * xdisp.c (Vresize_mini_config): New.
3246 (resize_mini_window): Use it to save restore original window 3245 (resize_mini_window): Use it to save restore original window
3247 configuration 3246 configuration.
3248 (syms_of_xdisp): Initialize it. 3247 (syms_of_xdisp): Initialize it.
3249 3248
3250 * buffer.h (struct buffer): Add prevent_redisplay_optimizations_p. 3249 * buffer.h (struct buffer): Add prevent_redisplay_optimizations_p.
@@ -3266,37 +3265,37 @@
3266 prevent_redisplay_optimizations_p to 1. 3265 prevent_redisplay_optimizations_p to 1.
3267 (Fget_buffer_create): Set prevent_redisplay_optimizations_p to 1. 3266 (Fget_buffer_create): Set prevent_redisplay_optimizations_p to 1.
3268 3267
3269 * buffer.h (BUF_UNCHANGED_MODIFIED, UNCHANGED_MODIFIED, 3268 * buffer.h (BUF_UNCHANGED_MODIFIED, UNCHANGED_MODIFIED)
3270 BUF_OVERLAY_UNCHANGED_MODIFIED, OVERLAY_UNCHANGED_MODIFIED, 3269 (BUF_OVERLAY_UNCHANGED_MODIFIED, OVERLAY_UNCHANGED_MODIFIED)
3271 BUF_BEG_UNCHANGED, BEG_UNCHANGED, BUF_END_UNCHANGED, 3270 (BUF_BEG_UNCHANGED, BEG_UNCHANGED, BUF_END_UNCHANGED)
3272 END_UNCHANGED): New. 3271 (END_UNCHANGED): New.
3273 (struct buffer_text): Add beg_unchanged, end_unchanged, 3272 (struct buffer_text): Add beg_unchanged, end_unchanged,
3274 unchanged_modified, overlay_unchanged_modified. 3273 unchanged_modified, overlay_unchanged_modified.
3275 3274
3276 * window.h (beg_unchanged, end_unchanged, unchanged_modified, 3275 * window.h (beg_unchanged, end_unchanged, unchanged_modified)
3277 overlay_unchanged_modified): Removed. 3276 (overlay_unchanged_modified): Removed.
3278 (with_echo_area_unwind_data): Don't save beg/end_unchanged. 3277 (with_echo_area_unwind_data): Don't save beg/end_unchanged.
3279 (unwind_with_echo_area_buffer): Don't restore them. 3278 (unwind_with_echo_area_buffer): Don't restore them.
3280 (debug_beg_unchanged, debug_end_unchanged) [GLYPH_DEBUG]: Removed. 3279 (debug_beg_unchanged, debug_end_unchanged) [GLYPH_DEBUG]: Removed.
3281 (text_outside_line_unchanged_p, redisplay_internal, 3280 (text_outside_line_unchanged_p, redisplay_internal)
3282 try_scrolling): Use/set buffer-specific beg/end_unchanged. 3281 (try_scrolling): Use/set buffer-specific beg/end_unchanged.
3283 (redisplay_window): Let try_window_id be called if more than one 3282 (redisplay_window): Let try_window_id be called if more than one
3284 window is displayed. Use/set buffer-specific beg/end_unchanged. 3283 window is displayed. Use/set buffer-specific beg/end_unchanged.
3285 (get_last_unchanged_at_beg_row, get_first_unchanged_at_end_row, 3284 (get_last_unchanged_at_beg_row, get_first_unchanged_at_end_row)
3286 try_window_id): 3285 (try_window_id):
3287 Use buffer-specific beg/end_unchanged. 3286 Use buffer-specific beg/end_unchanged.
3288 3287
3289 * window.h (beg_unchanged, end_unchanged, unchanged_modified, 3288 * window.h (beg_unchanged, end_unchanged, unchanged_modified)
3290 overlay_unchanged_modified): Remove extern declarations. 3289 (overlay_unchanged_modified): Remove extern declarations.
3291 3290
3292 * keyboard.c (command_loop_1): Set beg/end_unchanged per buffer. 3291 * keyboard.c (command_loop_1): Set beg/end_unchanged per buffer.
3293 3292
3294 * insdel.c (gap_left): Compute beg/end_unchanged per buffer. 3293 * insdel.c (gap_left): Compute beg/end_unchanged per buffer.
3295 (gap_right): Ditto. 3294 (gap_right): Ditto.
3296 (adjust_after_replace): Likewise. 3295 (adjust_after_replace): Likewise.
3297 (replace_range, del_range_2, modify_region): Likewise. 3296 (replace_range, del_range_2, modify_region): Likewise.
3298 3297
3299 * dispnew.c (direct_output_for_insert): Set beg_unchanged 3298 * dispnew.c (direct_output_for_insert): Set beg_unchanged
3300 and unchanged_modified per buffer. 3299 and unchanged_modified per buffer.
3301 3300
3302 * coding.c (code_convert_region): Compute beg/end_unchanged per 3301 * coding.c (code_convert_region): Compute beg/end_unchanged per
@@ -3312,7 +3311,7 @@
3312 * lisp.h: Add prototype for copy_hash_table and Fcopy_hash_table. 3311 * lisp.h: Add prototype for copy_hash_table and Fcopy_hash_table.
3313 3312
3314 * fns.c (Qkey, Qvalue): Renamed from Qkey_weak, and Qvalue_weak. 3313 * fns.c (Qkey, Qvalue): Renamed from Qkey_weak, and Qvalue_weak.
3315 (Qkey_value_weak): Removed. 3314 (Qkey_value_weak): Removed.
3316 (make_hash_table): Use nil, `key', `value', t for weakness. 3315 (make_hash_table): Use nil, `key', `value', t for weakness.
3317 (Fmake_hash_table): Ditto. 3316 (Fmake_hash_table): Ditto.
3318 (copy_hash_table): New. 3317 (copy_hash_table): New.
@@ -3398,25 +3397,22 @@
3398 cursor_in_echo_area case only for a mini-window showing 3397 cursor_in_echo_area case only for a mini-window showing
3399 a message. Don't let cursor end up after the end of a row. 3398 a message. Don't let cursor end up after the end of a row.
3400 3399
3401 * xdisp.c (echo_area_glyphs, echo_area_message, 3400 * xdisp.c (echo_area_glyphs, echo_area_message)
3402 echo_area_glyphs_length, previous_echo_glyphs, 3401 (echo_area_glyphs_length, previous_echo_glyphs)
3403 previous_echo_area_message, previous_echo_area_glyphs_length): 3402 (previous_echo_area_message, previous_echo_area_glyphs_length):
3404 Removed. 3403 Removed.
3405 (Vmessage_stack, echo_area_buffer, echo_buffer, 3404 (Vmessage_stack, echo_area_buffer, echo_buffer)
3406 display_last_displayed_message_p, Vwith_echo_area_save_vector): New. 3405 (display_last_displayed_message_p, Vwith_echo_area_save_vector): New.
3407 (message2_nolog): Use set_message and clear_message. 3406 (message2_nolog): Use set_message and clear_message.
3408 (message3): Rename parameter len to nbytes to make clear what 3407 (message3): Rename parameter len to nbytes to make clear what it is.
3409 it is.
3410 (message3_nolog): Ditto. Use set_message and clear_message. 3408 (message3_nolog): Ditto. Use set_message and clear_message.
3411 (update_echo_area): Rewritten. 3409 (update_echo_area): Rewritten.
3412 (with_echo_area_buffer): New. 3410 (with_echo_area_buffer): New.
3413 (with_echo_area_buffer_unwind_data, unwind_with_area_buffer): New. 3411 (with_echo_area_buffer_unwind_data, unwind_with_area_buffer): New.
3414 (setup_echo_area_for_printing): New. 3412 (setup_echo_area_for_printing): New.
3415 (display_echo_area, display_echo_area_1): New. 3413 (display_echo_area, display_echo_area_1): New.
3416
3417 (current_message, current_message_1): New. 3414 (current_message, current_message_1): New.
3418 (push_message, restore_message, pop_message, 3415 (push_message, restore_message, pop_message, check_message_stack): New.
3419 check_message_stack): New.
3420 (truncate_echo_area): Rewritten. 3416 (truncate_echo_area): Rewritten.
3421 (truncate_message_1): New. 3417 (truncate_message_1): New.
3422 (set_message, set_message_1, clear_message): New. 3418 (set_message, set_message_1, clear_message): New.
@@ -3439,8 +3435,8 @@
3439 don't try to set cursor on rows that aren't enabled. 3435 don't try to set cursor on rows that aren't enabled.
3440 3436
3441 * print.c: Remove conditional compilation on `standalone'. 3437 * print.c: Remove conditional compilation on `standalone'.
3442 (glyph_len, str_to_glyph_cpy, str_to_glyph_ncpy, 3438 (glyph_len, str_to_glyph_cpy, str_to_glyph_ncpy)
3443 glyph_to_str_cpy): Remove that section because GLYPHs are no 3439 (glyph_to_str_cpy): Remove that section because GLYPHs are no
3444 longer used in that way. 3440 longer used in that way.
3445 (PRINTDECLARE): Add multibyte. 3441 (PRINTDECLARE): Add multibyte.
3446 (PRINTPREPARE, PRINTFINISH): Handle printcharfun t differently. 3442 (PRINTPREPARE, PRINTFINISH): Handle printcharfun t differently.
@@ -3457,7 +3453,7 @@
3457 (command_loop_1): Check for echo area messages differently. 3453 (command_loop_1): Check for echo area messages differently.
3458 (read_char): Likewise. 3454 (read_char): Likewise.
3459 (record_menu_key): Use clear_message. 3455 (record_menu_key): Use clear_message.
3460 (Fexecute_extended_command): Check for echo area messages 3456 (Fexecute_extended_command): Check for echo area messages
3461 differently. Use push_message, restore_message, pop_message. 3457 differently. Use push_message, restore_message, pop_message.
3462 3458
3463 * alloc.c (Fgarbage_collect): Use push_message, restore_message, 3459 * alloc.c (Fgarbage_collect): Use push_message, restore_message,
@@ -3621,7 +3617,7 @@
3621 is fixed-size. 3617 is fixed-size.
3622 (window_min_size_1): New. 3618 (window_min_size_1): New.
3623 (window_min_size): Handle fixed-size windows. 3619 (window_min_size): Handle fixed-size windows.
3624 (size_window): New. Rewritten combination of set_window_height and 3620 (size_window): New. Rewritten combination of set_window_height and
3625 set_window_width that handles fixed-size windows. 3621 set_window_width that handles fixed-size windows.
3626 (set_window_height): Call it. 3622 (set_window_height): Call it.
3627 (set_window_width): Call it. 3623 (set_window_width): Call it.
@@ -3739,8 +3735,8 @@
3739 3735
37401999-08-06 Geoff Voelker <voelker@cs.washington.edu> 37361999-08-06 Geoff Voelker <voelker@cs.washington.edu>
3741 3737
3742 * dired.c (directory_files_internal, Fdirectory_files_and_attributes, 3738 * dired.c (directory_files_internal, Fdirectory_files_and_attributes)
3743 Ffile_attributes_lessp): New functions. 3739 (Ffile_attributes_lessp): New functions.
3744 (Fdirectory_files): Use directory_files_internal. 3740 (Fdirectory_files): Use directory_files_internal.
3745 (syms_of_dired): Initialize Fdirectory_files_and_attributes, 3741 (syms_of_dired): Initialize Fdirectory_files_and_attributes,
3746 Ffile_attributes_lessp. 3742 Ffile_attributes_lessp.
@@ -3762,7 +3758,7 @@
3762 3758
3763 * xdisp.c (reseat_at_next_visible_line_start): New parameter 3759 * xdisp.c (reseat_at_next_visible_line_start): New parameter
3764 on_newline_p. 3760 on_newline_p.
3765 (set_iterator_to_next): After delivering last char 3761 (set_iterator_to_next): After delivering last char
3766 from display vector, reseat on next visible line start if 3762 from display vector, reseat on next visible line start if
3767 dpvec_char_len < 0. 3763 dpvec_char_len < 0.
3768 (next_element_from_buffer): Set dpvec_char_len to -1 for 3764 (next_element_from_buffer): Set dpvec_char_len to -1 for
@@ -4337,7 +4333,7 @@
4337 4333
4338 * term.c (TS_cursor_visible): Renamed from TS_visual_mode. 4334 * term.c (TS_cursor_visible): Renamed from TS_visual_mode.
4339 (TS_cursor_normal): Renamed from TS_end_visual_mode. 4335 (TS_cursor_normal): Renamed from TS_end_visual_mode.
4340 (TS_cursor_invisible): New. 4336 (TS_cursor_invisible): New.
4341 (term_init): Initialize TS_cursor_invisible. 4337 (term_init): Initialize TS_cursor_invisible.
4342 (tty_hide_cursor): New. 4338 (tty_hide_cursor): New.
4343 (tty_show_cursor): New. 4339 (tty_show_cursor): New.
@@ -4648,7 +4644,7 @@
4648 (syms_of_buffer): Add default-scroll-*-aggressively. 4644 (syms_of_buffer): Add default-scroll-*-aggressively.
4649 4645
4650 * buffer.h (scroll_up_aggressively): New. 4646 * buffer.h (scroll_up_aggressively): New.
4651 (scroll_down_aggressively): New. 4647 (scroll_down_aggressively): New.
4652 4648
4653 * Makefile.in (LIBPNG): Add -lz -lm in case we're linking with 4649 * Makefile.in (LIBPNG): Add -lz -lm in case we're linking with
4654 a static PNG library. 4650 a static PNG library.
@@ -4733,7 +4729,7 @@
4733 (build_scalable_font_name) [SCALABLE_FONTS]: New. 4729 (build_scalable_font_name) [SCALABLE_FONTS]: New.
4734 (may_use_scalable_font_p) [SCALABLE_FONTS]: New. 4730 (may_use_scalable_font_p) [SCALABLE_FONTS]: New.
4735 (best_matching_font) [SCALABLE_FONTS]: Handle scalable fonts. 4731 (best_matching_font) [SCALABLE_FONTS]: Handle scalable fonts.
4736 (syms_of_xfaces): Add scalable-fonts-allowed. 4732 (syms_of_xfaces): Add scalable-fonts-allowed.
4737 4733
47381999-05-26 Gerd Moellmann <gerd@gnu.org> 47341999-05-26 Gerd Moellmann <gerd@gnu.org>
4739 4735
@@ -4995,7 +4991,7 @@
4995 * xfaces.c (set_font_frame_param): New. 4991 * xfaces.c (set_font_frame_param): New.
4996 (Finternal_set_lisp_face_attribute): Call it. 4992 (Finternal_set_lisp_face_attribute): Call it.
4997 4993
4998Sun Feb 14 10:54:02 1999 Masatake Yamato <masata-y@is.aist-nara.ac.jp> 49941999-02-14 Masatake Yamato <masata-y@is.aist-nara.ac.jp>
4999 4995
5000 * xfaces.c (Finternal_set_lisp_face_attribute_from_resource): 4996 * xfaces.c (Finternal_set_lisp_face_attribute_from_resource):
5001 Accept specifications of color for underline. 4997 Accept specifications of color for underline.
@@ -5011,21 +5007,21 @@ Sun Feb 14 10:54:02 1999 Masatake Yamato <masata-y@is.aist-nara.ac.jp>
5011 * dispnew.c (check_matrix_invariants): Put it in #if 0. 5007 * dispnew.c (check_matrix_invariants): Put it in #if 0.
5012 (update_window): Put the call to check_matrix_invariants in #if 0. 5008 (update_window): Put the call to check_matrix_invariants in #if 0.
5013 5009
5014Sun Feb 7 09:58:49 1999 Masatake Yamato <masata-y@is.aist-nara.ac.jp> 50101999-02-07 Masatake Yamato <masata-y@is.aist-nara.ac.jp>
5015 5011
5016 * dispextern.h: Remove all else block of UNDERLINE_COLOR. 5012 * dispextern.h: Remove all else block of UNDERLINE_COLOR.
5017 Remove definition of UNDERLINE_COLOR. 5013 Remove definition of UNDERLINE_COLOR.
5018 5014
5019Mon Jan 4 04:43:41 1999 Masatake Yamato <masata-y@is.aist-nara.ac.jp> 50151999-01-04 Masatake Yamato <masata-y@is.aist-nara.ac.jp>
5020 5016
5021 * xfaces.c (free_face_colors): Free the color for underline. 5017 * xfaces.c (free_face_colors): Free the color for underline.
5022 5018
5023 * xterm.c (x_draw_glyph_string_underline): Set the color for underline 5019 * xterm.c (x_draw_glyph_string_underline): Set the color for underline
5024 to the GC. 5020 to the GC.
5025 5021
5026Sun Jan 3 08:41:10 1999 Masatake Yamato <masata-y@is.aist-nara.ac.jp> 50221999-01-03 Masatake Yamato <masata-y@is.aist-nara.ac.jp>
5027 5023
5028 * dispextern.h (UNDERLINE_COLOR): Defined. 5024 * dispextern.h (UNDERLINE_COLOR): Defined.
5029 (struct face): Added two new members. 5025 (struct face): Added two new members.
5030 underline_color, underline_defaulted_p. 5026 underline_color, underline_defaulted_p.
5031 5027
@@ -5034,7 +5030,7 @@ Sun Jan 3 08:41:10 1999 Masatake Yamato <masata-y@is.aist-nara.ac.jp>
5034 (Finternal_set_lisp_face_attribute): Likewise. 5030 (Finternal_set_lisp_face_attribute): Likewise.
5035 5031
5036 * xfaces.c (load_color): Change the last argument type to enum 5032 * xfaces.c (load_color): Change the last argument type to enum
5037 lface_attribute_index from int. And addec code for underling coloring. 5033 lface_attribute_index from int. And addec code for underling coloring.
5038 (load_face_colors): Pass LFACE_*_INDEX to load_color. 5034 (load_face_colors): Pass LFACE_*_INDEX to load_color.
5039 5035
50401999-02-12 Gerd Moellmann <gerd@gnu.org> 50361999-02-12 Gerd Moellmann <gerd@gnu.org>
@@ -5211,7 +5207,7 @@ Sun Jan 3 08:41:10 1999 Masatake Yamato <masata-y@is.aist-nara.ac.jp>
5211 * dispextern.h (struct glyph): Add voffset. 5207 * dispextern.h (struct glyph): Add voffset.
5212 (struct it): Replace height by descent, max_height by max_descent. 5208 (struct it): Replace height by descent, max_height by max_descent.
5213 5209
5214 * xterm.c (x_append_glyph): Set voffset 5210 * xterm.c (x_append_glyph): Set voffset.
5215 (x_append_stretch_glyph): Ditto. 5211 (x_append_stretch_glyph): Ditto.
5216 (x_produce_image_glyph): Ditto. 5212 (x_produce_image_glyph): Ditto.
5217 (x_produce_glyphs): Take voffset into account. 5213 (x_produce_glyphs): Take voffset into account.
@@ -5401,8 +5397,8 @@ Sun Jan 3 08:41:10 1999 Masatake Yamato <masata-y@is.aist-nara.ac.jp>
5401 5397
54021998-11-11 Gerd Moellmann <gerd@gnu.org> 53981998-11-11 Gerd Moellmann <gerd@gnu.org>
5403 5399
5404 * xterm.h (struct x_display_info): Add gray pixmap. * xterm.c 5400 * xterm.h (struct x_display_info): Add gray pixmap.
5405 (x_term_init): Create the gray pixmap. 5401 * xterm.c (x_term_init): Create the gray pixmap.
5406 (x_setup_relief_color): Use it. 5402 (x_setup_relief_color): Use it.
5407 (x_get_glyph_string_clip_rect): Draw a toolbar window over the 5403 (x_get_glyph_string_clip_rect): Draw a toolbar window over the
5408 internal border at the top of a frame. 5404 internal border at the top of a frame.
@@ -5473,7 +5469,7 @@ Sun Jan 3 08:41:10 1999 Masatake Yamato <masata-y@is.aist-nara.ac.jp>
5473 (xmenu_show): Likewise. 5469 (xmenu_show): Likewise.
5474 5470
5475 * xmenu.c (push_menu_item): Add parameters `type' and 5471 * xmenu.c (push_menu_item): Add parameters `type' and
5476 `selected'. Store it in menu_items. 5472 `selected'. Store it in menu_items.
5477 (MENU_ITEMS_ITEM_TYPE): New. 5473 (MENU_ITEMS_ITEM_TYPE): New.
5478 (MENU_ITEMS_ITEM_SELECTED): New. 5474 (MENU_ITEMS_ITEM_SELECTED): New.
5479 (MENU_ITEMS_ITEM_LENGTH): Increase by two. 5475 (MENU_ITEMS_ITEM_LENGTH): Increase by two.
@@ -6502,7 +6498,7 @@ Sun Jan 3 08:41:10 1999 Masatake Yamato <masata-y@is.aist-nara.ac.jp>
6502 6498
6503 * xdisp.c (get_glyph_property): Renamed from 6499 * xdisp.c (get_glyph_property): Renamed from
6504 fill_iterator_from_glyph_property. 6500 fill_iterator_from_glyph_property.
6505 (next_element_from_buffer): Handle case that no `glyph' property 6501 (next_element_from_buffer): Handle case that no `glyph' property
6506 was found correctly. 6502 was found correctly.
6507 (display_line): Extend face to end of line only if we have faces. 6503 (display_line): Extend face to end of line only if we have faces.
6508 6504
@@ -6637,7 +6633,7 @@ Sun Jan 3 08:41:10 1999 Masatake Yamato <masata-y@is.aist-nara.ac.jp>
6637 (SET_TEXT_POS_FROM_MARKER): Set a text_pos from a marker. 6633 (SET_TEXT_POS_FROM_MARKER): Set a text_pos from a marker.
6638 (SET_MARKER_FROM_TEXT_POS): Set a marker from a text_pos. 6634 (SET_MARKER_FROM_TEXT_POS): Set a marker from a text_pos.
6639 (TEXT_POS_EQUAL_P): Compare two text_pos structures for equality. 6635 (TEXT_POS_EQUAL_P): Compare two text_pos structures for equality.
6640 (struct display_pos): Renamed from glyph_pos. Use struct text_pos 6636 (struct display_pos): Renamed from glyph_pos. Use struct text_pos
6641 for buffer and string positions. 6637 for buffer and string positions.
6642 (struct glyph): Use text_pos. 6638 (struct glyph): Use text_pos.
6643 (struct it): Renamed from display_iterator. Use text_pos. 6639 (struct it): Renamed from display_iterator. Use text_pos.
@@ -7263,7 +7259,7 @@ Sun Jan 3 08:41:10 1999 Masatake Yamato <masata-y@is.aist-nara.ac.jp>
7263 7259
7264 * xdisp.c (set_iterator_stop_pos): Take glyph_check_pos into 7260 * xdisp.c (set_iterator_stop_pos): Take glyph_check_pos into
7265 account. 7261 account.
7266 (reseat_iterator): Set glyph_check_pos. Handle case where 7262 (reseat_iterator): Set glyph_check_pos. Handle case where
7267 new position is < original position. 7263 new position is < original position.
7268 (check_iterator_glyph_property): Handle glyph property in strings. 7264 (check_iterator_glyph_property): Handle glyph property in strings.
7269 (next_element_from_string): Call above function. 7265 (next_element_from_string): Call above function.
@@ -7598,7 +7594,7 @@ Sun Jan 3 08:41:10 1999 Masatake Yamato <masata-y@is.aist-nara.ac.jp>
7598 face_at_buffer_position. Parameter charset removed; always 7594 face_at_buffer_position. Parameter charset removed; always
7599 compute face for CHARSET_ASCII. 7595 compute face for CHARSET_ASCII.
7600 (face_at_string_position): Renamed from 7596 (face_at_string_position): Renamed from
7601 compute_face_at_string_pos. Parameter charset removed; always 7597 compute_face_at_string_pos. Parameter charset removed; always
7602 compute for CHARSET_ASCII. 7598 compute for CHARSET_ASCII.
7603 (lookup_face_for_charset): Take frame parameter instead of 7599 (lookup_face_for_charset): Take frame parameter instead of
7604 face_cache. 7600 face_cache.
@@ -8531,7 +8527,7 @@ Sun Jan 3 08:41:10 1999 Masatake Yamato <masata-y@is.aist-nara.ac.jp>
8531 8527
8532 * dispnew.c (struct dim): Use int. 8528 * dispnew.c (struct dim): Use int.
8533 8529
8534 * xfaces.c (Fset_face_attribute_internal): Set face->font_name; 8530 * xfaces.c (Fset_face_attribute_internal): Set face->font_name.
8535 (allocate_face): Initialize it. 8531 (allocate_face): Initialize it.
8536 (load_font): Use XLoadQueryFont again instead of x_load_font. 8532 (load_font): Use XLoadQueryFont again instead of x_load_font.
8537 (unload_font): Use XFreeFont again. 8533 (unload_font): Use XFreeFont again.
@@ -8925,7 +8921,7 @@ Sun Jan 3 08:41:10 1999 Masatake Yamato <masata-y@is.aist-nara.ac.jp>
8925 (x_get_char_font_and_encoding): Return null if font could not be 8921 (x_get_char_font_and_encoding): Return null if font could not be
8926 loaded. Reset font to null if fontset could not be loaded. 8922 loaded. Reset font to null if fontset could not be loaded.
8927 (draw_glyphs): Fill background if font not found. 8923 (draw_glyphs): Fill background if font not found.
8928 (draw_glyphs): Unused parameter just_foreground_p removed. New 8924 (draw_glyphs): Unused parameter just_foreground_p removed. New
8929 parameter composite_glyph. 8925 parameter composite_glyph.
8930 (draw_glyphs): Use enumeration for parameter hl. 8926 (draw_glyphs): Use enumeration for parameter hl.
8931 (draw_glyphs): Pass a display area relative x-position to 8927 (draw_glyphs): Pass a display area relative x-position to
@@ -9231,7 +9227,7 @@ Sun Jan 3 08:41:10 1999 Masatake Yamato <masata-y@is.aist-nara.ac.jp>
9231 * dispnew.c (update_frame_line): update_line -> update_frame_line; 9227 * dispnew.c (update_frame_line): update_line -> update_frame_line;
9232 mirrored_make_current -> make_current. 9228 mirrored_make_current -> make_current.
9233 9229
9234 * xdisp.c: (store_frame_title_char): New function to store a 9230 * xdisp.c (store_frame_title_char): New function to store a
9235 single character for the frame title with re-allocation of 9231 single character for the frame title with re-allocation of
9236 frame_title_buf. 9232 frame_title_buf.
9237 (init_xdisp): Intialize frame_title_.* variables to null. 9233 (init_xdisp): Intialize frame_title_.* variables to null.
@@ -9272,7 +9268,7 @@ Sun Jan 3 08:41:10 1999 Masatake Yamato <masata-y@is.aist-nara.ac.jp>
9272 9268
92731997-11-15 Gerd Moellmann <gerd@acm.org> 92691997-11-15 Gerd Moellmann <gerd@acm.org>
9274 9270
9275 * dispnew.c (clear_current_matrices): Clear matrix of menu_bar_window 9271 * dispnew.c (clear_current_matrices): Clear matrix of menu_bar_window.
9276 (clear_desired_matrices): Ditto. 9272 (clear_desired_matrices): Ditto.
9277 (adjust_frame_glyphs_for_window_redisplay): Use FRAME_WINDOW_WIDTH 9273 (adjust_frame_glyphs_for_window_redisplay): Use FRAME_WINDOW_WIDTH
9278 for menu_bar_window. 9274 for menu_bar_window.
@@ -9509,20 +9505,20 @@ Sun Jan 3 08:41:10 1999 Masatake Yamato <masata-y@is.aist-nara.ac.jp>
9509 9505
9510 * window.h: Include blocker WINDOW_H_INCLUDED, include 9506 * window.h: Include blocker WINDOW_H_INCLUDED, include
9511 dispextern.h. 9507 dispextern.h.
9512 (struct window): phys_cursor_glyph as struct glyph. * window.c 9508 (struct window): phys_cursor_glyph as struct glyph.
9513 (make_window): Initialize it. 9509 * window.c (make_window): Initialize it.
9514 (replace_window): Ditto. 9510 (replace_window): Ditto.
9515 * dispnew.c (free_window_matrices): Remove freeing of 9511 * dispnew.c (free_window_matrices): Remove freeing of
9516 phys_cursor_glyph. 9512 phys_cursor_glyph.
9517 (check_matrix_invariants): Renamed from check_current_matrix_... 9513 (check_matrix_invariants): Renamed from check_current_matrix_...
9518 * xterm.c: All references to phys_cursor_glyph changed. 9514 * xterm.c: All references to phys_cursor_glyph changed.
9519 9515
9520 * dispextern.h (DISPEXTERN_H_INCLUDED: New include blocker. 9516 * dispextern.h (DISPEXTERN_H_INCLUDED): New include blocker.
9521 9517
9522 * xfaces.c: Comment update. 9518 * xfaces.c: Comment update.
9523 9519
9524 * window.h (struct window): Make phys_cursor_glyph a struct glyph 9520 * window.h (struct window): Make phys_cursor_glyph a struct glyph
9525 pointer. Remove phys_cursor_ascent, descent, etc. 9521 pointer. Remove phys_cursor_ascent, descent, etc.
9526 * dispnew.c (free_window_matrices): Free it. 9522 * dispnew.c (free_window_matrices): Free it.
9527 * window.c (make_window): Allocate it. 9523 * window.c (make_window): Allocate it.
9528 (replace_window): Ditto. 9524 (replace_window): Ditto.
@@ -9835,7 +9831,7 @@ Sun Jan 3 08:41:10 1999 Masatake Yamato <masata-y@is.aist-nara.ac.jp>
9835 * window.c (make_window): start_y removed. 9831 * window.c (make_window): start_y removed.
9836 (replace_window): Ditto. 9832 (replace_window): Ditto.
9837 9833
9838 * xdisp.c (last_max_ascent, last_max_descent): Ascent and 9834 * xdisp.c (last_max_ascent, last_max_descent): Ascent and
9839 descent values of the last line processed by skip_to. 9835 descent values of the last line processed by skip_to.
9840 (redisplay_window): Use them. 9836 (redisplay_window): Use them.
9841 (skip_to): Set them. 9837 (skip_to): Set them.
@@ -9851,16 +9847,16 @@ Sun Jan 3 08:41:10 1999 Masatake Yamato <masata-y@is.aist-nara.ac.jp>
9851 (reseat_cursor): Ditto. 9847 (reseat_cursor): Ditto.
9852 (next_display_element): Ditto. 9848 (next_display_element): Ditto.
9853 9849
9854Sun Aug 24 08:50:52 1997 Gerd Moellmann <gerd@acm.org> 98501997-08-24 Gerd Moellmann <gerd@acm.org>
9855 9851
9856 * termhooks.h: Some hooks with prototypes. 9852 * termhooks.h: Some hooks with prototypes.
9857 9853
9858 * term.c: Some hooks with function prototypes. 9854 * term.c: Some hooks with function prototypes.
9859 9855
9860 * xdisp.c (reseat_cursor): Additional argument force_p. Avoid 9856 * xdisp.c (reseat_cursor): Additional argument force_p. Avoid
9861 computing face if possible. 9857 computing face if possible.
9862 9858
9863 * xdisp.c (next_display_element): Use face from glyph from display 9859 * xdisp.c (next_display_element): Use face from glyph from display
9864 table only if != 0. 9860 table only if != 0.
9865 9861
9866 * emacs.c: FreeBSD headers for profiling removed. 9862 * emacs.c: FreeBSD headers for profiling removed.
@@ -9917,7 +9913,7 @@ Sun Aug 24 08:50:52 1997 Gerd Moellmann <gerd@acm.org>
9917 * emacs.c (main): Remove own profiling code because 0.95 now 9913 * emacs.c (main): Remove own profiling code because 0.95 now
9918 has it in. 9914 has it in.
9919 9915
9920Fri Aug 22 18:46:43 1997 Gerd Moellmann <gerd@acm.org> 99161997-08-22 Gerd Moellmann <gerd@acm.org>
9921 9917
9922 * xterm.c (XTupdate_end): Draw horizontal border at right position. 9918 * xterm.c (XTupdate_end): Draw horizontal border at right position.
9923 (expose_window): Draw vertical border. 9919 (expose_window): Draw vertical border.
@@ -9943,8 +9939,8 @@ Fri Aug 22 18:46:43 1997 Gerd Moellmann <gerd@acm.org>
9943 * dispnew.c (clear_glyph_matrix): Additional argument specifiying 9939 * dispnew.c (clear_glyph_matrix): Additional argument specifiying
9944 that rows should really be cleared. Used for current matrices. 9940 that rows should really be cleared. Used for current matrices.
9945 9941
9946 * dispnew.c (scrolling_window): Bug fix. 9942 * dispnew.c (scrolling_window): Bug fix.
9947 (line_dance_hook): Formerly line_dance_fn, take only one parameter. 9943 (line_dance_hook): Formerly line_dance_fn, take only one parameter.
9948 9944
9949 * dispextern.h (struct run): Remove current_vpos. 9945 * dispextern.h (struct run): Remove current_vpos.
9950 9946
@@ -9956,7 +9952,7 @@ Fri Aug 22 18:46:43 1997 Gerd Moellmann <gerd@acm.org>
9956 Fix truncated_on_left_p and truncated_on_right_p to be bits. 9952 Fix truncated_on_left_p and truncated_on_right_p to be bits.
9957 (struct glyph_row): 9953 (struct glyph_row):
9958 9954
9959Thu Aug 21 14:37:34 1997 Gerd Moellmann <gerd@acm.org> 99551997-08-21 Gerd Moellmann <gerd@acm.org>
9960 9956
9961 * xdisp.c (skip_vertically_backward): Avoid negative vpos values 9957 * xdisp.c (skip_vertically_backward): Avoid negative vpos values
9962 when calling skip_to for continued lines. 9958 when calling skip_to for continued lines.
@@ -9971,7 +9967,7 @@ Thu Aug 21 14:37:34 1997 Gerd Moellmann <gerd@acm.org>
9971 9967
9972 * xterm.c (x_draw_row_borders): Use FRAME_MODE_LINE_HEIGHT height 9968 * xterm.c (x_draw_row_borders): Use FRAME_MODE_LINE_HEIGHT height
9973 value. 9969 value.
9974 (x_clip_to_row): Use MATRIX_ROW_VISIBLE_HEIGHT. Simplified. 9970 (x_clip_to_row): Use MATRIX_ROW_VISIBLE_HEIGHT. Simplified.
9975 (do_line_dance): Simplified and pixel corrected. 9971 (do_line_dance): Simplified and pixel corrected.
9976 9972
9977 * dispnew.c (scrolling_window): Simplified. 9973 * dispnew.c (scrolling_window): Simplified.
@@ -9981,7 +9977,7 @@ Thu Aug 21 14:37:34 1997 Gerd Moellmann <gerd@acm.org>
9981 * dispnew.c (update_window): Add FRAME_MODE_LINE_BORDER_WIDTH 9977 * dispnew.c (update_window): Add FRAME_MODE_LINE_BORDER_WIDTH
9982 to mode line row->x. 9978 to mode line row->x.
9983 9979
9984Wed Aug 20 11:23:28 1997 Gerd Moellmann <gerd@acm.org> 99801997-08-20 Gerd Moellmann <gerd@acm.org>
9985 9981
9986 * xterm.c (x_get_char_font_and_encoding): Don't let fontset 9982 * xterm.c (x_get_char_font_and_encoding): Don't let fontset
9987 override font of face. 9983 override font of face.
@@ -10001,7 +9997,7 @@ Wed Aug 20 11:23:28 1997 Gerd Moellmann <gerd@acm.org>
10001 (merge_faces): Don't use default font if new font has different 9997 (merge_faces): Don't use default font if new font has different
10002 size. 9998 size.
10003 9999
10004Tue Aug 19 14:38:05 1997 Gerd Moellmann <gerd@acm.org> 100001997-08-19 Gerd Moellmann <gerd@acm.org>
10005 10001
10006 * xterm.c (x_display_and_set_cursor): Use FONT_WIDTH if width 10002 * xterm.c (x_display_and_set_cursor): Use FONT_WIDTH if width
10007 unknown. Some fonts have min_width zero. 10003 unknown. Some fonts have min_width zero.
@@ -10018,39 +10014,39 @@ Tue Aug 19 14:38:05 1997 Gerd Moellmann <gerd@acm.org>
10018 (x_display_and_set_cursor): If cursor on padding glyph, use 10014 (x_display_and_set_cursor): If cursor on padding glyph, use
10019 min_bounds pixel width. 10015 min_bounds pixel width.
10020 10016
10021Mon Aug 18 09:39:18 1997 Gerd Moellmann <gerd@acm.org> 100171997-08-18 Gerd Moellmann <gerd@acm.org>
10022 10018
10023 * xterm.c (x_clip_to_row): Height value was 1 too large. 10019 * xterm.c (x_clip_to_row): Height value was 1 too large.
10024 (XTclear_end_of_line): Clip to display area. 10020 (XTclear_end_of_line): Clip to display area.
10025 10021
10026 * xfns.c (x_figure_window_sizes): Add trunc border width 10022 * xfns.c (x_figure_window_sizes): Add trunc border width
10027 to frame pixel width. 10023 to frame pixel width.
10028 10024
10029 * xdisp.c (next_display_element): Don't display overlay strings 10025 * xdisp.c (next_display_element): Don't display overlay strings
10030 within invisible text. 10026 within invisible text.
10031 (skip_vertically_backward): Skip display lines. 10027 (skip_vertically_backward): Skip display lines.
10032 10028
10033Sat Aug 16 13:13:32 1997 Gerd Moellmann <gerd@acm.org> 100291997-08-16 Gerd Moellmann <gerd@acm.org>
10034 10030
10035 * xdisp.c (x_consider_frame_titie): Don't pad with blanks. 10031 * xdisp.c (x_consider_frame_titie): Don't pad with blanks.
10036 10032
10037 * xdisp.c (next_display_element): Next invisible 10033 * xdisp.c (next_display_element): Next invisible
10038 text check position computed differently. 10034 text check position computed differently.
10039 10035
10040 * dispextern.h (struct display_cursor): last_invisible_text_pos 10036 * dispextern.h (struct display_cursor): last_invisible_text_pos
10041 and display_ellipsis_for_invisible_p removed. 10037 and display_ellipsis_for_invisible_p removed.
10042 10038
10043 * xdisp.c (next_display_element): Set last_invisible_text_pos 10039 * xdisp.c (next_display_element): Set last_invisible_text_pos
10044 to the last position at which invisible text was found. 10040 to the last position at which invisible text was found.
10045 Don't decrement cursor.pos for newlines and cr with ellipsis. 10041 Don't decrement cursor.pos for newlines and cr with ellipsis.
10046 Set dpvec for `...' due to invisible text directly. 10042 Set dpvec for `...' due to invisible text directly.
10047 (redisplay_internal): Don't assert that cursor is at PT after 10043 (redisplay_internal): Don't assert that cursor is at PT after
10048 skip_to. It may be in invisible text. 10044 skip_to. It may be in invisible text.
10049 10045
10050 * keyboard.c (make_lispy_event): For mouse clicks, use 10046 * keyboard.c (make_lispy_event): For mouse clicks, use
10051 x_y_to_hpos_vpos. 10047 x_y_to_hpos_vpos.
10052 10048
10053 * xdisp.c (next_display_element): Call get_overlays_for_cursor when 10049 * xdisp.c (next_display_element): Call get_overlays_for_cursor when
10054 next_overlay_pos is reached. Use limit cursor.pos + 100 when 10050 next_overlay_pos is reached. Use limit cursor.pos + 100 when
10055 checking for invisible text. 10051 checking for invisible text.
10056 10052
@@ -10058,7 +10054,7 @@ Sat Aug 16 13:13:32 1997 Gerd Moellmann <gerd@acm.org>
10058 10054
10059 * dispextern.h (WINDOW_TO_FRAME_HPOS/VPOS): Moved to dispnew.c 10055 * dispextern.h (WINDOW_TO_FRAME_HPOS/VPOS): Moved to dispnew.c
10060 10056
10061 * xfns.c (x_contour_region): Use pixel coordinates from window 10057 * xfns.c (x_contour_region): Use pixel coordinates from window
10062 cursor instead of WINDOW_TO_FRAME_H/VPOS. 10058 cursor instead of WINDOW_TO_FRAME_H/VPOS.
10063 10059
10064 * dispextern.h (FRAME_TO_WINDOW_HPOS, FRAME_TO_WINDOW_VPOS): 10060 * dispextern.h (FRAME_TO_WINDOW_HPOS, FRAME_TO_WINDOW_VPOS):
@@ -10066,11 +10062,11 @@ Sat Aug 16 13:13:32 1997 Gerd Moellmann <gerd@acm.org>
10066 10062
10067 * dispnew.c (frame_to_window_hpos, frame_to_window_vpos): Removed. 10063 * dispnew.c (frame_to_window_hpos, frame_to_window_vpos): Removed.
10068 10064
10069 * xterm.c (x_y_to_hpos_vpos): Get hpos/vpos from window relative 10065 * xterm.c (x_y_to_hpos_vpos): Get hpos/vpos from window relative
10070 pixel coordinates. 10066 pixel coordinates.
10071 (note_mouse_highlight): Use it. 10067 (note_mouse_highlight): Use it.
10072 10068
10073 * xdisp.c (echo_area_display): Ignore calls for terminal frames 10069 * xdisp.c (echo_area_display): Ignore calls for terminal frames
10074 under a window system. 10070 under a window system.
10075 10071
10076 * dispnew.c (adjust_frame_glyphs): Call redraw_frame if 10072 * dispnew.c (adjust_frame_glyphs): Call redraw_frame if
@@ -10078,7 +10074,7 @@ Sat Aug 16 13:13:32 1997 Gerd Moellmann <gerd@acm.org>
10078 (update_window_line): Add width of face padding glyph to 10074 (update_window_line): Add width of face padding glyph to
10079 displayed widths of rows. 10075 displayed widths of rows.
10080 10076
10081 * xterm.c (x_display_and_set_cursor): Set clipping after 10077 * xterm.c (x_display_and_set_cursor): Set clipping after
10082 erasing cursor. 10078 erasing cursor.
10083 10079
10084 * window.c (Fset_window_configuration): Free only those 10080 * window.c (Fset_window_configuration): Free only those
@@ -10101,25 +10097,25 @@ Sat Aug 16 13:13:32 1997 Gerd Moellmann <gerd@acm.org>
10101 * dispextern.h (struct display_cursor): New member string_length. 10097 * dispextern.h (struct display_cursor): New member string_length.
10102 10098
10103 * xdisp.c (next_display_element): Return padding spaces. 10099 * xdisp.c (next_display_element): Return padding spaces.
10104 (init_string_cursor): Take precision and field_width 10100 (init_string_cursor): Take precision and field_width.
10105 (display_string): Use string cursor, skip over invisible text. 10101 (display_string): Use string cursor, skip over invisible text.
10106 10102
10107Thu Aug 14 10:41:41 1997 Gerd Moellmann <gerd@acm.org> 101031997-08-14 Gerd Moellmann <gerd@acm.org>
10108 10104
10109 * xterm.c (x_clip_to_row): Clip to partially visible lines. 10105 * xterm.c (x_clip_to_row): Clip to partially visible lines.
10110 (x_display_and_set_cursor): Call it. 10106 (x_display_and_set_cursor): Call it.
10111 (draw_glyphs): Call it 10107 (draw_glyphs): Call it.
10112 (draw_bitmap): Call it. 10108 (draw_bitmap): Call it.
10113 10109
10114 * dispnew.c (adjust_frame_glyphs): Optimize frame garbaging. 10110 * dispnew.c (adjust_frame_glyphs): Optimize frame garbaging.
10115 (allocate_leaf_matrix): Return flags. 10111 (allocate_leaf_matrix): Return flags.
10116 (row_equal_p): Compare enabled_p. 10112 (row_equal_p): Compare enabled_p.
10117 10113
10118 * xterm.c (x_erase_phys_cursor): Set phys_cursor_on_p to 0 10114 * xterm.c (x_erase_phys_cursor): Set phys_cursor_on_p to 0
10119 for type == -1. 10115 for type == -1.
10120 10116
10121 * xterm.c (x_display_and_set_cursor): Bar cursor 1 pixel taller. 10117 * xterm.c (x_display_and_set_cursor): Bar cursor 1 pixel taller.
10122 (draw_glyphs): Clip height one pixel taller. 10118 (draw_glyphs): Clip height one pixel taller.
10123 10119
10124 * dispnew.c (direct_output_for_insert): Give up for hscrolled 10120 * dispnew.c (direct_output_for_insert): Give up for hscrolled
10125 mini window. 10121 mini window.
@@ -10129,7 +10125,7 @@ Thu Aug 14 10:41:41 1997 Gerd Moellmann <gerd@acm.org>
10129 * xdisp.c (echo_area_display): Call update_single_window if 10125 * xdisp.c (echo_area_display): Call update_single_window if
10130 possible. 10126 possible.
10131 10127
10132 * dispnew.c (update_window_line): Call scrolling_window. 10128 * dispnew.c (update_window_line): Call scrolling_window.
10133 (scrolling_window): Work on enabled desired lines only. 10129 (scrolling_window): Work on enabled desired lines only.
10134 (update_single_window): Update a single window like update_frame 10130 (update_single_window): Update a single window like update_frame
10135 does for all windows. 10131 does for all windows.
@@ -10159,7 +10155,7 @@ Thu Aug 14 10:41:41 1997 Gerd Moellmann <gerd@acm.org>
10159 10155
10160 * xterm.h (FRAME_X_TRUNC_WIDTH). 10156 * xterm.h (FRAME_X_TRUNC_WIDTH).
10161 10157
10162 * frame.h (FRAME_TRUNC_WIDTH): Width of area at the left margin 10158 * frame.h (FRAME_TRUNC_WIDTH): Width of area at the left margin
10163 of a window reserved for truncation mark. 10159 of a window reserved for truncation mark.
10164 10160
10165 * dispextern.h: Take FRAME_TRUNC_WIDTH into account. 10161 * dispextern.h: Take FRAME_TRUNC_WIDTH into account.
@@ -10210,23 +10206,23 @@ Thu Aug 14 10:41:41 1997 Gerd Moellmann <gerd@acm.org>
10210 update end to prevent cursor flickering. Revert changes to 10206 update end to prevent cursor flickering. Revert changes to
10211 setting cursor.endpos. 10207 setting cursor.endpos.
10212 10208
10213Wed Aug 13 10:46:12 1997 Gerd Moellmann <gerd@acm.org> 102091997-08-13 Gerd Moellmann <gerd@acm.org>
10214 10210
10215 * dispnew.c (direct_output_for_insert): Don't set cursor.endpos 10211 * dispnew.c (direct_output_for_insert): Don't set cursor.endpos
10216 to PT because this prevents multi-byte characters from being 10212 to PT because this prevents multi-byte characters from being
10217 recognized. 10213 recognized.
10218 10214
10219 * xdisp.c (skip_to, display_line): Advance cursor at end of 10215 * xdisp.c (skip_to, display_line): Advance cursor at end of
10220 truncated line. 10216 truncated line.
10221 10217
10222 * xterm.c (x_draw_3d_borders): Use CapRound. Struct rect 10218 * xterm.c (x_draw_3d_borders): Use CapRound. Struct rect
10223 replaced by XRectangle. 10219 replaced by XRectangle.
10224 10220
10225 * dispnew.c (scrolling_window): New method. 10221 * dispnew.c (scrolling_window): New method.
10226 10222
10227 * xterm.c (do_line_dance): New implementation, new method. 10223 * xterm.c (do_line_dance): New implementation, new method.
10228 10224
10229 * xdisp.c (draw_glyphs): Draw truncation bitmaps. Clip to 10225 * xdisp.c (draw_glyphs): Draw truncation bitmaps. Clip to
10230 visible part of line. 10226 visible part of line.
10231 10227
10232 * dispnew.c (update_window_line): Fill inverse video lines 10228 * dispnew.c (update_window_line): Fill inverse video lines
@@ -10255,12 +10251,12 @@ Wed Aug 13 10:46:12 1997 Gerd Moellmann <gerd@acm.org>
10255 (change_frame_size_1): Correct cursor.x if frame gets too small. 10251 (change_frame_size_1): Correct cursor.x if frame gets too small.
10256 (update_window_line): Start at row->x. 10252 (update_window_line): Start at row->x.
10257 10253
10258 * xdisp.c (redisplay_internal): Correct cursor.x (everwhere 10254 * xdisp.c (redisplay_internal): Correct cursor.x (everywhere
10259 in xdisp.c). 10255 in xdisp.c).
10260 10256
10261 * xterm.c (set_output_cursor): Use window relative X/Y. 10257 * xterm.c (set_output_cursor): Use window relative X/Y.
10262 (global): Use window relative output cursor x/y. 10258 (global): Use window relative output cursor x/y.
10263 (draw_glyphs): Remove y param. Pass window relative x/y. 10259 (draw_glyphs): Remove y param. Pass window relative x/y.
10264 10260
10265 * dispnew.c (update_window): Start rows at start_y. 10261 * dispnew.c (update_window): Start rows at start_y.
10266 (update_window): Don't try scrolling because it wouldn't work 10262 (update_window): Don't try scrolling because it wouldn't work
@@ -10269,12 +10265,12 @@ Wed Aug 13 10:46:12 1997 Gerd Moellmann <gerd@acm.org>
10269 * dispextern.h (struct glyph_row): Remove shift_left_by, 10265 * dispextern.h (struct glyph_row): Remove shift_left_by,
10270 add x. 10266 add x.
10271 10267
10272 * window.h: (struct window): New member start_y. 10268 * window.h (struct window): New member start_y.
10273 10269
10274 * window.c (replace_window): Initialize start_y. 10270 * window.c (replace_window): Initialize start_y.
10275 (make_window): Ditto. 10271 (make_window): Ditto.
10276 10272
10277Tue Aug 12 14:53:04 1997 Gerd Moellmann <gerd@acm.org> 102731997-08-12 Gerd Moellmann <gerd@acm.org>
10278 10274
10279 * xterm.c (draw_glyphs): Clip rows that would paint over 10275 * xterm.c (draw_glyphs): Clip rows that would paint over
10280 the mode line. 10276 the mode line.
@@ -10301,7 +10297,7 @@ Tue Aug 12 14:53:04 1997 Gerd Moellmann <gerd@acm.org>
10301 with window relative pixel coordinates. Use GLYPH_TO_PIXEL_- 10297 with window relative pixel coordinates. Use GLYPH_TO_PIXEL_-
10302 COORDS mit new arguments. 10298 COORDS mit new arguments.
10303 10299
10304Mon Aug 11 12:32:34 1997 Gerd Moellmann <gerd@acm.org> 103001997-08-11 Gerd Moellmann <gerd@acm.org>
10305 10301
10306 * xdisp.c (start_display): Use SKIP_TO instead of SKIP_IN- 10302 * xdisp.c (start_display): Use SKIP_TO instead of SKIP_IN-
10307 DISPLAY_LINE. 10303 DISPLAY_LINE.
@@ -10326,11 +10322,11 @@ Mon Aug 11 12:32:34 1997 Gerd Moellmann <gerd@acm.org>
10326 10322
10327 * dispnew.c (direct_output_for_insert): Set updated_row. 10323 * dispnew.c (direct_output_for_insert): Set updated_row.
10328 10324
10329Sat Aug 9 12:11:44 1997 Gerd Moellmann <gerd@acm.org> 103251997-08-09 Gerd Moellmann <gerd@acm.org>
10330 10326
10331 * dispextern.h (struct glyph): Padding flag removed. 10327 * dispextern.h (struct glyph): Padding flag removed.
10332 10328
10333Tue Aug 5 09:59:08 1997 Gerd Moellmann <gerd@acm.org> 103291997-08-05 Gerd Moellmann <gerd@acm.org>
10334 10330
10335 * sysdep.c (reset_sys_modes): cursor_to with 4 params. 10331 * sysdep.c (reset_sys_modes): cursor_to with 4 params.
10336 10332
@@ -10345,7 +10341,7 @@ Tue Aug 5 09:59:08 1997 Gerd Moellmann <gerd@acm.org>
10345 removed. Remove references to it everywhere. Reverse_p in 10341 removed. Remove references to it everywhere. Reverse_p in
10346 glyph_row -> right_to_left_p. Change references to it. 10342 glyph_row -> right_to_left_p. Change references to it.
10347 10343
10348Mon Aug 4 18:09:27 1997 Gerd Moellmann <gerd@acm.org> 103441997-08-04 Gerd Moellmann <gerd@acm.org>
10349 10345
10350 * dispnew.c (direct_output_for_insert): Use INSERT_GLYPHS. 10346 * dispnew.c (direct_output_for_insert): Use INSERT_GLYPHS.
10351 10347
@@ -10366,11 +10362,11 @@ Mon Aug 4 18:09:27 1997 Gerd Moellmann <gerd@acm.org>
10366 * keyboard.c (command_loop_1): Call DIRECT_OUTPUT_FOR_INSERT 10362 * keyboard.c (command_loop_1): Call DIRECT_OUTPUT_FOR_INSERT
10367 for any character. 10363 for any character.
10368 10364
10369Thu Jul 31 15:39:10 1997 Gerd Moellmann <gerd@acm.org> 103651997-07-31 Gerd Moellmann <gerd@acm.org>
10370 10366
10371 * xdisp.c (echo_area_display): Use new DISPLAY_STRING. 10367 * xdisp.c (echo_area_display): Use new DISPLAY_STRING.
10372 10368
10373Wed Jul 30 12:18:03 1997 Gerd Moellmann <gerd@acm.org> 103691997-07-30 Gerd Moellmann <gerd@acm.org>
10374 10370
10375 * dispextern.h (struct glyph_row): MAX_ASCENT, MAX_DESCENT. 10371 * dispextern.h (struct glyph_row): MAX_ASCENT, MAX_DESCENT.
10376 (struct glyph): ASCENT, DESCENT. 10372 (struct glyph): ASCENT, DESCENT.
@@ -10384,7 +10380,7 @@ Wed Jul 30 12:18:03 1997 Gerd Moellmann <gerd@acm.org>
10384 * dispextern.h (struct display_cursor): WHAT_FOUND, SOURCE_OBJECT. 10380 * dispextern.h (struct display_cursor): WHAT_FOUND, SOURCE_OBJECT.
10385 Renamed from CHAR_CURSOR. 10381 Renamed from CHAR_CURSOR.
10386 10382
10387Tue Jul 29 12:52:40 1997 Gerd Moellmann <gerd@acm.org> 103831997-07-29 Gerd Moellmann <gerd@acm.org>
10388 10384
10389 * xdisp.c (display_text_line): Mostly pixel oriented. 10385 * xdisp.c (display_text_line): Mostly pixel oriented.
10390 10386
@@ -10405,7 +10401,7 @@ Tue Jul 29 12:52:40 1997 Gerd Moellmann <gerd@acm.org>
10405 * term.c (encode_terminal_code): Don't use GLYPH_CHAR, use 10401 * term.c (encode_terminal_code): Don't use GLYPH_CHAR, use
10406 FAST_GLYPH_CHAR instead because GLYPH_CHAR won't remove faces. 10402 FAST_GLYPH_CHAR instead because GLYPH_CHAR won't remove faces.
10407 10403
10408Mon Jul 28 14:23:06 1997 Gerd Moellmann <gerd@acm.org> 104041997-07-28 Gerd Moellmann <gerd@acm.org>
10409 10405
10410 * dispnew.c (init_char_info): Correct TAB_WIDTH to a reasonable 10406 * dispnew.c (init_char_info): Correct TAB_WIDTH to a reasonable
10411 value. 10407 value.
@@ -10418,7 +10414,7 @@ Mon Jul 28 14:23:06 1997 Gerd Moellmann <gerd@acm.org>
10418 * dispextern.h (struct char_info ): GLYPH_ROW for intermediate 10414 * dispextern.h (struct char_info ): GLYPH_ROW for intermediate
10419 glyphs. 10415 glyphs.
10420 10416
10421 * dispnew.c (init_char_info): Init GLYPH_ROW to NULL. CHAR_CURSOR 10417 * dispnew.c (init_char_info): Init GLYPH_ROW to NULL. CHAR_CURSOR
10422 moved to xdisp.c. 10418 moved to xdisp.c.
10423 10419
10424 * xdisp.c (display_text_line): Use CHAR_CURSOR. 10420 * xdisp.c (display_text_line): Use CHAR_CURSOR.
@@ -10430,7 +10426,7 @@ Mon Jul 28 14:23:06 1997 Gerd Moellmann <gerd@acm.org>
10430 * term.c (get_char_info): Intermediate glyph generation. 10426 * term.c (get_char_info): Intermediate glyph generation.
10431 (append_intermediate_glyph): Ditto. 10427 (append_intermediate_glyph): Ditto.
10432 10428
10433Sun Jul 27 18:57:24 1997 Gerd Moellmann <gerd@acm.org> 104291997-07-27 Gerd Moellmann <gerd@acm.org>
10434 10430
10435 * dispnew.c (compute_char_cursor_face): Compute the face for a 10431 * dispnew.c (compute_char_cursor_face): Compute the face for a
10436 CHAR_CURSOR. 10432 CHAR_CURSOR.
@@ -10440,7 +10436,7 @@ Sun Jul 27 18:57:24 1997 Gerd Moellmann <gerd@acm.org>
10440 * dispextern.h (struct char_cursor): Cursor for iterating over 10436 * dispextern.h (struct char_cursor): Cursor for iterating over
10441 display text of CURRENT_BUFFER. 10437 display text of CURRENT_BUFFER.
10442 10438
10443Sat Jul 26 13:33:03 1997 Gerd Moellmann <gerd@acm.org> 104391997-07-26 Gerd Moellmann <gerd@acm.org>
10444 10440
10445 * term.c (get_char_info): Set MAX_PIXEL_WIDTH in CHAR_INFO. 10441 * term.c (get_char_info): Set MAX_PIXEL_WIDTH in CHAR_INFO.
10446 10442
@@ -10460,7 +10456,7 @@ Sat Jul 26 13:33:03 1997 Gerd Moellmann <gerd@acm.org>
10460 encode character. 10456 encode character.
10461 (XTget_char_info): Get display information about a character. 10457 (XTget_char_info): Get display information about a character.
10462 10458
10463Wed Jul 23 16:50:18 1997 Gerd Moellmann <gerd@acm.org> 104591997-07-23 Gerd Moellmann <gerd@acm.org>
10464 10460
10465 * dispextern.h (WINDOW_DISPLAY_MODE_LINE_HEIGHT): Height is 10461 * dispextern.h (WINDOW_DISPLAY_MODE_LINE_HEIGHT): Height is
10466 zero if window is mini-window. 10462 zero if window is mini-window.
@@ -10499,7 +10495,7 @@ Wed Jul 23 16:50:18 1997 Gerd Moellmann <gerd@acm.org>
10499 (WINDOW_DISPLAY_BOTTOM_EDGE_PIXEL_Y): Macros to get various 10495 (WINDOW_DISPLAY_BOTTOM_EDGE_PIXEL_Y): Macros to get various
10500 pixel values related to windows. 10496 pixel values related to windows.
10501 10497
10502Mon Jul 21 12:22:02 1997 Gerd Moellmann <gerd@acm.org> 104981997-07-21 Gerd Moellmann <gerd@acm.org>
10503 10499
10504 * xterm.c (XTflash): Flash last line of frame. 10500 * xterm.c (XTflash): Flash last line of frame.
10505 10501
@@ -10529,7 +10525,7 @@ Mon Jul 21 12:22:02 1997 Gerd Moellmann <gerd@acm.org>
10529 10525
10530 * dispnew.c (scrolling_window): Scrolling for windows. 10526 * dispnew.c (scrolling_window): Scrolling for windows.
10531 10527
10532Wed Jul 16 13:37:51 1997 Gerd Moellmann <gerd@acm.org> 105281997-07-16 Gerd Moellmann <gerd@acm.org>
10533 10529
10534 * dispnew.c (build_frame_matrix): Work on windows with update 10530 * dispnew.c (build_frame_matrix): Work on windows with update
10535 flag set. 10531 flag set.
@@ -10553,7 +10549,7 @@ Wed Jul 16 13:37:51 1997 Gerd Moellmann <gerd@acm.org>
10553 * dispnew.c (build_frame_matrix_from_leaf_window): Determine 10549 * dispnew.c (build_frame_matrix_from_leaf_window): Determine
10554 border glyph once. 10550 border glyph once.
10555 10551
10556Tue Jul 15 13:58:33 1997 Gerd Moellmann <gerd@acm.org> 105521997-07-15 Gerd Moellmann <gerd@acm.org>
10557 10553
10558 * window.c (mark_window_cursors_off): Mark all cursors in 10554 * window.c (mark_window_cursors_off): Mark all cursors in
10559 window tree off. 10555 window tree off.
@@ -10611,7 +10607,7 @@ Tue Jul 15 13:58:33 1997 Gerd Moellmann <gerd@acm.org>
10611 (direct_output_forward_char): Ditto. 10607 (direct_output_forward_char): Ditto.
10612 (update_frame_1): Ditto. 10608 (update_frame_1): Ditto.
10613 10609
10614Mon Jul 14 12:30:03 1997 Gerd Moellmann <gerd@acm.org> 106101997-07-14 Gerd Moellmann <gerd@acm.org>
10615 10611
10616 * dispnew.c (updated_window): Set by UPDATE_WINDOW to the window 10612 * dispnew.c (updated_window): Set by UPDATE_WINDOW to the window
10617 being updated. 10613 being updated.
@@ -10671,7 +10667,7 @@ Mon Jul 14 12:30:03 1997 Gerd Moellmann <gerd@acm.org>
10671 10667
10672 * window.h: LAST_POINT_X and LAST_POINT_Y removed. 10668 * window.h: LAST_POINT_X and LAST_POINT_Y removed.
10673 10669
10674Sun Jul 13 14:18:24 1997 Gerd Moellmann <gerd@acm.org> 106701997-07-13 Gerd Moellmann <gerd@acm.org>
10675 10671
10676 * xdisp.c: Bug fixes using SET_CURSOR with HPOS 0 instead 10672 * xdisp.c: Bug fixes using SET_CURSOR with HPOS 0 instead
10677 of FRAME_LEFT_SCROLL_BAR_WIDTH. 10673 of FRAME_LEFT_SCROLL_BAR_WIDTH.
@@ -10685,7 +10681,7 @@ Sun Jul 13 14:18:24 1997 Gerd Moellmann <gerd@acm.org>
10685 (update_frame_1): Call CLEAR_DESIRED_MATRICES. 10681 (update_frame_1): Call CLEAR_DESIRED_MATRICES.
10686 (update_frame): Return return value from UPDATE_FRAME_1. 10682 (update_frame): Return return value from UPDATE_FRAME_1.
10687 10683
10688Sat Jul 12 12:58:48 1997 Gerd Moellmann <gerd@acm.org> 106841997-07-12 Gerd Moellmann <gerd@acm.org>
10689 10685
10690 * xdisp.c (try_window): Set WINDOW_END_VPOS with window relative 10686 * xdisp.c (try_window): Set WINDOW_END_VPOS with window relative
10691 LAST_TEXT_VPOS. 10687 LAST_TEXT_VPOS.
@@ -10722,7 +10718,7 @@ Sat Jul 12 12:58:48 1997 Gerd Moellmann <gerd@acm.org>
10722 used counters for the current glyph row. 10718 used counters for the current glyph row.
10723 10719
10724 10720
10725Fri Jul 11 13:16:50 1997 Gerd Moellmann <gerd@acm.org> 107211997-07-11 Gerd Moellmann <gerd@acm.org>
10726 10722
10727 * lisp.h: Prototype for SCAN_BUFFER. 10723 * lisp.h: Prototype for SCAN_BUFFER.
10728 10724
@@ -10778,7 +10774,7 @@ Fri Jul 11 13:16:50 1997 Gerd Moellmann <gerd@acm.org>
10778 * xdisp.c (message2_nolog): Don't fwrite NULL message If 10774 * xdisp.c (message2_nolog): Don't fwrite NULL message If
10779 NONINTERACTIVE. 10775 NONINTERACTIVE.
10780 10776
10781Mon Jul 7 14:44:38 1997 Gerd Moellmann <gerd@acm.org> 107771997-07-07 Gerd Moellmann <gerd@acm.org>
10782 10778
10783 * dispnew.c (init_desired_glyphs): Clear both frame matrix 10779 * dispnew.c (init_desired_glyphs): Clear both frame matrix
10784 and window matrices. 10780 and window matrices.
@@ -10793,10 +10789,9 @@ Mon Jul 7 14:44:38 1997 Gerd Moellmann <gerd@acm.org>
10793 (display_text_line): Use window matrix. 10789 (display_text_line): Use window matrix.
10794 (try_window): Use window relative positions. 10790 (try_window): Use window relative positions.
10795 10791
10796Sun Jul 6 17:02:26 1997 Gerd Moellmann <gerd@acm.org> 107921997-07-06 Gerd Moellmann <gerd@acm.org>
10797 10793
10798 * dispnew.c (adjust_frame_glyphs): Allocate window matrices from 10794 * dispnew.c (adjust_frame_glyphs): Allocate window matrices from (0, 0).
10799 (0, 0).
10800 (allocate_leaf_matrix): Add FRAME_MENU_BAR_LINES to the height of 10795 (allocate_leaf_matrix): Add FRAME_MENU_BAR_LINES to the height of
10801 top-most windows. 10796 top-most windows.
10802 10797
@@ -10824,7 +10819,7 @@ Sun Jul 6 17:02:26 1997 Gerd Moellmann <gerd@acm.org>
10824 matrices. 10819 matrices.
10825 (clear_glyph_row): Only reset used counters and flags. 10820 (clear_glyph_row): Only reset used counters and flags.
10826 10821
10827Sat Jul 5 14:55:44 1997 Gerd Moellmann <gerd@acm.org> 108221997-07-05 Gerd Moellmann <gerd@acm.org>
10828 10823
10829 * dispnew.c (scroll_frame_lines): Don't assume first scolled 10824 * dispnew.c (scroll_frame_lines): Don't assume first scolled
10830 line is non-empty. 10825 line is non-empty.
@@ -10866,7 +10861,7 @@ Sat Jul 5 14:55:44 1997 Gerd Moellmann <gerd@acm.org>
10866 (mirror_make_current): Make window desired matrix row current when 10861 (mirror_make_current): Make window desired matrix row current when
10867 frame matrix row was made current. 10862 frame matrix row was made current.
10868 10863
10869Fri Jul 4 13:27:46 1997 Gerd Moellmann <gerd@acm.org> 108641997-07-04 Gerd Moellmann <gerd@acm.org>
10870 10865
10871 * dispnew.c (check_matrix_pointer_lossage): Check against 10866 * dispnew.c (check_matrix_pointer_lossage): Check against
10872 pointer lossage in matrices. 10867 pointer lossage in matrices.
@@ -10883,7 +10878,7 @@ Fri Jul 4 13:27:46 1997 Gerd Moellmann <gerd@acm.org>
10883 (rotate_pointers): Removed. 10878 (rotate_pointers): Removed.
10884 (scroll_frame_lines): Simplified. 10879 (scroll_frame_lines): Simplified.
10885 10880
10886Thu Jul 3 13:54:21 1997 Gerd Moellmann <gerd@acm.org> 108811997-07-03 Gerd Moellmann <gerd@acm.org>
10887 10882
10888 * dispextern.h (MATRIX_ROW_SWAP_CONTENTS): Removed. 10883 * dispextern.h (MATRIX_ROW_SWAP_CONTENTS): Removed.
10889 10884
@@ -10895,7 +10890,7 @@ Thu Jul 3 13:54:21 1997 Gerd Moellmann <gerd@acm.org>
10895 for window matrices. 10890 for window matrices.
10896 (update_line): Call make_matrix_row_current. 10891 (update_line): Call make_matrix_row_current.
10897 10892
10898Wed Jul 2 13:43:35 1997 Gerd Moellmann <gerd@acm.org> 108931997-07-02 Gerd Moellmann <gerd@acm.org>
10899 10894
10900 * dispextern.h (SET_MATRIX_ROW_ENABLED_P): Better macro name. 10895 * dispextern.h (SET_MATRIX_ROW_ENABLED_P): Better macro name.
10901 (SET_MATRIX_ROW_INVERSE_P): Better name and HIGHLIGHT_P -> 10896 (SET_MATRIX_ROW_INVERSE_P): Better name and HIGHLIGHT_P ->
@@ -10920,7 +10915,7 @@ Wed Jul 2 13:43:35 1997 Gerd Moellmann <gerd@acm.org>
10920 (fill_up_glyph_row_areas_with_spaces): Fill up areas with 10915 (fill_up_glyph_row_areas_with_spaces): Fill up areas with
10921 spaces. 10916 spaces.
10922 10917
10923Tue Jul 1 13:49:55 1997 Gerd Moellmann <gerd@acm.org> 109181997-07-01 Gerd Moellmann <gerd@acm.org>
10924 10919
10925 * xterm.c (dumprectangle): Use vectors in glyph rows. 10920 * xterm.c (dumprectangle): Use vectors in glyph rows.
10926 10921
@@ -10954,10 +10949,10 @@ Tue Jul 1 13:49:55 1997 Gerd Moellmann <gerd@acm.org>
10954 10949
10955 * dispnew.c (line_hash_code): Simplified. 10950 * dispnew.c (line_hash_code): Simplified.
10956 10951
10957Mon Jun 30 20:39:38 1997 Gerd Moellmann <gerd@acm.org> 109521997-06-30 Gerd Moellmann <gerd@acm.org>
10958 10953
10959 * dispnew.c: Prototype for ROTATE_VECTOR, ROTATE_POINTERS, 10954 * dispnew.c: Prototype for ROTATE_VECTOR, ROTATE_POINTERS,
10960 CHANGE_FRAME_SIZE_1 10955 CHANGE_FRAME_SIZE_1.
10961 (preserve_other_columns): Void return. 10956 (preserve_other_columns): Void return.
10962 (cancel_my_columns): Void return type. 10957 (cancel_my_columns): Void return type.
10963 (scrolling): Int return type. 10958 (scrolling): Int return type.
@@ -10979,7 +10974,7 @@ Mon Jun 30 20:39:38 1997 Gerd Moellmann <gerd@acm.org>
10979 * dispnew.c (redraw_frame): FRAME_PTR -> struct frame. Return 10974 * dispnew.c (redraw_frame): FRAME_PTR -> struct frame. Return
10980 void. 10975 void.
10981 (cancel_line): Return void. 10976 (cancel_line): Return void.
10982 (clear_frame_records): Return void. 10977 (clear_frame_records): Return void.
10983 10978
10984 * dispextern.h (struct glyph): Remove GLYPH, add bit-fields. 10979 * dispextern.h (struct glyph): Remove GLYPH, add bit-fields.
10985 (SET_CHAR_GLYPH): Fill a character glyph. 10980 (SET_CHAR_GLYPH): Fill a character glyph.
@@ -11004,14 +10999,14 @@ Mon Jun 30 20:39:38 1997 Gerd Moellmann <gerd@acm.org>
11004 * alloc.c (mark_object): Change window mark code to stop with 10999 * alloc.c (mark_object): Change window mark code to stop with
11005 member CURRENT_MATRIX. 11000 member CURRENT_MATRIX.
11006 11001
11007Sat Jun 28 13:54:55 1997 Gerd Moellmann <gerd@acm.org> 110021997-06-28 Gerd Moellmann <gerd@acm.org>
11008 11003
11009 * scroll.c (do_scrolling): Change algorithm to use pointers. 11004 * scroll.c (do_scrolling): Change algorithm to use pointers.
11010 (do_direct_scrolling): Ditto. 11005 (do_direct_scrolling): Ditto.
11011 11006
11012 * dispnew.c (get_glyph_matrix_row): Use pointers stored in rows. 11007 * dispnew.c (get_glyph_matrix_row): Use pointers stored in rows.
11013 (new_glyph_pool): Formerly new_FRAME_GLYPH_MATRIX. 11008 (new_glyph_pool): Formerly new_FRAME_GLYPH_MATRIX.
11014 (free_glyph_pool): Formerly FREE_FRAME_GLYPH_MATRIX 11009 (free_glyph_pool): Formerly FREE_FRAME_GLYPH_MATRIX.
11015 (realloc_glyph_pool): Formerly REALLOC_FRAME_GLYPH_MATRIX. 11010 (realloc_glyph_pool): Formerly REALLOC_FRAME_GLYPH_MATRIX.
11016 Returns 1 if pool changed. 11011 Returns 1 if pool changed.
11017 (matrix_row): Additional check for lost pointers to glyph rows. 11012 (matrix_row): Additional check for lost pointers to glyph rows.
@@ -11033,7 +11028,7 @@ Sat Jun 28 13:54:55 1997 Gerd Moellmann <gerd@acm.org>
11033 (global): All macro names changed from prefix FRAME_MATRIX to 11028 (global): All macro names changed from prefix FRAME_MATRIX to
11034 MATRIX. 11029 MATRIX.
11035 11030
11036Fri Jun 27 14:51:15 1997 Gerd Moellmann <gerd@acm.org> 110311997-06-27 Gerd Moellmann <gerd@acm.org>
11037 11032
11038 * dispextern.h (struct glyph_pool): Replacement for former 11033 * dispextern.h (struct glyph_pool): Replacement for former
11039 FRAME_GLYPH_MATRIX. 11034 FRAME_GLYPH_MATRIX.
@@ -11045,7 +11040,7 @@ Fri Jun 27 14:51:15 1997 Gerd Moellmann <gerd@acm.org>
11045 11040
11046 * frame.c (make_frame): Initialize pools. 11041 * frame.c (make_frame): Initialize pools.
11047 11042
11048Thu Jun 26 00:00:55 1997 Gerd Moellmann <gerd@acm.org> 110431997-06-26 Gerd Moellmann <gerd@acm.org>
11049 11044
11050 * scroll.c (do_direct_scrolling): Don't assume that the 11045 * scroll.c (do_direct_scrolling): Don't assume that the
11051 line moving algorithm has no intermediate steps. 11046 line moving algorithm has no intermediate steps.
@@ -11063,14 +11058,14 @@ Thu Jun 26 00:00:55 1997 Gerd Moellmann <gerd@acm.org>
11063 * alloc.c (mark_object): Mark windows specially. 11058 * alloc.c (mark_object): Mark windows specially.
11064 11059
11065 11060
11066Wed Jun 25 15:22:58 1997 Gerd Moellmann <gerd@acm.org> 110611997-06-25 Gerd Moellmann <gerd@acm.org>
11067 11062
11068 * dispextern.h (struct glyph): Add member OBJECT 11063 * dispextern.h (struct glyph): Add member OBJECT
11069 referencing a Lisp object from which a glyph was drawn. 11064 referencing a Lisp object from which a glyph was drawn.
11070 Member TEXT_POSITION renamed POSITION. 11065 Member TEXT_POSITION renamed POSITION.
11071 * xterm.c, xdisp.c, dispnew.c: Rename TEXT_POSITION -> POSITION. 11066 * xterm.c, xdisp.c, dispnew.c: Rename TEXT_POSITION -> POSITION.
11072 11067
11073 * alloc.c: Include dispextern.h 11068 * alloc.c: Include dispextern.h.
11074 (mark_object): Mark objects referenced from glyphs. 11069 (mark_object): Mark objects referenced from glyphs.
11075 11070
11076 * frame.c (make_frame): Initialize DECODE_MODE_SPEC_BUFFER. 11071 * frame.c (make_frame): Initialize DECODE_MODE_SPEC_BUFFER.
@@ -11154,11 +11149,11 @@ Wed Jun 25 15:22:58 1997 Gerd Moellmann <gerd@acm.org>
11154 * dispnew.c (direct_output_forward_char): Old glyph functions 11149 * dispnew.c (direct_output_forward_char): Old glyph functions
11155 removed, new inserted. 11150 removed, new inserted.
11156 (line_hash_code): Use new glyphs. 11151 (line_hash_code): Use new glyphs.
11157 (line_draw_cost): Ditto 11152 (line_draw_cost): Ditto.
11158 (cancel_line): Ditto 11153 (cancel_line): Ditto.
11159 (clear_frame_records): Ditto. 11154 (clear_frame_records): Ditto.
11160 (init_desired_glyphs): Ditto. 11155 (init_desired_glyphs): Ditto.
11161 (get_display_line): Ditto 11156 (get_display_line): Ditto.
11162 (scroll_frame_lines): Ditto. 11157 (scroll_frame_lines): Ditto.
11163 (preserve_other_columns): Ditto. 11158 (preserve_other_columns): Ditto.
11164 (adjust_window_charstarts): Ditto. 11159 (adjust_window_charstarts): Ditto.
@@ -11302,7 +11297,7 @@ Wed Jun 25 15:22:58 1997 Gerd Moellmann <gerd@acm.org>
11302 11297
113031999-06-22 Ken'ichi Handa <handa@gnu.org> 112981999-06-22 Ken'ichi Handa <handa@gnu.org>
11304 11299
11305 * fileio.c: (Finsert_file_contents): In the case of REPLACE, call 11300 * fileio.c (Finsert_file_contents): In the case of REPLACE, call
11306 del_range_byte instead of del_range_1, set `inserted' to the 11301 del_range_byte instead of del_range_1, set `inserted' to the
11307 number of characters actually inserted. 11302 number of characters actually inserted.
11308 11303
@@ -11348,7 +11343,7 @@ Wed Jun 25 15:22:58 1997 Gerd Moellmann <gerd@acm.org>
11348 11343
113491999-06-14 Tak Ota <ota@atc.sel.sony.com> 113441999-06-14 Tak Ota <ota@atc.sel.sony.com>
11350 11345
11351 * w32bdf.c: (clear_cached_bitmap_slots): Remove. 11346 * w32bdf.c (clear_cached_bitmap_slots): Remove.
11352 (get_bitmap_with_cache): Check if CreateBitmap failed. 11347 (get_bitmap_with_cache): Check if CreateBitmap failed.
11353 Adjust cache size dynamically so cache is never larger than the 11348 Adjust cache size dynamically so cache is never larger than the
11354 system limit of GDI resources. 11349 system limit of GDI resources.
@@ -11366,7 +11361,7 @@ Wed Jun 25 15:22:58 1997 Gerd Moellmann <gerd@acm.org>
11366 11361
113671999-06-11 Jason Rumney <jasonr@altavista.net> 113621999-06-11 Jason Rumney <jasonr@altavista.net>
11368 11363
11369 * w32term.c (cancel_mouse_face): New function. See equiv 11364 * w32term.c (cancel_mouse_face): New function. See equiv
11370 changes to xterm.c on 1996-10-31. 11365 changes to xterm.c on 1996-10-31.
11371 (x_set_window_size): Use cancel_mouse_face. 11366 (x_set_window_size): Use cancel_mouse_face.
11372 (w32_read_socket): Use cancel_mouse_face. 11367 (w32_read_socket): Use cancel_mouse_face.
@@ -11606,11 +11601,11 @@ Wed Jun 25 15:22:58 1997 Gerd Moellmann <gerd@acm.org>
11606 11601
116071999-05-02 Jason Rumney <jasonr@altavista.net> 116021999-05-02 Jason Rumney <jasonr@altavista.net>
11608 11603
11609 * w32term.c (w32_write_glyphs, w32_clear_end_of_line, 11604 * w32term.c (w32_write_glyphs, w32_clear_end_of_line)
11610 w32_clear_frame, clear_cursor, x_display_bar_cursor, 11605 (w32_clear_frame, clear_cursor, x_display_bar_cursor)
11611 x_display_box_cursor, x_set_window_size): Use phys_cursor_on 11606 (x_display_box_cursor, x_set_window_size): Use phys_cursor_on
11612 field in frame. 11607 field in frame.
11613 (do_line_dance): Updated WRT xterm.c. Use macros where possible. 11608 (do_line_dance): Updated WRT xterm.c. Use macros where possible.
11614 (dumprectangle): Take into account the width of a left-side 11609 (dumprectangle): Take into account the width of a left-side
11615 scroll bar. 11610 scroll bar.
11616 11611
@@ -11856,7 +11851,7 @@ Wed Jun 25 15:22:58 1997 Gerd Moellmann <gerd@acm.org>
11856 * w32fns.c (w32_strict_fontnames): New variable. 11851 * w32fns.c (w32_strict_fontnames): New variable.
11857 (Fx_create_frame): Formatting fix. 11852 (Fx_create_frame): Formatting fix.
11858 (w32_load_system_font): Keep trying to load non-existant font 11853 (w32_load_system_font): Keep trying to load non-existant font
11859 if w32_strict_fontnames is nil. Formatting fix. 11854 if w32_strict_fontnames is nil. Formatting fix.
11860 (syms_of_w32fns): Add w32-strict-fontnames. 11855 (syms_of_w32fns): Add w32-strict-fontnames.
11861 11856
11862 * w32term.c (W32_TEXTOUT): Do not multiply nchars by charset_dim. 11857 * w32term.c (W32_TEXTOUT): Do not multiply nchars by charset_dim.
@@ -11895,8 +11890,8 @@ Wed Jun 25 15:22:58 1997 Gerd Moellmann <gerd@acm.org>
11895 11890
118961999-03-06 Kenichi Handa <handa@etl.go.jp> 118911999-03-06 Kenichi Handa <handa@etl.go.jp>
11897 11892
11898 * Makefile.in (callproc.o, coding.o, fileio.o, msdos.o, process.o, 11893 * Makefile.in (callproc.o, coding.o, fileio.o, msdos.o, process.o)
11899 term.o, xselect.o): Depend on ccl.h. 11894 (term.o, xselect.o): Depend on ccl.h.
11900 11895
119011999-03-05 Geoff Voelker <voelker@cs.washington.edu> 118961999-03-05 Geoff Voelker <voelker@cs.washington.edu>
11902 11897
@@ -12013,7 +12008,7 @@ Wed Jun 25 15:22:58 1997 Gerd Moellmann <gerd@acm.org>
12013 12008
120141999-02-21 Eli Zaretskii <eliz@delysid.gnu.org> 120091999-02-21 Eli Zaretskii <eliz@delysid.gnu.org>
12015 12010
12016 * fileio.c: (lstat) [!S_ISLNK]: Use stat instead of lstat. 12011 * fileio.c (lstat) [!S_ISLNK]: Use stat instead of lstat.
12017 12012
120181999-02-21 Richard Stallman <rms@gnu.org> 120131999-02-21 Richard Stallman <rms@gnu.org>
12019 12014
@@ -12035,7 +12030,7 @@ Wed Jun 25 15:22:58 1997 Gerd Moellmann <gerd@acm.org>
12035 data is included, to enable profiling. 12030 data is included, to enable profiling.
12036 ($(EMACS)): Map file not needed for emacs.exe. 12031 ($(EMACS)): Map file not needed for emacs.exe.
12037 12032
12038 * emacs.c (main): [!SYSTEM_MALLOC]: Call realloc and free as well 12033 * emacs.c (main) [!SYSTEM_MALLOC]: Call realloc and free as well
12039 as malloc before calling uninterrupt_malloc, for consistency. 12034 as malloc before calling uninterrupt_malloc, for consistency.
12040 This also enables profiling to work on WINDOWSNT. 12035 This also enables profiling to work on WINDOWSNT.
12041 12036
@@ -12051,9 +12046,9 @@ Wed Jun 25 15:22:58 1997 Gerd Moellmann <gerd@acm.org>
12051 12046
120521999-02-17 Richard Stallman <rms@gnu.org> 120471999-02-17 Richard Stallman <rms@gnu.org>
12053 12048
12054 * insdel.c (adjust_markers_for_replace): When doing an insertion 12049 * insdel.c (adjust_markers_for_replace): When doing an
12055 (replacing a region of zero length), handle markers at the 12050 insertion (replacing a region of zero length), handle markers
12056 insertion point properly. 12051 at the insertion point properly.
12057 12052
120581999-02-17 Andrew Innes <andrewi@gnu.org> 120531999-02-17 Andrew Innes <andrewi@gnu.org>
12059 12054
@@ -12201,7 +12196,7 @@ Wed Jun 25 15:22:58 1997 Gerd Moellmann <gerd@acm.org>
12201 12196
122021999-01-31 Andrew Innes <andrewi@gnu.org> 121971999-01-31 Andrew Innes <andrewi@gnu.org>
12203 12198
12204 * unexw32.c: (ROUND_UP_DST_AND_ZERO): New macro. 12199 * unexw32.c (ROUND_UP_DST_AND_ZERO): New macro.
12205 (copy_executable_and_dump_data): Use it to ensure alignment slop 12200 (copy_executable_and_dump_data): Use it to ensure alignment slop
12206 is zeroed. 12201 is zeroed.
12207 12202
@@ -12354,7 +12349,7 @@ Wed Jun 25 15:22:58 1997 Gerd Moellmann <gerd@acm.org>
12354 * w32fns.c (x_to_w32_charset): Add iso8859-9. 12349 * w32fns.c (x_to_w32_charset): Add iso8859-9.
12355 (w32_to_x_charset): Fix charset mappings. 12350 (w32_to_x_charset): Fix charset mappings.
12356 12351
12357 * w32term.c: Remove codepage macros. Remove redundant BIG5 macros. 12352 * w32term.c: Remove codepage macros. Remove redundant BIG5 macros.
12358 (dumpglyphs): Move definitions out of block containing goto. 12353 (dumpglyphs): Move definitions out of block containing goto.
12359 Remove redundant code for BIG5. 12354 Remove redundant code for BIG5.
12360 Use w32_codepage_for_font instead of 12355 Use w32_codepage_for_font instead of
@@ -12374,11 +12369,11 @@ Wed Jun 25 15:22:58 1997 Gerd Moellmann <gerd@acm.org>
12374 12369
123751999-01-17 Andrew Innes <andrewi@gnu.org> 123701999-01-17 Andrew Innes <andrewi@gnu.org>
12376 12371
12377 * w32proc.c: (w32_executable_type): Relax the check to identify 12372 * w32proc.c (w32_executable_type): Relax the check to identify
12378 cygwin-compiled applications, because the exact dll name varies 12373 cygwin-compiled applications, because the exact dll name varies
12379 with release. Now only require the name to start "cygwin". 12374 with release. Now only require the name to start "cygwin".
12380 12375
12381 * w32heap.h: (ROUND_UP): 12376 * w32heap.h (ROUND_UP):
12382 (ROUND_DOWN): New macros. 12377 (ROUND_DOWN): New macros.
12383 (need_to_recreate_heap): Renamed to using_dynamic_heap. 12378 (need_to_recreate_heap): Renamed to using_dynamic_heap.
12384 (init_heap): New extern. 12379 (init_heap): New extern.
@@ -12390,7 +12385,7 @@ Wed Jun 25 15:22:58 1997 Gerd Moellmann <gerd@acm.org>
12390 (w32_fatal_reload_error): 12385 (w32_fatal_reload_error):
12391 (get_section_size): Obsolete externs removed. 12386 (get_section_size): Obsolete externs removed.
12392 12387
12393 * w32heap.c: (RVA_TO_PTR): Redefine to convert RVA to address in 12388 * w32heap.c (RVA_TO_PTR): Redefine to convert RVA to address in
12394 current process. 12389 current process.
12395 (round_to_next): Obsolete function removed. 12390 (round_to_next): Obsolete function removed.
12396 (preload_heap_section): New variable. 12391 (preload_heap_section): New variable.
@@ -12456,10 +12451,10 @@ Wed Jun 25 15:22:58 1997 Gerd Moellmann <gerd@acm.org>
12456 (unexec): Rounds off preload heap to nearest page rather than 12451 (unexec): Rounds off preload heap to nearest page rather than
12457 virtual allocation unit. Modified to match other changes. 12452 virtual allocation unit. Modified to match other changes.
12458 12453
12459 * mem-limits.h: (get_lim_data): Use reserved_heap_size instead of 12454 * mem-limits.h (get_lim_data): Use reserved_heap_size instead of
12460 data_region_size. 12455 data_region_size.
12461 12456
12462 * makefile.nt: (TEMACS_TMP): New macro. 12457 * makefile.nt (TEMACS_TMP): New macro.
12463 ($(TEMACS)): Output to TEMACS_TMP from link, use post-link 12458 ($(TEMACS)): Output to TEMACS_TMP from link, use post-link
12464 processor to add static heap section in support of new unexec. 12459 processor to add static heap section in support of new unexec.
12465 12460
@@ -12521,7 +12516,7 @@ Wed Jun 25 15:22:58 1997 Gerd Moellmann <gerd@acm.org>
12521 character. Don't allow to put binary data into the clipboard. 12516 character. Don't allow to put binary data into the clipboard.
12522 Return zero in case of success, 1 or 2 otherwise. 12517 Return zero in case of success, 1 or 2 otherwise.
12523 (get_clipboard_data): Only bail out if the null character is in 12518 (get_clipboard_data): Only bail out if the null character is in
12524 the last 32-byte chunk of clipboard data 12519 the last 32-byte chunk of clipboard data.
12525 (Fw16_set_clipboard_data): Make ok and put_status be unsigned. If 12520 (Fw16_set_clipboard_data): Make ok and put_status be unsigned. If
12526 they save binary data, print a message in the echo area saying the 12521 they save binary data, print a message in the echo area saying the
12527 text was not put into the clipboard. 12522 text was not put into the clipboard.
@@ -12568,7 +12563,7 @@ Wed Jun 25 15:22:58 1997 Gerd Moellmann <gerd@acm.org>
12568 (init_intervals, make_interval): Set a count variable. 12563 (init_intervals, make_interval): Set a count variable.
12569 Use lisp_malloc instead of setting allocating_for_lisp. 12564 Use lisp_malloc instead of setting allocating_for_lisp.
12570 (init_float, make_float, init_cons, Fcons): Likewise. 12565 (init_float, make_float, init_cons, Fcons): Likewise.
12571 (allocate_vectorlike, init_symbol, Fmake_symbol): Likewise 12566 (allocate_vectorlike, init_symbol, Fmake_symbol): Likewise.
12572 (init_marker, allocate_misc, init_strings): Likewise. 12567 (init_marker, allocate_misc, init_strings): Likewise.
12573 (make_uninit_multibyte_string): Likewise. 12568 (make_uninit_multibyte_string): Likewise.
12574 (gc_sweep, compact_strings): Decrement the count variables. 12569 (gc_sweep, compact_strings): Decrement the count variables.
@@ -12602,7 +12597,7 @@ Wed Jun 25 15:22:58 1997 Gerd Moellmann <gerd@acm.org>
12602 * w32term.c (x_iconify_frame): Wait for frame to be iconified; do 12597 * w32term.c (x_iconify_frame): Wait for frame to be iconified; do
12603 not set async_iconified flag though. 12598 not set async_iconified flag though.
12604 12599
12605 * w32proc.c: (Vw32_start_process_inherit_error_mode): New variable. 12600 * w32proc.c (Vw32_start_process_inherit_error_mode): New variable.
12606 (create_child): Use it. 12601 (create_child): Use it.
12607 (syms_of_ntproc): Defvar it. Also fix docstrings for 12602 (syms_of_ntproc): Defvar it. Also fix docstrings for
12608 w32-start-process-share-console and w32-start-process-show-window. 12603 w32-start-process-share-console and w32-start-process-show-window.
@@ -12951,7 +12946,7 @@ Wed Jun 25 15:22:58 1997 Gerd Moellmann <gerd@acm.org>
12951 12946
129521998-11-16 Kenichi Handa <handa@etl.go.jp> 129471998-11-16 Kenichi Handa <handa@etl.go.jp>
12953 12948
12954 * Makefile.in (abbrev.o): Depend on charset.h 12949 * Makefile.in (abbrev.o): Depend on charset.h.
12955 (bytecode.o): Depend on charset.h. 12950 (bytecode.o): Depend on charset.h.
12956 12951
12957 * bytecode.c: Include charset.h. 12952 * bytecode.c: Include charset.h.
@@ -12979,8 +12974,8 @@ Wed Jun 25 15:22:58 1997 Gerd Moellmann <gerd@acm.org>
129791998-11-11 Eli Zaretskii <eliz@delysid.gnu.org> 129741998-11-11 Eli Zaretskii <eliz@delysid.gnu.org>
12980 12975
12981 * fns.c (MAX_ALLOCA): New macro. 12976 * fns.c (MAX_ALLOCA): New macro.
12982 (Fbase64_encode_region, Fbase64_encode_string, 12977 (Fbase64_encode_region, Fbase64_encode_string)
12983 Fbase64_decode_region, Fbase64_decode_string): Don't allocate 12978 (Fbase64_decode_region, Fbase64_decode_string): Don't allocate
12984 more than MAX_ALLOCA bytes with alloca; otherwise use xmalloc. 12979 more than MAX_ALLOCA bytes with alloca; otherwise use xmalloc.
12985 12980
129861998-11-11 Ken'ichi Handa <handa@delysid.gnu.org> 129811998-11-11 Ken'ichi Handa <handa@delysid.gnu.org>
@@ -13418,21 +13413,21 @@ Wed Jun 25 15:22:58 1997 Gerd Moellmann <gerd@acm.org>
13418 * makefile.nt (w32fns.c): Add x-list-font.c to dependancies. 13413 * makefile.nt (w32fns.c): Add x-list-font.c to dependancies.
13419 13414
13420 * w32faces.c: Update comments referring to obsolete structs. 13415 * w32faces.c: Update comments referring to obsolete structs.
13421 (allocate_face, copy_face, face_eql, load_font, 13416 (allocate_face, copy_face, face_eql, load_font)
13422 Fpixmap_spec_p, free_frame_faces, new_computed_face, 13417 (Fpixmap_spec_p, free_frame_faces, new_computed_face)
13423 frame_update_line_height, merge_faces, compute_base_face, 13418 (frame_update_line_height, merge_faces, compute_base_face)
13424 Fset_face_attribute_internal): Use fontset support based on xfaces.c. 13419 (Fset_face_attribute_internal): Use fontset support based on xfaces.c.
13425 13420
13426 * w32fns.c: (Vx_pixel_size_width): New global variable. 13421 * w32fns.c (Vx_pixel_size_width): New global variable.
13427 (unibyte_display_via_language_environment): New global variable. 13422 (unibyte_display_via_language_environment): New global variable.
13428 (x_set_font): Add support for setting fontsets. 13423 (x_set_font): Add support for setting fontsets.
13429 (Fx_create_frame): Add check_w32(). Initialize fontsets. Fix 13424 (Fx_create_frame): Add check_w32(). Initialize fontsets. Fix
13430 font names to match xlfd-tight-regexp. 13425 font names to match xlfd-tight-regexp.
13431 (w32_load_font): Rewrite based on x_load_font. 13426 (w32_load_font): Rewrite based on x_load_font.
13432 (x_to_w32_charset, w32_to_x_charset): Add character sets. Use 13427 (x_to_w32_charset, w32_to_x_charset): Add character sets. Use
13433 `iso8859-1' rather than `ansi'. 13428 `iso8859-1' rather than `ansi'.
13434 (w32_to_x_font): Remove `-' from font name. Remove the `-' off the 13429 (w32_to_x_font): Remove `-' from font name. Remove the `-' off the
13435 end. Move charset into `charset registry' field. 13430 end. Move charset into `charset registry' field.
13436 (enum_font_cb2): Check charsets match. Include width in font list. 13431 (enum_font_cb2): Check charsets match. Include width in font list.
13437 (w32_list_fonts): Rewrite based on x_list_fonts. 13432 (w32_list_fonts): Rewrite based on x_list_fonts.
13438 Moved from w32term.c to have access to enumfont_t struct. 13433 Moved from w32term.c to have access to enumfont_t struct.
@@ -13455,8 +13450,8 @@ Wed Jun 25 15:22:58 1997 Gerd Moellmann <gerd@acm.org>
13455 (syms_of_w32term): Add w32-no-unicode-output flag. 13450 (syms_of_w32term): Add w32-no-unicode-output flag.
13456 13451
13457 * w32term.h: Remove redundant font_info struct definition. 13452 * w32term.h: Remove redundant font_info struct definition.
13458 (Vx_pixel_size_width_font_regexp, 13453 (Vx_pixel_size_width_font_regexp)
13459 unibyte_display_via_language_environment): Declare variables. 13454 (unibyte_display_via_language_environment): Declare variables.
13460 (w32_list_fonts, w32_get_font_info, w32_query_font, w32_load_font): 13455 (w32_list_fonts, w32_get_font_info, w32_query_font, w32_load_font):
13461 Declare functions. 13456 Declare functions.
13462 (w32_output): New fields font_baseline and fontset. 13457 (w32_output): New fields font_baseline and fontset.
@@ -13819,8 +13814,8 @@ Wed Jun 25 15:22:58 1997 Gerd Moellmann <gerd@acm.org>
13819 13814
138201998-09-06 Lars Magne Ingebrigtsen <larsi@gnus.org> 138151998-09-06 Lars Magne Ingebrigtsen <larsi@gnus.org>
13821 13816
13822 * fns.c (Fbase64_decode_string, Fbase64_encode_string, 13817 * fns.c (Fbase64_decode_string, Fbase64_encode_string)
13823 base64_decode_1, Fbase64_decode_region, Fbase64_encode_region): 13818 (base64_decode_1, Fbase64_decode_region, Fbase64_encode_region):
13824 New functions. 13819 New functions.
13825 13820
138261998-09-06 Richard Stallman <rms@gnu.org> 138211998-09-06 Richard Stallman <rms@gnu.org>
@@ -13852,7 +13847,7 @@ Wed Jun 25 15:22:58 1997 Gerd Moellmann <gerd@acm.org>
13852 (Fw16_set_clipboard_data): Always convert multibyte strings. Use 13847 (Fw16_set_clipboard_data): Always convert multibyte strings. Use
13853 Vnext_selection_coding_system if non-nil. 13848 Vnext_selection_coding_system if non-nil.
13854 (Fw16_get_clipboard_data): Always convert a string that includes 13849 (Fw16_get_clipboard_data): Always convert a string that includes
13855 non-ASCII characters. Use Vnext_selection_coding_system if 13850 non-ASCII characters. Use Vnext_selection_coding_system if
13856 non-nil. 13851 non-nil.
13857 13852
138581998-08-31 Andrew Innes <andrewi@harlequin.co.uk> 138531998-08-31 Andrew Innes <andrewi@harlequin.co.uk>
@@ -13957,8 +13952,7 @@ Wed Jun 25 15:22:58 1997 Gerd Moellmann <gerd@acm.org>
13957 * xterm.c (fixup_locale): New function. For now, it resets 13952 * xterm.c (fixup_locale): New function. For now, it resets
13958 LC_TIME to "C" (reverting the 1998-08-07 change), and also 13953 LC_TIME to "C" (reverting the 1998-08-07 change), and also
13959 resets LC_MESSAGES to "C". 13954 resets LC_MESSAGES to "C".
13960 (x_term_init): Use it to fix up the locale after setlocale 13955 (x_term_init): Use it to fix up the locale after setlocale (LC_ALL, "").
13961 (LC_ALL, "").
13962 13956
139631998-08-26 Kaveh R. Ghazi <ghazi@caip.rutgers.edu> 139571998-08-26 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
13964 13958
diff --git a/src/Makefile.in b/src/Makefile.in
index 11e4d00b488..401f9a92ed8 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -280,18 +280,10 @@ ALL_CFLAGS=-Demacs -DHAVE_CONFIG_H $(TOOLKIT_DEFINES) $(MYCPPFLAGS) -I. -I${srcd
280.c.o: 280.c.o:
281 $(CC) -c $(CPPFLAGS) $(ALL_CFLAGS) $< 281 $(CC) -c $(CPPFLAGS) $(ALL_CFLAGS) $<
282 282
283#ifndef LIBX10_MACHINE
284#define LIBX10_MACHINE
285#endif
286
287#ifndef LIBX11_MACHINE 283#ifndef LIBX11_MACHINE
288#define LIBX11_MACHINE 284#define LIBX11_MACHINE
289#endif 285#endif
290 286
291#ifndef LIBX10_SYSTEM
292#define LIBX10_SYSTEM
293#endif
294
295#ifndef LIBX11_SYSTEM 287#ifndef LIBX11_SYSTEM
296#define LIBX11_SYSTEM 288#define LIBX11_SYSTEM
297#endif 289#endif
@@ -447,7 +439,7 @@ XFT_LIBS=@XFT_LIBS@
447X11_LDFLAGS = LD_SWITCH_X_SITE LD_SWITCH_X_DEFAULT 439X11_LDFLAGS = LD_SWITCH_X_SITE LD_SWITCH_X_DEFAULT
448LIBX= $(LIBXMENU) $(X11_LDFLAGS) $(LIBXT) LIBTIFF LIBJPEG LIBPNG LIBGIF LIBXPM LIB_X11_LIB LIBX11_MACHINE LIBX11_SYSTEM $(XFT_LIBS) 440LIBX= $(LIBXMENU) $(X11_LDFLAGS) $(LIBXT) LIBTIFF LIBJPEG LIBPNG LIBGIF LIBXPM LIB_X11_LIB LIBX11_MACHINE LIBX11_SYSTEM $(XFT_LIBS)
449#else /* not HAVE_X11 */ 441#else /* not HAVE_X11 */
450LIBX= $(LIBXMENU) LD_SWITCH_X_SITE -lX10 LIBX10_MACHINE LIBX10_SYSTEM 442LIBX= $(LIBXMENU) LD_SWITCH_X_SITE
451#endif /* not HAVE_X11 */ 443#endif /* not HAVE_X11 */
452#else /* not HAVE_X_WINDOWS */ 444#else /* not HAVE_X_WINDOWS */
453#endif /* not HAVE_X_WINDOWS */ 445#endif /* not HAVE_X_WINDOWS */
@@ -621,7 +613,7 @@ obj= dispnew.o frame.o scroll.o xdisp.o $(XMENU_OBJ) window.o \
621 cmds.o casetab.o casefiddle.o indent.o search.o regex.o undo.o \ 613 cmds.o casetab.o casefiddle.o indent.o search.o regex.o undo.o \
622 alloc.o data.o doc.o editfns.o callint.o \ 614 alloc.o data.o doc.o editfns.o callint.o \
623 eval.o floatfns.o fns.o print.o lread.o \ 615 eval.o floatfns.o fns.o print.o lread.o \
624 abbrev.o syntax.o UNEXEC bytecode.o \ 616 syntax.o UNEXEC bytecode.o \
625 process.o callproc.o \ 617 process.o callproc.o \
626 region-cache.o sound.o atimer.o \ 618 region-cache.o sound.o atimer.o \
627 doprnt.o strftime.o intervals.o textprop.o composite.o md5.o \ 619 doprnt.o strftime.o intervals.o textprop.o composite.o md5.o \
@@ -630,7 +622,7 @@ obj= dispnew.o frame.o scroll.o xdisp.o $(XMENU_OBJ) window.o \
630/* Object files used on some machine or other. 622/* Object files used on some machine or other.
631 These go in the DOC file on all machines 623 These go in the DOC file on all machines
632 in case they are needed there. */ 624 in case they are needed there. */
633SOME_MACHINE_OBJECTS = sunfns.o dosfns.o msdos.o \ 625SOME_MACHINE_OBJECTS = dosfns.o msdos.o \
634 xterm.o xfns.o xmenu.o xselect.o xrdb.o xsmfns.o fringe.o image.o \ 626 xterm.o xfns.o xmenu.o xselect.o xrdb.o xsmfns.o fringe.o image.o \
635 mac.o macterm.o macfns.o macmenu.o macselect.o fontset.o \ 627 mac.o macterm.o macfns.o macmenu.o macselect.o fontset.o \
636 w32.o w32bdf.o w32console.o w32fns.o w32heap.o w32inevt.o \ 628 w32.o w32bdf.o w32console.o w32fns.o w32heap.o w32inevt.o \
@@ -1311,10 +1303,8 @@ composite.o: composite.c buffer.h character.h $(INTERVAL_SRC) $(config_h)
1311 OTHER_FILES and OBJECTS_MACHINE 1303 OTHER_FILES and OBJECTS_MACHINE
1312 select which of these should be compiled. */ 1304 select which of these should be compiled. */
1313 1305
1314sunfns.o: sunfns.c buffer.h window.h dispextern.h termhooks.h $(config_h)
1315
1316#ifdef HAVE_CARBON 1306#ifdef HAVE_CARBON
1317abbrev.o buffer.o callint.o cmds.o dispnew.o editfns.o fileio.o frame.o \ 1307buffer.o callint.o cmds.o dispnew.o editfns.o fileio.o frame.o \
1318 fontset.o indent.o insdel.o keyboard.o macros.o minibuf.o msdos.o process.o \ 1308 fontset.o indent.o insdel.o keyboard.o macros.o minibuf.o msdos.o process.o \
1319 scroll.o sysdep.o term.o terminal.o widget.o window.o xdisp.o xfaces.o xfns.o xmenu.o \ 1309 scroll.o sysdep.o term.o terminal.o widget.o window.o xdisp.o xfaces.o xfns.o xmenu.o \
1320 xterm.o xselect.o sound.o: macgui.h 1310 xterm.o xselect.o sound.o: macgui.h
diff --git a/src/abbrev.c b/src/abbrev.c
deleted file mode 100644
index bed7f73d1c3..00000000000
--- a/src/abbrev.c
+++ /dev/null
@@ -1,809 +0,0 @@
1/* Primitives for word-abbrev mode.
2 Copyright (C) 1985, 1986, 1993, 1996, 1998, 2001, 2002, 2003, 2004,
3 2005, 2006, 2007 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, or (at your option)
10any 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; see the file COPYING. If not, write to
19the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
20Boston, MA 02110-1301, USA. */
21
22
23#include <config.h>
24#include <stdio.h>
25
26#include "lisp.h"
27#include "commands.h"
28#include "buffer.h"
29#include "window.h"
30#include "character.h"
31#include "syntax.h"
32
33/* An abbrev table is an obarray.
34 Each defined abbrev is represented by a symbol in that obarray
35 whose print name is the abbreviation.
36 The symbol's value is a string which is the expansion.
37 If its function definition is non-nil, it is called
38 after the expansion is done.
39 The plist slot of the abbrev symbol is its usage count. */
40
41/* List of all abbrev-table name symbols:
42 symbols whose values are abbrev tables. */
43
44Lisp_Object Vabbrev_table_name_list;
45
46/* The table of global abbrevs. These are in effect
47 in any buffer in which abbrev mode is turned on. */
48
49Lisp_Object Vglobal_abbrev_table;
50
51/* The local abbrev table used by default (in Fundamental Mode buffers) */
52
53Lisp_Object Vfundamental_mode_abbrev_table;
54
55/* Set nonzero when an abbrev definition is changed */
56
57int abbrevs_changed;
58
59int abbrev_all_caps;
60
61/* Non-nil => use this location as the start of abbrev to expand
62 (rather than taking the word before point as the abbrev) */
63
64Lisp_Object Vabbrev_start_location;
65
66/* Buffer that Vabbrev_start_location applies to */
67Lisp_Object Vabbrev_start_location_buffer;
68
69/* The symbol representing the abbrev most recently expanded */
70
71Lisp_Object Vlast_abbrev;
72
73/* A string for the actual text of the abbrev most recently expanded.
74 This has more info than Vlast_abbrev since case is significant. */
75
76Lisp_Object Vlast_abbrev_text;
77
78/* Character address of start of last abbrev expanded */
79
80EMACS_INT last_abbrev_point;
81
82/* Hook to run before expanding any abbrev. */
83
84Lisp_Object Vpre_abbrev_expand_hook, Qpre_abbrev_expand_hook;
85
86Lisp_Object Qsystem_type, Qcount, Qforce;
87
88DEFUN ("make-abbrev-table", Fmake_abbrev_table, Smake_abbrev_table, 0, 0, 0,
89 doc: /* Create a new, empty abbrev table object. */)
90 ()
91{
92 /* The value 59 is arbitrary chosen prime number. */
93 return Fmake_vector (make_number (59), make_number (0));
94}
95
96DEFUN ("clear-abbrev-table", Fclear_abbrev_table, Sclear_abbrev_table, 1, 1, 0,
97 doc: /* Undefine all abbrevs in abbrev table TABLE, leaving it empty. */)
98 (table)
99 Lisp_Object table;
100{
101 int i, size;
102
103 CHECK_VECTOR (table);
104 size = XVECTOR (table)->size;
105 abbrevs_changed = 1;
106 for (i = 0; i < size; i++)
107 XVECTOR (table)->contents[i] = make_number (0);
108 return Qnil;
109}
110
111DEFUN ("define-abbrev", Fdefine_abbrev, Sdefine_abbrev, 3, 6, 0,
112 doc: /* Define an abbrev in TABLE named NAME, to expand to EXPANSION and call HOOK.
113NAME must be a string, and should be lower-case.
114EXPANSION should usually be a string.
115To undefine an abbrev, define it with EXPANSION = nil.
116If HOOK is non-nil, it should be a function of no arguments;
117it is called after EXPANSION is inserted.
118If EXPANSION is not a string, the abbrev is a special one,
119 which does not expand in the usual way but only runs HOOK.
120
121COUNT, if specified, gives the initial value for the abbrev's
122usage-count, which is incremented each time the abbrev is used.
123\(The default is zero.)
124
125SYSTEM-FLAG, if non-nil, says that this is a "system" abbreviation
126which should not be saved in the user's abbreviation file.
127Unless SYSTEM-FLAG is `force', a system abbreviation will not
128overwrite a non-system abbreviation of the same name. */)
129 (table, name, expansion, hook, count, system_flag)
130 Lisp_Object table, name, expansion, hook, count, system_flag;
131{
132 Lisp_Object sym, oexp, ohook, tem;
133 CHECK_VECTOR (table);
134 CHECK_STRING (name);
135
136 /* If defining a system abbrev, do not overwrite a non-system abbrev
137 of the same name, unless 'force is used. */
138 if (!NILP (system_flag) && !EQ (system_flag, Qforce))
139 {
140 sym = Fintern_soft (name, table);
141
142 if (!NILP (SYMBOL_VALUE (sym)) &&
143 NILP (Fplist_get (XSYMBOL (sym)->plist, Qsystem_type))) return Qnil;
144 }
145
146 if (NILP (count))
147 count = make_number (0);
148 else
149 CHECK_NUMBER (count);
150
151 sym = Fintern (name, table);
152
153 oexp = SYMBOL_VALUE (sym);
154 ohook = XSYMBOL (sym)->function;
155 if (!((EQ (oexp, expansion)
156 || (STRINGP (oexp) && STRINGP (expansion)
157 && (tem = Fstring_equal (oexp, expansion), !NILP (tem))))
158 &&
159 (EQ (ohook, hook)
160 || (tem = Fequal (ohook, hook), !NILP (tem))))
161 && NILP (system_flag))
162 abbrevs_changed = 1;
163
164 Fset (sym, expansion);
165 Ffset (sym, hook);
166
167 if (! NILP (system_flag))
168 Fsetplist (sym, list4 (Qcount, count, Qsystem_type, system_flag));
169 else
170 Fsetplist (sym, count);
171
172 return name;
173}
174
175/* Check if the characters in ABBREV have word syntax in either the
176 * current (if global == 0) or standard syntax table. */
177static void
178abbrev_check_chars (abbrev, global)
179 Lisp_Object abbrev;
180 int global;
181{
182 int i, i_byte, len, nbad = 0;
183 int j, found, nuniq = 0;
184 char *badchars, *baduniq;
185
186 CHECK_STRING (abbrev);
187 len = SCHARS (abbrev);
188
189 badchars = (char *) alloca (len + 1);
190
191 for (i = 0, i_byte = 0; i < len; )
192 {
193 int c;
194
195 FETCH_STRING_CHAR_ADVANCE (c, abbrev, i, i_byte);
196
197 if (global)
198 {
199 /* Copied from SYNTAX in syntax.h, except using FOLLOW_PARENT. */
200 Lisp_Object syntax_temp
201 = CHAR_TABLE_REF (Vstandard_syntax_table, c);
202 if ( (CONSP (syntax_temp)
203 ? (enum syntaxcode) (XINT (XCAR (syntax_temp)) & 0xff)
204 : Swhitespace) != Sword ) badchars[nbad++] = c;
205 }
206 else if (SYNTAX (c) != Sword)
207 badchars[nbad++] = c;
208 }
209
210 if (nbad == 0) return;
211
212 baduniq = (char *) alloca (nbad + 1);
213
214 for (i = 0; i < nbad; i++)
215 {
216 found = 0;
217
218 for (j = 0; j < nuniq; j++)
219 {
220 if (badchars[i] == baduniq[j])
221 {
222 found = 1;
223 break;
224 }
225 }
226
227 if (found) continue ;
228
229 baduniq[nuniq++] = badchars[i];
230 }
231
232 baduniq[nuniq] = '\0';
233
234 error ("Some abbrev characters (%s) are not word constituents %s",
235 baduniq, global ? "in the standard syntax" : "in this mode" );
236}
237
238DEFUN ("define-global-abbrev", Fdefine_global_abbrev, Sdefine_global_abbrev, 2, 2,
239 "sDefine global abbrev: \nsExpansion for %s: ",
240 doc: /* Define ABBREV as a global abbreviation for EXPANSION.
241The characters in ABBREV must all be word constituents in the standard
242syntax table. */)
243 (abbrev, expansion)
244 Lisp_Object abbrev, expansion;
245{
246 abbrev_check_chars (abbrev, 1);
247
248 Fdefine_abbrev (Vglobal_abbrev_table, Fdowncase (abbrev),
249 expansion, Qnil, make_number (0), Qnil);
250 return abbrev;
251}
252
253DEFUN ("define-mode-abbrev", Fdefine_mode_abbrev, Sdefine_mode_abbrev, 2, 2,
254 "sDefine mode abbrev: \nsExpansion for %s: ",
255 doc: /* Define ABBREV as a mode-specific abbreviation for EXPANSION.
256The characters in ABBREV must all be word-constituents in the current mode. */)
257 (abbrev, expansion)
258 Lisp_Object abbrev, expansion;
259{
260 if (NILP (current_buffer->abbrev_table))
261 error ("Major mode has no abbrev table");
262
263 abbrev_check_chars (abbrev, 0);
264
265 Fdefine_abbrev (current_buffer->abbrev_table, Fdowncase (abbrev),
266 expansion, Qnil, make_number (0), Qnil);
267 return abbrev;
268}
269
270DEFUN ("abbrev-symbol", Fabbrev_symbol, Sabbrev_symbol, 1, 2, 0,
271 doc: /* Return the symbol representing abbrev named ABBREV.
272This symbol's name is ABBREV, but it is not the canonical symbol of that name;
273it is interned in an abbrev-table rather than the normal obarray.
274The value is nil if that abbrev is not defined.
275Optional second arg TABLE is abbrev table to look it up in.
276The default is to try buffer's mode-specific abbrev table, then global table. */)
277 (abbrev, table)
278 Lisp_Object abbrev, table;
279{
280 Lisp_Object sym;
281 CHECK_STRING (abbrev);
282 if (!NILP (table))
283 sym = Fintern_soft (abbrev, table);
284 else
285 {
286 sym = Qnil;
287 if (!NILP (current_buffer->abbrev_table))
288 sym = Fintern_soft (abbrev, current_buffer->abbrev_table);
289 if (NILP (SYMBOL_VALUE (sym)))
290 sym = Qnil;
291 if (NILP (sym))
292 sym = Fintern_soft (abbrev, Vglobal_abbrev_table);
293 }
294 if (NILP (SYMBOL_VALUE (sym)))
295 return Qnil;
296 return sym;
297}
298
299DEFUN ("abbrev-expansion", Fabbrev_expansion, Sabbrev_expansion, 1, 2, 0,
300 doc: /* Return the string that ABBREV expands into in the current buffer.
301Optionally specify an abbrev table as second arg;
302then ABBREV is looked up in that table only. */)
303 (abbrev, table)
304 Lisp_Object abbrev, table;
305{
306 Lisp_Object sym;
307 sym = Fabbrev_symbol (abbrev, table);
308 if (NILP (sym)) return sym;
309 return Fsymbol_value (sym);
310}
311
312/* Expand the word before point, if it is an abbrev.
313 Returns 1 if an expansion is done. */
314
315DEFUN ("expand-abbrev", Fexpand_abbrev, Sexpand_abbrev, 0, 0, "",
316 doc: /* Expand the abbrev before point, if there is an abbrev there.
317Effective when explicitly called even when `abbrev-mode' is nil.
318Returns the abbrev symbol, if expansion took place. */)
319 ()
320{
321 register char *buffer, *p;
322 int wordstart, wordend;
323 register int wordstart_byte, wordend_byte, idx, idx_byte;
324 int whitecnt;
325 int uccount = 0, lccount = 0;
326 register Lisp_Object sym;
327 Lisp_Object expansion, hook, tem;
328 Lisp_Object value;
329 int multibyte = ! NILP (current_buffer->enable_multibyte_characters);
330
331 value = Qnil;
332
333 Frun_hooks (1, &Qpre_abbrev_expand_hook);
334
335 wordstart = 0;
336 if (!(BUFFERP (Vabbrev_start_location_buffer)
337 && XBUFFER (Vabbrev_start_location_buffer) == current_buffer))
338 Vabbrev_start_location = Qnil;
339 if (!NILP (Vabbrev_start_location))
340 {
341 tem = Vabbrev_start_location;
342 CHECK_NUMBER_COERCE_MARKER (tem);
343 wordstart = XINT (tem);
344 Vabbrev_start_location = Qnil;
345 if (wordstart < BEGV || wordstart > ZV)
346 wordstart = 0;
347 if (wordstart && wordstart != ZV)
348 {
349 wordstart_byte = CHAR_TO_BYTE (wordstart);
350 if (FETCH_BYTE (wordstart_byte) == '-')
351 del_range (wordstart, wordstart + 1);
352 }
353 }
354 if (!wordstart)
355 wordstart = scan_words (PT, -1);
356
357 if (!wordstart)
358 return value;
359
360 wordstart_byte = CHAR_TO_BYTE (wordstart);
361 wordend = scan_words (wordstart, 1);
362 if (!wordend)
363 return value;
364
365 if (wordend > PT)
366 wordend = PT;
367
368 wordend_byte = CHAR_TO_BYTE (wordend);
369 whitecnt = PT - wordend;
370 if (wordend <= wordstart)
371 return value;
372
373 p = buffer = (char *) alloca (wordend_byte - wordstart_byte);
374
375 for (idx = wordstart, idx_byte = wordstart_byte; idx < wordend; )
376 {
377 register int c;
378
379 if (multibyte)
380 {
381 FETCH_CHAR_ADVANCE (c, idx, idx_byte);
382 }
383 else
384 {
385 c = FETCH_BYTE (idx_byte);
386 idx++, idx_byte++;
387 }
388
389 if (UPPERCASEP (c))
390 c = DOWNCASE (c), uccount++;
391 else if (! NOCASEP (c))
392 lccount++;
393 if (multibyte)
394 p += CHAR_STRING (c, p);
395 else
396 *p++ = c;
397 }
398
399 if (VECTORP (current_buffer->abbrev_table))
400 sym = oblookup (current_buffer->abbrev_table, buffer,
401 wordend - wordstart, p - buffer);
402 else
403 XSETFASTINT (sym, 0);
404
405 if (INTEGERP (sym) || NILP (SYMBOL_VALUE (sym)))
406 sym = oblookup (Vglobal_abbrev_table, buffer,
407 wordend - wordstart, p - buffer);
408 if (INTEGERP (sym) || NILP (SYMBOL_VALUE (sym)))
409 return value;
410
411 if (INTERACTIVE && !EQ (minibuf_window, selected_window))
412 {
413 /* Add an undo boundary, in case we are doing this for
414 a self-inserting command which has avoided making one so far. */
415 SET_PT (wordend);
416 Fundo_boundary ();
417 }
418
419 Vlast_abbrev_text
420 = Fbuffer_substring (make_number (wordstart), make_number (wordend));
421
422 /* Now sym is the abbrev symbol. */
423 Vlast_abbrev = sym;
424 value = sym;
425 last_abbrev_point = wordstart;
426
427 /* Increment use count. */
428 if (INTEGERP (XSYMBOL (sym)->plist))
429 XSETINT (XSYMBOL (sym)->plist,
430 XINT (XSYMBOL (sym)->plist) + 1);
431 else if (INTEGERP (tem = Fget (sym, Qcount)))
432 Fput (sym, Qcount, make_number (XINT (tem) + 1));
433
434 /* If this abbrev has an expansion, delete the abbrev
435 and insert the expansion. */
436 expansion = SYMBOL_VALUE (sym);
437 if (STRINGP (expansion))
438 {
439 SET_PT (wordstart);
440
441 insert_from_string (expansion, 0, 0, SCHARS (expansion),
442 SBYTES (expansion), 1);
443 del_range_both (PT, PT_BYTE,
444 wordend + (PT - wordstart),
445 wordend_byte + (PT_BYTE - wordstart_byte),
446 1);
447
448 SET_PT (PT + whitecnt);
449
450 if (uccount && !lccount)
451 {
452 /* Abbrev was all caps */
453 /* If expansion is multiple words, normally capitalize each word */
454 /* This used to be if (!... && ... >= ...) Fcapitalize; else Fupcase
455 but Megatest 68000 compiler can't handle that */
456 if (!abbrev_all_caps)
457 if (scan_words (PT, -1) > scan_words (wordstart, 1))
458 {
459 Fupcase_initials_region (make_number (wordstart),
460 make_number (PT));
461 goto caped;
462 }
463 /* If expansion is one word, or if user says so, upcase it all. */
464 Fupcase_region (make_number (wordstart), make_number (PT));
465 caped: ;
466 }
467 else if (uccount)
468 {
469 /* Abbrev included some caps. Cap first initial of expansion */
470 int pos = wordstart_byte;
471
472 /* Find the initial. */
473 if (multibyte)
474 while (pos < PT_BYTE
475 && SYNTAX (FETCH_MULTIBYTE_CHAR (pos)) != Sword)
476 INC_POS (pos);
477 else
478 while (pos < PT_BYTE
479 && (SYNTAX (*BUF_BYTE_ADDRESS (current_buffer, pos))
480 != Sword))
481 pos++;
482
483 /* Change just that. */
484 pos = BYTE_TO_CHAR (pos);
485 Fupcase_initials_region (make_number (pos), make_number (pos + 1));
486 }
487 }
488
489 hook = XSYMBOL (sym)->function;
490 if (!NILP (hook))
491 {
492 Lisp_Object expanded, prop;
493
494 /* If the abbrev has a hook function, run it. */
495 expanded = call0 (hook);
496
497 /* In addition, if the hook function is a symbol with
498 a non-nil `no-self-insert' property, let the value it returned
499 specify whether we consider that an expansion took place. If
500 it returns nil, no expansion has been done. */
501
502 if (SYMBOLP (hook)
503 && NILP (expanded)
504 && (prop = Fget (hook, intern ("no-self-insert")),
505 !NILP (prop)))
506 value = Qnil;
507 }
508
509 return value;
510}
511
512DEFUN ("unexpand-abbrev", Funexpand_abbrev, Sunexpand_abbrev, 0, 0, "",
513 doc: /* Undo the expansion of the last abbrev that expanded.
514This differs from ordinary undo in that other editing done since then
515is not undone. */)
516 ()
517{
518 int opoint = PT;
519 int adjust = 0;
520 if (last_abbrev_point < BEGV
521 || last_abbrev_point > ZV)
522 return Qnil;
523 SET_PT (last_abbrev_point);
524 if (STRINGP (Vlast_abbrev_text))
525 {
526 /* This isn't correct if Vlast_abbrev->function was used
527 to do the expansion */
528 Lisp_Object val;
529 int zv_before;
530
531 val = SYMBOL_VALUE (Vlast_abbrev);
532 if (!STRINGP (val))
533 error ("Value of `abbrev-symbol' must be a string");
534 zv_before = ZV;
535 del_range_byte (PT_BYTE, PT_BYTE + SBYTES (val), 1);
536 /* Don't inherit properties here; just copy from old contents. */
537 insert_from_string (Vlast_abbrev_text, 0, 0,
538 SCHARS (Vlast_abbrev_text),
539 SBYTES (Vlast_abbrev_text), 0);
540 Vlast_abbrev_text = Qnil;
541 /* Total number of characters deleted. */
542 adjust = ZV - zv_before;
543 }
544 SET_PT (last_abbrev_point < opoint ? opoint + adjust : opoint);
545 return Qnil;
546}
547
548static void
549write_abbrev (sym, stream)
550 Lisp_Object sym, stream;
551{
552 Lisp_Object name, count, system_flag;
553
554 if (INTEGERP (XSYMBOL (sym)->plist))
555 {
556 count = XSYMBOL (sym)->plist;
557 system_flag = Qnil;
558 }
559 else
560 {
561 count = Fget (sym, Qcount);
562 system_flag = Fget (sym, Qsystem_type);
563 }
564
565 if (NILP (SYMBOL_VALUE (sym)) || ! NILP (system_flag))
566 return;
567
568 insert (" (", 5);
569 name = SYMBOL_NAME (sym);
570 Fprin1 (name, stream);
571 insert (" ", 1);
572 Fprin1 (SYMBOL_VALUE (sym), stream);
573 insert (" ", 1);
574 Fprin1 (XSYMBOL (sym)->function, stream);
575 insert (" ", 1);
576 Fprin1 (count, stream);
577 insert (")\n", 2);
578}
579
580static void
581describe_abbrev (sym, stream)
582 Lisp_Object sym, stream;
583{
584 Lisp_Object one, count, system_flag;
585
586 if (INTEGERP (XSYMBOL (sym)->plist))
587 {
588 count = XSYMBOL (sym)->plist;
589 system_flag = Qnil;
590 }
591 else
592 {
593 count = Fget (sym, Qcount);
594 system_flag = Fget (sym, Qsystem_type);
595 }
596
597 if (NILP (SYMBOL_VALUE (sym)))
598 return;
599
600 one = make_number (1);
601 Fprin1 (Fsymbol_name (sym), stream);
602
603 if (!NILP (system_flag))
604 {
605 insert_string (" (sys)");
606 Findent_to (make_number (20), one);
607 }
608 else
609 Findent_to (make_number (15), one);
610
611 Fprin1 (count, stream);
612 Findent_to (make_number (20), one);
613 Fprin1 (SYMBOL_VALUE (sym), stream);
614 if (!NILP (XSYMBOL (sym)->function))
615 {
616 Findent_to (make_number (45), one);
617 Fprin1 (XSYMBOL (sym)->function, stream);
618 }
619 Fterpri (stream);
620}
621
622static void
623record_symbol (sym, list)
624 Lisp_Object sym, list;
625{
626 XSETCDR (list, Fcons (sym, XCDR (list)));
627}
628
629DEFUN ("insert-abbrev-table-description", Finsert_abbrev_table_description,
630 Sinsert_abbrev_table_description, 1, 2, 0,
631 doc: /* Insert before point a full description of abbrev table named NAME.
632NAME is a symbol whose value is an abbrev table.
633If optional 2nd arg READABLE is non-nil, a human-readable description
634is inserted. Otherwise the description is an expression,
635a call to `define-abbrev-table', which would
636define the abbrev table NAME exactly as it is currently defined.
637
638Abbrevs marked as "system abbrevs" are normally omitted. However, if
639READABLE is non-nil, they are listed. */)
640 (name, readable)
641 Lisp_Object name, readable;
642{
643 Lisp_Object table;
644 Lisp_Object symbols;
645 Lisp_Object stream;
646
647 CHECK_SYMBOL (name);
648 table = Fsymbol_value (name);
649 CHECK_VECTOR (table);
650
651 XSETBUFFER (stream, current_buffer);
652
653 symbols = Fcons (Qnil, Qnil);
654 map_obarray (table, record_symbol, symbols);
655 symbols = XCDR (symbols);
656 symbols = Fsort (symbols, Qstring_lessp);
657
658 if (!NILP (readable))
659 {
660 insert_string ("(");
661 Fprin1 (name, stream);
662 insert_string (")\n\n");
663 while (! NILP (symbols))
664 {
665 describe_abbrev (XCAR (symbols), stream);
666 symbols = XCDR (symbols);
667 }
668
669 insert_string ("\n\n");
670 }
671 else
672 {
673 insert_string ("(define-abbrev-table '");
674 Fprin1 (name, stream);
675 insert_string (" '(\n");
676 while (! NILP (symbols))
677 {
678 write_abbrev (XCAR (symbols), stream);
679 symbols = XCDR (symbols);
680 }
681 insert_string (" ))\n\n");
682 }
683
684 return Qnil;
685}
686
687DEFUN ("define-abbrev-table", Fdefine_abbrev_table, Sdefine_abbrev_table,
688 2, 2, 0,
689 doc: /* Define TABLENAME (a symbol) as an abbrev table name.
690Define abbrevs in it according to DEFINITIONS, which is a list of elements
691of the form (ABBREVNAME EXPANSION HOOK USECOUNT SYSTEMFLAG).
692\(If the list is shorter than that, omitted elements default to nil). */)
693 (tablename, definitions)
694 Lisp_Object tablename, definitions;
695{
696 Lisp_Object name, exp, hook, count;
697 Lisp_Object table, elt, sys;
698
699 CHECK_SYMBOL (tablename);
700 table = Fboundp (tablename);
701 if (NILP (table) || (table = Fsymbol_value (tablename), NILP (table)))
702 {
703 table = Fmake_abbrev_table ();
704 Fset (tablename, table);
705 Vabbrev_table_name_list = Fcons (tablename, Vabbrev_table_name_list);
706 }
707 CHECK_VECTOR (table);
708
709 for (; CONSP (definitions); definitions = XCDR (definitions))
710 {
711 elt = XCAR (definitions);
712 name = Fcar (elt); elt = Fcdr (elt);
713 exp = Fcar (elt); elt = Fcdr (elt);
714 hook = Fcar (elt); elt = Fcdr (elt);
715 count = Fcar (elt); elt = Fcdr (elt);
716 sys = Fcar (elt);
717 Fdefine_abbrev (table, name, exp, hook, count, sys);
718 }
719 return Qnil;
720}
721
722void
723syms_of_abbrev ()
724{
725 Qsystem_type = intern ("system-type");
726 staticpro (&Qsystem_type);
727
728 Qcount = intern ("count");
729 staticpro (&Qcount);
730
731 Qforce = intern ("force");
732 staticpro (&Qforce);
733
734 DEFVAR_LISP ("abbrev-table-name-list", &Vabbrev_table_name_list,
735 doc: /* List of symbols whose values are abbrev tables. */);
736 Vabbrev_table_name_list = Fcons (intern ("fundamental-mode-abbrev-table"),
737 Fcons (intern ("global-abbrev-table"),
738 Qnil));
739
740 DEFVAR_LISP ("global-abbrev-table", &Vglobal_abbrev_table,
741 doc: /* The abbrev table whose abbrevs affect all buffers.
742Each buffer may also have a local abbrev table.
743If it does, the local table overrides the global one
744for any particular abbrev defined in both. */);
745 Vglobal_abbrev_table = Fmake_abbrev_table ();
746
747 DEFVAR_LISP ("fundamental-mode-abbrev-table", &Vfundamental_mode_abbrev_table,
748 doc: /* The abbrev table of mode-specific abbrevs for Fundamental Mode. */);
749 Vfundamental_mode_abbrev_table = Fmake_abbrev_table ();
750 current_buffer->abbrev_table = Vfundamental_mode_abbrev_table;
751 buffer_defaults.abbrev_table = Vfundamental_mode_abbrev_table;
752
753 DEFVAR_LISP ("last-abbrev", &Vlast_abbrev,
754 doc: /* The abbrev-symbol of the last abbrev expanded. See `abbrev-symbol'. */);
755
756 DEFVAR_LISP ("last-abbrev-text", &Vlast_abbrev_text,
757 doc: /* The exact text of the last abbrev expanded.
758A value of nil means the abbrev has already been unexpanded. */);
759
760 DEFVAR_INT ("last-abbrev-location", &last_abbrev_point,
761 doc: /* The location of the start of the last abbrev expanded. */);
762
763 Vlast_abbrev = Qnil;
764 Vlast_abbrev_text = Qnil;
765 last_abbrev_point = 0;
766
767 DEFVAR_LISP ("abbrev-start-location", &Vabbrev_start_location,
768 doc: /* Buffer position for `expand-abbrev' to use as the start of the abbrev.
769When nil, use the word before point as the abbrev.
770Calling `expand-abbrev' sets this to nil. */);
771 Vabbrev_start_location = Qnil;
772
773 DEFVAR_LISP ("abbrev-start-location-buffer", &Vabbrev_start_location_buffer,
774 doc: /* Buffer that `abbrev-start-location' has been set for.
775Trying to expand an abbrev in any other buffer clears `abbrev-start-location'. */);
776 Vabbrev_start_location_buffer = Qnil;
777
778 DEFVAR_BOOL ("abbrevs-changed", &abbrevs_changed,
779 doc: /* Set non-nil by defining or altering any word abbrevs.
780This causes `save-some-buffers' to offer to save the abbrevs. */);
781 abbrevs_changed = 0;
782
783 DEFVAR_BOOL ("abbrev-all-caps", &abbrev_all_caps,
784 doc: /* *Set non-nil means expand multi-word abbrevs all caps if abbrev was so. */);
785 abbrev_all_caps = 0;
786
787 DEFVAR_LISP ("pre-abbrev-expand-hook", &Vpre_abbrev_expand_hook,
788 doc: /* Function or functions to be called before abbrev expansion is done.
789This is the first thing that `expand-abbrev' does, and so this may change
790the current abbrev table before abbrev lookup happens. */);
791 Vpre_abbrev_expand_hook = Qnil;
792 Qpre_abbrev_expand_hook = intern ("pre-abbrev-expand-hook");
793 staticpro (&Qpre_abbrev_expand_hook);
794
795 defsubr (&Smake_abbrev_table);
796 defsubr (&Sclear_abbrev_table);
797 defsubr (&Sdefine_abbrev);
798 defsubr (&Sdefine_global_abbrev);
799 defsubr (&Sdefine_mode_abbrev);
800 defsubr (&Sabbrev_expansion);
801 defsubr (&Sabbrev_symbol);
802 defsubr (&Sexpand_abbrev);
803 defsubr (&Sunexpand_abbrev);
804 defsubr (&Sinsert_abbrev_table_description);
805 defsubr (&Sdefine_abbrev_table);
806}
807
808/* arch-tag: b721db69-f633-44a8-a361-c275acbdad7d
809 (do not change this comment) */
diff --git a/src/config.in b/src/config.in
index c23ec13ac88..616e52049ff 100644
--- a/src/config.in
+++ b/src/config.in
@@ -708,9 +708,6 @@ Boston, MA 02110-1301, USA. */
708 expects to use version 10. */ 708 expects to use version 10. */
709#undef HAVE_X11 709#undef HAVE_X11
710 710
711/* Define to 1 if you have the X11R5 or newer version of Xlib. */
712#undef HAVE_X11R5
713
714/* Define to 1 if you have the X11R6 or newer version of Xlib. */ 711/* Define to 1 if you have the X11R6 or newer version of Xlib. */
715#undef HAVE_X11R6 712#undef HAVE_X11R6
716 713
@@ -1147,7 +1144,7 @@ typedef unsigned size_t;
1147 1144
1148#ifdef HAVE_X11R6 1145#ifdef HAVE_X11R6
1149#define HAVE_X_I18N 1146#define HAVE_X_I18N
1150#elif defined HAVE_X11R5 && !defined X11R5_INHIBIT_I18N 1147#elif !defined X11R5_INHIBIT_I18N
1151#define HAVE_X_I18N 1148#define HAVE_X_I18N
1152#endif 1149#endif
1153 1150
diff --git a/src/dispextern.h b/src/dispextern.h
index e89d0d7e390..086d2bffaf6 100644
--- a/src/dispextern.h
+++ b/src/dispextern.h
@@ -1820,6 +1820,9 @@ struct it_slice
1820 Lisp_Object height; 1820 Lisp_Object height;
1821}; 1821};
1822 1822
1823/* Input sources for fetching characters or data to display.
1824 The input source is found in the `method' field. */
1825
1823enum it_method { 1826enum it_method {
1824 GET_FROM_BUFFER = 0, 1827 GET_FROM_BUFFER = 0,
1825 GET_FROM_DISPLAY_VECTOR, 1828 GET_FROM_DISPLAY_VECTOR,
@@ -1921,20 +1924,27 @@ struct it
1921 position in overlay strings etc. */ 1924 position in overlay strings etc. */
1922 struct display_pos current; 1925 struct display_pos current;
1923 1926
1927 /* Total number of overlay strings to process. This can be >
1928 OVERLAY_STRING_CHUNK_SIZE. */
1929 int n_overlay_strings;
1930
1924 /* Vector of overlays to process. Overlay strings are processed 1931 /* Vector of overlays to process. Overlay strings are processed
1925 OVERLAY_STRING_CHUNK_SIZE at a time. */ 1932 OVERLAY_STRING_CHUNK_SIZE at a time. */
1926#define OVERLAY_STRING_CHUNK_SIZE 16 1933#define OVERLAY_STRING_CHUNK_SIZE 16
1927 Lisp_Object overlay_strings[OVERLAY_STRING_CHUNK_SIZE]; 1934 Lisp_Object overlay_strings[OVERLAY_STRING_CHUNK_SIZE];
1928 1935
1929 /* Total number of overlay strings to process. This can be > 1936 /* For each overlay string, the overlay it came from. */
1930 OVERLAY_STRING_CHUNK_SIZE. */ 1937 Lisp_Object string_overlays[OVERLAY_STRING_CHUNK_SIZE];
1931 int n_overlay_strings;
1932 1938
1933 /* If non-nil, a Lisp string being processed. If 1939 /* If non-nil, a Lisp string being processed. If
1934 current.overlay_string_index >= 0, this is an overlay string from 1940 current.overlay_string_index >= 0, this is an overlay string from
1935 pos. */ 1941 pos. */
1936 Lisp_Object string; 1942 Lisp_Object string;
1937 1943
1944 /* If non-nil, we are processing a string that came
1945 from a `display' property given by an overlay. */
1946 Lisp_Object from_overlay;
1947
1938 /* Stack of saved values. New entries are pushed when we begin to 1948 /* Stack of saved values. New entries are pushed when we begin to
1939 process an overlay string or a string from a `glyph' property. 1949 process an overlay string or a string from a `glyph' property.
1940 Entries are popped when we return to deliver display elements 1950 Entries are popped when we return to deliver display elements
@@ -1970,6 +1980,7 @@ struct it
1970 /* current text and display positions. */ 1980 /* current text and display positions. */
1971 struct text_pos position; 1981 struct text_pos position;
1972 struct display_pos current; 1982 struct display_pos current;
1983 Lisp_Object from_overlay;
1973 enum glyph_row_area area; 1984 enum glyph_row_area area;
1974 enum it_method method; 1985 enum it_method method;
1975 unsigned multibyte_p : 1; 1986 unsigned multibyte_p : 1;
@@ -1986,13 +1997,6 @@ struct it
1986 /* Stack pointer. */ 1997 /* Stack pointer. */
1987 int sp; 1998 int sp;
1988 1999
1989 /* Setting of buffer-local variable selective-display-ellipsis. */
1990 unsigned selective_display_ellipsis_p : 1;
1991
1992 /* 1 means control characters are translated into the form `^C'
1993 where the `^' can be replaced by a display table entry. */
1994 unsigned ctl_arrow_p : 1;
1995
1996 /* -1 means selective display hides everything between a \r and the 2000 /* -1 means selective display hides everything between a \r and the
1997 next newline; > 0 means hide lines indented more than that value. */ 2001 next newline; > 0 means hide lines indented more than that value. */
1998 int selective; 2002 int selective;
@@ -2004,6 +2008,16 @@ struct it
2004 /* Face to use. */ 2008 /* Face to use. */
2005 int face_id; 2009 int face_id;
2006 2010
2011 /* Setting of buffer-local variable selective-display-ellipsis. */
2012 unsigned selective_display_ellipsis_p : 1;
2013
2014 /* 1 means control characters are translated into the form `^C'
2015 where the `^' can be replaced by a display table entry. */
2016 unsigned ctl_arrow_p : 1;
2017
2018 /* 1 means lines are truncated. */
2019 unsigned truncate_lines_p : 1;
2020
2007 /* Non-zero means that the current face has a box. */ 2021 /* Non-zero means that the current face has a box. */
2008 unsigned face_box_p : 1; 2022 unsigned face_box_p : 1;
2009 2023
@@ -2083,9 +2097,6 @@ struct it
2083 Lisp_Object object; 2097 Lisp_Object object;
2084 struct text_pos position; 2098 struct text_pos position;
2085 2099
2086 /* 1 means lines are truncated. */
2087 unsigned truncate_lines_p : 1;
2088
2089 /* Number of columns per \t. */ 2100 /* Number of columns per \t. */
2090 short tab_width; 2101 short tab_width;
2091 2102
@@ -2866,6 +2877,9 @@ void free_frame_faces P_ ((struct frame *));
2866void recompute_basic_faces P_ ((struct frame *)); 2877void recompute_basic_faces P_ ((struct frame *));
2867int face_at_buffer_position P_ ((struct window *, int, int, int, int *, 2878int face_at_buffer_position P_ ((struct window *, int, int, int, int *,
2868 int, int)); 2879 int, int));
2880int face_for_overlay_string P_ ((struct window *, int, int,
2881 int, int *,
2882 int, int, Lisp_Object));
2869int face_at_string_position P_ ((struct window *, Lisp_Object, int, int, int, 2883int face_at_string_position P_ ((struct window *, Lisp_Object, int, int, int,
2870 int, int *, enum face_id, int)); 2884 int, int *, enum face_id, int));
2871int merge_faces P_ ((struct frame *, Lisp_Object, int, int)); 2885int merge_faces P_ ((struct frame *, Lisp_Object, int, int));
diff --git a/src/dispnew.c b/src/dispnew.c
index fcf54652115..973630609b6 100644
--- a/src/dispnew.c
+++ b/src/dispnew.c
@@ -7112,7 +7112,7 @@ The value is nil if the selected frame is on a text-only-terminal. */);
7112 7112
7113 DEFVAR_LISP ("window-system-version", &Vwindow_system_version, 7113 DEFVAR_LISP ("window-system-version", &Vwindow_system_version,
7114 doc: /* The version number of the window system in use. 7114 doc: /* The version number of the window system in use.
7115For X windows, this is 10 or 11. */); 7115For X windows, this is 11. */);
7116 7116
7117 DEFVAR_BOOL ("cursor-in-echo-area", &cursor_in_echo_area, 7117 DEFVAR_BOOL ("cursor-in-echo-area", &cursor_in_echo_area,
7118 doc: /* Non-nil means put cursor in minibuffer, at end of any message there. */); 7118 doc: /* Non-nil means put cursor in minibuffer, at end of any message there. */);
diff --git a/src/emacs.c b/src/emacs.c
index db442c219a4..c7fd234c6ef 100644
--- a/src/emacs.c
+++ b/src/emacs.c
@@ -1569,7 +1569,6 @@ main (argc, argv
1569 syms_of_fns (); 1569 syms_of_fns ();
1570 syms_of_floatfns (); 1570 syms_of_floatfns ();
1571 1571
1572 syms_of_abbrev ();
1573 syms_of_buffer (); 1572 syms_of_buffer ();
1574 syms_of_bytecode (); 1573 syms_of_bytecode ();
1575 syms_of_callint (); 1574 syms_of_callint ();
@@ -2542,8 +2541,9 @@ The value is nil if that directory's name is not known. */);
2542 2541
2543 DEFVAR_LISP ("installation-directory", &Vinstallation_directory, 2542 DEFVAR_LISP ("installation-directory", &Vinstallation_directory,
2544 doc: /* A directory within which to look for the `lib-src' and `etc' directories. 2543 doc: /* A directory within which to look for the `lib-src' and `etc' directories.
2545This is non-nil when we can't find those directories in their standard installed 2544This is non-nil when we can't find those directories in their standard
2546locations, but we can find them near where the Emacs executable was found. */); 2545installed locations, but we can find them near where the Emacs executable
2546was found. */);
2547 Vinstallation_directory = Qnil; 2547 Vinstallation_directory = Qnil;
2548 2548
2549 DEFVAR_LISP ("system-messages-locale", &Vsystem_messages_locale, 2549 DEFVAR_LISP ("system-messages-locale", &Vsystem_messages_locale,
diff --git a/src/frame.c b/src/frame.c
index eecc6878c55..759e21c25c8 100644
--- a/src/frame.c
+++ b/src/frame.c
@@ -523,17 +523,7 @@ make_initial_frame (void)
523 struct terminal *terminal; 523 struct terminal *terminal;
524 Lisp_Object frame; 524 Lisp_Object frame;
525 525
526#ifdef MULTI_KBOARD 526 eassert (initial_kboard);
527 /* Create the initial keyboard. */
528 if (!initial_kboard)
529 {
530 initial_kboard = (KBOARD *) xmalloc (sizeof (KBOARD));
531 init_kboard (initial_kboard);
532 /* Leave Vwindow_system at its `t' default for now. */
533 initial_kboard->next_kboard = all_kboards;
534 all_kboards = initial_kboard;
535 }
536#endif
537 527
538 /* The first call must initialize Vframe_list. */ 528 /* The first call must initialize Vframe_list. */
539 if (! (NILP (Vframe_list) || CONSP (Vframe_list))) 529 if (! (NILP (Vframe_list) || CONSP (Vframe_list)))
diff --git a/src/gtkutil.c b/src/gtkutil.c
index 81ef09b7ec4..e36e192c65e 100644
--- a/src/gtkutil.c
+++ b/src/gtkutil.c
@@ -3460,6 +3460,7 @@ xg_tool_bar_menu_proxy (toolitem, user_data)
3460 GtkImage *wimage = GTK_IMAGE (gtk_bin_get_child (GTK_BIN (wbutton))); 3460 GtkImage *wimage = GTK_IMAGE (gtk_bin_get_child (GTK_BIN (wbutton)));
3461 GtkSettings *settings = gtk_widget_get_settings (GTK_WIDGET (wbutton)); 3461 GtkSettings *settings = gtk_widget_get_settings (GTK_WIDGET (wbutton));
3462 GtkImageType store_type = gtk_image_get_storage_type (wimage); 3462 GtkImageType store_type = gtk_image_get_storage_type (wimage);
3463
3463 if (store_type == GTK_IMAGE_STOCK) 3464 if (store_type == GTK_IMAGE_STOCK)
3464 { 3465 {
3465 gchar *stock_id; 3466 gchar *stock_id;
@@ -3489,6 +3490,25 @@ xg_tool_bar_menu_proxy (toolitem, user_data)
3489 3490
3490 wmenuimage = gtk_image_new_from_pixbuf (dest_pixbuf); 3491 wmenuimage = gtk_image_new_from_pixbuf (dest_pixbuf);
3491 } 3492 }
3493 else
3494 {
3495 fprintf (stderr, "internal error: GTK_IMAGE_PIXBUF failed\n");
3496 abort ();
3497 }
3498 }
3499 else if (store_type == GTK_IMAGE_ICON_NAME)
3500 {
3501 const gchar *icon_name;
3502 GtkIconSize icon_size;
3503
3504 gtk_image_get_icon_name (wimage, &icon_name, &icon_size);
3505 wmenuimage = gtk_image_new_from_icon_name (icon_name,
3506 GTK_ICON_SIZE_MENU);
3507 }
3508 else
3509 {
3510 fprintf (stderr, "internal error: store_type is %d\n", store_type);
3511 abort ();
3492 } 3512 }
3493 } 3513 }
3494 if (wmenuimage) 3514 if (wmenuimage)
diff --git a/src/image.c b/src/image.c
index 33d5e1a9b2d..91be3f4b57e 100644
--- a/src/image.c
+++ b/src/image.c
@@ -733,9 +733,9 @@ Lisp_Object Qxbm;
733/* Keywords. */ 733/* Keywords. */
734 734
735extern Lisp_Object QCwidth, QCheight, QCforeground, QCbackground, QCfile; 735extern Lisp_Object QCwidth, QCheight, QCforeground, QCbackground, QCfile;
736extern Lisp_Object QCdata, QCtype, Qcount; 736extern Lisp_Object QCdata, QCtype;
737extern Lisp_Object Qcenter; 737extern Lisp_Object Qcenter;
738Lisp_Object QCascent, QCmargin, QCrelief; 738Lisp_Object QCascent, QCmargin, QCrelief, Qcount;
739Lisp_Object QCconversion, QCcolor_symbols, QCheuristic_mask; 739Lisp_Object QCconversion, QCcolor_symbols, QCheuristic_mask;
740Lisp_Object QCindex, QCmatrix, QCcolor_adjustment, QCmask; 740Lisp_Object QCindex, QCmatrix, QCcolor_adjustment, QCmask;
741 741
@@ -9089,6 +9089,9 @@ non-numeric, there is no explicit limit on the size of images. */);
9089 define_image_type (&xbm_type, 1); 9089 define_image_type (&xbm_type, 1);
9090 define_image_type (&pbm_type, 1); 9090 define_image_type (&pbm_type, 1);
9091 9091
9092 Qcount = intern ("count");
9093 staticpro (&Qcount);
9094
9092 QCascent = intern (":ascent"); 9095 QCascent = intern (":ascent");
9093 staticpro (&QCascent); 9096 staticpro (&QCascent);
9094 QCmargin = intern (":margin"); 9097 QCmargin = intern (":margin");
diff --git a/src/keyboard.c b/src/keyboard.c
index 426ea34e3a4..0678fcdb4de 100644
--- a/src/keyboard.c
+++ b/src/keyboard.c
@@ -4017,9 +4017,6 @@ discard_mouse_events ()
4017 if (sp->kind == MOUSE_CLICK_EVENT 4017 if (sp->kind == MOUSE_CLICK_EVENT
4018 || sp->kind == WHEEL_EVENT 4018 || sp->kind == WHEEL_EVENT
4019 || sp->kind == HORIZ_WHEEL_EVENT 4019 || sp->kind == HORIZ_WHEEL_EVENT
4020#ifdef WINDOWSNT
4021 || sp->kind == W32_SCROLL_BAR_CLICK_EVENT
4022#endif
4023#ifdef HAVE_GPM 4020#ifdef HAVE_GPM
4024 || sp->kind == GPM_CLICK_EVENT 4021 || sp->kind == GPM_CLICK_EVENT
4025#endif 4022#endif
@@ -4913,13 +4910,17 @@ char *lispy_function_keys[] =
4913 0, /* VK_MENU 0x12 */ 4910 0, /* VK_MENU 0x12 */
4914 "pause", /* VK_PAUSE 0x13 */ 4911 "pause", /* VK_PAUSE 0x13 */
4915 "capslock", /* VK_CAPITAL 0x14 */ 4912 "capslock", /* VK_CAPITAL 0x14 */
4916 4913 "kana", /* VK_KANA/VK_HANGUL 0x15 */
4917 0, 0, 0, 0, 0, 0, /* 0x15 .. 0x1A */ 4914 0, /* 0x16 */
4918 4915 "junja", /* VK_JUNJA 0x17 */
4916 "final", /* VK_FINAL 0x18 */
4917 "kanji", /* VK_KANJI/VK_HANJA 0x19 */
4918 0, /* 0x1A */
4919 "escape", /* VK_ESCAPE 0x1B */ 4919 "escape", /* VK_ESCAPE 0x1B */
4920 4920 "convert", /* VK_CONVERT 0x1C */
4921 0, 0, 0, 0, /* 0x1C .. 0x1F */ 4921 "non-convert", /* VK_NONCONVERT 0x1D */
4922 4922 "accept", /* VK_ACCEPT 0x1E */
4923 "mode-change", /* VK_MODECHANGE 0x1F */
4923 0, /* VK_SPACE 0x20 */ 4924 0, /* VK_SPACE 0x20 */
4924 "prior", /* VK_PRIOR 0x21 */ 4925 "prior", /* VK_PRIOR 0x21 */
4925 "next", /* VK_NEXT 0x22 */ 4926 "next", /* VK_NEXT 0x22 */
@@ -4952,9 +4953,8 @@ char *lispy_function_keys[] =
4952 "lwindow", /* VK_LWIN 0x5B */ 4953 "lwindow", /* VK_LWIN 0x5B */
4953 "rwindow", /* VK_RWIN 0x5C */ 4954 "rwindow", /* VK_RWIN 0x5C */
4954 "apps", /* VK_APPS 0x5D */ 4955 "apps", /* VK_APPS 0x5D */
4955 4956 0, /* 0x5E */
4956 0, 0, /* 0x5E .. 0x5F */ 4957 "sleep",
4957
4958 "kp-0", /* VK_NUMPAD0 0x60 */ 4958 "kp-0", /* VK_NUMPAD0 0x60 */
4959 "kp-1", /* VK_NUMPAD1 0x61 */ 4959 "kp-1", /* VK_NUMPAD1 0x61 */
4960 "kp-2", /* VK_NUMPAD2 0x62 */ 4960 "kp-2", /* VK_NUMPAD2 0x62 */
@@ -5001,7 +5001,9 @@ char *lispy_function_keys[] =
5001 5001
5002 "kp-numlock", /* VK_NUMLOCK 0x90 */ 5002 "kp-numlock", /* VK_NUMLOCK 0x90 */
5003 "scroll", /* VK_SCROLL 0x91 */ 5003 "scroll", /* VK_SCROLL 0x91 */
5004 5004 /* Not sure where the following block comes from.
5005 Windows headers have NEC and Fujitsu specific keys in
5006 this block, but nothing generic. */
5005 "kp-space", /* VK_NUMPAD_CLEAR 0x92 */ 5007 "kp-space", /* VK_NUMPAD_CLEAR 0x92 */
5006 "kp-enter", /* VK_NUMPAD_ENTER 0x93 */ 5008 "kp-enter", /* VK_NUMPAD_ENTER 0x93 */
5007 "kp-prior", /* VK_NUMPAD_PRIOR 0x94 */ 5009 "kp-prior", /* VK_NUMPAD_PRIOR 0x94 */
@@ -5021,19 +5023,47 @@ char *lispy_function_keys[] =
5021 * VK_L* & VK_R* - left and right Alt, Ctrl and Shift virtual keys. 5023 * VK_L* & VK_R* - left and right Alt, Ctrl and Shift virtual keys.
5022 * Used only as parameters to GetAsyncKeyState and GetKeyState. 5024 * Used only as parameters to GetAsyncKeyState and GetKeyState.
5023 * No other API or message will distinguish left and right keys this way. 5025 * No other API or message will distinguish left and right keys this way.
5026 * 0xA0 .. 0xA5
5024 */ 5027 */
5025 /* 0xA0 .. 0xEF */ 5028 0, 0, 0, 0, 0, 0,
5026 5029
5027 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5030 /* Multimedia keys. These are handled as WM_APPCOMMAND, which allows us
5028 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5031 to enable them selectively, and gives access to a few more functions.
5029 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5032 See lispy_multimedia_keys below. */
5030 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5033 0, 0, 0, 0, 0, 0, 0, /* 0xA6 .. 0xAC Browser */
5031 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5034 0, 0, 0, /* 0xAD .. 0xAF Volume */
5035 0, 0, 0, 0, /* 0xB0 .. 0xB3 Media */
5036 0, 0, 0, 0, /* 0xB4 .. 0xB7 Apps */
5032 5037
5033 /* 0xF0 .. 0xF5 */ 5038 /* 0xB8 .. 0xC0 "OEM" keys - all seem to be punctuation. */
5039 0, 0, 0, 0, 0, 0, 0, 0, 0,
5034 5040
5035 0, 0, 0, 0, 0, 0, 5041 /* 0xC1 - 0xDA unallocated, 0xDB-0xDF more OEM keys */
5042 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5043 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5036 5044
5045 0, /* 0xE0 */
5046 "ax", /* VK_OEM_AX 0xE1 */
5047 0, /* VK_OEM_102 0xE2 */
5048 "ico-help", /* VK_ICO_HELP 0xE3 */
5049 "ico-00", /* VK_ICO_00 0xE4 */
5050 0, /* VK_PROCESSKEY 0xE5 */
5051 "ico-clear", /* VK_ICO_CLEAR 0xE6 */
5052 "packet", /* VK_PACKET 0xE7 */
5053 0, /* 0xE8 */
5054 "reset", /* VK_OEM_RESET 0xE9 */
5055 "jump", /* VK_OEM_JUMP 0xEA */
5056 "oem-pa1", /* VK_OEM_PA1 0xEB */
5057 "oem-pa2", /* VK_OEM_PA2 0xEC */
5058 "oem-pa3", /* VK_OEM_PA3 0xED */
5059 "wsctrl", /* VK_OEM_WSCTRL 0xEE */
5060 "cusel", /* VK_OEM_CUSEL 0xEF */
5061 "oem-attn", /* VK_OEM_ATTN 0xF0 */
5062 "finish", /* VK_OEM_FINISH 0xF1 */
5063 "copy", /* VK_OEM_COPY 0xF2 */
5064 "auto", /* VK_OEM_AUTO 0xF3 */
5065 "enlw", /* VK_OEM_ENLW 0xF4 */
5066 "backtab", /* VK_OEM_BACKTAB 0xF5 */
5037 "attn", /* VK_ATTN 0xF6 */ 5067 "attn", /* VK_ATTN 0xF6 */
5038 "crsel", /* VK_CRSEL 0xF7 */ 5068 "crsel", /* VK_CRSEL 0xF7 */
5039 "exsel", /* VK_EXSEL 0xF8 */ 5069 "exsel", /* VK_EXSEL 0xF8 */
@@ -5046,6 +5076,65 @@ char *lispy_function_keys[] =
5046 0 /* 0xFF */ 5076 0 /* 0xFF */
5047 }; 5077 };
5048 5078
5079/* Some of these duplicate the "Media keys" on newer keyboards,
5080 but they are delivered to the application in a different way. */
5081static char *lispy_multimedia_keys[] =
5082 {
5083 0,
5084 "browser-back",
5085 "browser-forward",
5086 "browser-refresh",
5087 "browser-stop",
5088 "browser-search",
5089 "browser-favorites",
5090 "browser-home",
5091 "volume-mute",
5092 "volume-down",
5093 "volume-up",
5094 "media-next",
5095 "media-previous",
5096 "media-stop",
5097 "media-play-pause",
5098 "mail",
5099 "media-select",
5100 "app-1",
5101 "app-2",
5102 "bass-down",
5103 "bass-boost",
5104 "bass-up",
5105 "treble-down",
5106 "treble-up",
5107 "mic-volume-mute",
5108 "mic-volume-down",
5109 "mic-volume-up",
5110 "help",
5111 "find",
5112 "new",
5113 "open",
5114 "close",
5115 "save",
5116 "print",
5117 "undo",
5118 "redo",
5119 "copy",
5120 "cut",
5121 "paste",
5122 "mail-reply",
5123 "mail-forward",
5124 "mail-send",
5125 "spell-check",
5126 "toggle-dictate-command",
5127 "mic-toggle",
5128 "correction-list",
5129 "media-play",
5130 "media-pause",
5131 "media-record",
5132 "media-fast-forward",
5133 "media-rewind",
5134 "media-channel-up",
5135 "media-channel-down"
5136 };
5137
5049#else /* not HAVE_NTGUI */ 5138#else /* not HAVE_NTGUI */
5050 5139
5051/* This should be dealt with in XTread_socket now, and that doesn't 5140/* This should be dealt with in XTread_socket now, and that doesn't
@@ -5563,6 +5652,21 @@ make_lispy_event (event)
5563 (sizeof (lispy_function_keys) 5652 (sizeof (lispy_function_keys)
5564 / sizeof (lispy_function_keys[0]))); 5653 / sizeof (lispy_function_keys[0])));
5565 5654
5655#ifdef WINDOWSNT
5656 case MULTIMEDIA_KEY_EVENT:
5657 if (event->code < (sizeof (lispy_multimedia_keys)
5658 / sizeof (lispy_multimedia_keys[0]))
5659 && event->code > 0 && lispy_multimedia_keys[event->code])
5660 {
5661 return modify_event_symbol (event->code, event->modifiers,
5662 Qfunction_key, Qnil,
5663 lispy_multimedia_keys, &func_key_syms,
5664 (sizeof (lispy_multimedia_keys)
5665 / sizeof (lispy_multimedia_keys[0])));
5666 }
5667 return Qnil;
5668#endif
5669
5566#ifdef HAVE_MOUSE 5670#ifdef HAVE_MOUSE
5567 /* A mouse click. Figure out where it is, decide whether it's 5671 /* A mouse click. Figure out where it is, decide whether it's
5568 a press, click or drag, and build the appropriate structure. */ 5672 a press, click or drag, and build the appropriate structure. */
@@ -6003,52 +6107,6 @@ make_lispy_event (event)
6003 6107
6004#endif /* USE_TOOLKIT_SCROLL_BARS */ 6108#endif /* USE_TOOLKIT_SCROLL_BARS */
6005 6109
6006#ifdef WINDOWSNT
6007 case W32_SCROLL_BAR_CLICK_EVENT:
6008 {
6009 int button = event->code;
6010 int is_double;
6011 Lisp_Object position;
6012 Lisp_Object *start_pos_ptr;
6013 Lisp_Object start_pos;
6014
6015 {
6016 Lisp_Object window;
6017 Lisp_Object portion_whole;
6018 Lisp_Object part;
6019
6020 window = event->frame_or_window;
6021 portion_whole = Fcons (event->x, event->y);
6022 part = *scroll_bar_parts[(int) event->part];
6023
6024 position
6025 = Fcons (window,
6026 Fcons (Qvertical_scroll_bar,
6027 Fcons (portion_whole,
6028 Fcons (make_number (event->timestamp),
6029 Fcons (part, Qnil)))));
6030 }
6031
6032 /* Always treat W32 scroll bar events as clicks. */
6033 event->modifiers |= click_modifier;
6034
6035 {
6036 /* Get the symbol we should use for the mouse click. */
6037 Lisp_Object head;
6038
6039 head = modify_event_symbol (button,
6040 event->modifiers,
6041 Qmouse_click,
6042 Vlispy_mouse_stem,
6043 NULL, &mouse_syms,
6044 XVECTOR (mouse_syms)->size);
6045 return Fcons (head,
6046 Fcons (position,
6047 Qnil));
6048 }
6049 }
6050#endif /* WINDOWSNT */
6051
6052 case DRAG_N_DROP_EVENT: 6110 case DRAG_N_DROP_EVENT:
6053 { 6111 {
6054 FRAME_PTR f; 6112 FRAME_PTR f;
@@ -7097,7 +7155,7 @@ tty_read_avail_input (struct terminal *terminal,
7097 int nread = 0; 7155 int nread = 0;
7098 7156
7099 if (!terminal->name) /* Don't read from a dead terminal. */ 7157 if (!terminal->name) /* Don't read from a dead terminal. */
7100 return; 7158 return 0;
7101 7159
7102 if (terminal->type != output_termcap) 7160 if (terminal->type != output_termcap)
7103 abort (); 7161 abort ();
@@ -11571,9 +11629,12 @@ init_keyboard ()
11571#ifdef MULTI_KBOARD 11629#ifdef MULTI_KBOARD
11572 current_kboard = initial_kboard; 11630 current_kboard = initial_kboard;
11573#endif 11631#endif
11632 /* Re-initialize the keyboard again. */
11574 wipe_kboard (current_kboard); 11633 wipe_kboard (current_kboard);
11575 init_kboard (current_kboard); 11634 init_kboard (current_kboard);
11576 /* Leave Vwindow_system at its `t' default for now. */ 11635 /* A value of nil for Vwindow_system normally means a tty, but we also use
11636 it for the initial terminal since there is no window system there. */
11637 current_kboard->Vwindow_system = Qnil;
11577 11638
11578 if (!noninteractive) 11639 if (!noninteractive)
11579 { 11640 {
@@ -12399,6 +12460,15 @@ and the Lisp function within which the error was signaled. */);
12399Help functions bind this to allow help on disabled menu items 12460Help functions bind this to allow help on disabled menu items
12400and tool-bar buttons. */); 12461and tool-bar buttons. */);
12401 Venable_disabled_menus_and_buttons = Qnil; 12462 Venable_disabled_menus_and_buttons = Qnil;
12463
12464#ifdef MULTI_KBOARD
12465 /* Create the initial keyboard. */
12466 initial_kboard = (KBOARD *) xmalloc (sizeof (KBOARD));
12467 init_kboard (initial_kboard);
12468 /* Vwindow_system is left at t for now. */
12469 initial_kboard->next_kboard = all_kboards;
12470 all_kboards = initial_kboard;
12471#endif
12402} 12472}
12403 12473
12404void 12474void
diff --git a/src/lisp.h b/src/lisp.h
index 62c629bd4a8..f4b93ff9dce 100644
--- a/src/lisp.h
+++ b/src/lisp.h
@@ -84,6 +84,20 @@ extern void die P_((const char *, const char *, int)) NO_RETURN;
84 84
85#ifdef ENABLE_CHECKING 85#ifdef ENABLE_CHECKING
86 86
87/* The suppress_checking variable is initialized to 0 in alloc.c. Set
88 it to 1 using a debugger to temporarily disable aborting on
89 detected internal inconsistencies or error conditions.
90
91 Testing suppress_checking after the supplied condition ensures that
92 the side effects produced by CHECK will be consistent, independent
93 of whether ENABLE_CHECKING is defined, or whether the checks are
94 suppressed at run time.
95
96 In some cases, a good compiler may be able to optimize away the
97 CHECK macro altogether, e.g., if XSTRING (x) uses CHECK to test
98 STRINGP (x), but a particular use of XSTRING is invoked only after
99 testing that STRINGP (x) is true, making the test redundant. */
100
87#define CHECK(check,msg) (((check) || suppress_checking \ 101#define CHECK(check,msg) (((check) || suppress_checking \
88 ? (void) 0 \ 102 ? (void) 0 \
89 : die ((msg), __FILE__, __LINE__)), \ 103 : die ((msg), __FILE__, __LINE__)), \
diff --git a/src/m/ibmps2-aix.h b/src/m/ibmps2-aix.h
index 8c975b81bb9..045bcf2c294 100644
--- a/src/m/ibmps2-aix.h
+++ b/src/m/ibmps2-aix.h
@@ -213,7 +213,6 @@ so disable it for them. */
213#undef NOMULTIPLEJOBS 213#undef NOMULTIPLEJOBS
214#undef BROKEN_TIOCGETC 214#undef BROKEN_TIOCGETC
215#undef BROKEN_TIOCGWINSZ 215#undef BROKEN_TIOCGWINSZ
216#undef LIBX10_SYSTEM
217#undef LIBX11_SYSTEM 216#undef LIBX11_SYSTEM
218#undef LIB_X11_LIB 217#undef LIB_X11_LIB
219#endif 218#endif
diff --git a/src/m/is386.h b/src/m/is386.h
index 02fe12d93e5..5041db9a6c8 100644
--- a/src/m/is386.h
+++ b/src/m/is386.h
@@ -21,7 +21,6 @@ Intel 386 (-machine=intel386 or -machine=is386.h)
21 It may also be correct for Microport systems. 21 It may also be correct for Microport systems.
22NOTE-END */ 22NOTE-END */
23 23
24#define LIBX10_MACHINE -lnsl_s
25#define LIBX11_MACHINE -lnsl_s 24#define LIBX11_MACHINE -lnsl_s
26 25
27#define LIBS_DEBUG -lg 26#define LIBS_DEBUG -lg
diff --git a/src/m/sparc.h b/src/m/sparc.h
index 8df81ee91aa..bf122d857cc 100644
--- a/src/m/sparc.h
+++ b/src/m/sparc.h
@@ -64,18 +64,6 @@ NOTE-END */
64 64
65#define SEGMENT_MASK (SEGSIZ - 1) 65#define SEGMENT_MASK (SEGSIZ - 1)
66 66
67/* Arrange to link with sun windows, if requested. */
68/* For details on emacstool and sunfns, see etc/SUN-SUPPORT */
69/* These programs require Sun UNIX 4.2 Release 3.2 or greater */
70
71#ifdef HAVE_SUN_WINDOWS
72#define OTHER_FILES ${etcdir}emacstool
73#define LIBS_MACHINE -lsuntool -lsunwindow -lpixrect
74#define OBJECTS_MACHINE sunfns.o
75#define SYMS_MACHINE syms_of_sunfns ()
76#define PURESIZE 130000
77#endif
78
79#if !defined (__NetBSD__) && !defined (__linux__) && !defined (__OpenBSD__) 67#if !defined (__NetBSD__) && !defined (__linux__) && !defined (__OpenBSD__)
80/* This really belongs in s/sun.h. */ 68/* This really belongs in s/sun.h. */
81 69
diff --git a/src/m/sun2.h b/src/m/sun2.h
index e764ded3ce7..a872bf6f3bb 100644
--- a/src/m/sun2.h
+++ b/src/m/sun2.h
@@ -85,17 +85,5 @@ NOTE-END */
85 85
86#define SEGMENT_MASK (SEGSIZ - 1) 86#define SEGMENT_MASK (SEGSIZ - 1)
87 87
88/* Arrange to link with sun windows, if requested. */
89/* For details on emacstool and sunfns, see etc/SUN-SUPPORT */
90/* These programs require Sun UNIX 4.2 Release 3.2 or greater */
91
92#ifdef HAVE_SUN_WINDOWS
93#define OTHER_FILES ${libsrc}emacstool
94#define LIBS_MACHINE -lsuntool -lsunwindow -lpixrect
95#define OBJECTS_MACHINE sunfns.o
96#define SYMS_MACHINE syms_of_sunfns ()
97#define PURESIZE 132000
98#endif
99
100/* arch-tag: 543c3570-74ca-4099-aa47-db7c7b691c8e 88/* arch-tag: 543c3570-74ca-4099-aa47-db7c7b691c8e
101 (do not change this comment) */ 89 (do not change this comment) */
diff --git a/src/m/sun386.h b/src/m/sun386.h
index a3eedbe755e..ed98960c809 100644
--- a/src/m/sun386.h
+++ b/src/m/sun386.h
@@ -56,18 +56,6 @@ NOTE-END */
56 56
57#define LIBS_TERMCAP -ltermcap 57#define LIBS_TERMCAP -ltermcap
58 58
59/* Arrange to link with sun windows, if requested. */
60/* For details on emacstool and sunfns, see etc/SUN-SUPPORT */
61/* These programs require Sun UNIX 4.2 Release 3.2 or greater */
62
63#ifdef HAVE_SUN_WINDOWS
64#define OTHER_FILES ${etcdir}emacstool
65#define LIBS_MACHINE -lsuntool -lsunwindow -lpixrect
66#define OBJECTS_MACHINE sunfns.o
67#define SYMS_MACHINE syms_of_sunfns ()
68#define PURESIZE 132000
69#endif
70
71/* Roadrunner uses 'COFF' format */ 59/* Roadrunner uses 'COFF' format */
72#define COFF 60#define COFF
73 61
diff --git a/src/macfns.c b/src/macfns.c
index 0f40127637a..2b8c24db3b3 100644
--- a/src/macfns.c
+++ b/src/macfns.c
@@ -4644,8 +4644,8 @@ ID is specified by either an integer or a float. */)
4644 Lisp_Object result; 4644 Lisp_Object result;
4645 4645
4646 check_mac (); 4646 check_mac ();
4647 CHECK_NUMBER_OR_FLOAT(id); 4647 CHECK_NUMBER_OR_FLOAT (id);
4648 font_id = NUMBERP (id) ? XINT (id) : (ATSUFontID) XFLOAT (id); 4648 font_id = INTEGERP (id) ? XINT (id) : XFLOAT_DATA (id);
4649 BLOCK_INPUT; 4649 BLOCK_INPUT;
4650 result = mac_atsu_font_face_attributes (font_id); 4650 result = mac_atsu_font_face_attributes (font_id);
4651 UNBLOCK_INPUT; 4651 UNBLOCK_INPUT;
diff --git a/src/macterm.c b/src/macterm.c
index 7f837d2a20d..f107f081421 100644
--- a/src/macterm.c
+++ b/src/macterm.c
@@ -3791,7 +3791,6 @@ x_draw_stretch_glyph_string (s)
3791 struct glyph_string *s; 3791 struct glyph_string *s;
3792{ 3792{
3793 xassert (s->first_glyph->type == STRETCH_GLYPH); 3793 xassert (s->first_glyph->type == STRETCH_GLYPH);
3794 s->stippled_p = s->face->stipple != 0;
3795 3794
3796 if (s->hl == DRAW_CURSOR 3795 if (s->hl == DRAW_CURSOR
3797 && !x_stretch_cursor_p) 3796 && !x_stretch_cursor_p)
diff --git a/src/makefile.w32-in b/src/makefile.w32-in
index 296c10c4208..7c2c344a2d4 100644
--- a/src/makefile.w32-in
+++ b/src/makefile.w32-in
@@ -56,8 +56,7 @@ FULL_LINK_FLAGS = $(LINK_FLAGS) $(TEMACS_EXTRA_LINK)
56# 56#
57OBJ0 = $(BLD)/emacs.$(O) 57OBJ0 = $(BLD)/emacs.$(O)
58 58
59OBJ1 = $(BLD)/abbrev.$(O) \ 59OBJ1 = $(BLD)/alloc.$(O) \
60 $(BLD)/alloc.$(O) \
61 $(BLD)/atimer.$(O) \ 60 $(BLD)/atimer.$(O) \
62 $(BLD)/buffer.$(O) \ 61 $(BLD)/buffer.$(O) \
63 $(BLD)/bytecode.$(O) \ 62 $(BLD)/bytecode.$(O) \
diff --git a/src/puresize.h b/src/puresize.h
index f5b675055b8..bf4971a0b5f 100644
--- a/src/puresize.h
+++ b/src/puresize.h
@@ -43,7 +43,7 @@ Boston, MA 02110-1301, USA. */
43#endif 43#endif
44 44
45#ifndef BASE_PURESIZE 45#ifndef BASE_PURESIZE
46#define BASE_PURESIZE (1170000 + SYSTEM_PURESIZE_EXTRA + SITELOAD_PURESIZE_EXTRA) 46#define BASE_PURESIZE (1180000 + SYSTEM_PURESIZE_EXTRA + SITELOAD_PURESIZE_EXTRA)
47#endif 47#endif
48 48
49/* Increase BASE_PURESIZE by a ratio depending on the machine's word size. */ 49/* Increase BASE_PURESIZE by a ratio depending on the machine's word size. */
diff --git a/src/s/ms-w32.h b/src/s/ms-w32.h
index 56a09f9b315..2881fa1eb75 100644
--- a/src/s/ms-w32.h
+++ b/src/s/ms-w32.h
@@ -292,6 +292,7 @@ Boston, MA 02110-1301, USA. */
292#define HAVE_INET_SOCKETS 1 292#define HAVE_INET_SOCKETS 1
293 293
294#undef HAVE_AIX_SMT_EXP 294#undef HAVE_AIX_SMT_EXP
295#define USE_TOOLKIT_SCROLL_BARS 1
295 296
296/* Define if you have the ANSI `strerror' function. 297/* Define if you have the ANSI `strerror' function.
297 Otherwise you must have the variable `char *sys_errlist[]'. */ 298 Otherwise you must have the variable `char *sys_errlist[]'. */
diff --git a/src/s/msdos.h b/src/s/msdos.h
index 10246513811..297fda45baa 100644
--- a/src/s/msdos.h
+++ b/src/s/msdos.h
@@ -263,7 +263,6 @@ You lose; /* Emacs for DOS must be compiled with DJGPP */
263#ifdef HAVE_X_WINDOWS 263#ifdef HAVE_X_WINDOWS
264/* We need a little extra space, see ../../lisp/loadup.el */ 264/* We need a little extra space, see ../../lisp/loadup.el */
265#define SYSTEM_PURESIZE_EXTRA 15000 265#define SYSTEM_PURESIZE_EXTRA 15000
266#define HAVE_X11R5
267#define LIBX11_SYSTEM -lxext -lsys 266#define LIBX11_SYSTEM -lxext -lsys
268#else 267#else
269/* We need a little extra space, see ../../lisp/loadup.el */ 268/* We need a little extra space, see ../../lisp/loadup.el */
diff --git a/src/s/ptx.h b/src/s/ptx.h
index d192bd6098a..4170e5036c9 100644
--- a/src/s/ptx.h
+++ b/src/s/ptx.h
@@ -29,7 +29,6 @@ Boston, MA 02110-1301, USA. */
29 29
30/* Undo these defines because they are incorrect or need to be changed. */ 30/* Undo these defines because they are incorrect or need to be changed. */
31#undef LIB_X11_LIB 31#undef LIB_X11_LIB
32#undef LIBX10_SYSTEM
33#undef LIBX11_SYSTEM 32#undef LIBX11_SYSTEM
34#undef USG_SHARED_LIBRARIES 33#undef USG_SHARED_LIBRARIES
35 34
diff --git a/src/s/sco4.h b/src/s/sco4.h
index 4912b275aaa..d16bcbead49 100644
--- a/src/s/sco4.h
+++ b/src/s/sco4.h
@@ -100,11 +100,9 @@ Boston, MA 02110-1301, USA. */
100#define LIBS_SYSTEM -lPW 100#define LIBS_SYSTEM -lPW
101#endif 101#endif
102 102
103#ifdef HAVE_X11R5
104/* configure can't get this right linking fails unless -lsocket is used. */ 103/* configure can't get this right linking fails unless -lsocket is used. */
105#undef HAVE_XSCREENNUMBEROFSCREEN 104#undef HAVE_XSCREENNUMBEROFSCREEN
106#define HAVE_XSCREENNUMBEROFSCREEN 105#define HAVE_XSCREENNUMBEROFSCREEN
107#endif
108 106
109/* We don't have -loldX, and we don't need it. */ 107/* We don't have -loldX, and we don't need it. */
110#define LIB_XMENU_LIB 108#define LIB_XMENU_LIB
diff --git a/src/s/sco5.h b/src/s/sco5.h
index a5cc19656ab..1f56a998014 100644
--- a/src/s/sco5.h
+++ b/src/s/sco5.h
@@ -98,11 +98,9 @@ Boston, MA 02110-1301, USA. */
98#define LIBS_SYSTEM -lPW 98#define LIBS_SYSTEM -lPW
99#endif 99#endif
100 100
101#ifdef HAVE_X11R5
102/* configure can't get this right linking fails unless -lsocket is used. */ 101/* configure can't get this right linking fails unless -lsocket is used. */
103#undef HAVE_XSCREENNUMBEROFSCREEN 102#undef HAVE_XSCREENNUMBEROFSCREEN
104#define HAVE_XSCREENNUMBEROFSCREEN 103#define HAVE_XSCREENNUMBEROFSCREEN
105#endif
106 104
107/* We don't have -loldX, and we don't need it. */ 105/* We don't have -loldX, and we don't need it. */
108#define LIB_XMENU_LIB 106#define LIB_XMENU_LIB
diff --git a/src/s/usg5-3.h b/src/s/usg5-3.h
index d9b53718488..5df34f31b0e 100644
--- a/src/s/usg5-3.h
+++ b/src/s/usg5-3.h
@@ -181,7 +181,6 @@ Boston, MA 02110-1301, USA. */
181 181
182/* X needs to talk on the network, so search the network library. */ 182/* X needs to talk on the network, so search the network library. */
183 183
184#define LIBX10_SYSTEM -lnsl_s
185#define LIBX11_SYSTEM -lpt -lnls -lnsl_s -lc_s 184#define LIBX11_SYSTEM -lpt -lnls -lnsl_s -lc_s
186 185
187/* The docs for system V/386 suggest v.3 has sigpause, 186/* The docs for system V/386 suggest v.3 has sigpause,
diff --git a/src/s/usg5-4.h b/src/s/usg5-4.h
index 3dc05f3e9fd..657fa9c51c6 100644
--- a/src/s/usg5-4.h
+++ b/src/s/usg5-4.h
@@ -180,7 +180,6 @@ Boston, MA 02110-1301, USA. */
180 library, as opposed to a DLL. Share libraries were used in SVR3, and are 180 library, as opposed to a DLL. Share libraries were used in SVR3, and are
181 available only in order to allow SVR3 binaries to run. They should not be 181 available only in order to allow SVR3 binaries to run. They should not be
182 linked in to new binaries. -- caraway!pinkas@caraway.intel.com. */ 182 linked in to new binaries. -- caraway!pinkas@caraway.intel.com. */
183#undef LIBX10_SYSTEM
184#undef LIBX11_SYSTEM 183#undef LIBX11_SYSTEM
185 184
186/* Tell x11term.c and keyboard.c we have the system V streams feature. */ 185/* Tell x11term.c and keyboard.c we have the system V streams feature. */
diff --git a/src/s/windows95.h b/src/s/windows95.h
deleted file mode 100644
index cf7f3f13c88..00000000000
--- a/src/s/windows95.h
+++ /dev/null
@@ -1,8 +0,0 @@
1/* System description file for Windows 95. */
2
3#include "windowsnt.h"
4
5#define WINDOWS95
6
7/* arch-tag: 8a37be6f-312c-4b2a-919e-58a71a0fb4b3
8 (do not change this comment) */
diff --git a/src/sunfns.c b/src/sunfns.c
deleted file mode 100644
index 86e64cbcdcc..00000000000
--- a/src/sunfns.c
+++ /dev/null
@@ -1,519 +0,0 @@
1/* Functions for Sun Windows menus and selection buffer.
2 Copyright (C) 1987, 1999, 2001, 2002, 2003, 2004,
3 2005, 2006, 2007 Free Software Foundation, Inc.
4
5This file is probably totally obsolete. In any case, the FSF is
6unwilling to support it. We agreed to include it in our distribution
7only on the understanding that we would spend no time at all on it.
8
9If you have complaints about this file, send them to peck@sun.com.
10If no one at Sun wants to maintain this, then consider it not
11maintained at all. It would be a bad thing for the GNU project if
12this file took our effort away from higher-priority things.
13
14
15This file is part of GNU Emacs.
16
17GNU Emacs is free software; you can redistribute it and/or modify
18it under the terms of the GNU General Public License as published by
19the Free Software Foundation; either version 3, or (at your option)
20any later version.
21
22GNU Emacs is distributed in the hope that it will be useful,
23but WITHOUT ANY WARRANTY; without even the implied warranty of
24MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
25GNU General Public License for more details.
26
27You should have received a copy of the GNU General Public License
28along with GNU Emacs; see the file COPYING. If not, write to
29the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
30Boston, MA 02110-1301, USA. */
31
32/* Author: Jeff Peck, Sun Microsystems, Inc. <peck@sun.com>
33Original ideas by David Kastan and Eric Negaard, SRI International
34Major help from: Steve Greenbaum, Reasoning Systems, Inc.
35 <froud@kestrel.arpa>
36who first discovered the Menu_Base_Kludge.
37 */
38
39/*
40 * Emacs Lisp-Callable functions for sunwindows
41 */
42#include <config.h>
43
44#include <stdio.h>
45#include <errno.h>
46#include <signal.h>
47#include <sunwindow/window_hs.h>
48#include <suntool/selection.h>
49#include <suntool/menu.h>
50#include <suntool/walkmenu.h>
51#include <suntool/frame.h>
52#include <suntool/window.h>
53
54#include <fcntl.h>
55#undef NULL /* We don't need sunview's idea of NULL */
56#include "lisp.h"
57#include "window.h"
58#include "buffer.h"
59#include "termhooks.h"
60
61/* conversion to/from character & frame coordinates */
62/* From Gosling Emacs SunWindow driver by Chris Torek */
63
64/* Chars to frame coords. Note that we speak in zero origin. */
65#define CtoSX(cx) ((cx) * Sun_Font_Xsize)
66#define CtoSY(cy) ((cy) * Sun_Font_Ysize)
67
68/* Frame coords to chars */
69#define StoCX(sx) ((sx) / Sun_Font_Xsize)
70#define StoCY(sy) ((sy) / Sun_Font_Ysize)
71
72#define CHECK_GFX(x) if((win_fd<0)&&(Fsun_window_init(),(win_fd<0)))return(x)
73int win_fd = -1;
74struct pixfont *Sun_Font; /* The font */
75int Sun_Font_Xsize; /* Width of font */
76int Sun_Font_Ysize; /* Height of font */
77
78#define Menu_Base_Kludge /* until menu_show_using_fd gets fixed */
79#ifdef Menu_Base_Kludge
80static Frame Menu_Base_Frame;
81static int Menu_Base_fd;
82static Lisp_Object sm_kludge_string;
83#endif
84struct cursor CurrentCursor; /* The current cursor */
85
86static short CursorData[16]; /* Build cursor here */
87static mpr_static(CursorMpr, 16, 16, 1, CursorData);
88static struct cursor NewCursor = {0, 0, PIX_SRC ^ PIX_DST, &CursorMpr};
89
90#define RIGHT_ARROW_CURSOR /* if you want the right arrow */
91#ifdef RIGHT_ARROW_CURSOR
92/* The default right-arrow cursor, with XOR drawing. */
93static short ArrowCursorData[16] = {
94 0x0001,0x0003,0x0007,0x000F,0x001F,0x003F,0x007F,0x000F,
95 0x001B,0x0019,0x0030,0x0030,0x0060,0x0060,0x00C0,0x00C0};
96static mpr_static(ArrowCursorMpr, 16, 16, 1, ArrowCursorData);
97struct cursor DefaultCursor = {15, 0, PIX_SRC ^ PIX_DST, &ArrowCursorMpr};
98
99#else
100/* The default left-arrow cursor, with XOR drawing. */
101static short ArrowCursorData[16] = {
102 0x8000,0xC000,0xE000,0xF000,0xF800,0xFC00,0xFE00,0xF000,
103 0xD800,0x9800,0x0C00,0x0C00,0x0600,0x0600,0x0300,0x0300};
104static mpr_static(ArrowCursorMpr, 16, 16, 1, ArrowCursorData);
105struct cursor DefaultCursor = {0, 0, PIX_SRC ^ PIX_DST, &ArrowCursorMpr};
106#endif
107
108/*
109 * Initialize window
110 */
111DEFUN ("sun-window-init", Fsun_window_init, Ssun_window_init, 0, 1, 0,
112 doc: /* One time setup for using Sun Windows with mouse.
113Unless optional argument FORCE is non-nil, is a noop after its first call.
114Returns a number representing the file descriptor of the open Sun Window,
115or -1 if can not open it. */)
116 (force)
117 Lisp_Object force;
118{
119 char *cp;
120 static int already_initialized = 0;
121
122 if ((! already_initialized) || (!NILP(force))) {
123 cp = getenv("WINDOW_GFX");
124 if (cp != 0) win_fd = emacs_open (cp, O_RDWR, 0);
125 if (win_fd > 0)
126 {
127 Sun_Font = pf_default();
128 Sun_Font_Xsize = Sun_Font->pf_defaultsize.x;
129 Sun_Font_Ysize = Sun_Font->pf_defaultsize.y;
130 Fsun_change_cursor_icon (Qnil); /* set up the default cursor */
131 already_initialized = 1;
132#ifdef Menu_Base_Kludge
133
134 /* Make a frame to use for putting the menu on, and get its fd. */
135 Menu_Base_Frame = window_create(0, FRAME,
136 WIN_X, 0, WIN_Y, 0,
137 WIN_ROWS, 1, WIN_COLUMNS, 1,
138 WIN_SHOW, FALSE,
139 FRAME_NO_CONFIRM, 1,
140 0);
141 Menu_Base_fd = (int) window_get(Menu_Base_Frame, WIN_FD);
142#endif
143 }
144 }
145 return(make_number(win_fd));
146}
147
148/*
149 * Mouse sit-for (allows a shorter interval than the regular sit-for
150 * and can be interrupted by the mouse)
151 */
152DEFUN ("sit-for-millisecs", Fsit_for_millisecs, Ssit_for_millisecs, 1, 1, 0,
153 doc: /* Like sit-for, but ARG is milliseconds.
154Perform redisplay, then wait for ARG milliseconds or until
155input is available. Returns t if wait completed with no input.
156Redisplay does not happen if input is available before it starts. */)
157 (n)
158 Lisp_Object n;
159{
160 struct timeval Timeout;
161 int waitmask = 1;
162
163 CHECK_NUMBER (n);
164 Timeout.tv_sec = XINT(n) / 1000;
165 Timeout.tv_usec = (XINT(n) - (Timeout.tv_sec * 1000)) * 1000;
166
167 if (detect_input_pending()) return(Qnil);
168 redisplay_preserve_echo_area (16);
169 /*
170 * Check for queued keyboard input/mouse hits again
171 * (A bit screen update can take some time!)
172 */
173 if (detect_input_pending()) return(Qnil);
174 select(1,&waitmask,0,0,&Timeout);
175 if (detect_input_pending()) return(Qnil);
176 return(Qt);
177}
178
179/*
180 * Sun sleep-for (allows a shorter interval than the regular sleep-for)
181 */
182DEFUN ("sleep-for-millisecs",
183 Fsleep_for_millisecs,
184 Ssleep_for_millisecs, 1, 1, 0,
185 doc: /* Pause, without updating display, for ARG milliseconds. */)
186 (n)
187 Lisp_Object n;
188{
189 unsigned useconds;
190
191 CHECK_NUMBER (n);
192 useconds = XINT(n) * 1000;
193 usleep(useconds);
194 return(Qt);
195}
196
197DEFUN ("update-display", Fupdate_display, Supdate_display, 0, 0, 0,
198 doc: /* Perform redisplay. */)
199 ()
200{
201 redisplay_preserve_echo_area (17);
202 return(Qt);
203}
204
205
206/*
207 * Change the Sun mouse icon
208 */
209DEFUN ("sun-change-cursor-icon",
210 Fsun_change_cursor_icon,
211 Ssun_change_cursor_icon, 1, 1, 0,
212 doc: /* Change the Sun mouse cursor icon.
213ICON is a lisp vector whose 1st element
214is the X offset of the cursor hot-point, whose 2nd element is the Y offset
215of the cursor hot-point and whose 3rd element is the cursor pixel data
216expressed as a string. If ICON is nil then the original arrow cursor is used. */)
217 (Icon)
218 Lisp_Object Icon;
219{
220 register unsigned char *cp;
221 register short *p;
222 register int i;
223 Lisp_Object X_Hot, Y_Hot, Data;
224
225 CHECK_GFX (Qnil);
226 /*
227 * If the icon is null, we just restore the DefaultCursor
228 */
229 if (NILP(Icon))
230 CurrentCursor = DefaultCursor;
231 else {
232 /*
233 * extract the data from the vector
234 */
235 CHECK_VECTOR (Icon);
236 if (XVECTOR(Icon)->size < 3) return(Qnil);
237 X_Hot = XVECTOR(Icon)->contents[0];
238 Y_Hot = XVECTOR(Icon)->contents[1];
239 Data = XVECTOR(Icon)->contents[2];
240
241 CHECK_NUMBER (X_Hot);
242 CHECK_NUMBER (Y_Hot);
243 CHECK_STRING (Data);
244 if (SCHARS (Data) != 32) return(Qnil);
245 /*
246 * Setup the new cursor
247 */
248 NewCursor.cur_xhot = X_Hot;
249 NewCursor.cur_yhot = Y_Hot;
250 cp = SDATA (Data);
251 p = CursorData;
252 i = 16;
253 while(--i >= 0)
254 *p++ = (cp[0] << 8) | cp[1], cp += 2;
255 CurrentCursor = NewCursor;
256 }
257 win_setcursor(win_fd, &CurrentCursor);
258 return(Qt);
259}
260
261/*
262 * Interface for sunwindows selection
263 */
264static Lisp_Object Current_Selection;
265
266static
267sel_write (sel, file)
268 struct selection *sel;
269 FILE *file;
270{
271 fwrite (SDATA (Current_Selection), sizeof (char),
272 sel->sel_items, file);
273}
274
275static
276sel_clear (sel, windowfd)
277 struct selection *sel;
278 int windowfd;
279{
280}
281
282static
283sel_read (sel, file)
284 struct selection *sel;
285 FILE *file;
286{
287 register int i, n;
288 register char *cp;
289
290 Current_Selection = empty_unibyte_string;
291 if (sel->sel_items <= 0)
292 return (0);
293 cp = (char *) malloc(sel->sel_items);
294 if (cp == (char *)0) {
295 error("malloc failed in sel_read");
296 return(-1);
297 }
298 n = fread(cp, sizeof(char), sel->sel_items, file);
299 if (n > sel->sel_items) {
300 error("fread botch in sel_read");
301 return(-1);
302 } else if (n < 0) {
303 error("Error reading selection");
304 return(-1);
305 }
306 /*
307 * The shelltool select saves newlines as carriage returns,
308 * but emacs wants newlines.
309 */
310 for (i = 0; i < n; i++)
311 if (cp[i] == '\r') cp[i] = '\n';
312
313 Current_Selection = make_string (cp, n);
314 free (cp);
315 return (0);
316}
317
318/*
319 * Set the window system "selection" to be the arg STRING
320 */
321DEFUN ("sun-set-selection", Fsun_set_selection, Ssun_set_selection, 1, 1,
322 "sSet selection to: ",
323 doc: /* Set the current sunwindow selection to STRING. */)
324 (str)
325 Lisp_Object str;
326{
327 struct selection selection;
328
329 CHECK_STRING (str);
330 Current_Selection = str;
331
332 CHECK_GFX (Qnil);
333 selection.sel_type = SELTYPE_CHAR;
334 selection.sel_items = SCHARS (str);
335 selection.sel_itembytes = 1;
336 selection.sel_pubflags = 1;
337 selection_set(&selection, sel_write, sel_clear, win_fd);
338 return (Qt);
339}
340/*
341 * Stuff the current window system selection into the current buffer
342 */
343DEFUN ("sun-get-selection", Fsun_get_selection, Ssun_get_selection, 0, 0, 0,
344 doc: /* Return the current sunwindows selection as a string. */)
345 ()
346{
347 CHECK_GFX (Current_Selection);
348 selection_get (sel_read, win_fd);
349 return (Current_Selection);
350}
351
352Menu sun_menu_create();
353
354Menu_item
355sun_item_create (Pair)
356 Lisp_Object Pair;
357{
358 /* In here, we depend on Lisp supplying zero terminated strings in the data*/
359 /* so we can just pass the pointers, and not recopy anything */
360
361 Menu_item menu_item;
362 Menu submenu;
363 Lisp_Object String;
364 Lisp_Object Value;
365
366 CHECK_LIST_CONS (Pair, Pair);
367 String = Fcar(Pair);
368 CHECK_STRING(String);
369 Value = Fcdr(Pair);
370 if (SYMBOLP (Value))
371 Value = SYMBOL_VALUE (Value);
372 if (VECTORP (Value)) {
373 submenu = sun_menu_create (Value);
374 menu_item = menu_create_item
375 (MENU_RELEASE, MENU_PULLRIGHT_ITEM, SDATA (String), submenu, 0);
376 } else {
377 menu_item = menu_create_item
378 (MENU_RELEASE, MENU_STRING_ITEM, SDATA (String), Value, 0);
379 }
380 return menu_item;
381}
382
383Menu
384sun_menu_create (Vector)
385 Lisp_Object Vector;
386{
387 Menu menu;
388 int i;
389 CHECK_VECTOR(Vector);
390 menu=menu_create(0);
391 for(i = 0; i < XVECTOR(Vector)->size; i++) {
392 menu_set (menu, MENU_APPEND_ITEM,
393 sun_item_create(XVECTOR(Vector)->contents[i]), 0);
394 }
395 return menu;
396}
397
398/*
399 * If the first item of the menu has nil as its value, then make the
400 * item look like a label by inverting it and making it unselectable.
401 * Returns 1 if the label was made, 0 otherwise.
402 */
403int
404make_menu_label (menu)
405 Menu menu;
406{
407 int made_label_p = 0;
408
409 if (( menu_get(menu, MENU_NITEMS) > 0 ) && /* At least one item */
410 ((Lisp_Object) menu_get(menu_get(menu, MENU_NTH_ITEM, 1),
411 MENU_VALUE) == Qnil )) {
412 menu_set(menu_get(menu, MENU_NTH_ITEM, 1),
413 MENU_INVERT, TRUE,
414 MENU_FEEDBACK, FALSE,
415 0);
416 made_label_p = 1;
417 }
418 return made_label_p;
419}
420
421/*
422 * Do a pop-up menu and return the selected value
423 */
424DEFUN ("sun-menu-internal",
425 Fsun_menu_internal,
426 Ssun_menu_internal, 5, 5, 0,
427 doc: /* Set up a SunView pop-up menu and return the user's choice.
428Arguments WINDOW, X, Y, BUTTON, and MENU.
429*** User code should generally use sun-menu-evaluate ***
430
431Arguments WINDOW, X, Y, BUTTON, and MENU.
432Put MENU up in WINDOW at position X, Y.
433The BUTTON argument specifies the button to be released that selects an item:
434 1 = LEFT BUTTON
435 2 = MIDDLE BUTTON
436 4 = RIGHT BUTTON
437The MENU argument is a vector containing (STRING . VALUE) pairs.
438The VALUE of the selected item is returned.
439If the VALUE of the first pair is nil, then the first STRING will be used
440as a menu label. */)
441 (window, X_Position, Y_Position, Button, MEnu)
442 Lisp_Object window, X_Position, Y_Position, Button, MEnu;
443{
444 Menu menu;
445 int button, xpos, ypos;
446 Event event0;
447 Event *event = &event0;
448 Lisp_Object Value, Pair;
449
450 CHECK_NUMBER(X_Position);
451 CHECK_NUMBER(Y_Position);
452 CHECK_LIVE_WINDOW(window);
453 CHECK_NUMBER(Button);
454 CHECK_VECTOR(MEnu);
455
456 CHECK_GFX (Qnil);
457
458 xpos = CtoSX (WINDOW_LEFT_EDGE_COL (XWINDOW (window))
459 + WINDOW_LEFT_SCROLL_BAR_COLS (XWINDOW (window))
460 + XINT(X_Position));
461 ypos = CtoSY (WINDOW_TOP_EDGE_LINE (XWINDOW(window)) + XINT(Y_Position));
462#ifdef Menu_Base_Kludge
463 {static Lisp_Object symbol[2];
464 symbol[0] = Fintern (sm_kludge_string, Qnil);
465 Pair = Ffuncall (1, symbol);
466 xpos += XINT (XCDR (Pair));
467 ypos += XINT (XCAR (Pair));
468 }
469#endif
470
471 button = XINT(Button);
472 if(button == 4) button = 3;
473 event_set_id (event, BUT(button));
474 event_set_down (event);
475 event_set_x (event, xpos);
476 event_set_y (event, ypos);
477
478 menu = sun_menu_create(MEnu);
479 make_menu_label(menu);
480
481#ifdef Menu_Base_Kludge
482 Value = (Lisp_Object) menu_show(menu, Menu_Base_Frame, event, 0);
483#else
484/* This confuses the notifier or something: */
485 Value = (Lisp_Object) menu_show_using_fd(menu, win_fd, event, 0);
486/*
487 * Right button gets lost, and event sequencing or delivery gets mixed up
488 * So, until that gets fixed, we use this <Menu_Base_Frame> kludge:
489 */
490#endif
491 menu_destroy (menu);
492
493 return ((int)Value ? Value : Qnil);
494}
495
496
497/*
498 * Define everything
499 */
500syms_of_sunfns()
501{
502#ifdef Menu_Base_Kludge
503 /* i'm just too lazy to re-write this into C code */
504 /* so we will call this elisp function from C */
505 sm_kludge_string = make_pure_string ("sm::menu-kludge", 15, 15, 0);
506#endif /* Menu_Base_Kludge */
507
508 defsubr(&Ssun_window_init);
509 defsubr(&Ssit_for_millisecs);
510 defsubr(&Ssleep_for_millisecs);
511 defsubr(&Supdate_display);
512 defsubr(&Ssun_change_cursor_icon);
513 defsubr(&Ssun_set_selection);
514 defsubr(&Ssun_get_selection);
515 defsubr(&Ssun_menu_internal);
516}
517
518/* arch-tag: 2d7decb7-58f6-41aa-b45b-077ccfab7158
519 (do not change this comment) */
diff --git a/src/termhooks.h b/src/termhooks.h
index 4d8fb8a861b..369bdff158d 100644
--- a/src/termhooks.h
+++ b/src/termhooks.h
@@ -132,10 +132,6 @@ enum event_kind
132 whose scroll bar was clicked in. 132 whose scroll bar was clicked in.
133 .timestamp gives a timestamp (in 133 .timestamp gives a timestamp (in
134 milliseconds) for the click. */ 134 milliseconds) for the click. */
135#ifdef WINDOWSNT
136 W32_SCROLL_BAR_CLICK_EVENT, /* as for SCROLL_BAR_CLICK, but only generated
137 by MS-Windows scroll bar controls. */
138#endif
139 SELECTION_REQUEST_EVENT, /* Another X client wants a selection from us. 135 SELECTION_REQUEST_EVENT, /* Another X client wants a selection from us.
140 See `struct selection_input_event'. */ 136 See `struct selection_input_event'. */
141 SELECTION_CLEAR_EVENT, /* Another X client cleared our selection. */ 137 SELECTION_CLEAR_EVENT, /* Another X client cleared our selection. */
@@ -200,6 +196,21 @@ enum event_kind
200#ifdef HAVE_GPM 196#ifdef HAVE_GPM
201 , GPM_CLICK_EVENT 197 , GPM_CLICK_EVENT
202#endif 198#endif
199
200#ifdef WINDOWSNT
201 /* Generated when an APPCOMMAND event is received, in response to
202 Multimedia or Internet buttons on some keyboards.
203 Such keys are available as normal function keys on X through the
204 Xkeyboard extension.
205 On Windows, some of them get mapped to normal function key events,
206 but others need to be handled by APPCOMMAND. Handling them all as
207 APPCOMMAND events means they can be disabled
208 (w32-pass-multimedia-buttons-to-system), important on Windows since
209 the system never sees these keys if Emacs claims to handle them.
210 On X, the window manager seems to grab the keys it wants
211 first, so this is not a problem there. */
212 , MULTIMEDIA_KEY_EVENT
213#endif
203}; 214};
204 215
205/* If a struct input_event has a kind which is SELECTION_REQUEST_EVENT 216/* If a struct input_event has a kind which is SELECTION_REQUEST_EVENT
diff --git a/src/textprop.c b/src/textprop.c
index e8ba1d87afc..f7b50755ed1 100644
--- a/src/textprop.c
+++ b/src/textprop.c
@@ -713,7 +713,7 @@ POSITION is at the end of OBJECT, both car and cdr are nil. */)
713 Lisp_Object overlay; 713 Lisp_Object overlay;
714 Lisp_Object val 714 Lisp_Object val
715 = get_char_property_and_overlay (position, prop, object, &overlay); 715 = get_char_property_and_overlay (position, prop, object, &overlay);
716 return Fcons(val, overlay); 716 return Fcons (val, overlay);
717} 717}
718 718
719 719
diff --git a/src/unexmacosx.c b/src/unexmacosx.c
index e9664f94bbc..3646aec6983 100644
--- a/src/unexmacosx.c
+++ b/src/unexmacosx.c
@@ -443,15 +443,13 @@ unexec_regions_recorder (task_t task, void *rr, unsigned type,
443 443
444 while (num && num_unexec_regions < MAX_UNEXEC_REGIONS) 444 while (num && num_unexec_regions < MAX_UNEXEC_REGIONS)
445 { 445 {
446 /* Subtract the size of trailing null pages from filesize. It 446 /* Subtract the size of trailing null bytes from filesize. It
447 can be smaller than vmsize in segment commands. In such a 447 can be smaller than vmsize in segment commands. In such a
448 case, trailing pages are initialized with zeros. */ 448 case, trailing bytes are initialized with zeros. */
449 for (p = ranges->address + ranges->size; p > ranges->address; 449 for (p = ranges->address + ranges->size; p > ranges->address; p--)
450 p -= sizeof (int)) 450 if (*(((char *) p)-1))
451 if (*(((int *) p)-1)) 451 break;
452 break; 452 filesize = p - ranges->address;
453 filesize = ROUNDUP_TO_PAGE_BOUNDARY (p - ranges->address);
454 assert (filesize <= ranges->size);
455 453
456 unexec_regions[num_unexec_regions].filesize = filesize; 454 unexec_regions[num_unexec_regions].filesize = filesize;
457 unexec_regions[num_unexec_regions++].range = *ranges; 455 unexec_regions[num_unexec_regions++].range = *ranges;
@@ -503,11 +501,19 @@ unexec_regions_merge ()
503{ 501{
504 int i, n; 502 int i, n;
505 unexec_region_info r; 503 unexec_region_info r;
504 vm_size_t padsize;
506 505
507 qsort (unexec_regions, num_unexec_regions, sizeof (unexec_regions[0]), 506 qsort (unexec_regions, num_unexec_regions, sizeof (unexec_regions[0]),
508 &unexec_regions_sort_compare); 507 &unexec_regions_sort_compare);
509 n = 0; 508 n = 0;
510 r = unexec_regions[0]; 509 r = unexec_regions[0];
510 padsize = r.range.address & (pagesize - 1);
511 if (padsize)
512 {
513 r.range.address -= padsize;
514 r.range.size += padsize;
515 r.filesize += padsize;
516 }
511 for (i = 1; i < num_unexec_regions; i++) 517 for (i = 1; i < num_unexec_regions; i++)
512 { 518 {
513 if (r.range.address + r.range.size == unexec_regions[i].range.address 519 if (r.range.address + r.range.size == unexec_regions[i].range.address
@@ -520,6 +526,17 @@ unexec_regions_merge ()
520 { 526 {
521 unexec_regions[n++] = r; 527 unexec_regions[n++] = r;
522 r = unexec_regions[i]; 528 r = unexec_regions[i];
529 padsize = r.range.address & (pagesize - 1);
530 if (padsize)
531 {
532 if ((unexec_regions[n-1].range.address
533 + unexec_regions[n-1].range.size) == r.range.address)
534 unexec_regions[n-1].range.size -= padsize;
535
536 r.range.address -= padsize;
537 r.range.size += padsize;
538 r.filesize += padsize;
539 }
523 } 540 }
524 } 541 }
525 unexec_regions[n++] = r; 542 unexec_regions[n++] = r;
@@ -562,6 +579,11 @@ print_load_command_name (int lc)
562 case LC_TWOLEVEL_HINTS: 579 case LC_TWOLEVEL_HINTS:
563 printf ("LC_TWOLEVEL_HINTS"); 580 printf ("LC_TWOLEVEL_HINTS");
564 break; 581 break;
582#ifdef LC_UUID
583 case LC_UUID:
584 printf ("LC_UUID ");
585 break;
586#endif
565 default: 587 default:
566 printf ("unknown "); 588 printf ("unknown ");
567 } 589 }
diff --git a/src/w32fns.c b/src/w32fns.c
index 288b1f96665..808376bf580 100644
--- a/src/w32fns.c
+++ b/src/w32fns.c
@@ -150,6 +150,9 @@ int w32_mouse_move_interval;
150/* Flag to indicate if XBUTTON events should be passed on to Windows. */ 150/* Flag to indicate if XBUTTON events should be passed on to Windows. */
151int w32_pass_extra_mouse_buttons_to_system; 151int w32_pass_extra_mouse_buttons_to_system;
152 152
153/* Flag to indicate if media keys should be passed on to Windows. */
154int w32_pass_multimedia_buttons_to_system;
155
153/* Non nil if no window manager is in use. */ 156/* Non nil if no window manager is in use. */
154Lisp_Object Vx_no_window_manager; 157Lisp_Object Vx_no_window_manager;
155 158
@@ -3387,6 +3390,10 @@ w32_wnd_proc (hwnd, msg, wParam, lParam)
3387 signal_user_input (); 3390 signal_user_input ();
3388 return 0; 3391 return 0;
3389 3392
3393 case WM_APPCOMMAND:
3394 if (w32_pass_multimedia_buttons_to_system)
3395 goto dflt;
3396 /* Otherwise, pass to lisp, the same way we do with mousehwheel. */
3390 case WM_MOUSEHWHEEL: 3397 case WM_MOUSEHWHEEL:
3391 wmsg.dwModifiers = w32_get_modifiers (); 3398 wmsg.dwModifiers = w32_get_modifiers ();
3392 my_post_msg (&wmsg, hwnd, msg, wParam, lParam); 3399 my_post_msg (&wmsg, hwnd, msg, wParam, lParam);
@@ -8945,6 +8952,30 @@ If this variable is non-nil, Emacs will pass them on, allowing the
8945system to handle them. */); 8952system to handle them. */);
8946 w32_pass_extra_mouse_buttons_to_system = 0; 8953 w32_pass_extra_mouse_buttons_to_system = 0;
8947 8954
8955 DEFVAR_BOOL ("w32-pass-multimedia-buttons-to-system",
8956 &w32_pass_multimedia_buttons_to_system,
8957 doc: /* If non-nil, media buttons are passed to Windows.
8958Some modern keyboards contain buttons for controlling media players, web
8959browsers and other applications. Generally these buttons are handled on a
8960system wide basis, but by setting this to nil they are made available
8961to Emacs for binding. Depending on your keyboard, additional keys that
8962may be available are:
8963
8964browser-back, browser-forward, browser-refresh, browser-stop,
8965browser-search, browser-favorites, browser-home,
8966mail, mail-reply, mail-forward, mail-send,
8967app-1, app-2,
8968help, find, new, open, close, save, print, undo, redo, copy, cut, paste,
8969spell-check, correction-list, toggle-dictate-command,
8970media-next, media-previous, media-stop, media-play-pause, media-select,
8971media-play, media-pause, media-record, media-fast-forward, media-rewind,
8972media-channel-up, media-channel-down,
8973volume-mute, volume-up, volume-down,
8974mic-volume-mute, mic-volume-down, mic-volume-up, mic-toggle,
8975bass-down, bass-boost, bass-up, treble-down, treble-up
8976 */);
8977 w32_pass_multimedia_buttons_to_system = 1;
8978
8948 DEFVAR_LISP ("x-pointer-shape", &Vx_pointer_shape, 8979 DEFVAR_LISP ("x-pointer-shape", &Vx_pointer_shape,
8949 doc: /* The shape of the pointer when over text. 8980 doc: /* The shape of the pointer when over text.
8950Changing the value does not affect existing frames 8981Changing the value does not affect existing frames
diff --git a/src/w32term.c b/src/w32term.c
index aae84473532..93e81b7bdb4 100644
--- a/src/w32term.c
+++ b/src/w32term.c
@@ -2769,7 +2769,6 @@ x_draw_stretch_glyph_string (s)
2769 struct glyph_string *s; 2769 struct glyph_string *s;
2770{ 2770{
2771 xassert (s->first_glyph->type == STRETCH_GLYPH); 2771 xassert (s->first_glyph->type == STRETCH_GLYPH);
2772 s->stippled_p = s->face->stipple != 0;
2773 2772
2774 if (s->hl == DRAW_CURSOR 2773 if (s->hl == DRAW_CURSOR
2775 && !x_stretch_cursor_p) 2774 && !x_stretch_cursor_p)
@@ -4426,7 +4425,7 @@ w32_scroll_bar_handle_click (bar, msg, emacs_event)
4426 if (! WINDOWP (bar->window)) 4425 if (! WINDOWP (bar->window))
4427 abort (); 4426 abort ();
4428 4427
4429 emacs_event->kind = W32_SCROLL_BAR_CLICK_EVENT; 4428 emacs_event->kind = SCROLL_BAR_CLICK_EVENT;
4430 emacs_event->code = 0; 4429 emacs_event->code = 0;
4431 /* not really meaningful to distinguish up/down */ 4430 /* not really meaningful to distinguish up/down */
4432 emacs_event->modifiers = msg->dwModifiers; 4431 emacs_event->modifiers = msg->dwModifiers;
@@ -4793,6 +4792,29 @@ w32_read_socket (sd, expected, hold_quit)
4793 } 4792 }
4794 break; 4793 break;
4795 4794
4795 case WM_APPCOMMAND:
4796 f = x_window_to_frame (dpyinfo, msg.msg.hwnd);
4797
4798 if (f && !f->iconified)
4799 {
4800 if (!dpyinfo->mouse_face_hidden && INTEGERP (Vmouse_highlight)
4801 && !EQ (f->tool_bar_window, dpyinfo->mouse_face_window))
4802 {
4803 clear_mouse_face (dpyinfo);
4804 dpyinfo->mouse_face_hidden = 1;
4805 }
4806
4807 if (temp_index == sizeof temp_buffer / sizeof (short))
4808 temp_index = 0;
4809 temp_buffer[temp_index++] = msg.msg.wParam;
4810 inev.kind = MULTIMEDIA_KEY_EVENT;
4811 inev.code = GET_APPCOMMAND_LPARAM(msg.msg.lParam);
4812 inev.modifiers = msg.dwModifiers;
4813 XSETFRAME (inev.frame_or_window, f);
4814 inev.timestamp = msg.msg.time;
4815 }
4816 break;
4817
4796 case WM_MOUSEMOVE: 4818 case WM_MOUSEMOVE:
4797 /* Ignore non-movement. */ 4819 /* Ignore non-movement. */
4798 { 4820 {
diff --git a/src/w32term.h b/src/w32term.h
index f5aff57622e..595d7d1f147 100644
--- a/src/w32term.h
+++ b/src/w32term.h
@@ -625,6 +625,10 @@ extern void w32_unload_font ();
625#ifndef WM_MOUSEHWHEEL 625#ifndef WM_MOUSEHWHEEL
626#define WM_MOUSEHWHEEL (WM_MOUSEWHEEL + 4) 626#define WM_MOUSEHWHEEL (WM_MOUSEWHEEL + 4)
627#endif /* WM_MOUSEHWHEEL */ 627#endif /* WM_MOUSEHWHEEL */
628#ifndef WM_APPCOMMAND
629#define WM_APPCOMMAND 0x319
630#define GET_APPCOMMAND_LPARAM(lParam) (HIWORD(lParam) & 0x7fff)
631#endif
628 632
629#define WM_EMACS_START (WM_USER + 1) 633#define WM_EMACS_START (WM_USER + 1)
630#define WM_EMACS_KILL (WM_EMACS_START + 0) 634#define WM_EMACS_KILL (WM_EMACS_START + 0)
diff --git a/src/xdisp.c b/src/xdisp.c
index a83ee8983dc..96244877a2e 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -963,8 +963,8 @@ static void compute_string_pos P_ ((struct text_pos *, struct text_pos,
963static int face_before_or_after_it_pos P_ ((struct it *, int)); 963static int face_before_or_after_it_pos P_ ((struct it *, int));
964static int next_overlay_change P_ ((int)); 964static int next_overlay_change P_ ((int));
965static int handle_single_display_spec P_ ((struct it *, Lisp_Object, 965static int handle_single_display_spec P_ ((struct it *, Lisp_Object,
966 Lisp_Object, struct text_pos *, 966 Lisp_Object, Lisp_Object,
967 int)); 967 struct text_pos *, int));
968static int underlying_face_id P_ ((struct it *)); 968static int underlying_face_id P_ ((struct it *));
969static int in_ellipses_for_invisible_text_p P_ ((struct display_pos *, 969static int in_ellipses_for_invisible_text_p P_ ((struct display_pos *,
970 struct window *)); 970 struct window *));
@@ -3077,16 +3077,18 @@ handle_stop (it)
3077 if (it->method == GET_FROM_DISPLAY_VECTOR) 3077 if (it->method == GET_FROM_DISPLAY_VECTOR)
3078 handle_overlay_change_p = 0; 3078 handle_overlay_change_p = 0;
3079 3079
3080 /* Handle overlay changes. */ 3080 /* Handle overlay changes.
3081 This sets HANDLED to HANDLED_RECOMPUTE_PROPS
3082 if it finds overlays. */
3081 if (handle_overlay_change_p) 3083 if (handle_overlay_change_p)
3082 handled = handle_overlay_change (it); 3084 handled = handle_overlay_change (it);
3083
3084 /* Determine where to stop next. */
3085 if (handled == HANDLED_NORMALLY)
3086 compute_stop_pos (it);
3087 } 3085 }
3088 } 3086 }
3089 while (handled == HANDLED_RECOMPUTE_PROPS); 3087 while (handled == HANDLED_RECOMPUTE_PROPS);
3088
3089 /* Determine where to stop next. */
3090 if (handled == HANDLED_NORMALLY)
3091 compute_stop_pos (it);
3090} 3092}
3091 3093
3092 3094
@@ -3367,18 +3369,58 @@ handle_face_prop (it)
3367 else 3369 else
3368 { 3370 {
3369 int base_face_id, bufpos; 3371 int base_face_id, bufpos;
3372 int i;
3373 Lisp_Object from_overlay
3374 = (it->current.overlay_string_index >= 0
3375 ? it->string_overlays[it->current.overlay_string_index]
3376 : Qnil);
3377
3378 /* See if we got to this string directly or indirectly from
3379 an overlay property. That includes the before-string or
3380 after-string of an overlay, strings in display properties
3381 provided by an overlay, their text properties, etc.
3382
3383 FROM_OVERLAY is the overlay that brought us here, or nil if none. */
3384 if (! NILP (from_overlay))
3385 for (i = it->sp - 1; i >= 0; i--)
3386 {
3387 if (it->stack[i].current.overlay_string_index >= 0)
3388 from_overlay
3389 = it->string_overlays[it->stack[i].current.overlay_string_index];
3390 else if (! NILP (it->stack[i].from_overlay))
3391 from_overlay = it->stack[i].from_overlay;
3370 3392
3371 if (it->current.overlay_string_index >= 0) 3393 if (!NILP (from_overlay))
3372 bufpos = IT_CHARPOS (*it); 3394 break;
3395 }
3396
3397 if (! NILP (from_overlay))
3398 {
3399 bufpos = IT_CHARPOS (*it);
3400 /* For a string from an overlay, the base face depends
3401 only on text properties and ignores overlays. */
3402 base_face_id
3403 = face_for_overlay_string (it->w,
3404 IT_CHARPOS (*it),
3405 it->region_beg_charpos,
3406 it->region_end_charpos,
3407 &next_stop,
3408 (IT_CHARPOS (*it)
3409 + TEXT_PROP_DISTANCE_LIMIT),
3410 0,
3411 from_overlay);
3412 }
3373 else 3413 else
3374 bufpos = 0; 3414 {
3415 bufpos = 0;
3375 3416
3376 /* For strings from a buffer, i.e. overlay strings or strings 3417 /* For strings from a `display' property, use the face at
3377 from a `display' property, use the face at IT's current 3418 IT's current buffer position as the base face to merge
3378 buffer position as the base face to merge with, so that 3419 with, so that overlay strings appear in the same face as
3379 overlay strings appear in the same face as surrounding 3420 surrounding text, unless they specify their own
3380 text, unless they specify their own faces. */ 3421 faces. */
3381 base_face_id = underlying_face_id (it); 3422 base_face_id = underlying_face_id (it);
3423 }
3382 3424
3383 new_face_id = face_at_string_position (it->w, 3425 new_face_id = face_at_string_position (it->w,
3384 it->string, 3426 it->string,
@@ -3789,7 +3831,7 @@ static enum prop_handled
3789handle_display_prop (it) 3831handle_display_prop (it)
3790 struct it *it; 3832 struct it *it;
3791{ 3833{
3792 Lisp_Object prop, object; 3834 Lisp_Object prop, object, overlay;
3793 struct text_pos *position; 3835 struct text_pos *position;
3794 /* Nonzero if some property replaces the display of the text itself. */ 3836 /* Nonzero if some property replaces the display of the text itself. */
3795 int display_replaced_p = 0; 3837 int display_replaced_p = 0;
@@ -3817,10 +3859,12 @@ handle_display_prop (it)
3817 if (!it->string_from_display_prop_p) 3859 if (!it->string_from_display_prop_p)
3818 it->area = TEXT_AREA; 3860 it->area = TEXT_AREA;
3819 3861
3820 prop = Fget_char_property (make_number (position->charpos), 3862 prop = get_char_property_and_overlay (make_number (position->charpos),
3821 Qdisplay, object); 3863 Qdisplay, object, &overlay);
3822 if (NILP (prop)) 3864 if (NILP (prop))
3823 return HANDLED_NORMALLY; 3865 return HANDLED_NORMALLY;
3866 /* Now OVERLAY is the overlay that gave us this property, or nil
3867 if it was a text property. */
3824 3868
3825 if (!STRINGP (it->string)) 3869 if (!STRINGP (it->string))
3826 object = it->w->buffer; 3870 object = it->w->buffer;
@@ -3842,7 +3886,7 @@ handle_display_prop (it)
3842 { 3886 {
3843 for (; CONSP (prop); prop = XCDR (prop)) 3887 for (; CONSP (prop); prop = XCDR (prop))
3844 { 3888 {
3845 if (handle_single_display_spec (it, XCAR (prop), object, 3889 if (handle_single_display_spec (it, XCAR (prop), object, overlay,
3846 position, display_replaced_p)) 3890 position, display_replaced_p))
3847 { 3891 {
3848 display_replaced_p = 1; 3892 display_replaced_p = 1;
@@ -3857,7 +3901,7 @@ handle_display_prop (it)
3857 { 3901 {
3858 int i; 3902 int i;
3859 for (i = 0; i < ASIZE (prop); ++i) 3903 for (i = 0; i < ASIZE (prop); ++i)
3860 if (handle_single_display_spec (it, AREF (prop, i), object, 3904 if (handle_single_display_spec (it, AREF (prop, i), object, overlay,
3861 position, display_replaced_p)) 3905 position, display_replaced_p))
3862 { 3906 {
3863 display_replaced_p = 1; 3907 display_replaced_p = 1;
@@ -3869,7 +3913,8 @@ handle_display_prop (it)
3869 } 3913 }
3870 else 3914 else
3871 { 3915 {
3872 int ret = handle_single_display_spec (it, prop, object, position, 0); 3916 int ret = handle_single_display_spec (it, prop, object, overlay,
3917 position, 0);
3873 if (ret < 0) /* Replaced by "", i.e. nothing. */ 3918 if (ret < 0) /* Replaced by "", i.e. nothing. */
3874 return HANDLED_RECOMPUTE_PROPS; 3919 return HANDLED_RECOMPUTE_PROPS;
3875 if (ret) 3920 if (ret)
@@ -3911,6 +3956,9 @@ display_prop_end (it, object, start_pos)
3911 replaced text display with something else, for example an image; 3956 replaced text display with something else, for example an image;
3912 we ignore such properties after the first one has been processed. 3957 we ignore such properties after the first one has been processed.
3913 3958
3959 OVERLAY is the overlay this `display' property came from,
3960 or nil if it was a text property.
3961
3914 If PROP is a `space' or `image' specification, and in some other 3962 If PROP is a `space' or `image' specification, and in some other
3915 cases too, set *POSITION to the position where the `display' 3963 cases too, set *POSITION to the position where the `display'
3916 property ends. 3964 property ends.
@@ -3920,11 +3968,12 @@ display_prop_end (it, object, start_pos)
3920 "something" is "nothing". */ 3968 "something" is "nothing". */
3921 3969
3922static int 3970static int
3923handle_single_display_spec (it, spec, object, position, 3971handle_single_display_spec (it, spec, object, overlay, position,
3924 display_replaced_before_p) 3972 display_replaced_before_p)
3925 struct it *it; 3973 struct it *it;
3926 Lisp_Object spec; 3974 Lisp_Object spec;
3927 Lisp_Object object; 3975 Lisp_Object object;
3976 Lisp_Object overlay;
3928 struct text_pos *position; 3977 struct text_pos *position;
3929 int display_replaced_before_p; 3978 int display_replaced_before_p;
3930{ 3979{
@@ -4034,7 +4083,7 @@ handle_single_display_spec (it, spec, object, position,
4034 return 0; 4083 return 0;
4035 } 4084 }
4036 4085
4037 /* Handle `(space_width WIDTH)'. */ 4086 /* Handle `(space-width WIDTH)'. */
4038 if (CONSP (spec) 4087 if (CONSP (spec)
4039 && EQ (XCAR (spec), Qspace_width) 4088 && EQ (XCAR (spec), Qspace_width)
4040 && CONSP (XCDR (spec))) 4089 && CONSP (XCDR (spec)))
@@ -4158,6 +4207,7 @@ handle_single_display_spec (it, spec, object, position,
4158 it->position = start_pos; 4207 it->position = start_pos;
4159 it->object = NILP (object) ? it->w->buffer : object; 4208 it->object = NILP (object) ? it->w->buffer : object;
4160 it->method = GET_FROM_IMAGE; 4209 it->method = GET_FROM_IMAGE;
4210 it->from_overlay = Qnil;
4161 it->face_id = face_id; 4211 it->face_id = face_id;
4162 4212
4163 /* Say that we haven't consumed the characters with 4213 /* Say that we haven't consumed the characters with
@@ -4228,6 +4278,7 @@ handle_single_display_spec (it, spec, object, position,
4228 it->position = *position; 4278 it->position = *position;
4229 push_it (it); 4279 push_it (it);
4230 it->position = save_pos; 4280 it->position = save_pos;
4281 it->from_overlay = overlay;
4231 4282
4232 if (NILP (location)) 4283 if (NILP (location))
4233 it->area = TEXT_AREA; 4284 it->area = TEXT_AREA;
@@ -5011,7 +5062,10 @@ load_overlay_strings (it, charpos)
5011 i = 0; 5062 i = 0;
5012 j = it->current.overlay_string_index; 5063 j = it->current.overlay_string_index;
5013 while (i < OVERLAY_STRING_CHUNK_SIZE && j < n) 5064 while (i < OVERLAY_STRING_CHUNK_SIZE && j < n)
5014 it->overlay_strings[i++] = entries[j++].string; 5065 {
5066 it->overlay_strings[i] = entries[j].string;
5067 it->string_overlays[i++] = entries[j++].overlay;
5068 }
5015 5069
5016 CHECK_IT (it); 5070 CHECK_IT (it);
5017} 5071}
@@ -5057,6 +5111,7 @@ get_overlay_strings_1 (it, charpos, compute_stop_p)
5057 string. */ 5111 string. */
5058 IT_STRING_CHARPOS (*it) = IT_STRING_BYTEPOS (*it) = 0; 5112 IT_STRING_CHARPOS (*it) = IT_STRING_BYTEPOS (*it) = 0;
5059 it->string = it->overlay_strings[0]; 5113 it->string = it->overlay_strings[0];
5114 it->from_overlay = Qnil;
5060 it->stop_charpos = 0; 5115 it->stop_charpos = 0;
5061 xassert (STRINGP (it->string)); 5116 xassert (STRINGP (it->string));
5062 it->end_charpos = SCHARS (it->string); 5117 it->end_charpos = SCHARS (it->string);
@@ -5110,6 +5165,7 @@ push_it (it)
5110 p->face_id = it->face_id; 5165 p->face_id = it->face_id;
5111 p->string = it->string; 5166 p->string = it->string;
5112 p->method = it->method; 5167 p->method = it->method;
5168 p->from_overlay = it->from_overlay;
5113 switch (p->method) 5169 switch (p->method)
5114 { 5170 {
5115 case GET_FROM_IMAGE: 5171 case GET_FROM_IMAGE:
@@ -5163,6 +5219,7 @@ pop_it (it)
5163 it->current = p->current; 5219 it->current = p->current;
5164 it->position = p->position; 5220 it->position = p->position;
5165 it->string = p->string; 5221 it->string = p->string;
5222 it->from_overlay = p->from_overlay;
5166 if (NILP (it->string)) 5223 if (NILP (it->string))
5167 SET_TEXT_POS (it->current.string_pos, -1, -1); 5224 SET_TEXT_POS (it->current.string_pos, -1, -1);
5168 it->method = p->method; 5225 it->method = p->method;
@@ -17545,7 +17602,9 @@ are the selected window and the window's buffer). */)
17545 buffer = w->buffer; 17602 buffer = w->buffer;
17546 CHECK_BUFFER (buffer); 17603 CHECK_BUFFER (buffer);
17547 17604
17548 if (NILP (format)) 17605 /* Make formatting the modeline a non-op when noninteractive, otherwise
17606 there will be problems later caused by a partially initialized frame. */
17607 if (NILP (format) || noninteractive)
17549 return empty_unibyte_string; 17608 return empty_unibyte_string;
17550 17609
17551 if (no_props) 17610 if (no_props)
diff --git a/src/xfaces.c b/src/xfaces.c
index 50d733c7d0b..fd7dbb88133 100644
--- a/src/xfaces.c
+++ b/src/xfaces.c
@@ -8216,6 +8216,85 @@ face_at_buffer_position (w, pos, region_beg, region_end,
8216 return lookup_face (f, attrs); 8216 return lookup_face (f, attrs);
8217} 8217}
8218 8218
8219/* Return the face ID at buffer position POS for displaying ASCII
8220 characters associated with overlay strings for overlay OVERLAY.
8221
8222 Like face_at_buffer_position except for OVERLAY. Currently it
8223 simply disregards the `face' properties of all overlays. */
8224
8225int
8226face_for_overlay_string (w, pos, region_beg, region_end,
8227 endptr, limit, mouse, overlay)
8228 struct window *w;
8229 int pos;
8230 int region_beg, region_end;
8231 int *endptr;
8232 int limit;
8233 int mouse;
8234 Lisp_Object overlay;
8235{
8236 struct frame *f = XFRAME (w->frame);
8237 Lisp_Object attrs[LFACE_VECTOR_SIZE];
8238 Lisp_Object prop, position;
8239 int i, noverlays;
8240 Lisp_Object *overlay_vec;
8241 Lisp_Object frame;
8242 int endpos;
8243 Lisp_Object propname = mouse ? Qmouse_face : Qface;
8244 Lisp_Object limit1, end;
8245 struct face *default_face;
8246
8247 /* W must display the current buffer. We could write this function
8248 to use the frame and buffer of W, but right now it doesn't. */
8249 /* xassert (XBUFFER (w->buffer) == current_buffer); */
8250
8251 XSETFRAME (frame, f);
8252 XSETFASTINT (position, pos);
8253
8254 endpos = ZV;
8255 if (pos < region_beg && region_beg < endpos)
8256 endpos = region_beg;
8257
8258 /* Get the `face' or `mouse_face' text property at POS, and
8259 determine the next position at which the property changes. */
8260 prop = Fget_text_property (position, propname, w->buffer);
8261 XSETFASTINT (limit1, (limit < endpos ? limit : endpos));
8262 end = Fnext_single_property_change (position, propname, w->buffer, limit1);
8263 if (INTEGERP (end))
8264 endpos = XINT (end);
8265
8266 *endptr = endpos;
8267
8268 default_face = FACE_FROM_ID (f, DEFAULT_FACE_ID);
8269
8270 /* Optimize common cases where we can use the default face. */
8271 if (NILP (prop)
8272 && !(pos >= region_beg && pos < region_end))
8273 return DEFAULT_FACE_ID;
8274
8275 /* Begin with attributes from the default face. */
8276 bcopy (default_face->lface, attrs, sizeof attrs);
8277
8278 /* Merge in attributes specified via text properties. */
8279 if (!NILP (prop))
8280 merge_face_ref (f, prop, attrs, 1, 0);
8281
8282 /* If in the region, merge in the region face. */
8283 if (pos >= region_beg && pos < region_end)
8284 {
8285 merge_named_face (f, Qregion, attrs, 0);
8286
8287 if (region_end < endpos)
8288 endpos = region_end;
8289 }
8290
8291 *endptr = endpos;
8292
8293 /* Look up a realized face with the given face attributes,
8294 or realize a new one for ASCII characters. */
8295 return lookup_face (f, attrs, 0, NULL);
8296}
8297
8219 8298
8220/* Compute the face at character position POS in Lisp string STRING on 8299/* Compute the face at character position POS in Lisp string STRING on
8221 window W, for ASCII characters. 8300 window W, for ASCII characters.
diff --git a/src/xfns.c b/src/xfns.c
index b176b3ffda5..95efa697110 100644
--- a/src/xfns.c
+++ b/src/xfns.c
@@ -143,11 +143,7 @@ static Lisp_Object Vgtk_version_string;
143 143
144#endif /* USE_GTK */ 144#endif /* USE_GTK */
145 145
146#ifdef HAVE_X11R4
147#define MAXREQUEST(dpy) (XMaxRequestSize (dpy)) 146#define MAXREQUEST(dpy) (XMaxRequestSize (dpy))
148#else
149#define MAXREQUEST(dpy) ((dpy)->max_request_size)
150#endif
151 147
152/* The gray bitmap `bitmaps/gray'. This is done because xterm.c uses 148/* The gray bitmap `bitmaps/gray'. This is done because xterm.c uses
153 it, and including `bitmaps/gray' more than once is a problem when 149 it, and including `bitmaps/gray' more than once is a problem when
@@ -1601,7 +1597,6 @@ x_set_name_internal (f, name)
1601 if (FRAME_X_WINDOW (f)) 1597 if (FRAME_X_WINDOW (f))
1602 { 1598 {
1603 BLOCK_INPUT; 1599 BLOCK_INPUT;
1604#ifdef HAVE_X11R4
1605 { 1600 {
1606 XTextProperty text, icon; 1601 XTextProperty text, icon;
1607 int bytes, stringp; 1602 int bytes, stringp;
@@ -1669,12 +1664,6 @@ x_set_name_internal (f, name)
1669 if (do_free_text_value) 1664 if (do_free_text_value)
1670 xfree (text.value); 1665 xfree (text.value);
1671 } 1666 }
1672#else /* not HAVE_X11R4 */
1673 XSetIconName (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f),
1674 SDATA (name));
1675 XStoreName (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f),
1676 SDATA (name));
1677#endif /* not HAVE_X11R4 */
1678 UNBLOCK_INPUT; 1667 UNBLOCK_INPUT;
1679 } 1668 }
1680} 1669}
@@ -1861,23 +1850,6 @@ x_default_scroll_bar_color_parameter (f, alist, prop, xprop, xclass,
1861 1850
1862 1851
1863 1852
1864#if !defined (HAVE_X11R4) && !defined (HAVE_XSETWMPROTOCOLS)
1865
1866Status
1867XSetWMProtocols (dpy, w, protocols, count)
1868 Display *dpy;
1869 Window w;
1870 Atom *protocols;
1871 int count;
1872{
1873 Atom prop;
1874 prop = XInternAtom (dpy, "WM_PROTOCOLS", False);
1875 if (prop == None) return False;
1876 XChangeProperty (dpy, w, prop, XA_ATOM, 32, PropModeReplace,
1877 (unsigned char *) protocols, count);
1878 return True;
1879}
1880#endif /* not HAVE_X11R4 && not HAVE_XSETWMPROTOCOLS */
1881 1853
1882#ifdef USE_X_TOOLKIT 1854#ifdef USE_X_TOOLKIT
1883 1855
@@ -4220,11 +4192,7 @@ select_visual (dpyinfo)
4220 4192
4221 dpyinfo->visual = DefaultVisualOfScreen (screen); 4193 dpyinfo->visual = DefaultVisualOfScreen (screen);
4222 4194
4223#ifdef HAVE_X11R4
4224 vinfo_template.visualid = XVisualIDFromVisual (dpyinfo->visual); 4195 vinfo_template.visualid = XVisualIDFromVisual (dpyinfo->visual);
4225#else
4226 vinfo_template.visualid = dpyinfo->visual->visualid;
4227#endif
4228 vinfo_template.screen = XScreenNumberOfScreen (screen); 4196 vinfo_template.screen = XScreenNumberOfScreen (screen);
4229 vinfo = XGetVisualInfo (dpy, VisualIDMask | VisualScreenMask, 4197 vinfo = XGetVisualInfo (dpy, VisualIDMask | VisualScreenMask,
4230 &vinfo_template, &n_visuals); 4198 &vinfo_template, &n_visuals);
diff --git a/src/xselect.c b/src/xselect.c
index 0db5ef57767..45907b30be4 100644
--- a/src/xselect.c
+++ b/src/xselect.c
@@ -140,11 +140,7 @@ static Lisp_Object Qforeign_selection;
140 incremental transfer stuff, but it might improve server performance. */ 140 incremental transfer stuff, but it might improve server performance. */
141#define MAX_SELECTION_QUANTUM 0xFFFFFF 141#define MAX_SELECTION_QUANTUM 0xFFFFFF
142 142
143#ifdef HAVE_X11R4
144#define SELECTION_QUANTUM(dpy) ((XMaxRequestSize(dpy) << 2) - 100) 143#define SELECTION_QUANTUM(dpy) ((XMaxRequestSize(dpy) << 2) - 100)
145#else
146#define SELECTION_QUANTUM(dpy) (((dpy)->max_request_size << 2) - 100)
147#endif
148 144
149/* The timestamp of the last input event Emacs received from the X server. */ 145/* The timestamp of the last input event Emacs received from the X server. */
150/* Defined in keyboard.c. */ 146/* Defined in keyboard.c. */
diff --git a/src/xterm.c b/src/xterm.c
index 9af6060d167..7d20e9bd48f 100644
--- a/src/xterm.c
+++ b/src/xterm.c
@@ -2754,7 +2754,6 @@ x_draw_stretch_glyph_string (s)
2754 struct glyph_string *s; 2754 struct glyph_string *s;
2755{ 2755{
2756 xassert (s->first_glyph->type == STRETCH_GLYPH); 2756 xassert (s->first_glyph->type == STRETCH_GLYPH);
2757 s->stippled_p = s->face->stipple != 0;
2758 2757
2759 if (s->hl == DRAW_CURSOR 2758 if (s->hl == DRAW_CURSOR
2760 && !x_stretch_cursor_p) 2759 && !x_stretch_cursor_p)
@@ -3688,12 +3687,7 @@ x_find_modifier_meanings (dpyinfo)
3688 dpyinfo->super_mod_mask = 0; 3687 dpyinfo->super_mod_mask = 0;
3689 dpyinfo->hyper_mod_mask = 0; 3688 dpyinfo->hyper_mod_mask = 0;
3690 3689
3691#ifdef HAVE_X11R4
3692 XDisplayKeycodes (dpyinfo->display, &min_code, &max_code); 3690 XDisplayKeycodes (dpyinfo->display, &min_code, &max_code);
3693#else
3694 min_code = dpyinfo->display->min_keycode;
3695 max_code = dpyinfo->display->max_keycode;
3696#endif
3697 3691
3698 syms = XGetKeyboardMapping (dpyinfo->display, 3692 syms = XGetKeyboardMapping (dpyinfo->display,
3699 min_code, max_code - min_code + 1, 3693 min_code, max_code - min_code + 1,
@@ -6709,14 +6703,6 @@ handle_one_xevent (dpyinfo, eventp, finish, hold_quit)
6709 || (orig_keysym & (1 << 28)) 6703 || (orig_keysym & (1 << 28))
6710 || (keysym != NoSymbol && nbytes == 0)) 6704 || (keysym != NoSymbol && nbytes == 0))
6711 && ! (IsModifierKey (orig_keysym) 6705 && ! (IsModifierKey (orig_keysym)
6712#ifndef HAVE_X11R5
6713#ifdef XK_Mode_switch
6714 || ((unsigned)(orig_keysym) == XK_Mode_switch)
6715#endif
6716#ifdef XK_Num_Lock
6717 || ((unsigned)(orig_keysym) == XK_Num_Lock)
6718#endif
6719#endif /* not HAVE_X11R5 */
6720 /* The symbols from XK_ISO_Lock 6706 /* The symbols from XK_ISO_Lock
6721 to XK_ISO_Last_Group_Lock 6707 to XK_ISO_Last_Group_Lock
6722 don't have real modifiers but 6708 don't have real modifiers but
@@ -7806,7 +7792,6 @@ x_text_icon (f, icon_name)
7806 if (FRAME_X_WINDOW (f) == 0) 7792 if (FRAME_X_WINDOW (f) == 0)
7807 return 1; 7793 return 1;
7808 7794
7809#ifdef HAVE_X11R4
7810 { 7795 {
7811 XTextProperty text; 7796 XTextProperty text;
7812 text.value = (unsigned char *) icon_name; 7797 text.value = (unsigned char *) icon_name;
@@ -7815,9 +7800,6 @@ x_text_icon (f, icon_name)
7815 text.nitems = strlen (icon_name); 7800 text.nitems = strlen (icon_name);
7816 XSetWMIconName (FRAME_X_DISPLAY (f), FRAME_OUTER_WINDOW (f), &text); 7801 XSetWMIconName (FRAME_X_DISPLAY (f), FRAME_OUTER_WINDOW (f), &text);
7817 } 7802 }
7818#else /* not HAVE_X11R4 */
7819 XSetIconName (FRAME_X_DISPLAY (f), FRAME_OUTER_WINDOW (f), icon_name);
7820#endif /* not HAVE_X11R4 */
7821 7803
7822 if (f->output_data.x->icon_bitmap > 0) 7804 if (f->output_data.x->icon_bitmap > 0)
7823 x_destroy_bitmap (f, f->output_data.x->icon_bitmap); 7805 x_destroy_bitmap (f, f->output_data.x->icon_bitmap);
@@ -9505,7 +9487,6 @@ x_make_frame_invisible (f)
9505 else 9487 else
9506#endif 9488#endif
9507 { 9489 {
9508#ifdef HAVE_X11R4
9509 9490
9510 if (! XWithdrawWindow (FRAME_X_DISPLAY (f), window, 9491 if (! XWithdrawWindow (FRAME_X_DISPLAY (f), window,
9511 DefaultScreen (FRAME_X_DISPLAY (f)))) 9492 DefaultScreen (FRAME_X_DISPLAY (f))))
@@ -9513,31 +9494,6 @@ x_make_frame_invisible (f)
9513 UNBLOCK_INPUT_RESIGNAL; 9494 UNBLOCK_INPUT_RESIGNAL;
9514 error ("Can't notify window manager of window withdrawal"); 9495 error ("Can't notify window manager of window withdrawal");
9515 } 9496 }
9516#else /* ! defined (HAVE_X11R4) */
9517
9518 /* Tell the window manager what we're going to do. */
9519 if (! EQ (Vx_no_window_manager, Qt))
9520 {
9521 XEvent unmap;
9522
9523 unmap.xunmap.type = UnmapNotify;
9524 unmap.xunmap.window = window;
9525 unmap.xunmap.event = DefaultRootWindow (FRAME_X_DISPLAY (f));
9526 unmap.xunmap.from_configure = False;
9527 if (! XSendEvent (FRAME_X_DISPLAY (f),
9528 DefaultRootWindow (FRAME_X_DISPLAY (f)),
9529 False,
9530 SubstructureRedirectMaskSubstructureNotifyMask,
9531 &unmap))
9532 {
9533 UNBLOCK_INPUT_RESIGNAL;
9534 error ("Can't notify window manager of withdrawal");
9535 }
9536 }
9537
9538 /* Unmap the window ourselves. Cheeky! */
9539 XUnmapWindow (FRAME_X_DISPLAY (f), window);
9540#endif /* ! defined (HAVE_X11R4) */
9541 } 9497 }
9542 9498
9543 /* We can't distinguish this from iconification 9499 /* We can't distinguish this from iconification
@@ -9903,16 +9859,11 @@ x_wm_set_size_hint (f, flags, user_position)
9903 them; otherwise, we set the min_width and min_height members 9859 them; otherwise, we set the min_width and min_height members
9904 to the size for a zero x zero frame. */ 9860 to the size for a zero x zero frame. */
9905 9861
9906#ifdef HAVE_X11R4
9907 size_hints.flags |= PBaseSize; 9862 size_hints.flags |= PBaseSize;
9908 size_hints.base_width = base_width; 9863 size_hints.base_width = base_width;
9909 size_hints.base_height = base_height; 9864 size_hints.base_height = base_height;
9910 size_hints.min_width = base_width + min_cols * size_hints.width_inc; 9865 size_hints.min_width = base_width + min_cols * size_hints.width_inc;
9911 size_hints.min_height = base_height + min_rows * size_hints.height_inc; 9866 size_hints.min_height = base_height + min_rows * size_hints.height_inc;
9912#else
9913 size_hints.min_width = base_width;
9914 size_hints.min_height = base_height;
9915#endif
9916 } 9867 }
9917 9868
9918 /* If we don't need the old flags, we don't need the old hint at all. */ 9869 /* If we don't need the old flags, we don't need the old hint at all. */
@@ -9928,12 +9879,8 @@ x_wm_set_size_hint (f, flags, user_position)
9928 long supplied_return; 9879 long supplied_return;
9929 int value; 9880 int value;
9930 9881
9931#ifdef HAVE_X11R4
9932 value = XGetWMNormalHints (FRAME_X_DISPLAY (f), window, &hints, 9882 value = XGetWMNormalHints (FRAME_X_DISPLAY (f), window, &hints,
9933 &supplied_return); 9883 &supplied_return);
9934#else
9935 value = XGetNormalHints (FRAME_X_DISPLAY (f), window, &hints);
9936#endif
9937 9884
9938#ifdef USE_X_TOOLKIT 9885#ifdef USE_X_TOOLKIT
9939 size_hints.base_height = hints.base_height; 9886 size_hints.base_height = hints.base_height;
@@ -9974,11 +9921,7 @@ x_wm_set_size_hint (f, flags, user_position)
9974 } 9921 }
9975#endif /* PWinGravity */ 9922#endif /* PWinGravity */
9976 9923
9977#ifdef HAVE_X11R4
9978 XSetWMNormalHints (FRAME_X_DISPLAY (f), window, &size_hints); 9924 XSetWMNormalHints (FRAME_X_DISPLAY (f), window, &size_hints);
9979#else
9980 XSetNormalHints (FRAME_X_DISPLAY (f), window, &size_hints);
9981#endif
9982} 9925}
9983#endif /* not USE_GTK */ 9926#endif /* not USE_GTK */
9984 9927
@@ -11138,9 +11081,7 @@ x_term_init (display_name, xrm_option, resource_name)
11138 argv[argc++] = "--name"; 11081 argv[argc++] = "--name";
11139 argv[argc++] = resource_name; 11082 argv[argc++] = resource_name;
11140 11083
11141#ifdef HAVE_X11R5
11142 XSetLocaleModifiers (""); 11084 XSetLocaleModifiers ("");
11143#endif
11144 11085
11145 gtk_init (&argc, &argv2); 11086 gtk_init (&argc, &argv2);
11146 11087
@@ -11205,9 +11146,7 @@ x_term_init (display_name, xrm_option, resource_name)
11205 } 11146 }
11206 11147
11207#else /* not USE_X_TOOLKIT */ 11148#else /* not USE_X_TOOLKIT */
11208#ifdef HAVE_X11R5
11209 XSetLocaleModifiers (""); 11149 XSetLocaleModifiers ("");
11210#endif
11211 dpy = XOpenDisplay (SDATA (display_name)); 11150 dpy = XOpenDisplay (SDATA (display_name));
11212#endif /* not USE_X_TOOLKIT */ 11151#endif /* not USE_X_TOOLKIT */
11213#endif /* not USE_GTK*/ 11152#endif /* not USE_GTK*/
@@ -11518,9 +11457,6 @@ x_term_init (display_name, xrm_option, resource_name)
11518#endif /* ! defined (SIGIO) */ 11457#endif /* ! defined (SIGIO) */
11519 11458
11520#ifdef USE_LUCID 11459#ifdef USE_LUCID
11521#ifdef HAVE_X11R5 /* It seems X11R4 lacks XtCvtStringToFont, and XPointer. */
11522 /* Make sure that we have a valid font for dialog boxes
11523 so that Xt does not crash. */
11524 { 11460 {
11525 Display *dpy = dpyinfo->display; 11461 Display *dpy = dpyinfo->display;
11526 XrmValue d, fr, to; 11462 XrmValue d, fr, to;
@@ -11540,7 +11476,6 @@ x_term_init (display_name, xrm_option, resource_name)
11540 x_uncatch_errors (); 11476 x_uncatch_errors ();
11541 } 11477 }
11542#endif 11478#endif
11543#endif
11544 11479
11545 /* See if we should run in synchronous mode. This is useful 11480 /* See if we should run in synchronous mode. This is useful
11546 for debugging X code. */ 11481 for debugging X code. */
diff --git a/src/xterm.h b/src/xterm.h
index ec583e39f4d..40cbf695d38 100644
--- a/src/xterm.h
+++ b/src/xterm.h
@@ -59,43 +59,6 @@ typedef GtkWidget *xt_or_gtk_widget;
59 59
60/* Bookkeeping to distinguish X versions. */ 60/* Bookkeeping to distinguish X versions. */
61 61
62/* HAVE_X11R4 is defined if we have the features of X11R4. It should
63 be defined when we're using X11R5, since X11R5 has the features of
64 X11R4. If, in the future, we find we need more of these flags
65 (HAVE_X11R5, for example), code should always be written to test
66 the most recent flag first:
67
68 #ifdef HAVE_X11R5
69 ...
70 #elif HAVE_X11R4
71 ...
72 #elif HAVE_X11
73 ...
74 #endif
75
76 If you ever find yourself writing a "#ifdef HAVE_FOO" clause that
77 looks a lot like another one, consider moving the text into a macro
78 whose definition is configuration-dependent, but whose usage is
79 universal - like the stuff in systime.h.
80
81 It turns out that we can auto-detect whether we're being compiled
82 with X11R3 or X11R4 by looking for the flag macros for R4 structure
83 members that R3 doesn't have. */
84#ifdef PBaseSize
85/* AIX 3.1's X is somewhere between X11R3 and X11R4. It has
86 PBaseSize, but not XWithdrawWindow, XSetWMName, XSetWMNormalHints,
87 XSetWMIconName.
88 AIX 3.2 is at least X11R4. */
89#if (!defined AIX) || (defined AIX3_2)
90#define HAVE_X11R4
91#endif
92#endif
93
94#ifdef HAVE_X11R5
95/* In case someone has X11R5 on AIX 3.1,
96 make sure HAVE_X11R4 is defined as well as HAVE_X11R5. */
97#define HAVE_X11R4
98#endif
99 62
100#ifdef HAVE_X_I18N 63#ifdef HAVE_X_I18N
101#include <X11/Xlocale.h> 64#include <X11/Xlocale.h>