aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/ChangeLog71
-rw-r--r--src/Makefile.in2
-rw-r--r--src/data.c10
-rw-r--r--src/emacs.c2
-rw-r--r--src/fileio.c25
-rw-r--r--src/gtkutil.c73
-rw-r--r--src/image.c3
-rw-r--r--src/indent.c3
-rw-r--r--src/makefile.nt1232
-rw-r--r--src/msdos.c1
-rw-r--r--src/syntax.h4
-rw-r--r--src/syssignal.h3
-rw-r--r--src/w32term.c29
-rw-r--r--src/window.c4
-rw-r--r--src/xdisp.c41
15 files changed, 158 insertions, 1345 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index f8a9e5fb767..cf2201e95dd 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,74 @@
12004-05-07 Juanma Barranquero <lektu@terra.es>
2
3 * window.c (Fset_window_buffer): Fix docstring.
4
52004-05-06 Thien-Thi Nguyen <ttn@gnu.org>
6
7 * emacs.c (main) [VMS]: Fix var ref.
8
92004-05-06 Romain Francoise <romain@orebokech.com> (tiny change)
10
11 * data.c (Fsetq_default): Fix docstring.
12
132004-05-06 Jason Rumney <jasonr@gnu.org>
14
15 * image.c (Display) [HAVE_NTGUI]: Redefine while loading xpm.h
16 to avoid name clash.
17
182004-05-04 Jan Dj,Ad(Brv <jan.h.d@swipnet.se>
19
20 * fileio.c (barf_or_query_if_file_exists): Use lstat.
21 (Frename_file): Handle renaming of symlinks across file systems.
22 (Frename_file): Put symlink handling inside #ifdef S_IFLNK.
23
242004-05-04 Kim F. Storm <storm@cua.dk>
25
26 * xdisp.c (Qtotal): New var.
27 (syms_of_xdisp): Intern and staticpro it.
28 (calc_line_height_property): New arg total. Set it if
29 line-spacing property has format (total . VALUE).
30 (x_produce_glyphs): Ignore line-spacing if line-height is 0.
31 Handle total line-spacing property.
32
332004-05-03 Jan Dj,Ad(Brv <jan.h.d@swipnet.se>
34
35 * gtkutil.c (xg_update_scrollbar_pos): Call XClearWindow to clear
36 "under" scroll bar when size/position changes.
37
382004-05-03 Jason Rumney <jasonr@gnu.org>
39
40 * makefile.nt: Remove.
41
422004-05-02 Eli Zaretskii <eliz@gnu.org>
43
44 * syntax.h (SET_RAW_SYNTAX_ENTRY, SYNTAX_ENTRY_INT): Avoid
45 compiler warnings.
46
47 * Makefile.in (region-cache.o): Depend on config.h.
48
492004-05-02 Romain Francoise <romain@orebokech.com> (tiny change)
50
51 * indent.c (compute_motion): Save vpos in prev_vpos when dealing
52 with continuation lines, too.
53
542004-05-02 Thien-Thi Nguyen <ttn@gnu.org>
55
56 * syssignal.h (init_signals): Move decl outside `#ifdef POSIX_SIGNALS'.
57
582004-05-01 Stefan Monnier <monnier@iro.umontreal.ca>
59
60 * xdisp.c (calc_line_height_property): YAILOM (yet another
61 int/Lisp_Object mixup).
62
632004-05-01 Eli Zaretskii <eliz@gnu.org>
64
65 * msdos.c (top-level): Add "#pragma pack(0)" after <dir.h>, to
66 undo bad effect of pack(4) in some versions of system headers.
67
682004-05-01 Jason Rumney <jasonr@gnu.org>
69
70 * w32term.c (x_draw_hollow_cursor): Sync with xterm.c
71
12004-04-30 Kim F. Storm <storm@cua.dk> 722004-04-30 Kim F. Storm <storm@cua.dk>
2 73
3 * buffer.c (syms_of_buffer) <line-spacing>: Allow float value. 74 * buffer.c (syms_of_buffer) <line-spacing>: Allow float value.
diff --git a/src/Makefile.in b/src/Makefile.in
index e22abf754fd..30dbc9df0cf 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -1125,7 +1125,7 @@ process.o: process.c process.h buffer.h window.h termhooks.h termopts.h \
1125 blockinput.h atimer.h charset.h coding.h ccl.h msdos.h composite.h \ 1125 blockinput.h atimer.h charset.h coding.h ccl.h msdos.h composite.h \
1126 keyboard.h $(config_h) 1126 keyboard.h $(config_h)
1127regex.o: regex.c syntax.h buffer.h $(config_h) regex.h category.h charset.h 1127regex.o: regex.c syntax.h buffer.h $(config_h) regex.h category.h charset.h
1128region-cache.o: region-cache.c buffer.h region-cache.h 1128region-cache.o: region-cache.c buffer.h region-cache.h $(config_h)
1129scroll.o: scroll.c termchar.h dispextern.h frame.h msdos.h keyboard.h \ 1129scroll.o: scroll.c termchar.h dispextern.h frame.h msdos.h keyboard.h \
1130 termhooks.h $(config_h) 1130 termhooks.h $(config_h)
1131search.o: search.c regex.h commands.h buffer.h region-cache.h syntax.h \ 1131search.o: search.c regex.h commands.h buffer.h region-cache.h syntax.h \
diff --git a/src/data.c b/src/data.c
index c94723d09d0..6ce9a5d37aa 100644
--- a/src/data.c
+++ b/src/data.c
@@ -1468,11 +1468,11 @@ The default value of a variable is seen in buffers
1468that do not have their own values for the variable. 1468that do not have their own values for the variable.
1469 1469
1470More generally, you can use multiple variables and values, as in 1470More generally, you can use multiple variables and values, as in
1471 (setq-default SYMBOL VALUE SYMBOL VALUE...) 1471 (setq-default VAR VALUE VAR VALUE...)
1472This sets each SYMBOL's default value to the corresponding VALUE. 1472This sets each VAR's default value to the corresponding VALUE.
1473The VALUE for the Nth SYMBOL can refer to the new default values 1473The VALUE for the Nth VAR can refer to the new default values
1474of previous SYMs. 1474of previous VARs.
1475usage: (setq-default SYMBOL VALUE [SYMBOL VALUE...]) */) 1475usage: (setq-default VAR VALUE [VAR VALUE...]) */)
1476 (args) 1476 (args)
1477 Lisp_Object args; 1477 Lisp_Object args;
1478{ 1478{
diff --git a/src/emacs.c b/src/emacs.c
index 011d66c5cab..75bea1da4cf 100644
--- a/src/emacs.c
+++ b/src/emacs.c
@@ -895,7 +895,7 @@ main (argc, argv
895 /* If -map specified, map the data file in. */ 895 /* If -map specified, map the data file in. */
896 { 896 {
897 char *file; 897 char *file;
898 if (argmatch (argv, argc, "-map", "--map-data", 3, &mapin_file, &skip_args)) 898 if (argmatch (argv, argc, "-map", "--map-data", 3, &file, &skip_args))
899 mapin_data (file); 899 mapin_data (file);
900 } 900 }
901 901
diff --git a/src/fileio.c b/src/fileio.c
index db1aac0afda..bd84ce6121b 100644
--- a/src/fileio.c
+++ b/src/fileio.c
@@ -2351,7 +2351,7 @@ barf_or_query_if_file_exists (absname, querystring, interactive, statptr, quick)
2351 2351
2352 /* stat is a good way to tell whether the file exists, 2352 /* stat is a good way to tell whether the file exists,
2353 regardless of what access permissions it has. */ 2353 regardless of what access permissions it has. */
2354 if (stat (SDATA (encoded_filename), &statbuf) >= 0) 2354 if (lstat (SDATA (encoded_filename), &statbuf) >= 0)
2355 { 2355 {
2356 if (! interactive) 2356 if (! interactive)
2357 Fsignal (Qfile_already_exists, 2357 Fsignal (Qfile_already_exists,
@@ -2686,11 +2686,11 @@ This is what happens in interactive use with M-x. */)
2686 Lisp_Object args[2]; 2686 Lisp_Object args[2];
2687#endif 2687#endif
2688 Lisp_Object handler; 2688 Lisp_Object handler;
2689 struct gcpro gcpro1, gcpro2, gcpro3, gcpro4; 2689 struct gcpro gcpro1, gcpro2, gcpro3, gcpro4, gcpro5;
2690 Lisp_Object encoded_file, encoded_newname; 2690 Lisp_Object encoded_file, encoded_newname, symlink_target;
2691 2691
2692 encoded_file = encoded_newname = Qnil; 2692 symlink_target = encoded_file = encoded_newname = Qnil;
2693 GCPRO4 (file, newname, encoded_file, encoded_newname); 2693 GCPRO5 (file, newname, encoded_file, encoded_newname, symlink_target);
2694 CHECK_STRING (file); 2694 CHECK_STRING (file);
2695 CHECK_STRING (newname); 2695 CHECK_STRING (newname);
2696 file = Fexpand_file_name (file, Qnil); 2696 file = Fexpand_file_name (file, Qnil);
@@ -2727,10 +2727,17 @@ This is what happens in interactive use with M-x. */)
2727 { 2727 {
2728 if (errno == EXDEV) 2728 if (errno == EXDEV)
2729 { 2729 {
2730 Fcopy_file (file, newname, 2730#ifdef S_IFLNK
2731 /* We have already prompted if it was an integer, 2731 symlink_target = Ffile_symlink_p (file);
2732 so don't have copy-file prompt again. */ 2732 if (! NILP (symlink_target))
2733 NILP (ok_if_already_exists) ? Qnil : Qt, Qt); 2733 Fmake_symbolic_link (symlink_target, newname,
2734 NILP (ok_if_already_exists) ? Qnil : Qt, Qt);
2735 else
2736#endif
2737 Fcopy_file (file, newname,
2738 /* We have already prompted if it was an integer,
2739 so don't have copy-file prompt again. */
2740 NILP (ok_if_already_exists) ? Qnil : Qt, Qt);
2734 Fdelete_file (file); 2741 Fdelete_file (file);
2735 } 2742 }
2736 else 2743 else
diff --git a/src/gtkutil.c b/src/gtkutil.c
index 4d0b50573f7..82d5135d2bc 100644
--- a/src/gtkutil.c
+++ b/src/gtkutil.c
@@ -2760,18 +2760,16 @@ xg_update_scrollbar_pos (f, scrollbar_id, top, left, width, height,
2760 if (wscroll) 2760 if (wscroll)
2761 { 2761 {
2762 GtkWidget *wfixed = f->output_data.x->edit_widget; 2762 GtkWidget *wfixed = f->output_data.x->edit_widget;
2763 int winextra = canon_width > width ? (canon_width - width) / 2 : 0;
2764 int bottom = top + height;
2765 2763
2766 gint slider_width; 2764 gtk_container_set_reallocate_redraws (GTK_CONTAINER (wfixed), TRUE);
2767 int oldtop, oldleft, oldbottom;
2768 GtkRequisition req;
2769 2765
2770 /* Get old values. */ 2766 /* Move and resize to new values. */
2771 xg_find_top_left_in_fixed (wscroll, wfixed, &oldleft, &oldtop); 2767 gtk_fixed_move (GTK_FIXED (wfixed), wscroll, left, top);
2772 gtk_widget_size_request (wscroll, &req); 2768 gtk_widget_set_size_request (wscroll, width, height);
2773 oldbottom = oldtop + req.height;
2774 2769
2770 /* Must force out update so changed scroll bars gets redrawn. */
2771 gdk_window_process_all_updates ();
2772
2775 /* Scroll bars in GTK has a fixed width, so if we say width 16, it 2773 /* Scroll bars in GTK has a fixed width, so if we say width 16, it
2776 will only be its fixed width (14 is default) anyway, the rest is 2774 will only be its fixed width (14 is default) anyway, the rest is
2777 blank. We are drawing the mode line across scroll bars when 2775 blank. We are drawing the mode line across scroll bars when
@@ -2799,62 +2797,7 @@ xg_update_scrollbar_pos (f, scrollbar_id, top, left, width, height,
2799 the scroll bar and the edge of the window and between the scroll 2797 the scroll bar and the edge of the window and between the scroll
2800 bar and the fringe. */ 2798 bar and the fringe. */
2801 2799
2802 if (oldtop != -1 && oldleft != -1) 2800 XClearWindow (FRAME_X_DISPLAY (f), GTK_WIDGET_TO_X_WIN (wscroll));
2803 {
2804 int gtkextral, gtkextrah;
2805 int xl, xr, wbl, wbr;
2806 int bottomdiff, topdiff;
2807
2808 gtk_widget_style_get (wscroll, "slider_width", &slider_width, NULL);
2809 gtkextral = width > slider_width ? (width - slider_width) / 2 : 0;
2810 gtkextrah = gtkextral ? (width - slider_width - gtkextral) : 0;
2811
2812 xl = real_left;
2813 wbl = gtkextral + winextra;
2814 wbr = gtkextrah + winextra;
2815 xr = left + gtkextral + slider_width;
2816 bottomdiff = abs (oldbottom - bottom);
2817 topdiff = abs (oldtop - top);
2818
2819 if (oldleft != left)
2820 {
2821 gdk_window_clear_area (wfixed->window, xl, top, wbl, height);
2822 gdk_window_clear_area (wfixed->window, xr, top, wbr, height);
2823 }
2824
2825 if (oldtop > top)
2826 {
2827 gdk_window_clear_area (wfixed->window, xl, top, wbl, topdiff);
2828 gdk_window_clear_area (wfixed->window, xr, top, wbr, topdiff);
2829 }
2830 else if (oldtop < top)
2831 {
2832 gdk_window_clear_area (wfixed->window, xl, oldtop, wbl, topdiff);
2833 gdk_window_clear_area (wfixed->window, xr, oldtop, wbr, topdiff);
2834 }
2835
2836 if (oldbottom > bottom)
2837 {
2838 gdk_window_clear_area (wfixed->window, xl, bottom, wbl,
2839 bottomdiff);
2840 gdk_window_clear_area (wfixed->window, xr, bottom, wbr,
2841 bottomdiff);
2842 }
2843 else if (oldbottom < bottom)
2844 {
2845 gdk_window_clear_area (wfixed->window, xl, oldbottom, wbl,
2846 bottomdiff);
2847 gdk_window_clear_area (wfixed->window, xr, oldbottom, wbr,
2848 bottomdiff);
2849 }
2850 }
2851
2852 /* Move and resize to new values. */
2853 gtk_fixed_move (GTK_FIXED (wfixed), wscroll, left, top);
2854 gtk_widget_set_size_request (wscroll, width, height);
2855
2856 /* Must force out update so changed scroll bars gets redrawn. */
2857 gdk_window_process_all_updates ();
2858 2801
2859 SET_FRAME_GARBAGED (f); 2802 SET_FRAME_GARBAGED (f);
2860 cancel_mouse_face (f); 2803 cancel_mouse_face (f);
diff --git a/src/image.c b/src/image.c
index 4c2bdb440e8..09e497576a4 100644
--- a/src/image.c
+++ b/src/image.c
@@ -3179,13 +3179,16 @@ static int xpm_valid_color_symbols_p P_ ((Lisp_Object));
3179/* Indicate to xpm.h that we don't have Xlib. */ 3179/* Indicate to xpm.h that we don't have Xlib. */
3180#define FOR_MSW 3180#define FOR_MSW
3181/* simx.h in xpm defines XColor and XImage differently than Emacs. */ 3181/* simx.h in xpm defines XColor and XImage differently than Emacs. */
3182/* It also defines Display the same way as Emacs, but gcc 3.3 still barfs. */
3182#define XColor xpm_XColor 3183#define XColor xpm_XColor
3183#define XImage xpm_XImage 3184#define XImage xpm_XImage
3185#define Display xpm_Display
3184#define PIXEL_ALREADY_TYPEDEFED 3186#define PIXEL_ALREADY_TYPEDEFED
3185#include "X11/xpm.h" 3187#include "X11/xpm.h"
3186#undef FOR_MSW 3188#undef FOR_MSW
3187#undef XColor 3189#undef XColor
3188#undef XImage 3190#undef XImage
3191#undef Display
3189#undef PIXEL_ALREADY_TYPEDEFED 3192#undef PIXEL_ALREADY_TYPEDEFED
3190#else 3193#else
3191#include "X11/xpm.h" 3194#include "X11/xpm.h"
diff --git a/src/indent.c b/src/indent.c
index 99422698d51..1dc5c91fbad 100644
--- a/src/indent.c
+++ b/src/indent.c
@@ -1,5 +1,5 @@
1/* Indentation functions. 1/* Indentation functions.
2 Copyright (C) 1985,86,87,88,93,94,95,98,2000,01,02,2003 2 Copyright (C) 1985,86,87,88,93,94,95,98,2000,01,02,03,2004
3 Free Software Foundation, Inc. 3 Free Software Foundation, Inc.
4 4
5This file is part of GNU Emacs. 5This file is part of GNU Emacs.
@@ -1409,6 +1409,7 @@ compute_motion (from, fromvpos, fromhpos, did_motion, to, tovpos, tohpos, width,
1409 vpos++; 1409 vpos++;
1410 contin_hpos = prev_hpos; 1410 contin_hpos = prev_hpos;
1411 prev_hpos = 0; 1411 prev_hpos = 0;
1412 prev_vpos = vpos;
1412 } 1413 }
1413 } 1414 }
1414 1415
diff --git a/src/makefile.nt b/src/makefile.nt
deleted file mode 100644
index 0cf08f37105..00000000000
--- a/src/makefile.nt
+++ /dev/null
@@ -1,1232 +0,0 @@
1# Makefile for GNU Emacs on the Microsoft W32 API.
2# Copyright (c) 1992, 1993, 1994, 1995 Free Software Foundation, Inc.
3# Tim Fleehart (apollo@online.com) 17-Apr-92
4# Geoff Voelker (voelker@cs.washington.edu) 11-20-93
5#
6# This file is part of GNU Emacs.
7#
8# GNU Emacs is free software; you can redistribute it and/or modify
9# it under the terms of the GNU General Public License as published by
10# the Free Software Foundation; either version 2, or (at your option)
11# any later version.
12#
13# GNU Emacs is distributed in the hope that it will be useful,
14# but WITHOUT ANY WARRANTY; without even the implied warranty of
15# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16# GNU General Public License for more details.
17#
18# You should have received a copy of the GNU General Public License
19# along with GNU Emacs; see the file COPYING. If not, write to the
20# Free Software Foundation, Inc., 59 Temple Place - Suite 330,
21# Boston, MA 02111-1307, USA.
22#
23
24#
25# Sets up the system dependent macros.
26#
27!include ..\nt\makefile.def
28
29SUBSYSTEM=console
30
31#
32# HAVE_CONFIG_H is required by some generic gnu sources stuck into
33# the emacs source tree.
34#
35LOCAL_FLAGS = -Demacs=1 -DWINDOWSNT -DDOS_NT -DHAVE_CONFIG_H -I..\nt\inc
36!ifdef NTGUI
37LOCAL_FLAGS = $(LOCAL_FLAGS) -DHAVE_NTGUI=1
38!endif
39!ifdef USE_CRT_DLL
40LOCAL_FLAGS = $(LOCAL_FLAGS) -DUSE_CRT_DLL=1 -MD
41libc = msvcrt.lib
42LINK_FLAGS = -nodefaultlib
43!endif
44
45# From MSVC 5.0 onwards, it seem base relocation information is not included,
46# at least in release builds. We need to ensure the reloc info is included
47# in order to use the MSVC profiler.
48!IF ("$(_NMAKE_VER)" == "$(_NMAKE_VER_4)")
49EXTRA_LINK =
50!ELSE
51EXTRA_LINK = -profile
52!ENDIF
53
54EMACS = $(BLD)\emacs.exe
55TEMACS = $(BLD)\temacs.exe
56TEMACS_TMP = $(BLD)\temacs.bin
57TLIB0 = $(BLD)\temacs0.lib
58TLIB1 = $(BLD)\temacs1.lib
59TLIB2 = $(BLD)\temacs2.lib
60!IFDEF NTGUI
61TLIBW32 = $(BLD)\temacw32.lib
62!ELSE
63TLIBW32 =
64!ENDIF
65TOBJ = $(BLD)\firstfile.obj
66!if $(MSVCNT11)
67TRES = $(BLD)\emacs.res
68!else
69TRES = $(BLD)\emacs.rbj
70!endif
71TLASTLIB = $(BLD)\lastfile.lib
72
73# see comments in allocate_heap in w32heap.c before changing any of the
74# -stack, -heap, or -base settings.
75!if "$(BUILD_TYPE)" == "spd"
76LINK_FLAGS = $(LINK_FLAGS) $(ARCH_LDFLAGS) -stack:0x00800000 -heap:0x00100000 -base:0x01000000 -debug:full -debugtype:both -pdb:$(BLD)\temacs.pdb -machine:$(ARCH) -subsystem:$(SUBSYSTEM) -entry:_start -map:$(BLD)\temacs.map -swaprun:net -swaprun:cd
77!else
78LINK_FLAGS = $(LINK_FLAGS) $(ARCH_LDFLAGS) -stack:0x00800000 -heap:0x00100000 -base:0x01000000 -debug:full -debugtype:both -pdb:none -machine:$(ARCH) -subsystem:$(SUBSYSTEM) -entry:_start -map:$(BLD)\temacs.map -swaprun:net -swaprun:cd $(EXTRA_LINK)
79!endif
80
81#
82# Split up the objects into two sets so that we don't run out of
83# command line space when we link them into a library.
84#
85# Put emacs.obj in a separate lib, since we need to have firstfile.obj
86# as the "main" object file when linking.
87#
88OBJ0 = $(BLD)\emacs.obj
89
90OBJ1 = $(BLD)\abbrev.obj \
91 $(BLD)\alloc.obj \
92 $(BLD)\alloca.obj \
93 $(BLD)\atimer.obj \
94 $(BLD)\buffer.obj \
95 $(BLD)\bytecode.obj \
96 $(BLD)\callint.obj \
97 $(BLD)\callproc.obj \
98 $(BLD)\casefiddle.obj \
99 $(BLD)\cm.obj \
100 $(BLD)\cmds.obj \
101 $(BLD)\data.obj \
102 $(BLD)\dired.obj \
103 $(BLD)\dispnew.obj \
104 $(BLD)\doc.obj \
105 $(BLD)\doprnt.obj \
106 $(BLD)\editfns.obj \
107 $(BLD)\eval.obj \
108 $(BLD)\fileio.obj \
109 $(BLD)\filelock.obj \
110 $(BLD)\filemode.obj \
111 $(BLD)\fns.obj \
112 $(BLD)\indent.obj \
113 $(BLD)\insdel.obj \
114 $(BLD)\keyboard.obj \
115 $(BLD)\keymap.obj \
116 $(BLD)\lread.obj \
117 $(BLD)\macros.obj \
118 $(BLD)\marker.obj \
119 $(BLD)\md5.obj \
120 $(BLD)\minibuf.obj
121
122OBJ2 = $(BLD)\w32.obj \
123 $(BLD)\w32heap.obj \
124 $(BLD)\w32inevt.obj \
125 $(BLD)\w32proc.obj \
126 $(BLD)\w32console.obj \
127 $(BLD)\print.obj \
128 $(BLD)\process.obj \
129 $(BLD)\regex.obj \
130 $(BLD)\scroll.obj \
131 $(BLD)\search.obj \
132 $(BLD)\syntax.obj \
133 $(BLD)\sysdep.obj \
134 $(BLD)\term.obj \
135 $(BLD)\termcap.obj \
136 $(BLD)\tparam.obj \
137 $(BLD)\undo.obj \
138 $(BLD)\unexw32.obj \
139 $(BLD)\window.obj \
140 $(BLD)\xdisp.obj \
141 $(BLD)\casetab.obj \
142 $(BLD)\floatfns.obj \
143 $(BLD)\frame.obj \
144 $(BLD)\gmalloc.obj \
145 $(BLD)\intervals.obj \
146 $(BLD)\composite.obj \
147 $(BLD)\ralloc.obj \
148 $(BLD)\textprop.obj \
149 $(BLD)\vm-limit.obj \
150 $(BLD)\region-cache.obj \
151 $(BLD)\strftime.obj \
152 $(BLD)\charset.obj \
153 $(BLD)\coding.obj \
154 $(BLD)\category.obj \
155 $(BLD)\ccl.obj \
156 $(BLD)\fontset.obj
157
158WIN32OBJ = $(BLD)\w32term.obj \
159 $(BLD)\w32xfns.obj \
160 $(BLD)\w32fns.obj \
161 $(BLD)\xfaces.obj \
162 $(BLD)\w32select.obj \
163 $(BLD)\w32menu.obj \
164 $(BLD)\w32reg.obj \
165 $(BLD)\w32bdf.obj
166
167LIBS = $(TLIB0) \
168 $(TLIB1) \
169 $(TLIB2) \
170!IFDEF NTGUI
171 $(TLIBW32) \
172!ENDIF
173 $(TLASTLIB) \
174!IFDEF NTGUI
175 gdi32.lib \
176 comdlg32.lib \
177!ENDIF
178# libcmt.lib \
179 $(BASE_LIBS) \
180 $(ADVAPI32) \
181 user32.lib \
182 mpr.lib \
183 shell32.lib \
184 setargv.obj
185
186#
187# Build the executable and dump it.
188#
189all: $(BLD) $(EMACS)
190
191#
192# Headers we would preprocess if we could.
193#
194PREPARED_HEADERS = config.h epaths.h
195config.h: ..\nt\$(CONFIG_H)
196 $(CP) $** $@
197epaths.h: ..\nt\paths.h
198 $(CP) $** $@
199
200#
201# Make sure we have the DOC file in the right place.
202#
203DOC = $(OBJDIR)\etc\DOC-X
204$(DOC):; cd ..\lib-src
205 - $(DEL) DOC-X
206 $(MAKE) $(MFLAGS) -f makefile.nt all
207 cd ..\src
208
209#
210# The dumped executable
211#
212emacs: $(EMACS)
213$(EMACS): $(DOC) $(TEMACS)
214 $(MAKEDIR)\$(BLD)\temacs.exe -batch -l loadup dump
215
216#
217# The undumped executable
218# Note the extra post-link step to insert a static preload heap section.
219# If preload runs out of memory, increase the last argument to addsection
220# (it is the preload heap size in MB).
221#
222temacs: $(BLD) $(TEMACS)
223$(TEMACS): $(PREPARED_HEADERS) $(TLIB0) $(TLIB1) $(TLIB2) $(TLIBW32) $(TLASTLIB) $(TOBJ) $(TRES)
224 $(LINK) -out:$(TEMACS_TMP) $(LINK_FLAGS) $(TOBJ) $(TRES) $(LIBS)
225 ..\nt\$(BLD)\addsection $(TEMACS_TMP) $(TEMACS) EMHEAP 16
226
227bootstrap: bootstrap-emacs
228
229#
230# Build a temacs with a sufficiently large PURESIZE to load the
231# Lisp files from loadup.el in source form.
232#
233bootstrap-temacs: bootstrap-clean
234 $(MAKE) $(MFLAGS) -f makefile.nt temacs CFLAGS="$(CFLAGS) -DPURESIZE=5000000"
235
236#
237# Dump an Emacs executable named bootstrap-emacs containing the
238# files from loadup.el in source form.
239#
240bootstrap-emacs: bootstrap-temacs
241 $(MAKEDIR)\$(BLD)\temacs.exe -batch -l loadup bootstrap
242 - mkdir ..\bin
243 $(CP) $(EMACS) ..\bin
244
245#
246# Force recompile of files that depend on PURESIZE
247#
248bootstrap-clean:
249 - $(DEL) $(BLD)\alloc.obj
250 - $(DEL) $(BLD)\data.obj
251 - $(DEL) $(BLD)\intervals.obj
252 - $(DEL) $(BLD)\keyboard.obj
253 - $(DEL) $(BLD)\keymap.obj
254
255#
256# The resource file. NT 3.10 requires the use of cvtres; even though
257# it is not necessary on later versions, it is still ok to use it.
258#
259$(TRES): ..\nt\emacs.rc
260 $(RC) -i..\nt -Fo$(BLD)\emacs.res $**
261!if !$(MSVCNT11)
262 $(CVTRES) -r -$(ARCH) -o $@ $(BLD)\emacs.res
263!endif
264
265#
266# Build the library. Split up the build into two phases...otherwise we
267# run out of command line space.
268#
269$(TLIB0): $(OBJ0)
270 @- $(AR) -out:$@ $**
271$(TLIB1): $(OBJ1)
272 @- $(AR) -out:$@ $**
273$(TLIB2): $(OBJ2)
274 @- $(AR) -out:$@ $**
275!IFDEF NTGUI
276$(TLIBW32): $(WIN32OBJ)
277 @- $(AR) -out:$@ $**
278!ENDIF
279
280#
281# Place lastfile.obj in its own library so that it can be loaded after
282# the source libraries but before any system libraries. Doing so defines
283# the end of Emacs' data section portably across compilers and systems.
284#
285$(TLASTLIB): $(BLD)\lastfile.obj
286 @- $(AR) -out:$@ $**
287
288#
289# Assuming INSTALL_DIR is defined, build and install emacs in it.
290#
291install: all
292 - mkdir $(INSTALL_DIR)\bin
293 $(CP) $(EMACS) $(INSTALL_DIR)\bin
294
295#
296# Maintenance
297#
298clean:; - $(DEL) *~ s\*~
299 - $(DEL) *.pdb config.h epaths.h
300 - $(DEL) *.orig *.rej *.crlf
301 - $(DEL) s\*.orig s\*.rej s\*.crlf
302 - $(DEL_TREE) deleted
303 - $(DEL_TREE) obj
304 - $(DEL_TREE) obj-spd
305
306#
307# These files are the ones that compile conditionally on CANNOT_DUMP...
308# this target is mostly used for debugging.
309#
310cleandump:; cd $(BLD)
311 - $(DEL) callproc.obj data.obj dispnew.obj doc.obj editfns.obj emacs.obj lread.obj process.obj sysdep.obj term.obj w32heap.obj unexw32.obj
312 cd ..\..
313
314
315### DEPENDENCIES ###
316
317EMACS_ROOT = ..
318SRC = .
319
320$(BLD)\abbrev.obj : \
321 $(SRC)\abbrev.c \
322 $(EMACS_ROOT)\src\s\ms-w32.h \
323 $(EMACS_ROOT)\src\m\intel386.h \
324 $(EMACS_ROOT)\src\config.h \
325 $(SRC)\commands.h \
326 $(SRC)\buffer.h \
327 $(SRC)\window.h
328
329$(BLD)\alloc.obj : \
330 $(SRC)\alloc.c \
331 $(EMACS_ROOT)\src\s\ms-w32.h \
332 $(EMACS_ROOT)\src\m\intel386.h \
333 $(EMACS_ROOT)\src\config.h \
334 $(SRC)\dispextern.h \
335 $(SRC)\w32gui.h \
336 $(SRC)\intervals.h \
337 $(SRC)\composite.h \
338 $(SRC)\puresize.h \
339 $(SRC)\buffer.h \
340 $(SRC)\window.h \
341 $(SRC)\frame.h \
342 $(SRC)\blockinput.h \
343 $(SRC)\syssignal.h
344
345$(BLD)\alloca.obj : \
346 $(SRC)\alloca.c \
347 $(EMACS_ROOT)\src\s\ms-w32.h \
348 $(EMACS_ROOT)\src\m\intel386.h \
349 $(EMACS_ROOT)\src\config.h \
350 $(SRC)\s\ms-w32.h \
351 $(SRC)\m\intel386.h \
352 $(SRC)\config.h \
353 $(SRC)\blockinput.h
354
355$(BLD)\atimer.obj : \
356 $(SRC)\atimer.c \
357 $(EMACS_ROOT)\src\s\ms-w32.h \
358 $(EMACS_ROOT)\src\m\intel386.h \
359 $(EMACS_ROOT)\src\config.h \
360 $(SRC)\s\ms-w32.h \
361 $(SRC)\m\intel386.h \
362 $(SRC)\config.h \
363 $(SRC)\atimer.h \
364 $(SRC)\syssignal.h \
365 $(SRC)\systime.h \
366 $(SRC)\blockinput.h
367
368$(BLD)\buffer.obj : \
369 $(SRC)\buffer.c \
370 $(EMACS_ROOT)\nt\inc\sys\param.h \
371 $(EMACS_ROOT)\src\s\ms-w32.h \
372 $(EMACS_ROOT)\src\m\intel386.h \
373 $(EMACS_ROOT)\src\config.h \
374 $(SRC)\dispextern.h \
375 $(SRC)\w32gui.h \
376 $(SRC)\intervals.h \
377 $(SRC)\composite.h \
378 $(SRC)\frame.h \
379 $(SRC)\window.h \
380 $(SRC)\commands.h \
381 $(SRC)\buffer.h \
382 $(SRC)\indent.h \
383 $(SRC)\blockinput.h \
384 $(SRC)\region-cache.h
385
386$(BLD)\bytecode.obj : \
387 $(SRC)\bytecode.c \
388 $(EMACS_ROOT)\src\s\ms-w32.h \
389 $(EMACS_ROOT)\src\m\intel386.h \
390 $(EMACS_ROOT)\src\config.h \
391 $(SRC)\buffer.h \
392 $(SRC)\syntax.h
393
394$(BLD)\callint.obj : \
395 $(SRC)\callint.c \
396 $(EMACS_ROOT)\src\s\ms-w32.h \
397 $(EMACS_ROOT)\src\m\intel386.h \
398 $(EMACS_ROOT)\src\config.h \
399 $(SRC)\buffer.h \
400 $(SRC)\commands.h \
401 $(SRC)\keyboard.h \
402 $(SRC)\window.h
403
404$(BLD)\callproc.obj : \
405 $(SRC)\callproc.c \
406 $(EMACS_ROOT)\src\s\ms-w32.h \
407 $(EMACS_ROOT)\src\m\intel386.h \
408 $(EMACS_ROOT)\src\config.h \
409 $(SRC)\msdos.h \
410 $(EMACS_ROOT)\nt\inc\sys\param.h \
411 $(SRC)\commands.h \
412 $(SRC)\buffer.h \
413 $(SRC)\process.h \
414 $(SRC)\syssignal.h \
415 $(EMACS_ROOT)\nt\inc\sys\ioctl.h \
416 $(EMACS_ROOT)\nt\inc\sys\file.h \
417 $(SRC)\systty.h
418
419$(BLD)\casefiddle.obj : \
420 $(SRC)\casefiddle.c \
421 $(EMACS_ROOT)\src\s\ms-w32.h \
422 $(EMACS_ROOT)\src\m\intel386.h \
423 $(EMACS_ROOT)\src\config.h \
424 $(SRC)\buffer.h \
425 $(SRC)\commands.h \
426 $(SRC)\syntax.h
427 $(CC) $(CFLAGS) -Fo$@ casefiddle.c
428
429$(BLD)\casetab.obj : \
430 $(SRC)\casetab.c \
431 $(EMACS_ROOT)\src\s\ms-w32.h \
432 $(EMACS_ROOT)\src\m\intel386.h \
433 $(EMACS_ROOT)\src\config.h \
434 $(SRC)\buffer.h
435
436$(BLD)\cm.obj : \
437 $(SRC)\cm.c \
438 $(EMACS_ROOT)\src\s\ms-w32.h \
439 $(EMACS_ROOT)\src\m\intel386.h \
440 $(EMACS_ROOT)\src\config.h \
441 $(SRC)\cm.h \
442 $(SRC)\termhooks.h
443
444$(BLD)\cmds.obj : \
445 $(SRC)\cmds.c \
446 $(EMACS_ROOT)\src\s\ms-w32.h \
447 $(EMACS_ROOT)\src\m\intel386.h \
448 $(EMACS_ROOT)\src\config.h \
449 $(SRC)\commands.h \
450 $(SRC)\buffer.h \
451 $(SRC)\syntax.h
452
453$(BLD)\composite.obj : \
454 $(SRC)\composite.c \
455 $(SRC)\buffer.h \
456 $(SRC)\charset.h \
457 $(SRC)\intervals.h \
458 $(SRC)\composite.h \
459 $(EMACS_ROOT)\src\s\ms-w32.h \
460 $(EMACS_ROOT)\src\m\intel386.h \
461 $(EMACS_ROOT)\src\config.h
462
463$(BLD)\data.obj : \
464 $(SRC)\data.c \
465 $(EMACS_ROOT)\src\s\ms-w32.h \
466 $(EMACS_ROOT)\src\m\intel386.h \
467 $(EMACS_ROOT)\src\config.h \
468 $(SRC)\puresize.h \
469 $(SRC)\buffer.h \
470 $(SRC)\syssignal.h
471
472$(BLD)\dired.obj : \
473 $(SRC)\dired.c \
474 $(EMACS_ROOT)\src\s\ms-w32.h \
475 $(EMACS_ROOT)\src\m\intel386.h \
476 $(EMACS_ROOT)\src\config.h \
477 $(SRC)\ndir.h \
478 $(SRC)\buffer.h \
479 $(SRC)\commands.h \
480 $(SRC)\regex.h
481
482$(BLD)\dispnew.obj : \
483 $(SRC)\dispnew.c \
484 $(EMACS_ROOT)\src\s\ms-w32.h \
485 $(EMACS_ROOT)\src\m\intel386.h \
486 $(EMACS_ROOT)\src\config.h \
487 $(SRC)\termchar.h \
488 $(SRC)\termopts.h \
489 $(SRC)\termhooks.h \
490 $(SRC)\cm.h \
491 $(SRC)\buffer.h \
492 $(SRC)\frame.h \
493 $(SRC)\window.h \
494 $(SRC)\commands.h \
495 $(SRC)\disptab.h \
496 $(SRC)\indent.h \
497 $(SRC)\dispextern.h \
498 $(SRC)\intervals.h \
499 $(SRC)\composite.h \
500 $(EMACS_ROOT)\nt\inc\sys\ioctl.h \
501 $(EMACS_ROOT)\nt\inc\sys\file.h \
502 $(SRC)\systty.h \
503 $(SRC)\w32term.h \
504 $(SRC)\w32gui.h \
505 $(SRC)\xterm.h \
506 $(SRC)\systime.h
507
508$(BLD)\doc.obj : \
509 $(SRC)\doc.c \
510 $(EMACS_ROOT)\src\s\ms-w32.h \
511 $(EMACS_ROOT)\src\m\intel386.h \
512 $(EMACS_ROOT)\src\config.h \
513 $(EMACS_ROOT)\nt\inc\sys\file.h \
514 $(SRC)\buffer.h \
515 $(SRC)\keyboard.h
516
517$(BLD)\doprnt.obj : \
518 $(SRC)\doprnt.c \
519 $(EMACS_ROOT)\src\s\ms-w32.h \
520 $(EMACS_ROOT)\src\m\intel386.h \
521 $(EMACS_ROOT)\src\config.h
522
523$(BLD)\dosfns.obj : \
524 $(SRC)\dosfns.c \
525 $(EMACS_ROOT)\src\s\ms-w32.h \
526 $(EMACS_ROOT)\src\m\intel386.h \
527 $(EMACS_ROOT)\src\config.h \
528 $(SRC)\buffer.h \
529 $(SRC)\termchar.h \
530 $(SRC)\termhooks.h \
531 $(SRC)\frame.h \
532 $(SRC)\dosfns.h \
533 $(SRC)\msdos.h
534
535$(BLD)\editfns.obj : \
536 $(SRC)\editfns.c \
537 $(EMACS_ROOT)\src\s\ms-w32.h \
538 $(EMACS_ROOT)\src\m\intel386.h \
539 $(EMACS_ROOT)\src\config.h \
540 $(SRC)\uaf.h \
541 $(EMACS_ROOT)\nt\inc\pwd.h \
542 $(SRC)\dispextern.h \
543 $(SRC)\w32gui.h \
544 $(SRC)\intervals.h \
545 $(SRC)\composite.h \
546 $(SRC)\buffer.h \
547 $(SRC)\window.h \
548 $(SRC)\systime.h
549
550$(BLD)\emacs.obj : \
551 $(SRC)\emacs.c \
552 $(EMACS_ROOT)\src\s\ms-w32.h \
553 $(EMACS_ROOT)\src\m\intel386.h \
554 $(EMACS_ROOT)\src\config.h \
555 $(SRC)\commands.h \
556 $(SRC)\dispextern.h \
557 $(SRC)\w32gui.h \
558 $(SRC)\intervals.h \
559 $(SRC)\composite.h \
560 $(EMACS_ROOT)\nt\inc\sys\ioctl.h \
561 $(EMACS_ROOT)\nt\inc\sys\file.h \
562 $(SRC)\systty.h \
563 $(SRC)\syssignal.h \
564 $(SRC)\process.h
565
566$(BLD)\eval.obj : \
567 $(SRC)\eval.c \
568 $(EMACS_ROOT)\src\s\ms-w32.h \
569 $(EMACS_ROOT)\src\m\intel386.h \
570 $(EMACS_ROOT)\src\config.h \
571 $(SRC)\blockinput.h \
572 $(SRC)\commands.h \
573 $(SRC)\keyboard.h
574
575$(BLD)\fileio.obj : \
576 $(SRC)\fileio.c \
577 $(EMACS_ROOT)\src\s\ms-w32.h \
578 $(EMACS_ROOT)\src\m\intel386.h \
579 $(EMACS_ROOT)\src\config.h \
580 $(SRC)\uaf.h \
581 $(EMACS_ROOT)\nt\inc\pwd.h \
582 $(SRC)\msdos.h \
583 $(EMACS_ROOT)\nt\inc\sys\param.h \
584 $(SRC)\dispextern.h \
585 $(SRC)\w32gui.h \
586 $(SRC)\intervals.h \
587 $(SRC)\composite.h \
588 $(SRC)\buffer.h \
589 $(SRC)\window.h \
590 $(EMACS_ROOT)\nt\inc\sys\file.h \
591 $(SRC)\systime.h
592
593$(BLD)\filelock.obj : \
594 $(SRC)\filelock.c \
595 $(EMACS_ROOT)\src\s\ms-w32.h \
596 $(EMACS_ROOT)\src\m\intel386.h \
597 $(EMACS_ROOT)\src\config.h \
598 $(SRC)\uaf.h \
599 $(EMACS_ROOT)\nt\inc\pwd.h \
600 $(EMACS_ROOT)\nt\inc\sys\file.h \
601 $(EMACS_ROOT)\src\epaths.h \
602 $(SRC)\buffer.h \
603 $(SRC)\ndir.h
604
605$(BLD)\filemode.obj : \
606 $(SRC)\filemode.c \
607 $(EMACS_ROOT)\src\s\ms-w32.h \
608 $(EMACS_ROOT)\src\m\intel386.h \
609 $(EMACS_ROOT)\src\config.h \
610 $(SRC)\s\ms-w32.h \
611 $(SRC)\m\intel386.h \
612 $(SRC)\config.h
613
614$(BLD)\firstfile.obj : \
615 $(SRC)\firstfile.c \
616 $(EMACS_ROOT)\src\s\ms-w32.h \
617 $(EMACS_ROOT)\src\m\intel386.h \
618 $(EMACS_ROOT)\src\config.h
619
620$(BLD)\floatfns.obj : \
621 $(SRC)\floatfns.c \
622 $(EMACS_ROOT)\src\s\ms-w32.h \
623 $(EMACS_ROOT)\src\m\intel386.h \
624 $(EMACS_ROOT)\src\config.h \
625 $(SRC)\syssignal.h
626
627$(BLD)\fns.obj : \
628 $(SRC)\fns.c \
629 $(EMACS_ROOT)\src\s\ms-w32.h \
630 $(EMACS_ROOT)\src\m\intel386.h \
631 $(EMACS_ROOT)\src\config.h \
632 $(SRC)\commands.h \
633 $(SRC)\buffer.h \
634 $(SRC)\keyboard.h \
635 $(SRC)\dispextern.h \
636 $(SRC)\w32gui.h \
637 $(SRC)\intervals.h \
638 $(SRC)\composite.h \
639 $(SRC)\md5.h
640
641$(BLD)\frame.obj : \
642 $(SRC)\frame.c \
643 $(EMACS_ROOT)\src\s\ms-w32.h \
644 $(EMACS_ROOT)\src\m\intel386.h \
645 $(EMACS_ROOT)\src\config.h \
646 $(SRC)\frame.h \
647 $(SRC)\termhooks.h \
648 $(SRC)\window.h \
649 $(SRC)\buffer.h \
650 $(SRC)\commands.h \
651 $(SRC)\keyboard.h
652
653$(BLD)\getloadavg.obj : \
654 $(SRC)\getloadavg.c \
655 $(EMACS_ROOT)\nt\inc\sys\param.h \
656 $(EMACS_ROOT)\src\s\ms-w32.h \
657 $(EMACS_ROOT)\src\m\intel386.h \
658 $(EMACS_ROOT)\src\config.h \
659 $(SRC)\s\ms-w32.h \
660 $(SRC)\m\intel386.h \
661 $(SRC)\config.h \
662 $(EMACS_ROOT)\nt\inc\sys\file.h
663
664$(BLD)\gmalloc.obj : \
665 $(SRC)\gmalloc.c \
666 $(EMACS_ROOT)\src\s\ms-w32.h \
667 $(EMACS_ROOT)\src\m\intel386.h \
668 $(EMACS_ROOT)\src\config.h \
669 $(EMACS_ROOT)\nt\inc\sys\param.h \
670 $(SRC)\getpagesize.h
671 $(CC) $(CFLAGS) -D__STDC__ -Fo$@ gmalloc.c
672
673$(BLD)\hftctl.obj : \
674 $(SRC)\hftctl.c \
675 $(EMACS_ROOT)\src\s\ms-w32.h \
676 $(EMACS_ROOT)\src\m\intel386.h \
677 $(EMACS_ROOT)\src\config.h \
678 $(EMACS_ROOT)\nt\inc\sys\ioctl.h
679
680$(BLD)\indent.obj : \
681 $(SRC)\indent.c \
682 $(EMACS_ROOT)\src\s\ms-w32.h \
683 $(EMACS_ROOT)\src\m\intel386.h \
684 $(EMACS_ROOT)\src\config.h \
685 $(SRC)\buffer.h \
686 $(SRC)\indent.h \
687 $(SRC)\frame.h \
688 $(SRC)\window.h \
689 $(SRC)\termchar.h \
690 $(SRC)\termopts.h \
691 $(SRC)\disptab.h \
692 $(SRC)\dispextern.h \
693 $(SRC)\w32gui.h \
694 $(SRC)\intervals.h \
695 $(SRC)\region-cache.h \
696 $(SRC)\composite.h
697
698$(BLD)\insdel.obj : \
699 $(SRC)\insdel.c \
700 $(EMACS_ROOT)\src\s\ms-w32.h \
701 $(EMACS_ROOT)\src\m\intel386.h \
702 $(EMACS_ROOT)\src\config.h \
703 $(SRC)\dispextern.h \
704 $(SRC)\w32gui.h \
705 $(SRC)\intervals.h \
706 $(SRC)\composite.h \
707 $(SRC)\buffer.h \
708 $(SRC)\window.h \
709 $(SRC)\blockinput.h
710
711$(BLD)\intervals.obj : \
712 $(SRC)\intervals.c \
713 $(EMACS_ROOT)\src\s\ms-w32.h \
714 $(EMACS_ROOT)\src\m\intel386.h \
715 $(EMACS_ROOT)\src\config.h \
716 $(SRC)\dispextern.h \
717 $(SRC)\w32gui.h \
718 $(SRC)\intervals.h \
719 $(SRC)\composite.h \
720 $(SRC)\keyboard.h \
721 $(SRC)\buffer.h \
722 $(SRC)\puresize.h
723
724$(BLD)\keyboard.obj : \
725 $(SRC)\keyboard.c \
726 $(EMACS_ROOT)\src\s\ms-w32.h \
727 $(EMACS_ROOT)\src\m\intel386.h \
728 $(EMACS_ROOT)\src\config.h \
729 $(SRC)\termchar.h \
730 $(SRC)\termopts.h \
731 $(SRC)\termhooks.h \
732 $(SRC)\macros.h \
733 $(SRC)\frame.h \
734 $(SRC)\window.h \
735 $(SRC)\commands.h \
736 $(SRC)\buffer.h \
737 $(SRC)\disptab.h \
738 $(SRC)\keyboard.h \
739 $(SRC)\dispextern.h \
740 $(SRC)\intervals.h \
741 $(SRC)\composite.h \
742 $(SRC)\blockinput.h \
743 $(SRC)\msdos.h \
744 $(SRC)\syssignal.h \
745 $(EMACS_ROOT)\nt\inc\sys\ioctl.h \
746 $(EMACS_ROOT)\nt\inc\sys\file.h \
747 $(SRC)\systty.h \
748 $(SRC)\w32term.h \
749 $(SRC)\w32gui.h \
750 $(SRC)\xterm.h \
751 $(SRC)\systime.h \
752 $(SRC)\atimer.h
753
754$(BLD)\keymap.obj : \
755 $(SRC)\keymap.c \
756 $(EMACS_ROOT)\src\s\ms-w32.h \
757 $(EMACS_ROOT)\src\m\intel386.h \
758 $(EMACS_ROOT)\src\config.h \
759 $(SRC)\commands.h \
760 $(SRC)\buffer.h \
761 $(SRC)\keyboard.h \
762 $(SRC)\termhooks.h \
763 $(SRC)\blockinput.h
764
765$(BLD)\lastfile.obj : \
766 $(SRC)\lastfile.c \
767 $(EMACS_ROOT)\src\s\ms-w32.h \
768 $(EMACS_ROOT)\src\m\intel386.h \
769 $(EMACS_ROOT)\src\config.h
770
771$(BLD)\lread.obj : \
772 $(SRC)\lread.c \
773 $(EMACS_ROOT)\src\s\ms-w32.h \
774 $(EMACS_ROOT)\src\m\intel386.h \
775 $(EMACS_ROOT)\src\config.h \
776 $(EMACS_ROOT)\nt\inc\sys\file.h \
777 $(SRC)\buffer.h \
778 $(EMACS_ROOT)\src\epaths.h \
779 $(SRC)\commands.h \
780 $(SRC)\keyboard.h \
781 $(SRC)\termhooks.h \
782 $(SRC)\msdos.h
783
784$(BLD)\macros.obj : \
785 $(SRC)\macros.c \
786 $(EMACS_ROOT)\src\s\ms-w32.h \
787 $(EMACS_ROOT)\src\m\intel386.h \
788 $(EMACS_ROOT)\src\config.h \
789 $(SRC)\macros.h \
790 $(SRC)\commands.h \
791 $(SRC)\buffer.h \
792 $(SRC)\window.h
793
794$(BLD)\marker.obj : \
795 $(SRC)\marker.c \
796 $(EMACS_ROOT)\src\s\ms-w32.h \
797 $(EMACS_ROOT)\src\m\intel386.h \
798 $(EMACS_ROOT)\src\config.h \
799 $(SRC)\buffer.h
800
801$(BLD)\md5.obj : \
802 $(SRC)\md5.c \
803 $(SRC)\md5.h
804
805$(BLD)\minibuf.obj : \
806 $(SRC)\minibuf.c \
807 $(EMACS_ROOT)\src\s\ms-w32.h \
808 $(EMACS_ROOT)\src\m\intel386.h \
809 $(EMACS_ROOT)\src\config.h \
810 $(SRC)\commands.h \
811 $(SRC)\buffer.h \
812 $(SRC)\dispextern.h \
813 $(SRC)\w32gui.h \
814 $(SRC)\frame.h \
815 $(SRC)\window.h \
816 $(SRC)\syntax.h
817
818$(BLD)\w32.obj : \
819 $(SRC)\w32.c \
820 $(SRC)\w32.h \
821 $(SRC)\s\ms-w32.h \
822 $(SRC)\m\intel386.h \
823 $(SRC)\config.h \
824 $(EMACS_ROOT)\nt\inc\pwd.h \
825 $(SRC)\w32heap.h
826
827$(BLD)\w32heap.obj : \
828 $(SRC)\w32heap.c \
829 $(SRC)\w32heap.h \
830 $(SRC)\s\ms-w32.h \
831 $(SRC)\m\intel386.h \
832 $(SRC)\config.h
833
834$(BLD)\w32inevt.obj : \
835 $(SRC)\w32inevt.c \
836 $(SRC)\s\ms-w32.h \
837 $(SRC)\m\intel386.h \
838 $(SRC)\config.h \
839 $(SRC)\frame.h \
840 $(SRC)\blockinput.h \
841 $(SRC)\termhooks.h \
842 $(SRC)\w32heap.h \
843 $(SRC)\w32term.h \
844 $(SRC)\w32gui.h
845
846$(BLD)\w32proc.obj : \
847 $(SRC)\w32proc.c \
848 $(SRC)\s\ms-w32.h \
849 $(SRC)\m\intel386.h \
850 $(SRC)\config.h \
851 $(SRC)\w32.h \
852 $(SRC)\w32heap.h \
853 $(SRC)\systime.h
854
855$(BLD)\w32console.obj : \
856 $(SRC)\w32console.c \
857 $(SRC)\s\ms-w32.h \
858 $(SRC)\m\intel386.h \
859 $(SRC)\config.h \
860 $(SRC)\frame.h \
861 $(SRC)\disptab.h \
862 $(SRC)\termhooks.h \
863 $(SRC)\w32inevt.h
864
865$(BLD)\prefix-args.obj : \
866 $(SRC)\prefix-args.c
867
868$(BLD)\print.obj : \
869 $(SRC)\print.c \
870 $(EMACS_ROOT)\src\s\ms-w32.h \
871 $(EMACS_ROOT)\src\m\intel386.h \
872 $(EMACS_ROOT)\src\config.h \
873 $(SRC)\buffer.h \
874 $(SRC)\frame.h \
875 $(SRC)\window.h \
876 $(SRC)\process.h \
877 $(SRC)\termchar.h \
878 $(SRC)\dispextern.h \
879 $(SRC)\w32gui.h \
880 $(SRC)\intervals.h \
881 $(SRC)\composite.h
882
883$(BLD)\process.obj : \
884 $(SRC)\process.c \
885 $(EMACS_ROOT)\src\s\ms-w32.h \
886 $(EMACS_ROOT)\src\m\intel386.h \
887 $(EMACS_ROOT)\src\config.h \
888 $(EMACS_ROOT)\nt\inc\sys\ioctl.h \
889 $(EMACS_ROOT)\nt\inc\sys\file.h \
890 $(SRC)\systty.h \
891 $(SRC)\window.h \
892 $(SRC)\buffer.h \
893 $(SRC)\process.h \
894 $(SRC)\termhooks.h \
895 $(SRC)\commands.h \
896 $(SRC)\frame.h \
897 $(SRC)\syssignal.h \
898 $(SRC)\syswait.h \
899 $(SRC)\systime.h \
900 $(SRC)\termopts.h \
901 $(SRC)\composite.h \
902 $(SRC)\atimer.h
903
904$(BLD)\ralloc.obj : \
905 $(SRC)\ralloc.c \
906 $(EMACS_ROOT)\src\s\ms-w32.h \
907 $(EMACS_ROOT)\src\m\intel386.h \
908 $(EMACS_ROOT)\src\config.h \
909 $(SRC)\s\ms-w32.h \
910 $(SRC)\m\intel386.h \
911 $(SRC)\config.h \
912 $(EMACS_ROOT)\nt\inc\sys\param.h \
913 $(SRC)\getpagesize.h
914
915$(BLD)\regex.obj : \
916 $(SRC)\regex.c \
917 $(EMACS_ROOT)\src\s\ms-w32.h \
918 $(EMACS_ROOT)\src\m\intel386.h \
919 $(EMACS_ROOT)\src\config.h \
920 $(SRC)\s\ms-w32.h \
921 $(SRC)\m\intel386.h \
922 $(SRC)\config.h \
923 $(SRC)\buffer.h \
924 $(SRC)\syntax.h \
925 $(SRC)\regex.h
926
927$(BLD)\region-cache.obj : \
928 $(SRC)\region-cache.c \
929 $(EMACS_ROOT)\src\s\ms-w32.h \
930 $(EMACS_ROOT)\src\m\intel386.h \
931 $(EMACS_ROOT)\src\config.h \
932 $(SRC)\buffer.h \
933 $(SRC)\region-cache.h
934
935$(BLD)\scroll.obj : \
936 $(SRC)\scroll.c \
937 $(EMACS_ROOT)\src\s\ms-w32.h \
938 $(EMACS_ROOT)\src\m\intel386.h \
939 $(EMACS_ROOT)\src\config.h \
940 $(SRC)\termchar.h \
941 $(SRC)\dispextern.h \
942 $(SRC)\w32gui.h \
943 $(SRC)\frame.h
944
945$(BLD)\search.obj : \
946 $(SRC)\search.c \
947 $(EMACS_ROOT)\src\s\ms-w32.h \
948 $(EMACS_ROOT)\src\m\intel386.h \
949 $(EMACS_ROOT)\src\config.h \
950 $(SRC)\syntax.h \
951 $(SRC)\buffer.h \
952 $(SRC)\commands.h \
953 $(SRC)\blockinput.h \
954 $(SRC)\regex.h \
955 $(SRC)\region-cache.h \
956 $(SRC)\composite.h
957
958$(BLD)\strftime.obj : \
959 $(SRC)\strftime.c \
960 $(EMACS_ROOT)\src\s\ms-w32.h \
961 $(EMACS_ROOT)\src\m\intel386.h \
962 $(EMACS_ROOT)\src\config.h
963
964$(BLD)\syntax.obj : \
965 $(SRC)\syntax.c \
966 $(EMACS_ROOT)\src\s\ms-w32.h \
967 $(EMACS_ROOT)\src\m\intel386.h \
968 $(EMACS_ROOT)\src\config.h \
969 $(SRC)\commands.h \
970 $(SRC)\buffer.h \
971 $(SRC)\syntax.h \
972 $(SRC)\composite.h
973
974$(BLD)\sysdep.obj : \
975 $(SRC)\sysdep.c \
976 $(EMACS_ROOT)\src\s\ms-w32.h \
977 $(EMACS_ROOT)\src\m\intel386.h \
978 $(EMACS_ROOT)\src\config.h \
979 $(SRC)\blockinput.h \
980 $(SRC)\dosfns.h \
981 $(SRC)\msdos.h \
982 $(EMACS_ROOT)\nt\inc\sys\param.h \
983 $(EMACS_ROOT)\nt\inc\sys\file.h \
984 $(EMACS_ROOT)\nt\inc\sys\ioctl.h \
985 $(EMACS_ROOT)\nt\inc\sys\file.h \
986 $(SRC)\systty.h \
987 $(SRC)\syswait.h \
988 $(SRC)\frame.h \
989 $(SRC)\window.h \
990 $(SRC)\termhooks.h \
991 $(SRC)\termchar.h \
992 $(SRC)\termopts.h \
993 $(SRC)\dispextern.h \
994 $(SRC)\w32gui.h \
995 $(SRC)\process.h \
996 $(SRC)\ndir.h \
997 $(SRC)\syssignal.h \
998 $(SRC)\systime.h \
999 $(SRC)\uaf.h \
1000 $(EMACS_ROOT)\src\acldef.h \
1001 $(EMACS_ROOT)\src\chpdef.h
1002
1003$(BLD)\term.obj : \
1004 $(SRC)\term.c \
1005 $(EMACS_ROOT)\src\s\ms-w32.h \
1006 $(EMACS_ROOT)\src\m\intel386.h \
1007 $(EMACS_ROOT)\src\config.h \
1008 $(SRC)\termchar.h \
1009 $(SRC)\termopts.h \
1010 $(SRC)\cm.h \
1011 $(SRC)\frame.h \
1012 $(SRC)\disptab.h \
1013 $(SRC)/dispextern.h \
1014 $(SRC)\termhooks.h \
1015 $(SRC)\keyboard.h
1016
1017$(BLD)\termcap.obj : \
1018 $(SRC)\termcap.c \
1019 $(EMACS_ROOT)\src\s\ms-w32.h \
1020 $(EMACS_ROOT)\src\m\intel386.h \
1021 $(EMACS_ROOT)\src\config.h \
1022 $(EMACS_ROOT)\nt\inc\sys\file.h
1023
1024$(BLD)\terminfo.obj : \
1025 $(SRC)\terminfo.c
1026
1027$(BLD)\textprop.obj : \
1028 $(SRC)\textprop.c \
1029 $(EMACS_ROOT)\src\s\ms-w32.h \
1030 $(EMACS_ROOT)\src\m\intel386.h \
1031 $(EMACS_ROOT)\src\config.h \
1032 $(SRC)\dispextern.h \
1033 $(SRC)\w32gui.h \
1034 $(SRC)\intervals.h \
1035 $(SRC)\composite.h \
1036 $(SRC)\buffer.h \
1037 $(SRC)\window.h
1038
1039$(BLD)\tparam.obj : \
1040 $(SRC)\tparam.c \
1041 $(EMACS_ROOT)\src\s\ms-w32.h \
1042 $(EMACS_ROOT)\src\m\intel386.h \
1043 $(EMACS_ROOT)\src\config.h
1044
1045$(BLD)\undo.obj : \
1046 $(SRC)\undo.c \
1047 $(EMACS_ROOT)\src\s\ms-w32.h \
1048 $(EMACS_ROOT)\src\m\intel386.h \
1049 $(EMACS_ROOT)\src\config.h \
1050 $(SRC)\buffer.h \
1051 $(SRC)\commands.h
1052
1053$(BLD)\unexw32.obj : \
1054 $(SRC)\unexw32.c \
1055 $(EMACS_ROOT)\src\s\ms-w32.h \
1056 $(EMACS_ROOT)\src\m\intel386.h \
1057 $(EMACS_ROOT)\src\config.h \
1058 $(SRC)\w32heap.h
1059
1060$(BLD)\vm-limit.obj : \
1061 $(SRC)\vm-limit.c \
1062 $(EMACS_ROOT)\src\s\ms-w32.h \
1063 $(EMACS_ROOT)\src\m\intel386.h \
1064 $(EMACS_ROOT)\src\config.h \
1065 $(SRC)\mem-limits.h
1066
1067$(BLD)\widget.obj : \
1068 $(SRC)\widget.c \
1069 $(EMACS_ROOT)\src\s\ms-w32.h \
1070 $(EMACS_ROOT)\src\m\intel386.h \
1071 $(EMACS_ROOT)\src\config.h \
1072 $(SRC)\xterm.h \
1073 $(SRC)\frame.h \
1074 $(SRC)\dispextern.h \
1075 $(SRC)\w32gui.h \
1076 $(SRC)\widget.h \
1077 $(SRC)\widgetprv.h
1078
1079$(BLD)\window.obj : \
1080 $(SRC)\window.c \
1081 $(EMACS_ROOT)\src\s\ms-w32.h \
1082 $(EMACS_ROOT)\src\m\intel386.h \
1083 $(EMACS_ROOT)\src\config.h \
1084 $(SRC)\buffer.h \
1085 $(SRC)\frame.h \
1086 $(SRC)\window.h \
1087 $(SRC)\commands.h \
1088 $(SRC)\indent.h \
1089 $(SRC)\termchar.h \
1090 $(SRC)\disptab.h \
1091 $(SRC)\keyboard.h \
1092 $(SRC)\composite.h
1093
1094$(BLD)\xdisp.obj : \
1095 $(SRC)\xdisp.c \
1096 $(EMACS_ROOT)\src\s\ms-w32.h \
1097 $(EMACS_ROOT)\src\m\intel386.h \
1098 $(EMACS_ROOT)\src\config.h \
1099 $(SRC)\frame.h \
1100 $(SRC)\window.h \
1101 $(SRC)\termchar.h \
1102 $(SRC)\buffer.h \
1103 $(SRC)\indent.h \
1104 $(SRC)\commands.h \
1105 $(SRC)\macros.h \
1106 $(SRC)\disptab.h \
1107 $(SRC)\termhooks.h \
1108 $(SRC)\dispextern.h \
1109 $(SRC)\w32gui.h \
1110 $(SRC)\intervals.h \
1111 $(SRC)\composite.h
1112
1113$(BLD)\xfaces.obj: \
1114 $(EMACS_ROOT)\src\s\ms-w32.h \
1115 $(EMACS_ROOT)\src\m\intel386.h \
1116 $(EMACS_ROOT)\src\config.h \
1117 $(SRC)\xfaces.c \
1118 $(SRC)\charset.h \
1119 $(SRC)\fontset.h \
1120 $(SRC)\w32term.h \
1121 $(SRC)\w32gui.h \
1122 $(SRC)\buffer.h \
1123 $(SRC)\dispextern.h \
1124 $(SRC)\frame.h \
1125 $(SRC)\blockinput.h \
1126 $(SRC)\window.h \
1127 $(SRC)\intervals.h \
1128 $(SRC)\composite.h
1129
1130$(BLD)\w32fns.obj: \
1131 $(EMACS_ROOT)\src\s\ms-w32.h \
1132 $(EMACS_ROOT)\src\m\intel386.h \
1133 $(EMACS_ROOT)\src\config.h \
1134 $(SRC)\w32fns.c \
1135 $(SRC)\w32term.h \
1136 $(SRC)\w32gui.h \
1137 $(SRC)\frame.h \
1138 $(SRC)\window.h \
1139 $(SRC)\buffer.h \
1140 $(SRC)\charset.h \
1141 $(SRC)\coding.h \
1142 $(SRC)\dispextern.h \
1143 $(SRC)\keyboard.h \
1144 $(SRC)\blockinput.h \
1145 $(SRC)\epaths.h \
1146 $(SRC)\w32heap.h \
1147 $(SRC)\termhooks.h
1148
1149$(BLD)\w32menu.obj: \
1150 $(EMACS_ROOT)\src\s\ms-w32.h \
1151 $(EMACS_ROOT)\src\m\intel386.h \
1152 $(EMACS_ROOT)\src\config.h \
1153 $(SRC)\w32menu.c \
1154 $(SRC)\termhooks.h \
1155 $(SRC)\frame.h \
1156 $(SRC)\window.h \
1157 $(SRC)\keyboard.h \
1158 $(SRC)\blockinput.h \
1159 $(SRC)\buffer.h \
1160 $(SRC)\charset.h \
1161 $(SRC)\coding.h
1162
1163$(BLD)\w32term.obj: \
1164 $(EMACS_ROOT)\src\s\ms-w32.h \
1165 $(EMACS_ROOT)\src\m\intel386.h \
1166 $(EMACS_ROOT)\src\config.h \
1167 $(SRC)\w32term.c \
1168 $(SRC)\blockinput.h \
1169 $(SRC)\w32heap.h \
1170 $(SRC)\w32term.h \
1171 $(SRC)\w32gui.h \
1172 $(SRC)\systty.h \
1173 $(SRC)\systime.h \
1174 $(SRC)\frame.h \
1175 $(SRC)\dispextern.h \
1176 $(SRC)\termhooks.h \
1177 $(SRC)\termopts.h \
1178 $(SRC)\termchar.h \
1179 $(SRC)\gnu.h \
1180 $(SRC)\disptab.h \
1181 $(SRC)\buffer.h \
1182 $(SRC)\window.h \
1183 $(SRC)\keyboard.h \
1184 $(SRC)\intervals.h \
1185 $(SRC)\composite.h \
1186 $(SRC)\atimer.h
1187
1188$(BLD)\w32select.obj: \
1189 $(EMACS_ROOT)\src\s\ms-w32.h \
1190 $(EMACS_ROOT)\src\m\intel386.h \
1191 $(EMACS_ROOT)\src\config.h \
1192 $(SRC)\w32select.c \
1193 $(SRC)\w32term.h \
1194 $(SRC)\w32gui.h \
1195 $(SRC)\dispextern.h \
1196 $(SRC)\frame.h \
1197 $(SRC)\blockinput.h
1198
1199$(BLD)\w32reg.obj: \
1200 $(EMACS_ROOT)\src\s\ms-w32.h \
1201 $(EMACS_ROOT)\src\m\intel386.h \
1202 $(EMACS_ROOT)\src\config.h \
1203 $(SRC)\w32reg.c \
1204 $(SRC)\w32term.h \
1205 $(SRC)\w32gui.h \
1206 $(SRC)\blockinput.h
1207
1208$(BLD)\w32xfns.obj: \
1209 $(EMACS_ROOT)\src\s\ms-w32.h \
1210 $(EMACS_ROOT)\src\m\intel386.h \
1211 $(EMACS_ROOT)\src\config.h \
1212 $(SRC)\w32xfns.c \
1213
1214$(BLD)\w32bdf.obj: \
1215 $(EMACS_ROOT)\src/s\ms-w32.h \
1216 $(EMACS_ROOT)\src/m\intel386.h \
1217 $(EMACS_ROOT)\src/config.h \
1218 $(SRC)\w32bdf.c \
1219 $(SRC)\charset.h \
1220 $(SRC)\frame.h \
1221 $(SRC)\dispextern.h \
1222 $(SRC)\fontset.h \
1223 $(SRC)\blockinput.h \
1224 $(SRC)\w32gui.h \
1225 $(SRC)\w32term.h \
1226 $(SRC)\w32gui.h \
1227 $(SRC)\w32bdf.h \
1228 $(SRC)\w32.h \
1229 $(SRC)\frame.h \
1230 $(SRC)\blockinput.h
1231
1232# arch-tag: ee9a97ba-19b7-4b50-a127-aaf4efe494dc
diff --git a/src/msdos.c b/src/msdos.c
index b30e51bbb36..6c534d6d2d9 100644
--- a/src/msdos.c
+++ b/src/msdos.c
@@ -40,6 +40,7 @@ Boston, MA 02111-1307, USA. */
40#include <unistd.h> /* for chdir, dup, dup2, etc. */ 40#include <unistd.h> /* for chdir, dup, dup2, etc. */
41#include <dir.h> /* for getdisk */ 41#include <dir.h> /* for getdisk */
42#if __DJGPP__ >= 2 42#if __DJGPP__ >= 2
43#pragma pack(0) /* dir.h does a pack(4), which isn't GCC's default */
43#include <fcntl.h> 44#include <fcntl.h>
44#include <io.h> /* for setmode */ 45#include <io.h> /* for setmode */
45#include <dpmi.h> /* for __dpmi_xxx stuff */ 46#include <dpmi.h> /* for __dpmi_xxx stuff */
diff --git a/src/syntax.h b/src/syntax.h
index b275ded5715..f86ab8fc265 100644
--- a/src/syntax.h
+++ b/src/syntax.h
@@ -58,7 +58,7 @@ enum syntaxcode
58/* Set the syntax entry VAL for char C in table TABLE. */ 58/* Set the syntax entry VAL for char C in table TABLE. */
59 59
60#define SET_RAW_SYNTAX_ENTRY(table, c, val) \ 60#define SET_RAW_SYNTAX_ENTRY(table, c, val) \
61 ((c) < CHAR_TABLE_SINGLE_BYTE_SLOTS \ 61 ((((c) & 0xFF) == (c)) \
62 ? (XCHAR_TABLE (table)->contents[(unsigned char) (c)] = (val)) \ 62 ? (XCHAR_TABLE (table)->contents[(unsigned char) (c)] = (val)) \
63 : Faset ((table), make_number (c), (val))) 63 : Faset ((table), make_number (c), (val)))
64 64
@@ -106,7 +106,7 @@ extern Lisp_Object syntax_parent_lookup P_ ((Lisp_Object, int));
106#endif 106#endif
107 107
108#define SYNTAX_ENTRY_INT(c) \ 108#define SYNTAX_ENTRY_INT(c) \
109 ((c) < CHAR_TABLE_SINGLE_BYTE_SLOTS \ 109 ((((c) & 0xFF) == (c)) \
110 ? SYNTAX_ENTRY_FOLLOW_PARENT (CURRENT_SYNTAX_TABLE, \ 110 ? SYNTAX_ENTRY_FOLLOW_PARENT (CURRENT_SYNTAX_TABLE, \
111 (unsigned char) (c)) \ 111 (unsigned char) (c)) \
112 : Faref (CURRENT_SYNTAX_TABLE, \ 112 : Faref (CURRENT_SYNTAX_TABLE, \
diff --git a/src/syssignal.h b/src/syssignal.h
index 7c3690903df..8d58325c02c 100644
--- a/src/syssignal.h
+++ b/src/syssignal.h
@@ -18,6 +18,8 @@ along with GNU Emacs; see the file COPYING. If not, write to
18the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 18the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
19Boston, MA 02111-1307, USA. */ 19Boston, MA 02111-1307, USA. */
20 20
21extern void init_signals P_ ((void));
22
21#ifdef POSIX_SIGNALS 23#ifdef POSIX_SIGNALS
22 24
23/* Don't #include <signal.h>. That header should always be #included 25/* Don't #include <signal.h>. That header should always be #included
@@ -32,7 +34,6 @@ Boston, MA 02111-1307, USA. */
32#define SIGEMPTYMASK (empty_mask) 34#define SIGEMPTYMASK (empty_mask)
33#define SIGFULLMASK (full_mask) 35#define SIGFULLMASK (full_mask)
34extern sigset_t empty_mask, full_mask; 36extern sigset_t empty_mask, full_mask;
35extern void init_signals P_ ((void));
36 37
37/* POSIX pretty much destroys any possibility of writing sigmask as a 38/* POSIX pretty much destroys any possibility of writing sigmask as a
38 macro in standard C. We always define our own version because the 39 macro in standard C. We always define our own version because the
diff --git a/src/w32term.c b/src/w32term.c
index 24eabfba567..3a2ef2e1c19 100644
--- a/src/w32term.c
+++ b/src/w32term.c
@@ -4177,8 +4177,7 @@ w32_read_socket (sd, expected, hold_quit)
4177 /* So people can tell when we have read the available input. */ 4177 /* So people can tell when we have read the available input. */
4178 input_signal_count++; 4178 input_signal_count++;
4179 4179
4180 /* TODO: tool-bars, ghostscript integration, mouse 4180 /* TODO: ghostscript integration. */
4181 cursors. */
4182 while (get_next_msg (&msg, FALSE)) 4181 while (get_next_msg (&msg, FALSE))
4183 { 4182 {
4184 struct input_event inev; 4183 struct input_event inev;
@@ -4934,28 +4933,38 @@ x_draw_hollow_cursor (w, row)
4934 struct frame *f = XFRAME (WINDOW_FRAME (w)); 4933 struct frame *f = XFRAME (WINDOW_FRAME (w));
4935 HDC hdc; 4934 HDC hdc;
4936 RECT rect; 4935 RECT rect;
4937 int wd; 4936 int wd, h;
4938 struct glyph *cursor_glyph; 4937 struct glyph *cursor_glyph;
4939 HBRUSH hb = CreateSolidBrush (f->output_data.w32->cursor_pixel); 4938 HBRUSH hb = CreateSolidBrush (f->output_data.w32->cursor_pixel);
4940 4939
4940 /* Get the glyph the cursor is on. If we can't tell because
4941 the current matrix is invalid or such, give up. */
4942 cursor_glyph = get_phys_cursor_glyph (w);
4943 if (cursor_glyph == NULL)
4944 return;
4945
4941 /* Compute frame-relative coordinates from window-relative 4946 /* Compute frame-relative coordinates from window-relative
4942 coordinates. */ 4947 coordinates. */
4943 rect.left = WINDOW_TEXT_TO_FRAME_PIXEL_X (w, w->phys_cursor.x); 4948 rect.left = WINDOW_TEXT_TO_FRAME_PIXEL_X (w, w->phys_cursor.x);
4944 rect.top = (WINDOW_TO_FRAME_PIXEL_Y (w, w->phys_cursor.y) 4949 rect.top = (WINDOW_TO_FRAME_PIXEL_Y (w, w->phys_cursor.y)
4945 + row->ascent - w->phys_cursor_ascent); 4950 + row->ascent - w->phys_cursor_ascent);
4946 rect.bottom = rect.top + row->height;
4947 4951
4948 /* Get the glyph the cursor is on. If we can't tell because 4952 /* Compute the proper height and ascent of the rectangle, based
4949 the current matrix is invalid or such, give up. */ 4953 on the actual glyph. Using the full height of the row looks
4950 cursor_glyph = get_phys_cursor_glyph (w); 4954 bad when there are tall images on that row. */
4951 if (cursor_glyph == NULL) 4955 h = max (min (FRAME_LINE_HEIGHT (f), row->height),
4952 return; 4956 cursor_glyph->ascent + cursor_glyph->descent);
4957 if (h < row->height)
4958 rect.top += row->ascent /* - w->phys_cursor_ascent */ + cursor_glyph->descent - h;
4959 h--;
4960
4961 rect.bottom = rect.top + h;
4953 4962
4954 /* Compute the width of the rectangle to draw. If on a stretch 4963 /* Compute the width of the rectangle to draw. If on a stretch
4955 glyph, and `x-stretch-block-cursor' is nil, don't draw a 4964 glyph, and `x-stretch-block-cursor' is nil, don't draw a
4956 rectangle as wide as the glyph, but use a canonical character 4965 rectangle as wide as the glyph, but use a canonical character
4957 width instead. */ 4966 width instead. */
4958 wd = cursor_glyph->pixel_width; 4967 wd = cursor_glyph->pixel_width; /* TODO: Why off by one compared with X? */
4959 if (cursor_glyph->type == STRETCH_GLYPH 4968 if (cursor_glyph->type == STRETCH_GLYPH
4960 && !x_stretch_cursor_p) 4969 && !x_stretch_cursor_p)
4961 wd = min (FRAME_COLUMN_WIDTH (f), wd); 4970 wd = min (FRAME_COLUMN_WIDTH (f), wd);
diff --git a/src/window.c b/src/window.c
index 221d8bbbaf2..8a2c16598ec 100644
--- a/src/window.c
+++ b/src/window.c
@@ -1,6 +1,6 @@
1/* Window creation, deletion and examination for GNU Emacs. 1/* Window creation, deletion and examination for GNU Emacs.
2 Does not include redisplay. 2 Does not include redisplay.
3 Copyright (C) 1985,86,87,93,94,95,96,97,1998,2000, 2001, 2002, 2003 3 Copyright (C) 1985,86,87, 1993,94,95,96,97,98, 2000,01,02,03,04
4 Free Software Foundation, Inc. 4 Free Software Foundation, Inc.
5 5
6This file is part of GNU Emacs. 6This file is part of GNU Emacs.
@@ -3025,7 +3025,7 @@ set_window_buffer (window, buffer, run_hooks_p, keep_margins_p)
3025DEFUN ("set-window-buffer", Fset_window_buffer, Sset_window_buffer, 2, 3, 0, 3025DEFUN ("set-window-buffer", Fset_window_buffer, Sset_window_buffer, 2, 3, 0,
3026 doc: /* Make WINDOW display BUFFER as its contents. 3026 doc: /* Make WINDOW display BUFFER as its contents.
3027BUFFER can be a buffer or buffer name. 3027BUFFER can be a buffer or buffer name.
3028Optional third arg KEEP_MARGINS non-nil means that WINDOW's current 3028Optional third arg KEEP-MARGINS non-nil means that WINDOW's current
3029display margins, fringe widths, and scroll bar settings are maintained; 3029display margins, fringe widths, and scroll bar settings are maintained;
3030the default is to reset these from BUFFER's local settings or the frame 3030the default is to reset these from BUFFER's local settings or the frame
3031defaults. */) 3031defaults. */)
diff --git a/src/xdisp.c b/src/xdisp.c
index f01d3f00b2f..83857e5bb84 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -304,7 +304,7 @@ Lisp_Object Qleft_margin, Qright_margin, Qspace_width, Qraise;
304Lisp_Object Qslice; 304Lisp_Object Qslice;
305Lisp_Object Qcenter; 305Lisp_Object Qcenter;
306Lisp_Object Qmargin, Qpointer; 306Lisp_Object Qmargin, Qpointer;
307Lisp_Object Qline_height; 307Lisp_Object Qline_height, Qtotal;
308extern Lisp_Object Qheight; 308extern Lisp_Object Qheight;
309extern Lisp_Object QCwidth, QCheight, QCascent; 309extern Lisp_Object QCwidth, QCheight, QCascent;
310extern Lisp_Object Qscroll_bar; 310extern Lisp_Object Qscroll_bar;
@@ -18522,11 +18522,11 @@ produce_stretch_glyph (it)
18522 Returns height in pixels, or nil. */ 18522 Returns height in pixels, or nil. */
18523 18523
18524static Lisp_Object 18524static Lisp_Object
18525calc_line_height_property (it, prop, font, boff) 18525calc_line_height_property (it, prop, font, boff, total)
18526 struct it *it; 18526 struct it *it;
18527 Lisp_Object prop; 18527 Lisp_Object prop;
18528 XFontStruct *font; 18528 XFontStruct *font;
18529 int boff; 18529 int boff, *total;
18530{ 18530{
18531 Lisp_Object val; 18531 Lisp_Object val;
18532 Lisp_Object face_name = Qnil; 18532 Lisp_Object face_name = Qnil;
@@ -18538,6 +18538,12 @@ calc_line_height_property (it, prop, font, boff)
18538 if (NILP (val)) 18538 if (NILP (val))
18539 return val; 18539 return val;
18540 18540
18541 if (total && CONSP (val) && EQ (XCAR (val), Qtotal))
18542 {
18543 *total = 1;
18544 val = XCDR (val);
18545 }
18546
18541 if (INTEGERP (val)) 18547 if (INTEGERP (val))
18542 return val; 18548 return val;
18543 18549
@@ -18571,12 +18577,12 @@ calc_line_height_property (it, prop, font, boff)
18571 18577
18572 face_id = lookup_named_face (it->f, face_name, ' '); 18578 face_id = lookup_named_face (it->f, face_name, ' ');
18573 if (face_id < 0) 18579 if (face_id < 0)
18574 return -1; 18580 return make_number (-1);
18575 18581
18576 face = FACE_FROM_ID (it->f, face_id); 18582 face = FACE_FROM_ID (it->f, face_id);
18577 font = face->font; 18583 font = face->font;
18578 if (font == NULL) 18584 if (font == NULL)
18579 return -1; 18585 return make_number (-1);
18580 18586
18581 font_info = FONT_INFO_FROM_ID (it->f, face->font_info_id); 18587 font_info = FONT_INFO_FROM_ID (it->f, face->font_info_id);
18582 boff = font_info->baseline_offset; 18588 boff = font_info->baseline_offset;
@@ -18806,13 +18812,13 @@ x_produce_glyphs (it)
18806 But if previous part of the line set a height, don't 18812 But if previous part of the line set a height, don't
18807 increase that height */ 18813 increase that height */
18808 18814
18809 Lisp_Object height, spacing; 18815 Lisp_Object height;
18810 18816
18811 it->override_ascent = -1; 18817 it->override_ascent = -1;
18812 it->pixel_width = 0; 18818 it->pixel_width = 0;
18813 it->nglyphs = 0; 18819 it->nglyphs = 0;
18814 18820
18815 height = calc_line_height_property(it, Qline_height, font, boff); 18821 height = calc_line_height_property(it, Qline_height, font, boff, 0);
18816 18822
18817 if (it->override_ascent >= 0) 18823 if (it->override_ascent >= 0)
18818 { 18824 {
@@ -18845,6 +18851,9 @@ x_produce_glyphs (it)
18845 } 18851 }
18846 else 18852 else
18847 { 18853 {
18854 Lisp_Object spacing;
18855 int total = 0;
18856
18848 it->phys_ascent = it->ascent; 18857 it->phys_ascent = it->ascent;
18849 it->phys_descent = it->descent; 18858 it->phys_descent = it->descent;
18850 18859
@@ -18858,16 +18867,14 @@ x_produce_glyphs (it)
18858 if (!NILP (height) 18867 if (!NILP (height)
18859 && XINT (height) > it->ascent + it->descent) 18868 && XINT (height) > it->ascent + it->descent)
18860 it->ascent = XINT (height) - it->descent; 18869 it->ascent = XINT (height) - it->descent;
18861 }
18862 18870
18863 spacing = calc_line_height_property(it, Qline_spacing, font, boff); 18871 spacing = calc_line_height_property(it, Qline_spacing, font, boff, &total);
18864 if (!NILP (spacing)) 18872 if (INTEGERP (spacing))
18865 { 18873 {
18866 int sp = XINT (spacing); 18874 extra_line_spacing = XINT (spacing);
18867 if (sp < 0) 18875 if (total)
18868 extra_line_spacing = (-sp) - (it->phys_ascent + it->phys_descent); 18876 extra_line_spacing -= (it->phys_ascent + it->phys_descent);
18869 else 18877 }
18870 extra_line_spacing = sp;
18871 } 18878 }
18872 } 18879 }
18873 else if (it->char_to_display == '\t') 18880 else if (it->char_to_display == '\t')
@@ -21894,6 +21901,8 @@ syms_of_xdisp ()
21894 staticpro (&Qcenter); 21901 staticpro (&Qcenter);
21895 Qline_height = intern ("line-height"); 21902 Qline_height = intern ("line-height");
21896 staticpro (&Qline_height); 21903 staticpro (&Qline_height);
21904 Qtotal = intern ("total");
21905 staticpro (&Qtotal);
21897 QCalign_to = intern (":align-to"); 21906 QCalign_to = intern (":align-to");
21898 staticpro (&QCalign_to); 21907 staticpro (&QCalign_to);
21899 QCrelative_width = intern (":relative-width"); 21908 QCrelative_width = intern (":relative-width");