aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/ChangeLog47
-rw-r--r--src/ChangeLog.116
-rw-r--r--src/ChangeLog.32
-rw-r--r--src/ChangeLog.78
-rw-r--r--src/ChangeLog.82
-rw-r--r--src/ChangeLog.92
-rw-r--r--src/callproc.c3
-rw-r--r--src/dispnew.c31
-rw-r--r--src/keyboard.c2
-rw-r--r--src/makefile.w32-in5
-rw-r--r--src/nsfns.m2
-rw-r--r--src/s/hpux10-20.h2
-rw-r--r--src/w32fns.c2
-rw-r--r--src/w32font.c4
-rw-r--r--src/window.c68
-rw-r--r--src/window.h4
-rw-r--r--src/xdisp.c7
-rw-r--r--src/xfaces.c2
-rw-r--r--src/xfns.c2
19 files changed, 108 insertions, 93 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index 4e56e3c8499..533f5cf4327 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,4 +1,4 @@
12011-11-10 Paul Eggert <eggert@cs.ucla.edu> 12011-11-14 Paul Eggert <eggert@cs.ucla.edu>
2 2
3 Standardize on VIRT_ADDR_VARIES behavior; otherwise, valgrind 3 Standardize on VIRT_ADDR_VARIES behavior; otherwise, valgrind
4 does not work on some platforms. Problem reported by Andreas Schwab in 4 does not work on some platforms. Problem reported by Andreas Schwab in
@@ -17,6 +17,51 @@
17 * m/ibms390.h, m/intel386.h, m/template.h, s/cygwin.h, s/hpux10-20.h: 17 * m/ibms390.h, m/intel386.h, m/template.h, s/cygwin.h, s/hpux10-20.h:
18 Remove VIRT_ADDR_VARIES no longer needed. 18 Remove VIRT_ADDR_VARIES no longer needed.
19 19
202011-11-12 Eli Zaretskii <eliz@gnu.org>
21
22 * makefile.w32-in (HEAPSIZE): New variable, allows to build temacs
23 with user-defined heap size. Bump the default size of the temacs
24 heap to 27MB, to avoid memory warning when running temacs.
25 ($(TEMACS)): Use HEAPSIZE instead of a hardcoded value.
26
27 * dispnew.c (scrolling_window): Fix incorrect indices in accessing
28 current_matrix and desired_matrix. (Bug#9990)
29 (verify_row_hash) [XASSERTS]: New function.
30 (adjust_glyph_matrix, row_equal_p): Use it in xassert to verify
31 that the hash value of glyph rows is correct.
32
332011-11-12 Martin Rudalics <rudalics@gmx.at>
34
35 * window.h (window): Remove splits slot.
36 * window.c (Fwindow_splits, Fset_window_splits): Remove.
37 (Fdelete_other_windows_internal, make_parent_window)
38 (make_window, Fsplit_window_internal, Fdelete_window_internal)
39 (Fset_window_configuration, save_window_save): Don't deal with
40 split status of windows.
41 (saved_window): Remove splits slot.
42 (Vwindow_splits): Rewrite doc-string.
43
442011-11-11 Jan Djärv <jan.h.d@swipnet.se>
45
46 * xfns.c (unwind_create_frame):
47 * nsfns.m (unwind_create_frame):
48 * w32fns.c (unwind_create_frame): Use Fmemq to check if frame is in
49 Vframe_list (Bug#9999).
50
512011-11-11 Dmitry Antipov <dmantipov@yandex.ru>
52
53 * xdisp.c (syms_of_xdisp): Remove duplicated definition of Qtext.
54
552011-11-11 Kenichi Handa <handa@m17n.org>
56
57 * callproc.c (Fcall_process): Set the member dst_multibyte of
58 process_coding.
59
602011-11-11 Johan Bockgård <bojohan@gnu.org>
61
62 * xdisp.c (fill_composite_glyph_string): Always set s->face, to
63 avoid a crash (bug#9496).
64
202011-11-09 Chong Yidong <cyd@gnu.org> 652011-11-09 Chong Yidong <cyd@gnu.org>
21 66
22 * window.c (Fwindow_inside_edges, Fwindow_inside_pixel_edges) 67 * window.c (Fwindow_inside_edges, Fwindow_inside_pixel_edges)
diff --git a/src/ChangeLog.11 b/src/ChangeLog.11
index 0a9df7d1aee..bd1a6ec5918 100644
--- a/src/ChangeLog.11
+++ b/src/ChangeLog.11
@@ -7949,7 +7949,7 @@
79492010-05-11 Karel Klíč <kklic@redhat.com> 79492010-05-11 Karel Klíč <kklic@redhat.com>
7950 7950
7951 * ftfont.c: Fix incorrect parentheses of #if condition for 7951 * ftfont.c: Fix incorrect parentheses of #if condition for
7952 definining M17N_FLT_USE_NEW_FEATURE. 7952 defining M17N_FLT_USE_NEW_FEATURE.
7953 7953
79542010-05-11 Glenn Morris <rgm@gnu.org> 79542010-05-11 Glenn Morris <rgm@gnu.org>
7955 7955
@@ -25474,7 +25474,7 @@
25474 25474
25475 * term.c (terminal_encode_buffer): Make externally visible. 25475 * term.c (terminal_encode_buffer): Make externally visible.
25476 25476
25477 * makefile.w32-in: Add character.h dependancies. 25477 * makefile.w32-in: Add character.h dependencies.
25478 (character.o, chartab.o): New targets. 25478 (character.o, chartab.o): New targets.
25479 25479
254802008-02-01 Kenichi Handa <handa@m17n.org> 254802008-02-01 Kenichi Handa <handa@m17n.org>
@@ -29718,7 +29718,7 @@
29718 * keyboard.c (restore_kboard_configuration): Only define when 29718 * keyboard.c (restore_kboard_configuration): Only define when
29719 MULTI_KBOARD defined. 29719 MULTI_KBOARD defined.
29720 29720
29721 * makefile.w32-in: Update dependancies from Makefile.in. 29721 * makefile.w32-in: Update dependencies from Makefile.in.
29722 (OBJ1): Add terminal.$(O) 29722 (OBJ1): Add terminal.$(O)
29723 29723
29724 * term.c (dissociate_if_controlling_tty) [WINDOWSNT]: 29724 * term.c (dissociate_if_controlling_tty) [WINDOWSNT]:
diff --git a/src/ChangeLog.3 b/src/ChangeLog.3
index beb7a0a2ae1..79a580938d7 100644
--- a/src/ChangeLog.3
+++ b/src/ChangeLog.3
@@ -13393,7 +13393,7 @@
13393 13393
13394 * macros.c (Fstart_kbd_macro): Local cleanup. 13394 * macros.c (Fstart_kbd_macro): Local cleanup.
13395 13395
13396 * minibuf.c (read_minibuf): No more delcaration of 13396 * minibuf.c (read_minibuf): No more declaration of
13397 Frestore_screen_configuration. 13397 Frestore_screen_configuration.
13398 13398
13399 * search.c (Fregexp_quote): Simplified. 13399 * search.c (Fregexp_quote): Simplified.
diff --git a/src/ChangeLog.7 b/src/ChangeLog.7
index d5bebec660f..fa55d6974ad 100644
--- a/src/ChangeLog.7
+++ b/src/ChangeLog.7
@@ -592,7 +592,7 @@
592 592
593 * coding.h (Qemacs_mule): Extern it. 593 * coding.h (Qemacs_mule): Extern it.
594 594
595 * process.c (init_process): Initilize Vdefault_process_coding_system. 595 * process.c (init_process): Initialize Vdefault_process_coding_system.
596 596
5971998-06-26 Kenichi Handa <handa@etl.go.jp> 5971998-06-26 Kenichi Handa <handa@etl.go.jp>
598 598
@@ -972,7 +972,7 @@
972 972
9731998-06-01 Ken'ichi Handa <handa@melange.gnu.org> 9731998-06-01 Ken'ichi Handa <handa@melange.gnu.org>
974 974
975 * coding.c (detect_coding_mask): Initilize local variable C. 975 * coding.c (detect_coding_mask): Initialize local variable C.
976 976
9771998-06-01 Richard Stallman <rms@gnu.org> 9771998-06-01 Richard Stallman <rms@gnu.org>
978 978
@@ -6317,7 +6317,7 @@
6317 (ENCODE_ISO_CHARACTER_DIMENSION2): Likewise. 6317 (ENCODE_ISO_CHARACTER_DIMENSION2): Likewise.
6318 (safe_terminal_coding): New variable. 6318 (safe_terminal_coding): New variable.
6319 (Fset_safe_terminal_coding_system_internal): New function. 6319 (Fset_safe_terminal_coding_system_internal): New function.
6320 (init_coding_once): Initilize safe_terminal_coding. 6320 (init_coding_once): Initialize safe_terminal_coding.
6321 (syms_of_coding): Declare set-safe-terminal-coding-system as a 6321 (syms_of_coding): Declare set-safe-terminal-coding-system as a
6322 Lisp function. 6322 Lisp function.
6323 6323
@@ -7399,7 +7399,7 @@
7399 7399
74001997-06-18 Kenichi Handa <handa@etl.go.jp> 74001997-06-18 Kenichi Handa <handa@etl.go.jp>
7401 7401
7402 * coding.c (detect_coding_iso2022): Initilize mask correctly. 7402 * coding.c (detect_coding_iso2022): Initialize mask correctly.
7403 7403
7404 * fns.c (concat): Pay attention to multibyte characters when 7404 * fns.c (concat): Pay attention to multibyte characters when
7405 TARGET_TYPE is Lisp_String. 7405 TARGET_TYPE is Lisp_String.
diff --git a/src/ChangeLog.8 b/src/ChangeLog.8
index 833119c9fcf..6fd4d5dea27 100644
--- a/src/ChangeLog.8
+++ b/src/ChangeLog.8
@@ -13404,7 +13404,7 @@
13404 13404
134051998-10-20 Jason Rumney <jasonr@altavista.net> 134051998-10-20 Jason Rumney <jasonr@altavista.net>
13406 13406
13407 * makefile.nt (w32fns.c): Add x-list-font.c to dependancies. 13407 * makefile.nt (w32fns.c): Add x-list-font.c to dependencies.
13408 13408
13409 * w32faces.c: Update comments referring to obsolete structs. 13409 * w32faces.c: Update comments referring to obsolete structs.
13410 (allocate_face, copy_face, face_eql, load_font) 13410 (allocate_face, copy_face, face_eql, load_font)
diff --git a/src/ChangeLog.9 b/src/ChangeLog.9
index ceec5da3296..1a4abfab61b 100644
--- a/src/ChangeLog.9
+++ b/src/ChangeLog.9
@@ -4617,7 +4617,7 @@
4617 * lisp.h (detect_coding_system): Prototype adjusted. 4617 * lisp.h (detect_coding_system): Prototype adjusted.
4618 4618
4619 * coding.c (ONE_MORE_BYTE_CHECK_MULTIBYTE): New macro. 4619 * coding.c (ONE_MORE_BYTE_CHECK_MULTIBYTE): New macro.
4620 (detect_coding_emacs_mule, detect_coding_iso2022,) 4620 (detect_coding_emacs_mule, detect_coding_iso2022)
4621 (detect_coding_sjis, detect_coding_big5, detect_coding_utf_8) 4621 (detect_coding_sjis, detect_coding_big5, detect_coding_utf_8)
4622 (detect_coding_utf_16, detect_coding_ccl): Make them static. 4622 (detect_coding_utf_16, detect_coding_ccl): Make them static.
4623 New argument MULTIBYTEP. Callers changed. 4623 New argument MULTIBYTEP. Callers changed.
diff --git a/src/callproc.c b/src/callproc.c
index 0859aaef2e6..01772efce30 100644
--- a/src/callproc.c
+++ b/src/callproc.c
@@ -712,6 +712,7 @@ usage: (call-process PROGRAM &optional INFILE BUFFER DISPLAY &rest ARGS) */)
712 /* If BUFFER is nil, we must read process output once and then 712 /* If BUFFER is nil, we must read process output once and then
713 discard it, so setup coding system but with nil. */ 713 discard it, so setup coding system but with nil. */
714 setup_coding_system (Qnil, &process_coding); 714 setup_coding_system (Qnil, &process_coding);
715 process_coding.dst_multibyte = 0;
715 } 716 }
716 else 717 else
717 { 718 {
@@ -747,6 +748,8 @@ usage: (call-process PROGRAM &optional INFILE BUFFER DISPLAY &rest ARGS) */)
747 && !NILP (val)) 748 && !NILP (val))
748 val = raw_text_coding_system (val); 749 val = raw_text_coding_system (val);
749 setup_coding_system (val, &process_coding); 750 setup_coding_system (val, &process_coding);
751 process_coding.dst_multibyte
752 = ! NILP (BVAR (current_buffer, enable_multibyte_characters));
750 } 753 }
751 process_coding.src_multibyte = 0; 754 process_coding.src_multibyte = 0;
752 755
diff --git a/src/dispnew.c b/src/dispnew.c
index 46d1917b144..7b594c5b4e8 100644
--- a/src/dispnew.c
+++ b/src/dispnew.c
@@ -429,6 +429,25 @@ margin_glyphs_to_reserve (struct window *w, int total_glyphs, Lisp_Object margin
429 return n; 429 return n;
430} 430}
431 431
432#if XASSERTS
433/* Return non-zero if ROW's hash value is correct, zero if not. */
434int
435verify_row_hash (struct glyph_row *row)
436{
437 int area, k;
438 unsigned row_hash = 0;
439
440 for (area = LEFT_MARGIN_AREA; area < LAST_AREA; ++area)
441 for (k = 0; k < row->used[area]; ++k)
442 row_hash = ((((row_hash << 4) + (row_hash >> 24)) & 0x0fffffff)
443 + row->glyphs[area][k].u.val
444 + row->glyphs[area][k].face_id
445 + row->glyphs[area][k].padding_p
446 + (row->glyphs[area][k].type << 2));
447
448 return row_hash == row->hash;
449}
450#endif
432 451
433/* Adjust glyph matrix MATRIX on window W or on a frame to changed 452/* Adjust glyph matrix MATRIX on window W or on a frame to changed
434 window sizes. 453 window sizes.
@@ -600,6 +619,7 @@ adjust_glyph_matrix (struct window *w, struct glyph_matrix *matrix, int x, int y
600 row->glyphs[LAST_AREA] 619 row->glyphs[LAST_AREA]
601 = row->glyphs[LEFT_MARGIN_AREA] + dim.width; 620 = row->glyphs[LEFT_MARGIN_AREA] + dim.width;
602 } 621 }
622 xassert (!row->enabled_p || verify_row_hash (row));
603 ++row; 623 ++row;
604 } 624 }
605 } 625 }
@@ -1271,6 +1291,9 @@ line_draw_cost (struct glyph_matrix *matrix, int vpos)
1271static inline int 1291static inline int
1272row_equal_p (struct glyph_row *a, struct glyph_row *b, int mouse_face_p) 1292row_equal_p (struct glyph_row *a, struct glyph_row *b, int mouse_face_p)
1273{ 1293{
1294 xassert (verify_row_hash (a));
1295 xassert (verify_row_hash (b));
1296
1274 if (a == b) 1297 if (a == b)
1275 return 1; 1298 return 1;
1276 else if (a->hash != b->hash) 1299 else if (a->hash != b->hash)
@@ -4334,10 +4357,10 @@ scrolling_window (struct window *w, int header_line_p)
4334 j = last_old; 4357 j = last_old;
4335 while (i - 1 > first_new 4358 while (i - 1 > first_new
4336 && j - 1 > first_old 4359 && j - 1 > first_old
4337 && MATRIX_ROW (current_matrix, i - 1)->enabled_p 4360 && MATRIX_ROW (current_matrix, j - 1)->enabled_p
4338 && (MATRIX_ROW (current_matrix, i - 1)->y 4361 && (MATRIX_ROW (current_matrix, j - 1)->y
4339 == MATRIX_ROW (desired_matrix, j - 1)->y) 4362 == MATRIX_ROW (desired_matrix, i - 1)->y)
4340 && !MATRIX_ROW (desired_matrix, j - 1)->redraw_fringe_bitmaps_p 4363 && !MATRIX_ROW (desired_matrix, i - 1)->redraw_fringe_bitmaps_p
4341 && row_equal_p (MATRIX_ROW (desired_matrix, i - 1), 4364 && row_equal_p (MATRIX_ROW (desired_matrix, i - 1),
4342 MATRIX_ROW (current_matrix, j - 1), 1)) 4365 MATRIX_ROW (current_matrix, j - 1), 1))
4343 --i, --j; 4366 --i, --j;
diff --git a/src/keyboard.c b/src/keyboard.c
index 11c37d14f64..f8c31af3fbe 100644
--- a/src/keyboard.c
+++ b/src/keyboard.c
@@ -8133,7 +8133,7 @@ parse_tool_bar_item (Lisp_Object key, Lisp_Object item)
8133 Lisp_Object caption; 8133 Lisp_Object caption;
8134 int i, have_label = 0; 8134 int i, have_label = 0;
8135 8135
8136 /* Defininition looks like `(menu-item CAPTION BINDING PROPS...)'. 8136 /* Definition looks like `(menu-item CAPTION BINDING PROPS...)'.
8137 Rule out items that aren't lists, don't start with 8137 Rule out items that aren't lists, don't start with
8138 `menu-item' or whose rest following `tool-bar-item' is not a 8138 `menu-item' or whose rest following `tool-bar-item' is not a
8139 list. */ 8139 list. */
diff --git a/src/makefile.w32-in b/src/makefile.w32-in
index e97f7f3aca4..36e4511d845 100644
--- a/src/makefile.w32-in
+++ b/src/makefile.w32-in
@@ -24,6 +24,9 @@ ALL = emacs
24# Set EMACSLOADPATH correctly (in case already defined in environment). 24# Set EMACSLOADPATH correctly (in case already defined in environment).
25EMACSLOADPATH=$(CURDIR)/../lisp 25EMACSLOADPATH=$(CURDIR)/../lisp
26 26
27# Size in MBs of the static heap in temacs.exe.
28HEAPSIZE = 27
29
27# 30#
28# HAVE_CONFIG_H is required by some generic gnu sources stuck into 31# HAVE_CONFIG_H is required by some generic gnu sources stuck into
29# the emacs source tree. 32# the emacs source tree.
@@ -177,7 +180,7 @@ temacs: stamp_BLD $(TEMACS)
177$(TEMACS): $(TLIB0) $(TLIB1) $(TLIB2) $(TLASTLIB) $(TOBJ) $(TRES) \ 180$(TEMACS): $(TLIB0) $(TLIB1) $(TLIB2) $(TLASTLIB) $(TOBJ) $(TRES) \
178 ../nt/$(BLD)/addsection.exe $(GNULIB) 181 ../nt/$(BLD)/addsection.exe $(GNULIB)
179 $(LINK) $(LINK_OUT)$(TEMACS_TMP) $(FULL_LINK_FLAGS) $(TOBJ) $(TRES) $(LIBS) 182 $(LINK) $(LINK_OUT)$(TEMACS_TMP) $(FULL_LINK_FLAGS) $(TOBJ) $(TRES) $(LIBS)
180 "$(THISDIR)/../nt/$(BLD)/addsection" "$(TEMACS_TMP)" "$(TEMACS)" EMHEAP 21 183 "$(THISDIR)/../nt/$(BLD)/addsection" "$(TEMACS_TMP)" "$(TEMACS)" EMHEAP $(HEAPSIZE)
181 184
182# These omit firstfile.${O}, but there's no documentation in there 185# These omit firstfile.${O}, but there's no documentation in there
183# anyways. 186# anyways.
diff --git a/src/nsfns.m b/src/nsfns.m
index 23362433a39..20b021c6f5d 100644
--- a/src/nsfns.m
+++ b/src/nsfns.m
@@ -1057,7 +1057,7 @@ unwind_create_frame (Lisp_Object frame)
1057 return Qnil; 1057 return Qnil;
1058 1058
1059 /* If frame is ``official'', nothing to do. */ 1059 /* If frame is ``official'', nothing to do. */
1060 if (!CONSP (Vframe_list) || !EQ (XCAR (Vframe_list), frame)) 1060 if (NILP (Fmemq (frame, Vframe_list)))
1061 { 1061 {
1062#if GLYPH_DEBUG && XASSERTS 1062#if GLYPH_DEBUG && XASSERTS
1063 struct ns_display_info *dpyinfo = FRAME_X_DISPLAY_INFO (f); 1063 struct ns_display_info *dpyinfo = FRAME_X_DISPLAY_INFO (f);
diff --git a/src/s/hpux10-20.h b/src/s/hpux10-20.h
index 98bee64eb08..be457498add 100644
--- a/src/s/hpux10-20.h
+++ b/src/s/hpux10-20.h
@@ -89,7 +89,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
89#undef HAVE_RANDOM 89#undef HAVE_RANDOM
90 90
91 91
92/* Rainer Malzbender <rainer@displaytech.com> says definining 92/* Rainer Malzbender <rainer@displaytech.com> says defining
93 HAVE_XRMSETDATABASE allows Emacs to compile on HP-UX 10.20 using GCC. */ 93 HAVE_XRMSETDATABASE allows Emacs to compile on HP-UX 10.20 using GCC. */
94#ifndef HAVE_XRMSETDATABASE 94#ifndef HAVE_XRMSETDATABASE
95#define HAVE_XRMSETDATABASE 95#define HAVE_XRMSETDATABASE
diff --git a/src/w32fns.c b/src/w32fns.c
index 6f32442514a..ffbcff86694 100644
--- a/src/w32fns.c
+++ b/src/w32fns.c
@@ -3986,7 +3986,7 @@ unwind_create_frame (Lisp_Object frame)
3986 struct frame *f = XFRAME (frame); 3986 struct frame *f = XFRAME (frame);
3987 3987
3988 /* If frame is ``official'', nothing to do. */ 3988 /* If frame is ``official'', nothing to do. */
3989 if (!CONSP (Vframe_list) || !EQ (XCAR (Vframe_list), frame)) 3989 if (NILP (Fmemq (frame, Vframe_list)))
3990 { 3990 {
3991#if GLYPH_DEBUG 3991#if GLYPH_DEBUG
3992 struct w32_display_info *dpyinfo = FRAME_W32_DISPLAY_INFO (f); 3992 struct w32_display_info *dpyinfo = FRAME_W32_DISPLAY_INFO (f);
diff --git a/src/w32font.c b/src/w32font.c
index 26bf4207de5..365f8b78a5e 100644
--- a/src/w32font.c
+++ b/src/w32font.c
@@ -2221,7 +2221,7 @@ font_supported_scripts (FONTSIGNATURE * sig)
2221 so don't need to mark them separately. */ 2221 so don't need to mark them separately. */
2222 /* 1: Latin-1 supplement, 2: Latin Extended A, 3: Latin Extended B. */ 2222 /* 1: Latin-1 supplement, 2: Latin Extended A, 3: Latin Extended B. */
2223 SUBRANGE (4, Qphonetic); 2223 SUBRANGE (4, Qphonetic);
2224 /* 5: Spacing and tone modifiers, 6: Combining Diacriticals. */ 2224 /* 5: Spacing and tone modifiers, 6: Combining Diacritical Marks. */
2225 SUBRANGE (7, Qgreek); 2225 SUBRANGE (7, Qgreek);
2226 SUBRANGE (8, Qcoptic); 2226 SUBRANGE (8, Qcoptic);
2227 SUBRANGE (9, Qcyrillic); 2227 SUBRANGE (9, Qcyrillic);
@@ -2311,7 +2311,7 @@ font_supported_scripts (FONTSIGNATURE * sig)
2311 /* 115: Saurashtra, 116: Kayah Li, 117: Rejang. */ 2311 /* 115: Saurashtra, 116: Kayah Li, 117: Rejang. */
2312 SUBRANGE (118, Qcham); 2312 SUBRANGE (118, Qcham);
2313 /* 119: Ancient symbols, 120: Phaistos Disc. */ 2313 /* 119: Ancient symbols, 120: Phaistos Disc. */
2314 /* 121: Carian, Lycian, Lydian, 122: Dominos, Mah Jong tiles. */ 2314 /* 121: Carian, Lycian, Lydian, 122: Dominoes, Mahjong tiles. */
2315 /* 123-127: Reserved. */ 2315 /* 123-127: Reserved. */
2316 2316
2317 /* There isn't really a main symbol range, so include symbol if any 2317 /* There isn't really a main symbol range, so include symbol if any
diff --git a/src/window.c b/src/window.c
index 83a8974e88d..0a780a0170a 100644
--- a/src/window.c
+++ b/src/window.c
@@ -465,41 +465,6 @@ Return nil if WINDOW has no previous sibling. */)
465 return decode_any_window (window)->prev; 465 return decode_any_window (window)->prev;
466} 466}
467 467
468DEFUN ("window-splits", Fwindow_splits, Swindow_splits, 0, 1, 0,
469 doc: /* Return splits status for the window WINDOW.
470If WINDOW is omitted or nil, it defaults to the selected window.
471
472If the value returned by this function is nil and WINDOW is resized, the
473corresponding space is preferably taken from (or given to) WINDOW's
474right sibling. When WINDOW is deleted, its space is given to its left
475sibling.
476
477If the value returned by this function is non-nil, resizing and deleting
478WINDOW may resize all windows in the same combination. */)
479 (Lisp_Object window)
480{
481 return decode_any_window (window)->splits;
482}
483
484DEFUN ("set-window-splits", Fset_window_splits, Sset_window_splits, 2, 2, 0,
485 doc: /* Set splits status of window WINDOW to STATUS.
486If WINDOW is omitted or nil, it defaults to the selected window.
487
488If STATUS is nil and WINDOW is later resized, the corresponding space is
489preferably taken from (or given to) WINDOW's right sibling. When WINDOW
490is deleted, its space is given to its left sibling.
491
492If STATUS is non-nil, resizing and deleting WINDOW may resize all
493windows in the same combination. */)
494 (Lisp_Object window, Lisp_Object status)
495{
496 register struct window *w = decode_any_window (window);
497
498 w->splits = status;
499
500 return w->splits;
501}
502
503DEFUN ("window-nest", Fwindow_nest, Swindow_nest, 0, 1, 0, 468DEFUN ("window-nest", Fwindow_nest, Swindow_nest, 0, 1, 0,
504 doc: /* Return nest status of window WINDOW. 469 doc: /* Return nest status of window WINDOW.
505If WINDOW is omitted or nil, it defaults to the selected window. 470If WINDOW is omitted or nil, it defaults to the selected window.
@@ -2769,9 +2734,6 @@ window-start value is reasonable when this function is called. */)
2769 2734
2770 replace_window (root, window, 1); 2735 replace_window (root, window, 1);
2771 2736
2772 /* Reset WINDOW's splits status. */
2773 w->splits = Qnil;
2774
2775 /* This must become SWINDOW anyway ....... */ 2737 /* This must become SWINDOW anyway ....... */
2776 if (!NILP (w->buffer) && !resize_failed) 2738 if (!NILP (w->buffer) && !resize_failed)
2777 { 2739 {
@@ -3286,7 +3248,6 @@ make_parent_window (Lisp_Object window, int horflag)
3286 p->start = Qnil; 3248 p->start = Qnil;
3287 p->pointm = Qnil; 3249 p->pointm = Qnil;
3288 p->buffer = Qnil; 3250 p->buffer = Qnil;
3289 p->splits = Qnil;
3290 p->nest = Qnil; 3251 p->nest = Qnil;
3291 p->window_parameters = Qnil; 3252 p->window_parameters = Qnil;
3292} 3253}
@@ -3334,7 +3295,7 @@ make_window (void)
3334 w->start_at_line_beg = w->display_table = w->dedicated = Qnil; 3295 w->start_at_line_beg = w->display_table = w->dedicated = Qnil;
3335 w->base_line_number = w->base_line_pos = w->region_showing = Qnil; 3296 w->base_line_number = w->base_line_pos = w->region_showing = Qnil;
3336 w->column_number_displayed = w->redisplay_end_trigger = Qnil; 3297 w->column_number_displayed = w->redisplay_end_trigger = Qnil;
3337 w->splits = w->nest = w->window_parameters = Qnil; 3298 w->nest = w->window_parameters = Qnil;
3338 w->prev_buffers = w->next_buffers = Qnil; 3299 w->prev_buffers = w->next_buffers = Qnil;
3339 /* Initialize non-Lisp data. */ 3300 /* Initialize non-Lisp data. */
3340 w->desired_matrix = w->current_matrix = 0; 3301 w->desired_matrix = w->current_matrix = 0;
@@ -3776,10 +3737,6 @@ set correctly. See the code of `split-window' for how this is done. */)
3776 p = XWINDOW (o->parent); 3737 p = XWINDOW (o->parent);
3777 /* Store value of `window-nest' in new parent's nest slot. */ 3738 /* Store value of `window-nest' in new parent's nest slot. */
3778 p->nest = Vwindow_nest; 3739 p->nest = Vwindow_nest;
3779 /* Have PARENT inherit splits slot value from OLD. */
3780 p->splits = o->splits;
3781 /* Store value of `window-splits' in OLD's splits slot. */
3782 o->splits = Vwindow_splits;
3783 /* These get applied below. */ 3740 /* These get applied below. */
3784 p->new_total = horflag ? o->total_cols : o->total_lines; 3741 p->new_total = horflag ? o->total_cols : o->total_lines;
3785 p->new_normal = new_normal; 3742 p->new_normal = new_normal;
@@ -3830,9 +3787,6 @@ set correctly. See the code of `split-window' for how this is done. */)
3830 n->scroll_bar_width = r->scroll_bar_width; 3787 n->scroll_bar_width = r->scroll_bar_width;
3831 n->vertical_scroll_bar_type = r->vertical_scroll_bar_type; 3788 n->vertical_scroll_bar_type = r->vertical_scroll_bar_type;
3832 3789
3833 /* Store `window-splits' in NEW's splits slot. */
3834 n->splits = Vwindow_splits;
3835
3836 /* Directly assign orthogonal coordinates and sizes. */ 3790 /* Directly assign orthogonal coordinates and sizes. */
3837 if (horflag) 3791 if (horflag)
3838 { 3792 {
@@ -3972,7 +3926,6 @@ Signal an error when WINDOW is the only window on its frame. */)
3972 PARENT (the nest slot is not inherited). */ 3926 PARENT (the nest slot is not inherited). */
3973 s->normal_cols = p->normal_cols; 3927 s->normal_cols = p->normal_cols;
3974 s->normal_lines = p->normal_lines; 3928 s->normal_lines = p->normal_lines;
3975 s->splits = p->splits;
3976 /* Mark PARENT as deleted. */ 3929 /* Mark PARENT as deleted. */
3977 p->vchild = p->hchild = Qnil; 3930 p->vchild = p->hchild = Qnil;
3978 /* Try to merge SIBLING into its new parent. */ 3931 /* Try to merge SIBLING into its new parent. */
@@ -5359,7 +5312,7 @@ struct saved_window
5359 Lisp_Object left_margin_cols, right_margin_cols; 5312 Lisp_Object left_margin_cols, right_margin_cols;
5360 Lisp_Object left_fringe_width, right_fringe_width, fringes_outside_margins; 5313 Lisp_Object left_fringe_width, right_fringe_width, fringes_outside_margins;
5361 Lisp_Object scroll_bar_width, vertical_scroll_bar_type, dedicated; 5314 Lisp_Object scroll_bar_width, vertical_scroll_bar_type, dedicated;
5362 Lisp_Object splits, nest, window_parameters; 5315 Lisp_Object nest, window_parameters;
5363}; 5316};
5364 5317
5365#define SAVED_WINDOW_N(swv,n) \ 5318#define SAVED_WINDOW_N(swv,n) \
@@ -5590,7 +5543,6 @@ the return value is nil. Otherwise the value is t. */)
5590 w->scroll_bar_width = p->scroll_bar_width; 5543 w->scroll_bar_width = p->scroll_bar_width;
5591 w->vertical_scroll_bar_type = p->vertical_scroll_bar_type; 5544 w->vertical_scroll_bar_type = p->vertical_scroll_bar_type;
5592 w->dedicated = p->dedicated; 5545 w->dedicated = p->dedicated;
5593 w->splits = p->splits;
5594 w->nest = p->nest; 5546 w->nest = p->nest;
5595 w->window_parameters = p->window_parameters; 5547 w->window_parameters = p->window_parameters;
5596 XSETFASTINT (w->last_modified, 0); 5548 XSETFASTINT (w->last_modified, 0);
@@ -5869,7 +5821,6 @@ save_window_save (Lisp_Object window, struct Lisp_Vector *vector, int i)
5869 p->scroll_bar_width = w->scroll_bar_width; 5821 p->scroll_bar_width = w->scroll_bar_width;
5870 p->vertical_scroll_bar_type = w->vertical_scroll_bar_type; 5822 p->vertical_scroll_bar_type = w->vertical_scroll_bar_type;
5871 p->dedicated = w->dedicated; 5823 p->dedicated = w->dedicated;
5872 p->splits = w->splits;
5873 p->nest = w->nest; 5824 p->nest = w->nest;
5874 p->window_parameters = w->window_parameters; 5825 p->window_parameters = w->window_parameters;
5875 if (!NILP (w->buffer)) 5826 if (!NILP (w->buffer))
@@ -6333,7 +6284,7 @@ freeze_window_starts (struct frame *f, int freeze_p)
6333 and the like. 6284 and the like.
6334 6285
6335 This ignores a couple of things like the dedicatedness status of 6286 This ignores a couple of things like the dedicatedness status of
6336 window, splits, nest and the like. This might have to be fixed. */ 6287 window, nest and the like. This might have to be fixed. */
6337 6288
6338int 6289int
6339compare_window_configurations (Lisp_Object configuration1, Lisp_Object configuration2, int ignore_positions) 6290compare_window_configurations (Lisp_Object configuration1, Lisp_Object configuration2, int ignore_positions)
@@ -6545,16 +6496,7 @@ variable is non-nil, splitting a window may resize all windows in the
6545same combination. This also allows to split a window that is otherwise 6496same combination. This also allows to split a window that is otherwise
6546too small or of fixed size. 6497too small or of fixed size.
6547 6498
6548The value of this variable is also assigned to the split status of the 6499This variable takes no effect if `window-nest' is non-nil. */);
6549new window and, provided the old and new window form a new combination,
6550to the window that was split as well. The split status of a window can
6551be retrieved with the function `window-splits' and altered by the
6552function `set-window-splits'.
6553
6554If the value of the variable `window-nest' is non-nil, the space for the
6555new window is exclusively taken from the window that shall be split, but
6556the split status of the window that is split as well as that of the new
6557window are still set to the value of this variable. */);
6558 Vwindow_splits = Qnil; 6500 Vwindow_splits = Qnil;
6559 6501
6560 DEFVAR_LISP ("window-nest", Vwindow_nest, 6502 DEFVAR_LISP ("window-nest", Vwindow_nest,
@@ -6591,8 +6533,6 @@ function `window-nest' and altered by the function `set-window-nest'. */);
6591 defsubr (&Swindow_left_child); 6533 defsubr (&Swindow_left_child);
6592 defsubr (&Swindow_next_sibling); 6534 defsubr (&Swindow_next_sibling);
6593 defsubr (&Swindow_prev_sibling); 6535 defsubr (&Swindow_prev_sibling);
6594 defsubr (&Swindow_splits);
6595 defsubr (&Sset_window_splits);
6596 defsubr (&Swindow_nest); 6536 defsubr (&Swindow_nest);
6597 defsubr (&Sset_window_nest); 6537 defsubr (&Sset_window_nest);
6598 defsubr (&Swindow_use_time); 6538 defsubr (&Swindow_use_time);
diff --git a/src/window.h b/src/window.h
index 6a9641e3e6d..c11235bd67b 100644
--- a/src/window.h
+++ b/src/window.h
@@ -258,10 +258,6 @@ struct window
258 must run the redisplay-end-trigger-hook. */ 258 must run the redisplay-end-trigger-hook. */
259 Lisp_Object redisplay_end_trigger; 259 Lisp_Object redisplay_end_trigger;
260 260
261 /* Non-nil means deleting or resizing this window distributes
262 space among all windows in the same combination. */
263 Lisp_Object splits;
264
265 /* Non-nil means this window's child windows are never 261 /* Non-nil means this window's child windows are never
266 (re-)combined. */ 262 (re-)combined. */
267 Lisp_Object nest; 263 Lisp_Object nest;
diff --git a/src/xdisp.c b/src/xdisp.c
index b4eaef9d0c7..dfb794f38d3 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -22121,6 +22121,12 @@ fill_composite_glyph_string (struct glyph_string *s, struct face *base_face,
22121 } 22121 }
22122 s->cmp_to = i; 22122 s->cmp_to = i;
22123 22123
22124 if (s->face == NULL)
22125 {
22126 s->face = base_face->ascii_face;
22127 s->font = s->face->font;
22128 }
22129
22124 /* All glyph strings for the same composition has the same width, 22130 /* All glyph strings for the same composition has the same width,
22125 i.e. the width set for the first component of the composition. */ 22131 i.e. the width set for the first component of the composition. */
22126 s->width = s->first_glyph->pixel_width; 22132 s->width = s->first_glyph->pixel_width;
@@ -27968,7 +27974,6 @@ syms_of_xdisp (void)
27968 DEFSYM (Qhollow, "hollow"); 27974 DEFSYM (Qhollow, "hollow");
27969 DEFSYM (Qhand, "hand"); 27975 DEFSYM (Qhand, "hand");
27970 DEFSYM (Qarrow, "arrow"); 27976 DEFSYM (Qarrow, "arrow");
27971 DEFSYM (Qtext, "text");
27972 DEFSYM (Qinhibit_free_realized_faces, "inhibit-free-realized-faces"); 27977 DEFSYM (Qinhibit_free_realized_faces, "inhibit-free-realized-faces");
27973 27978
27974 list_of_error = Fcons (Fcons (intern_c_string ("error"), 27979 list_of_error = Fcons (Fcons (intern_c_string ("error"),
diff --git a/src/xfaces.c b/src/xfaces.c
index 9faa7c79e0b..0ed6fa1d8e2 100644
--- a/src/xfaces.c
+++ b/src/xfaces.c
@@ -27,7 +27,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
27 27
28 1. Font family name. 28 1. Font family name.
29 29
30 2. Font foundary name. 30 2. Font foundry name.
31 31
32 3. Relative proportionate width, aka character set width or set 32 3. Relative proportionate width, aka character set width or set
33 width (swidth), e.g. `semi-compressed'. 33 width (swidth), e.g. `semi-compressed'.
diff --git a/src/xfns.c b/src/xfns.c
index 49c4c774cae..2359a1a82c2 100644
--- a/src/xfns.c
+++ b/src/xfns.c
@@ -2929,7 +2929,7 @@ unwind_create_frame (Lisp_Object frame)
2929 return Qnil; 2929 return Qnil;
2930 2930
2931 /* If frame is ``official'', nothing to do. */ 2931 /* If frame is ``official'', nothing to do. */
2932 if (!CONSP (Vframe_list) || !EQ (XCAR (Vframe_list), frame)) 2932 if (NILP (Fmemq (frame, Vframe_list)))
2933 { 2933 {
2934#if GLYPH_DEBUG && XASSERTS 2934#if GLYPH_DEBUG && XASSERTS
2935 struct x_display_info *dpyinfo = FRAME_X_DISPLAY_INFO (f); 2935 struct x_display_info *dpyinfo = FRAME_X_DISPLAY_INFO (f);