diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/ChangeLog | 54 | ||||
| -rw-r--r-- | src/alloc.c | 5 | ||||
| -rw-r--r-- | src/buffer.c | 22 | ||||
| -rw-r--r-- | src/dispextern.h | 31 | ||||
| -rw-r--r-- | src/dispnew.c | 113 | ||||
| -rw-r--r-- | src/editfns.c | 6 | ||||
| -rw-r--r-- | src/fileio.c | 4 | ||||
| -rw-r--r-- | src/font.c | 2 | ||||
| -rw-r--r-- | src/frame.c | 40 | ||||
| -rw-r--r-- | src/fringe.c | 12 | ||||
| -rw-r--r-- | src/indent.c | 12 | ||||
| -rw-r--r-- | src/insdel.c | 2 | ||||
| -rw-r--r-- | src/keyboard.c | 24 | ||||
| -rw-r--r-- | src/keymap.c | 6 | ||||
| -rw-r--r-- | src/minibuf.c | 4 | ||||
| -rw-r--r-- | src/msdos.c | 6 | ||||
| -rw-r--r-- | src/nsfns.m | 2 | ||||
| -rw-r--r-- | src/nsmenu.m | 2 | ||||
| -rw-r--r-- | src/nsterm.m | 2 | ||||
| -rw-r--r-- | src/print.c | 4 | ||||
| -rw-r--r-- | src/textprop.c | 3 | ||||
| -rw-r--r-- | src/w32fns.c | 2 | ||||
| -rw-r--r-- | src/w32menu.c | 2 | ||||
| -rw-r--r-- | src/window.c | 486 | ||||
| -rw-r--r-- | src/window.h | 58 | ||||
| -rw-r--r-- | src/xdisp.c | 191 | ||||
| -rw-r--r-- | src/xfaces.c | 12 | ||||
| -rw-r--r-- | src/xfns.c | 2 | ||||
| -rw-r--r-- | src/xmenu.c | 2 |
29 files changed, 526 insertions, 585 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index baa40ffd237..77338e6c46f 100644 --- a/src/ChangeLog +++ b/src/ChangeLog | |||
| @@ -1,3 +1,57 @@ | |||
| 1 | 2013-03-28 Dmitry Antipov <dmantipov@yandex.ru> | ||
| 2 | |||
| 3 | * window.h (struct window): Replace hchild, vchild and buffer slots | ||
| 4 | with the only contents slot. This is possible because each valid | ||
| 5 | window may have either the child window (in vertical or horizontal | ||
| 6 | combination) or buffer to display (for the leaf window). Using that, | ||
| 7 | a lof of operations to traverse and/or change window hierarchies may | ||
| 8 | be simplified. New member horizontal is used to distinguish between | ||
| 9 | horizontal and vertical combinations of internal windows. | ||
| 10 | (WINDOW_LEAF_P, WINDOW_HORIZONTAL_COMBINATION_P) | ||
| 11 | (WINDOW_VERTICAL_COMBINATION_P): New macros. | ||
| 12 | (WINDOW_VALID_P, WINDOW_LIVE_P): Adjust to match struct window changes. | ||
| 13 | * window.c (wset_hchild, wset_vchild): Remove. Adjust all users. | ||
| 14 | Use contents slot, not buffer, where appropriate. | ||
| 15 | (wset_combination): New function. | ||
| 16 | (wset_buffer): Add eassert. | ||
| 17 | (Fframe_first_window): Simplify the loop reaching first window. | ||
| 18 | (Fwindow_buffer): Use WINDOW_LEAF_P. | ||
| 19 | (Fwindow_top_child): Use WINDOW_VERTICAL_COMBINATION_P. | ||
| 20 | (Fwindow_left_child): Use WINDOW_HORIZONTAL_COMBINATION_P. | ||
| 21 | (unshow_buffer): Convert initial debugging check to eassert. | ||
| 22 | (replace_window, recombine_windows, Fdelete_other_windows_internal) | ||
| 23 | (make_parent_window, window_resize_check, window_resize_apply) | ||
| 24 | (resize_frame_windows, Fsplit_window_internal, Fdelete_window_internal) | ||
| 25 | (Fset_window_configuration, delete_all_child_windows, save_window_save): | ||
| 26 | Adjust to match struct window changes. | ||
| 27 | (window_loop): Check for broken markers in CHECK_ALL_WINDOWS. | ||
| 28 | (mark_window_cursors_off, count_windows, get_leaf_windows) | ||
| 29 | (foreach_window_1): Simplify the loop. | ||
| 30 | * alloc.c (mark_object): Do not check for the leaf window because | ||
| 31 | internal windows has no glyph matrices anyway. | ||
| 32 | * dispnew.c (clear_window_matrices, showing_window_margins_p) | ||
| 33 | (allocate_matrices_for_window_redisplay, fake_current_matrices) | ||
| 34 | (allocate_matrices_for_frame_redisplay, free_window_matrices) | ||
| 35 | (build_frame_matrix_from_window_tree, mirror_make_current) | ||
| 36 | (frame_row_to_window, mirror_line_dance, check_window_matrix_pointers) | ||
| 37 | (update_window_tree, set_window_update_flags): Simplify the loop. | ||
| 38 | (sync_window_with_frame_matrix_rows): Enforce live window. | ||
| 39 | Use contents slot, not buffer, where appropriate. | ||
| 40 | * frame.c (set_menu_bar_lines_1): Use WINDOW_VERTICAL_COMBINATION_P | ||
| 41 | and WINDOW_HORIZONTAL_COMBINATION_P. | ||
| 42 | (make_frame_visible_1): Simplify the loop. | ||
| 43 | Use contents slot, not buffer, where appropriate. | ||
| 44 | * xdisp.c (hscroll_window_tree, mark_window_display_accurate) | ||
| 45 | (redisplay_windows, redisplay_mode_lines, update_cursor_in_window_tree) | ||
| 46 | (expose_window_tree): Likewise. | ||
| 47 | Use contents slot, not buffer, where appropriate. | ||
| 48 | * textprop.c (get_char_property_and_overlay): Add CHECK_LIVE_WINDOW | ||
| 49 | to avoid deleted windows. Use contents slot instead of buffer. | ||
| 50 | * buffer.c, dispextern.h, editfns.c, fileio.c, font.c, fringe.c: | ||
| 51 | * indent.c, insdel.c, keyboard.c, keymap.c, minibuf.c, msdos.c: | ||
| 52 | * nsfns.m, nsmenu.m, nsterm.m, print.c, w32fns.c, w32menu.c, xfaces.c: | ||
| 53 | * xfns.c, xmenu.c: Use contents slot, not buffer, where appropriate. | ||
| 54 | |||
| 1 | 2013-03-28 Eli Zaretskii <eliz@gnu.org> | 55 | 2013-03-28 Eli Zaretskii <eliz@gnu.org> |
| 2 | 56 | ||
| 3 | * w32fns.c (w32_wnd_proc) [ENABLE_CHECKING]: Add code to help | 57 | * w32fns.c (w32_wnd_proc) [ENABLE_CHECKING]: Add code to help |
diff --git a/src/alloc.c b/src/alloc.c index ea833c62b94..0a7950273f6 100644 --- a/src/alloc.c +++ b/src/alloc.c | |||
| @@ -5810,14 +5810,13 @@ mark_object (Lisp_Object arg) | |||
| 5810 | case PVEC_WINDOW: | 5810 | case PVEC_WINDOW: |
| 5811 | { | 5811 | { |
| 5812 | struct window *w = (struct window *) ptr; | 5812 | struct window *w = (struct window *) ptr; |
| 5813 | bool leaf = NILP (w->hchild) && NILP (w->vchild); | ||
| 5814 | 5813 | ||
| 5815 | mark_vectorlike (ptr); | 5814 | mark_vectorlike (ptr); |
| 5816 | 5815 | ||
| 5817 | /* Mark glyphs for leaf windows. Marking window | 5816 | /* Mark glyph matrices, if any. Marking window |
| 5818 | matrices is sufficient because frame matrices | 5817 | matrices is sufficient because frame matrices |
| 5819 | use the same glyph memory. */ | 5818 | use the same glyph memory. */ |
| 5820 | if (leaf && w->current_matrix) | 5819 | if (w->current_matrix) |
| 5821 | { | 5820 | { |
| 5822 | mark_glyph_matrix (w->current_matrix); | 5821 | mark_glyph_matrix (w->current_matrix); |
| 5823 | mark_glyph_matrix (w->desired_matrix); | 5822 | mark_glyph_matrix (w->desired_matrix); |
diff --git a/src/buffer.c b/src/buffer.c index d02bcf7eceb..8728b418812 100644 --- a/src/buffer.c +++ b/src/buffer.c | |||
| @@ -1769,7 +1769,7 @@ cleaning up all windows currently displaying the buffer to be killed. */) | |||
| 1769 | since anything can happen within do_yes_or_no_p. */ | 1769 | since anything can happen within do_yes_or_no_p. */ |
| 1770 | 1770 | ||
| 1771 | /* Don't kill the minibuffer now current. */ | 1771 | /* Don't kill the minibuffer now current. */ |
| 1772 | if (EQ (buffer, XWINDOW (minibuf_window)->buffer)) | 1772 | if (EQ (buffer, XWINDOW (minibuf_window)->contents)) |
| 1773 | return Qnil; | 1773 | return Qnil; |
| 1774 | 1774 | ||
| 1775 | /* When we kill an ordinary buffer which shares it's buffer text | 1775 | /* When we kill an ordinary buffer which shares it's buffer text |
| @@ -1820,7 +1820,7 @@ cleaning up all windows currently displaying the buffer to be killed. */) | |||
| 1820 | /* If the buffer now current is shown in the minibuffer and our buffer | 1820 | /* If the buffer now current is shown in the minibuffer and our buffer |
| 1821 | is the sole other buffer give up. */ | 1821 | is the sole other buffer give up. */ |
| 1822 | XSETBUFFER (tem, current_buffer); | 1822 | XSETBUFFER (tem, current_buffer); |
| 1823 | if (EQ (tem, XWINDOW (minibuf_window)->buffer) | 1823 | if (EQ (tem, XWINDOW (minibuf_window)->contents) |
| 1824 | && EQ (buffer, Fother_buffer (buffer, Qnil, Qnil))) | 1824 | && EQ (buffer, Fother_buffer (buffer, Qnil, Qnil))) |
| 1825 | return Qnil; | 1825 | return Qnil; |
| 1826 | 1826 | ||
| @@ -2406,19 +2406,19 @@ DEFUN ("buffer-swap-text", Fbuffer_swap_text, Sbuffer_swap_text, | |||
| 2406 | { | 2406 | { |
| 2407 | ws = Fcons (w, ws); | 2407 | ws = Fcons (w, ws); |
| 2408 | if (MARKERP (XWINDOW (w)->pointm) | 2408 | if (MARKERP (XWINDOW (w)->pointm) |
| 2409 | && (EQ (XWINDOW (w)->buffer, buf1) | 2409 | && (EQ (XWINDOW (w)->contents, buf1) |
| 2410 | || EQ (XWINDOW (w)->buffer, buf2))) | 2410 | || EQ (XWINDOW (w)->contents, buf2))) |
| 2411 | Fset_marker (XWINDOW (w)->pointm, | 2411 | Fset_marker (XWINDOW (w)->pointm, |
| 2412 | make_number | 2412 | make_number |
| 2413 | (BUF_BEGV (XBUFFER (XWINDOW (w)->buffer))), | 2413 | (BUF_BEGV (XBUFFER (XWINDOW (w)->contents))), |
| 2414 | XWINDOW (w)->buffer); | 2414 | XWINDOW (w)->contents); |
| 2415 | if (MARKERP (XWINDOW (w)->start) | 2415 | if (MARKERP (XWINDOW (w)->start) |
| 2416 | && (EQ (XWINDOW (w)->buffer, buf1) | 2416 | && (EQ (XWINDOW (w)->contents, buf1) |
| 2417 | || EQ (XWINDOW (w)->buffer, buf2))) | 2417 | || EQ (XWINDOW (w)->contents, buf2))) |
| 2418 | Fset_marker (XWINDOW (w)->start, | 2418 | Fset_marker (XWINDOW (w)->start, |
| 2419 | make_number | 2419 | make_number |
| 2420 | (XBUFFER (XWINDOW (w)->buffer)->last_window_start), | 2420 | (XBUFFER (XWINDOW (w)->contents)->last_window_start), |
| 2421 | XWINDOW (w)->buffer); | 2421 | XWINDOW (w)->contents); |
| 2422 | w = Fnext_window (w, Qt, Qt); | 2422 | w = Fnext_window (w, Qt, Qt); |
| 2423 | } | 2423 | } |
| 2424 | } | 2424 | } |
| @@ -3901,7 +3901,7 @@ modify_overlay (struct buffer *buf, ptrdiff_t start, ptrdiff_t end) | |||
| 3901 | if (buffer_window_count (buf) > 0) | 3901 | if (buffer_window_count (buf) > 0) |
| 3902 | { | 3902 | { |
| 3903 | /* ... it's visible in other window than selected, */ | 3903 | /* ... it's visible in other window than selected, */ |
| 3904 | if (buf != XBUFFER (XWINDOW (selected_window)->buffer)) | 3904 | if (buf != XBUFFER (XWINDOW (selected_window)->contents)) |
| 3905 | windows_or_buffers_changed = 1; | 3905 | windows_or_buffers_changed = 1; |
| 3906 | /* ... or if we modify an overlay at the end of the buffer | 3906 | /* ... or if we modify an overlay at the end of the buffer |
| 3907 | and so we cannot be sure that window end is still valid. */ | 3907 | and so we cannot be sure that window end is still valid. */ |
diff --git a/src/dispextern.h b/src/dispextern.h index 1f269902435..cb2e944d1cc 100644 --- a/src/dispextern.h +++ b/src/dispextern.h | |||
| @@ -1412,25 +1412,24 @@ struct glyph_string | |||
| 1412 | 1412 | ||
| 1413 | /* Value is non-zero if window W wants a mode line. */ | 1413 | /* Value is non-zero if window W wants a mode line. */ |
| 1414 | 1414 | ||
| 1415 | #define WINDOW_WANTS_MODELINE_P(W) \ | 1415 | #define WINDOW_WANTS_MODELINE_P(W) \ |
| 1416 | (!MINI_WINDOW_P ((W)) \ | 1416 | (!MINI_WINDOW_P ((W)) \ |
| 1417 | && !(W)->pseudo_window_p \ | 1417 | && !(W)->pseudo_window_p \ |
| 1418 | && FRAME_WANTS_MODELINE_P (XFRAME (WINDOW_FRAME ((W)))) \ | 1418 | && FRAME_WANTS_MODELINE_P (XFRAME (WINDOW_FRAME ((W)))) \ |
| 1419 | && BUFFERP (W->buffer) \ | 1419 | && BUFFERP (W->contents) \ |
| 1420 | && !NILP (BVAR (XBUFFER (W->buffer), mode_line_format)) \ | 1420 | && !NILP (BVAR (XBUFFER (W->contents), mode_line_format)) \ |
| 1421 | && WINDOW_TOTAL_LINES (W) > 1) | 1421 | && WINDOW_TOTAL_LINES (W) > 1) |
| 1422 | 1422 | ||
| 1423 | /* Value is true if window W wants a header line. */ | 1423 | /* Value is true if window W wants a header line. */ |
| 1424 | 1424 | ||
| 1425 | #define WINDOW_WANTS_HEADER_LINE_P(W) \ | 1425 | #define WINDOW_WANTS_HEADER_LINE_P(W) \ |
| 1426 | (!MINI_WINDOW_P ((W)) \ | 1426 | (!MINI_WINDOW_P ((W)) \ |
| 1427 | && !(W)->pseudo_window_p \ | 1427 | && !(W)->pseudo_window_p \ |
| 1428 | && FRAME_WANTS_MODELINE_P (XFRAME (WINDOW_FRAME ((W)))) \ | 1428 | && FRAME_WANTS_MODELINE_P (XFRAME (WINDOW_FRAME ((W)))) \ |
| 1429 | && BUFFERP (W->buffer) \ | 1429 | && BUFFERP (W->contents) \ |
| 1430 | && !NILP (BVAR (XBUFFER (W->buffer), header_line_format)) \ | 1430 | && !NILP (BVAR (XBUFFER (W->contents), header_line_format)) \ |
| 1431 | && WINDOW_TOTAL_LINES (W) > 1 \ | 1431 | && WINDOW_TOTAL_LINES (W) > 1 \ |
| 1432 | + !NILP (BVAR (XBUFFER (W->buffer), mode_line_format))) | 1432 | + !NILP (BVAR (XBUFFER (W->contents), mode_line_format))) |
| 1433 | |||
| 1434 | 1433 | ||
| 1435 | /* Return proper value to be used as baseline offset of font that has | 1434 | /* Return proper value to be used as baseline offset of font that has |
| 1436 | ASCENT and DESCENT to draw characters by the font at the vertical | 1435 | ASCENT and DESCENT to draw characters by the font at the vertical |
diff --git a/src/dispnew.c b/src/dispnew.c index 852598d2dc8..836c0f91020 100644 --- a/src/dispnew.c +++ b/src/dispnew.c | |||
| @@ -223,9 +223,9 @@ add_window_display_history (struct window *w, const char *msg, bool paused_p) | |||
| 223 | "%"pMu": window %p (`%s')%s\n%s", | 223 | "%"pMu": window %p (`%s')%s\n%s", |
| 224 | history_tick++, | 224 | history_tick++, |
| 225 | w, | 225 | w, |
| 226 | ((BUFFERP (w->buffer) | 226 | ((BUFFERP (w->contents) |
| 227 | && STRINGP (BVAR (XBUFFER (w->buffer), name))) | 227 | && STRINGP (BVAR (XBUFFER (w->contents), name))) |
| 228 | ? SSDATA (BVAR (XBUFFER (w->buffer), name)) | 228 | ? SSDATA (BVAR (XBUFFER (w->contents), name)) |
| 229 | : "???"), | 229 | : "???"), |
| 230 | paused_p ? " ***paused***" : "", | 230 | paused_p ? " ***paused***" : "", |
| 231 | msg); | 231 | msg); |
| @@ -842,16 +842,8 @@ clear_window_matrices (struct window *w, bool desired_p) | |||
| 842 | { | 842 | { |
| 843 | while (w) | 843 | while (w) |
| 844 | { | 844 | { |
| 845 | if (!NILP (w->hchild)) | 845 | if (WINDOWP (w->contents)) |
| 846 | { | 846 | clear_window_matrices (XWINDOW (w->contents), desired_p); |
| 847 | eassert (WINDOWP (w->hchild)); | ||
| 848 | clear_window_matrices (XWINDOW (w->hchild), desired_p); | ||
| 849 | } | ||
| 850 | else if (!NILP (w->vchild)) | ||
| 851 | { | ||
| 852 | eassert (WINDOWP (w->vchild)); | ||
| 853 | clear_window_matrices (XWINDOW (w->vchild), desired_p); | ||
| 854 | } | ||
| 855 | else | 847 | else |
| 856 | { | 848 | { |
| 857 | if (desired_p) | 849 | if (desired_p) |
| @@ -1472,7 +1464,7 @@ check_matrix_invariants (struct window *w) | |||
| 1472 | struct glyph_row *row = matrix->rows; | 1464 | struct glyph_row *row = matrix->rows; |
| 1473 | struct glyph_row *last_text_row = NULL; | 1465 | struct glyph_row *last_text_row = NULL; |
| 1474 | struct buffer *saved = current_buffer; | 1466 | struct buffer *saved = current_buffer; |
| 1475 | struct buffer *buffer = XBUFFER (w->buffer); | 1467 | struct buffer *buffer = XBUFFER (w->contents); |
| 1476 | int c; | 1468 | int c; |
| 1477 | 1469 | ||
| 1478 | /* This can sometimes happen for a fresh window. */ | 1470 | /* This can sometimes happen for a fresh window. */ |
| @@ -1636,7 +1628,7 @@ allocate_matrices_for_frame_redisplay (Lisp_Object window, int x, int y, | |||
| 1636 | vertically below other windows. */ | 1628 | vertically below other windows. */ |
| 1637 | in_horz_combination_p | 1629 | in_horz_combination_p |
| 1638 | = (!NILP (XWINDOW (window)->parent) | 1630 | = (!NILP (XWINDOW (window)->parent) |
| 1639 | && !NILP (XWINDOW (XWINDOW (window)->parent)->hchild)); | 1631 | && WINDOW_HORIZONTAL_COMBINATION_P (XWINDOW (XWINDOW (window)->parent))); |
| 1640 | 1632 | ||
| 1641 | /* For WINDOW and all windows on the same level. */ | 1633 | /* For WINDOW and all windows on the same level. */ |
| 1642 | do | 1634 | do |
| @@ -1645,12 +1637,8 @@ allocate_matrices_for_frame_redisplay (Lisp_Object window, int x, int y, | |||
| 1645 | 1637 | ||
| 1646 | /* Get the dimension of the window sub-matrix for W, depending | 1638 | /* Get the dimension of the window sub-matrix for W, depending |
| 1647 | on whether this is a combination or a leaf window. */ | 1639 | on whether this is a combination or a leaf window. */ |
| 1648 | if (!NILP (w->hchild)) | 1640 | if (WINDOWP (w->contents)) |
| 1649 | dim = allocate_matrices_for_frame_redisplay (w->hchild, x, y, | 1641 | dim = allocate_matrices_for_frame_redisplay (w->contents, x, y, |
| 1650 | dim_only_p, | ||
| 1651 | window_change_flags); | ||
| 1652 | else if (!NILP (w->vchild)) | ||
| 1653 | dim = allocate_matrices_for_frame_redisplay (w->vchild, x, y, | ||
| 1654 | dim_only_p, | 1642 | dim_only_p, |
| 1655 | window_change_flags); | 1643 | window_change_flags); |
| 1656 | else | 1644 | else |
| @@ -1792,10 +1780,8 @@ allocate_matrices_for_window_redisplay (struct window *w) | |||
| 1792 | { | 1780 | { |
| 1793 | while (w) | 1781 | while (w) |
| 1794 | { | 1782 | { |
| 1795 | if (!NILP (w->vchild)) | 1783 | if (WINDOWP (w->contents)) |
| 1796 | allocate_matrices_for_window_redisplay (XWINDOW (w->vchild)); | 1784 | allocate_matrices_for_window_redisplay (XWINDOW (w->contents)); |
| 1797 | else if (!NILP (w->hchild)) | ||
| 1798 | allocate_matrices_for_window_redisplay (XWINDOW (w->hchild)); | ||
| 1799 | else | 1785 | else |
| 1800 | { | 1786 | { |
| 1801 | /* W is a leaf window. */ | 1787 | /* W is a leaf window. */ |
| @@ -1867,18 +1853,12 @@ showing_window_margins_p (struct window *w) | |||
| 1867 | { | 1853 | { |
| 1868 | while (w) | 1854 | while (w) |
| 1869 | { | 1855 | { |
| 1870 | if (!NILP (w->hchild)) | 1856 | if (WINDOWP (w->contents)) |
| 1871 | { | 1857 | { |
| 1872 | if (showing_window_margins_p (XWINDOW (w->hchild))) | 1858 | if (showing_window_margins_p (XWINDOW (w->contents))) |
| 1873 | return 1; | 1859 | return 1; |
| 1874 | } | 1860 | } |
| 1875 | else if (!NILP (w->vchild)) | 1861 | else if (!NILP (w->left_margin_cols) || !NILP (w->right_margin_cols)) |
| 1876 | { | ||
| 1877 | if (showing_window_margins_p (XWINDOW (w->vchild))) | ||
| 1878 | return 1; | ||
| 1879 | } | ||
| 1880 | else if (!NILP (w->left_margin_cols) | ||
| 1881 | || !NILP (w->right_margin_cols)) | ||
| 1882 | return 1; | 1862 | return 1; |
| 1883 | 1863 | ||
| 1884 | w = NILP (w->next) ? 0 : XWINDOW (w->next); | 1864 | w = NILP (w->next) ? 0 : XWINDOW (w->next); |
| @@ -1899,10 +1879,8 @@ fake_current_matrices (Lisp_Object window) | |||
| 1899 | { | 1879 | { |
| 1900 | w = XWINDOW (window); | 1880 | w = XWINDOW (window); |
| 1901 | 1881 | ||
| 1902 | if (!NILP (w->hchild)) | 1882 | if (WINDOWP (w->contents)) |
| 1903 | fake_current_matrices (w->hchild); | 1883 | fake_current_matrices (w->contents); |
| 1904 | else if (!NILP (w->vchild)) | ||
| 1905 | fake_current_matrices (w->vchild); | ||
| 1906 | else | 1884 | else |
| 1907 | { | 1885 | { |
| 1908 | int i; | 1886 | int i; |
| @@ -2242,10 +2220,8 @@ free_window_matrices (struct window *w) | |||
| 2242 | { | 2220 | { |
| 2243 | while (w) | 2221 | while (w) |
| 2244 | { | 2222 | { |
| 2245 | if (!NILP (w->hchild)) | 2223 | if (WINDOWP (w->contents)) |
| 2246 | free_window_matrices (XWINDOW (w->hchild)); | 2224 | free_window_matrices (XWINDOW (w->contents)); |
| 2247 | else if (!NILP (w->vchild)) | ||
| 2248 | free_window_matrices (XWINDOW (w->vchild)); | ||
| 2249 | else | 2225 | else |
| 2250 | { | 2226 | { |
| 2251 | /* This is a leaf window. Free its memory and reset fields | 2227 | /* This is a leaf window. Free its memory and reset fields |
| @@ -2378,10 +2354,8 @@ build_frame_matrix_from_window_tree (struct glyph_matrix *matrix, struct window | |||
| 2378 | { | 2354 | { |
| 2379 | while (w) | 2355 | while (w) |
| 2380 | { | 2356 | { |
| 2381 | if (!NILP (w->hchild)) | 2357 | if (WINDOWP (w->contents)) |
| 2382 | build_frame_matrix_from_window_tree (matrix, XWINDOW (w->hchild)); | 2358 | build_frame_matrix_from_window_tree (matrix, XWINDOW (w->contents)); |
| 2383 | else if (!NILP (w->vchild)) | ||
| 2384 | build_frame_matrix_from_window_tree (matrix, XWINDOW (w->vchild)); | ||
| 2385 | else | 2359 | else |
| 2386 | build_frame_matrix_from_leaf_window (matrix, w); | 2360 | build_frame_matrix_from_leaf_window (matrix, w); |
| 2387 | 2361 | ||
| @@ -2645,10 +2619,8 @@ mirror_make_current (struct window *w, int frame_row) | |||
| 2645 | { | 2619 | { |
| 2646 | while (w) | 2620 | while (w) |
| 2647 | { | 2621 | { |
| 2648 | if (!NILP (w->hchild)) | 2622 | if (WINDOWP (w->contents)) |
| 2649 | mirror_make_current (XWINDOW (w->hchild), frame_row); | 2623 | mirror_make_current (XWINDOW (w->contents), frame_row); |
| 2650 | else if (!NILP (w->vchild)) | ||
| 2651 | mirror_make_current (XWINDOW (w->vchild), frame_row); | ||
| 2652 | else | 2624 | else |
| 2653 | { | 2625 | { |
| 2654 | /* Row relative to window W. Don't use FRAME_TO_WINDOW_VPOS | 2626 | /* Row relative to window W. Don't use FRAME_TO_WINDOW_VPOS |
| @@ -2744,8 +2716,8 @@ sync_window_with_frame_matrix_rows (struct window *w) | |||
| 2744 | struct glyph_row *window_row, *window_row_end, *frame_row; | 2716 | struct glyph_row *window_row, *window_row_end, *frame_row; |
| 2745 | int left, right, x, width; | 2717 | int left, right, x, width; |
| 2746 | 2718 | ||
| 2747 | /* Preconditions: W must be a leaf window on a tty frame. */ | 2719 | /* Preconditions: W must be a live window on a tty frame. */ |
| 2748 | eassert (NILP (w->hchild) && NILP (w->vchild)); | 2720 | eassert (BUFFERP (w->contents)); |
| 2749 | eassert (!FRAME_WINDOW_P (f)); | 2721 | eassert (!FRAME_WINDOW_P (f)); |
| 2750 | 2722 | ||
| 2751 | left = margin_glyphs_to_reserve (w, 1, w->left_margin_cols); | 2723 | left = margin_glyphs_to_reserve (w, 1, w->left_margin_cols); |
| @@ -2781,10 +2753,8 @@ frame_row_to_window (struct window *w, int row) | |||
| 2781 | 2753 | ||
| 2782 | while (w && !found) | 2754 | while (w && !found) |
| 2783 | { | 2755 | { |
| 2784 | if (!NILP (w->hchild)) | 2756 | if (WINDOWP (w->contents)) |
| 2785 | found = frame_row_to_window (XWINDOW (w->hchild), row); | 2757 | found = frame_row_to_window (XWINDOW (w->contents), row); |
| 2786 | else if (!NILP (w->vchild)) | ||
| 2787 | found = frame_row_to_window (XWINDOW (w->vchild), row); | ||
| 2788 | else if (row >= WINDOW_TOP_EDGE_LINE (w) | 2758 | else if (row >= WINDOW_TOP_EDGE_LINE (w) |
| 2789 | && row < WINDOW_BOTTOM_EDGE_LINE (w)) | 2759 | && row < WINDOW_BOTTOM_EDGE_LINE (w)) |
| 2790 | found = w; | 2760 | found = w; |
| @@ -2812,11 +2782,8 @@ mirror_line_dance (struct window *w, int unchanged_at_top, int nlines, int *copy | |||
| 2812 | { | 2782 | { |
| 2813 | while (w) | 2783 | while (w) |
| 2814 | { | 2784 | { |
| 2815 | if (!NILP (w->hchild)) | 2785 | if (WINDOWP (w->contents)) |
| 2816 | mirror_line_dance (XWINDOW (w->hchild), unchanged_at_top, | 2786 | mirror_line_dance (XWINDOW (w->contents), unchanged_at_top, |
| 2817 | nlines, copy_from, retained_p); | ||
| 2818 | else if (!NILP (w->vchild)) | ||
| 2819 | mirror_line_dance (XWINDOW (w->vchild), unchanged_at_top, | ||
| 2820 | nlines, copy_from, retained_p); | 2787 | nlines, copy_from, retained_p); |
| 2821 | else | 2788 | else |
| 2822 | { | 2789 | { |
| @@ -2925,10 +2892,8 @@ check_window_matrix_pointers (struct window *w) | |||
| 2925 | { | 2892 | { |
| 2926 | while (w) | 2893 | while (w) |
| 2927 | { | 2894 | { |
| 2928 | if (!NILP (w->hchild)) | 2895 | if (WINDOWP (w->contents)) |
| 2929 | check_window_matrix_pointers (XWINDOW (w->hchild)); | 2896 | check_window_matrix_pointers (XWINDOW (w->contents)); |
| 2930 | else if (!NILP (w->vchild)) | ||
| 2931 | check_window_matrix_pointers (XWINDOW (w->vchild)); | ||
| 2932 | else | 2897 | else |
| 2933 | { | 2898 | { |
| 2934 | struct frame *f = XFRAME (w->frame); | 2899 | struct frame *f = XFRAME (w->frame); |
| @@ -3194,10 +3159,8 @@ update_window_tree (struct window *w, bool force_p) | |||
| 3194 | 3159 | ||
| 3195 | while (w && !paused_p) | 3160 | while (w && !paused_p) |
| 3196 | { | 3161 | { |
| 3197 | if (!NILP (w->hchild)) | 3162 | if (WINDOWP (w->contents)) |
| 3198 | paused_p |= update_window_tree (XWINDOW (w->hchild), force_p); | 3163 | paused_p |= update_window_tree (XWINDOW (w->contents), force_p); |
| 3199 | else if (!NILP (w->vchild)) | ||
| 3200 | paused_p |= update_window_tree (XWINDOW (w->vchild), force_p); | ||
| 3201 | else if (w->must_be_updated_p) | 3164 | else if (w->must_be_updated_p) |
| 3202 | paused_p |= update_window (w, force_p); | 3165 | paused_p |= update_window (w, force_p); |
| 3203 | 3166 | ||
| @@ -3975,10 +3938,8 @@ set_window_update_flags (struct window *w, bool on_p) | |||
| 3975 | { | 3938 | { |
| 3976 | while (w) | 3939 | while (w) |
| 3977 | { | 3940 | { |
| 3978 | if (!NILP (w->hchild)) | 3941 | if (WINDOWP (w->contents)) |
| 3979 | set_window_update_flags (XWINDOW (w->hchild), on_p); | 3942 | set_window_update_flags (XWINDOW (w->contents), on_p); |
| 3980 | else if (!NILP (w->vchild)) | ||
| 3981 | set_window_update_flags (XWINDOW (w->vchild), on_p); | ||
| 3982 | else | 3943 | else |
| 3983 | w->must_be_updated_p = on_p; | 3944 | w->must_be_updated_p = on_p; |
| 3984 | 3945 | ||
| @@ -5125,7 +5086,7 @@ buffer_posn_from_coords (struct window *w, int *x, int *y, struct display_pos *p | |||
| 5125 | 5086 | ||
| 5126 | /* We used to set current_buffer directly here, but that does the | 5087 | /* We used to set current_buffer directly here, but that does the |
| 5127 | wrong thing with `face-remapping-alist' (bug#2044). */ | 5088 | wrong thing with `face-remapping-alist' (bug#2044). */ |
| 5128 | Fset_buffer (w->buffer); | 5089 | Fset_buffer (w->contents); |
| 5129 | itdata = bidi_shelve_cache (); | 5090 | itdata = bidi_shelve_cache (); |
| 5130 | SET_TEXT_POS_FROM_MARKER (startp, w->start); | 5091 | SET_TEXT_POS_FROM_MARKER (startp, w->start); |
| 5131 | CHARPOS (startp) = min (ZV, max (BEGV, CHARPOS (startp))); | 5092 | CHARPOS (startp) = min (ZV, max (BEGV, CHARPOS (startp))); |
| @@ -5171,7 +5132,7 @@ buffer_posn_from_coords (struct window *w, int *x, int *y, struct display_pos *p | |||
| 5171 | *dx = x0 + it.first_visible_x - it.current_x; | 5132 | *dx = x0 + it.first_visible_x - it.current_x; |
| 5172 | *dy = *y - it.current_y; | 5133 | *dy = *y - it.current_y; |
| 5173 | 5134 | ||
| 5174 | string = w->buffer; | 5135 | string = w->contents; |
| 5175 | if (STRINGP (it.string)) | 5136 | if (STRINGP (it.string)) |
| 5176 | string = it.string; | 5137 | string = it.string; |
| 5177 | *pos = it.current; | 5138 | *pos = it.current; |
| @@ -5189,7 +5150,7 @@ buffer_posn_from_coords (struct window *w, int *x, int *y, struct display_pos *p | |||
| 5189 | if (STRINGP (it.string)) | 5150 | if (STRINGP (it.string)) |
| 5190 | BYTEPOS (pos->pos) = string_char_to_byte (string, CHARPOS (pos->pos)); | 5151 | BYTEPOS (pos->pos) = string_char_to_byte (string, CHARPOS (pos->pos)); |
| 5191 | else | 5152 | else |
| 5192 | BYTEPOS (pos->pos) = buf_charpos_to_bytepos (XBUFFER (w->buffer), | 5153 | BYTEPOS (pos->pos) = buf_charpos_to_bytepos (XBUFFER (w->contents), |
| 5193 | CHARPOS (pos->pos)); | 5154 | CHARPOS (pos->pos)); |
| 5194 | } | 5155 | } |
| 5195 | 5156 | ||
diff --git a/src/editfns.c b/src/editfns.c index 0ab7c143c99..d0cca6f3d7b 100644 --- a/src/editfns.c +++ b/src/editfns.c | |||
| @@ -373,7 +373,7 @@ get_pos_property (Lisp_Object position, register Lisp_Object prop, Lisp_Object o | |||
| 373 | if (NILP (object)) | 373 | if (NILP (object)) |
| 374 | XSETBUFFER (object, current_buffer); | 374 | XSETBUFFER (object, current_buffer); |
| 375 | else if (WINDOWP (object)) | 375 | else if (WINDOWP (object)) |
| 376 | object = XWINDOW (object)->buffer; | 376 | object = XWINDOW (object)->contents; |
| 377 | 377 | ||
| 378 | if (!BUFFERP (object)) | 378 | if (!BUFFERP (object)) |
| 379 | /* pos-property only makes sense in buffers right now, since strings | 379 | /* pos-property only makes sense in buffers right now, since strings |
| @@ -846,7 +846,7 @@ save_excursion_save (void) | |||
| 846 | ? Fcopy_marker (BVAR (current_buffer, mark), Qnil) | 846 | ? Fcopy_marker (BVAR (current_buffer, mark), Qnil) |
| 847 | : Qnil), | 847 | : Qnil), |
| 848 | /* Selected window if current buffer is shown in it, nil otherwise. */ | 848 | /* Selected window if current buffer is shown in it, nil otherwise. */ |
| 849 | (EQ (XWINDOW (selected_window)->buffer, Fcurrent_buffer ()) | 849 | (EQ (XWINDOW (selected_window)->contents, Fcurrent_buffer ()) |
| 850 | ? selected_window : Qnil), | 850 | ? selected_window : Qnil), |
| 851 | BVAR (current_buffer, mark_active)); | 851 | BVAR (current_buffer, mark_active)); |
| 852 | } | 852 | } |
| @@ -915,7 +915,7 @@ save_excursion_restore (Lisp_Object info) | |||
| 915 | tem = XSAVE_OBJECT (info, 2); | 915 | tem = XSAVE_OBJECT (info, 2); |
| 916 | if (WINDOWP (tem) | 916 | if (WINDOWP (tem) |
| 917 | && !EQ (tem, selected_window) | 917 | && !EQ (tem, selected_window) |
| 918 | && (tem1 = XWINDOW (tem)->buffer, | 918 | && (tem1 = XWINDOW (tem)->contents, |
| 919 | (/* Window is live... */ | 919 | (/* Window is live... */ |
| 920 | BUFFERP (tem1) | 920 | BUFFERP (tem1) |
| 921 | /* ...and it shows the current buffer. */ | 921 | /* ...and it shows the current buffer. */ |
diff --git a/src/fileio.c b/src/fileio.c index 1919768d98a..d7c476172cb 100644 --- a/src/fileio.c +++ b/src/fileio.c | |||
| @@ -3958,7 +3958,7 @@ by calling `format-decode', which see. */) | |||
| 3958 | 3958 | ||
| 3959 | /* If display currently starts at beginning of line, | 3959 | /* If display currently starts at beginning of line, |
| 3960 | keep it that way. */ | 3960 | keep it that way. */ |
| 3961 | if (XBUFFER (XWINDOW (selected_window)->buffer) == current_buffer) | 3961 | if (XBUFFER (XWINDOW (selected_window)->contents) == current_buffer) |
| 3962 | XWINDOW (selected_window)->start_at_line_beg = !NILP (Fbolp ()); | 3962 | XWINDOW (selected_window)->start_at_line_beg = !NILP (Fbolp ()); |
| 3963 | 3963 | ||
| 3964 | replace_handled = 1; | 3964 | replace_handled = 1; |
| @@ -4108,7 +4108,7 @@ by calling `format-decode', which see. */) | |||
| 4108 | 4108 | ||
| 4109 | /* If display currently starts at beginning of line, | 4109 | /* If display currently starts at beginning of line, |
| 4110 | keep it that way. */ | 4110 | keep it that way. */ |
| 4111 | if (XBUFFER (XWINDOW (selected_window)->buffer) == current_buffer) | 4111 | if (XBUFFER (XWINDOW (selected_window)->contents) == current_buffer) |
| 4112 | XWINDOW (selected_window)->start_at_line_beg = !NILP (Fbolp ()); | 4112 | XWINDOW (selected_window)->start_at_line_beg = !NILP (Fbolp ()); |
| 4113 | 4113 | ||
| 4114 | /* Replace the chars that we need to replace, | 4114 | /* Replace the chars that we need to replace, |
diff --git a/src/font.c b/src/font.c index 357f8483b14..d66620bffbc 100644 --- a/src/font.c +++ b/src/font.c | |||
| @@ -4761,7 +4761,7 @@ character at index specified by POSITION. */) | |||
| 4761 | 4761 | ||
| 4762 | if (NILP (string)) | 4762 | if (NILP (string)) |
| 4763 | { | 4763 | { |
| 4764 | if (XBUFFER (w->buffer) != current_buffer) | 4764 | if (XBUFFER (w->contents) != current_buffer) |
| 4765 | error ("Specified window is not displaying the current buffer."); | 4765 | error ("Specified window is not displaying the current buffer."); |
| 4766 | CHECK_NUMBER_COERCE_MARKER (position); | 4766 | CHECK_NUMBER_COERCE_MARKER (position); |
| 4767 | if (! (BEGV <= XINT (position) && XINT (position) < ZV)) | 4767 | if (! (BEGV <= XINT (position) && XINT (position) < ZV)) |
diff --git a/src/frame.c b/src/frame.c index cea39144cef..970e40b5175 100644 --- a/src/frame.c +++ b/src/frame.c | |||
| @@ -159,15 +159,15 @@ set_menu_bar_lines_1 (Lisp_Object window, int n) | |||
| 159 | w->total_lines -= n; | 159 | w->total_lines -= n; |
| 160 | 160 | ||
| 161 | /* Handle just the top child in a vertical split. */ | 161 | /* Handle just the top child in a vertical split. */ |
| 162 | if (!NILP (w->vchild)) | 162 | if (WINDOW_VERTICAL_COMBINATION_P (w)) |
| 163 | set_menu_bar_lines_1 (w->vchild, n); | 163 | set_menu_bar_lines_1 (w->contents, n); |
| 164 | 164 | else if (WINDOW_HORIZONTAL_COMBINATION_P (w)) | |
| 165 | /* Adjust all children in a horizontal split. */ | 165 | /* Adjust all children in a horizontal split. */ |
| 166 | for (window = w->hchild; !NILP (window); window = w->next) | 166 | for (window = w->contents; !NILP (window); window = w->next) |
| 167 | { | 167 | { |
| 168 | w = XWINDOW (window); | 168 | w = XWINDOW (window); |
| 169 | set_menu_bar_lines_1 (window, n); | 169 | set_menu_bar_lines_1 (window, n); |
| 170 | } | 170 | } |
| 171 | } | 171 | } |
| 172 | 172 | ||
| 173 | void | 173 | void |
| @@ -421,7 +421,7 @@ make_frame_without_minibuffer (register Lisp_Object mini_window, KBOARD *kb, Lis | |||
| 421 | 421 | ||
| 422 | /* Make the chosen minibuffer window display the proper minibuffer, | 422 | /* Make the chosen minibuffer window display the proper minibuffer, |
| 423 | unless it is already showing a minibuffer. */ | 423 | unless it is already showing a minibuffer. */ |
| 424 | if (NILP (Fmemq (XWINDOW (mini_window)->buffer, Vminibuffer_list))) | 424 | if (NILP (Fmemq (XWINDOW (mini_window)->contents, Vminibuffer_list))) |
| 425 | /* Use set_window_buffer instead of Fset_window_buffer (see | 425 | /* Use set_window_buffer instead of Fset_window_buffer (see |
| 426 | discussion of bug#11984, bug#12025, bug#12026). */ | 426 | discussion of bug#11984, bug#12025, bug#12026). */ |
| 427 | set_window_buffer (mini_window, | 427 | set_window_buffer (mini_window, |
| @@ -1189,7 +1189,7 @@ delete_frame (Lisp_Object frame, Lisp_Object force) | |||
| 1189 | /* Use set_window_buffer instead of Fset_window_buffer (see | 1189 | /* Use set_window_buffer instead of Fset_window_buffer (see |
| 1190 | discussion of bug#11984, bug#12025, bug#12026). */ | 1190 | discussion of bug#11984, bug#12025, bug#12026). */ |
| 1191 | set_window_buffer (sf->minibuffer_window, | 1191 | set_window_buffer (sf->minibuffer_window, |
| 1192 | XWINDOW (minibuf_window)->buffer, 0, 0); | 1192 | XWINDOW (minibuf_window)->contents, 0, 0); |
| 1193 | minibuf_window = sf->minibuffer_window; | 1193 | minibuf_window = sf->minibuffer_window; |
| 1194 | 1194 | ||
| 1195 | /* If the dying minibuffer window was selected, | 1195 | /* If the dying minibuffer window was selected, |
| @@ -1593,17 +1593,13 @@ make_frame_visible_1 (Lisp_Object window) | |||
| 1593 | { | 1593 | { |
| 1594 | struct window *w; | 1594 | struct window *w; |
| 1595 | 1595 | ||
| 1596 | for (;!NILP (window); window = w->next) | 1596 | for (; !NILP (window); window = w->next) |
| 1597 | { | 1597 | { |
| 1598 | w = XWINDOW (window); | 1598 | w = XWINDOW (window); |
| 1599 | 1599 | if (WINDOWP (w->contents)) | |
| 1600 | if (!NILP (w->buffer)) | 1600 | make_frame_visible_1 (w->contents); |
| 1601 | bset_display_time (XBUFFER (w->buffer), Fcurrent_time ()); | 1601 | else |
| 1602 | 1602 | bset_display_time (XBUFFER (w->contents), Fcurrent_time ()); | |
| 1603 | if (!NILP (w->vchild)) | ||
| 1604 | make_frame_visible_1 (w->vchild); | ||
| 1605 | if (!NILP (w->hchild)) | ||
| 1606 | make_frame_visible_1 (w->hchild); | ||
| 1607 | } | 1603 | } |
| 1608 | } | 1604 | } |
| 1609 | 1605 | ||
| @@ -1634,7 +1630,7 @@ displayed in the terminal. */) | |||
| 1634 | /* Use set_window_buffer instead of Fset_window_buffer (see | 1630 | /* Use set_window_buffer instead of Fset_window_buffer (see |
| 1635 | discussion of bug#11984, bug#12025, bug#12026). */ | 1631 | discussion of bug#11984, bug#12025, bug#12026). */ |
| 1636 | set_window_buffer (sf->minibuffer_window, | 1632 | set_window_buffer (sf->minibuffer_window, |
| 1637 | XWINDOW (minibuf_window)->buffer, 0, 0); | 1633 | XWINDOW (minibuf_window)->contents, 0, 0); |
| 1638 | minibuf_window = sf->minibuffer_window; | 1634 | minibuf_window = sf->minibuffer_window; |
| 1639 | } | 1635 | } |
| 1640 | 1636 | ||
| @@ -1665,7 +1661,7 @@ If omitted, FRAME defaults to the currently selected frame. */) | |||
| 1665 | /* Use set_window_buffer instead of Fset_window_buffer (see | 1661 | /* Use set_window_buffer instead of Fset_window_buffer (see |
| 1666 | discussion of bug#11984, bug#12025, bug#12026). */ | 1662 | discussion of bug#11984, bug#12025, bug#12026). */ |
| 1667 | set_window_buffer (sf->minibuffer_window, | 1663 | set_window_buffer (sf->minibuffer_window, |
| 1668 | XWINDOW (minibuf_window)->buffer, 0, 0); | 1664 | XWINDOW (minibuf_window)->contents, 0, 0); |
| 1669 | minibuf_window = sf->minibuffer_window; | 1665 | minibuf_window = sf->minibuffer_window; |
| 1670 | } | 1666 | } |
| 1671 | 1667 | ||
diff --git a/src/fringe.c b/src/fringe.c index fa6f889ba69..f728cd6d5ff 100644 --- a/src/fringe.c +++ b/src/fringe.c | |||
| @@ -699,7 +699,7 @@ get_logical_cursor_bitmap (struct window *w, Lisp_Object cursor) | |||
| 699 | { | 699 | { |
| 700 | Lisp_Object cmap, bm = Qnil; | 700 | Lisp_Object cmap, bm = Qnil; |
| 701 | 701 | ||
| 702 | if ((cmap = BVAR (XBUFFER (w->buffer), fringe_cursor_alist)), !NILP (cmap)) | 702 | if ((cmap = BVAR (XBUFFER (w->contents), fringe_cursor_alist)), !NILP (cmap)) |
| 703 | { | 703 | { |
| 704 | bm = Fassq (cursor, cmap); | 704 | bm = Fassq (cursor, cmap); |
| 705 | if (CONSP (bm)) | 705 | if (CONSP (bm)) |
| @@ -736,7 +736,7 @@ get_logical_fringe_bitmap (struct window *w, Lisp_Object bitmap, int right_p, in | |||
| 736 | If partial, lookup partial bitmap in default value if not found here. | 736 | If partial, lookup partial bitmap in default value if not found here. |
| 737 | If not partial, or no partial spec is present, use non-partial bitmap. */ | 737 | If not partial, or no partial spec is present, use non-partial bitmap. */ |
| 738 | 738 | ||
| 739 | if ((cmap = BVAR (XBUFFER (w->buffer), fringe_indicator_alist)), !NILP (cmap)) | 739 | if ((cmap = BVAR (XBUFFER (w->contents), fringe_indicator_alist)), !NILP (cmap)) |
| 740 | { | 740 | { |
| 741 | bm1 = Fassq (bitmap, cmap); | 741 | bm1 = Fassq (bitmap, cmap); |
| 742 | if (CONSP (bm1)) | 742 | if (CONSP (bm1)) |
| @@ -963,7 +963,7 @@ update_window_fringes (struct window *w, int keep_current_p) | |||
| 963 | return 0; | 963 | return 0; |
| 964 | 964 | ||
| 965 | if (!MINI_WINDOW_P (w) | 965 | if (!MINI_WINDOW_P (w) |
| 966 | && (ind = BVAR (XBUFFER (w->buffer), indicate_buffer_boundaries), !NILP (ind))) | 966 | && (ind = BVAR (XBUFFER (w->contents), indicate_buffer_boundaries), !NILP (ind))) |
| 967 | { | 967 | { |
| 968 | if (EQ (ind, Qleft) || EQ (ind, Qright)) | 968 | if (EQ (ind, Qleft) || EQ (ind, Qright)) |
| 969 | boundary_top = boundary_bot = arrow_top = arrow_bot = ind; | 969 | boundary_top = boundary_bot = arrow_top = arrow_bot = ind; |
| @@ -1004,7 +1004,7 @@ update_window_fringes (struct window *w, int keep_current_p) | |||
| 1004 | { | 1004 | { |
| 1005 | if (top_ind_rn < 0 && row->visible_height > 0) | 1005 | if (top_ind_rn < 0 && row->visible_height > 0) |
| 1006 | { | 1006 | { |
| 1007 | if (MATRIX_ROW_START_CHARPOS (row) <= BUF_BEGV (XBUFFER (w->buffer)) | 1007 | if (MATRIX_ROW_START_CHARPOS (row) <= BUF_BEGV (XBUFFER (w->contents)) |
| 1008 | && !MATRIX_ROW_PARTIALLY_VISIBLE_AT_TOP_P (w, row)) | 1008 | && !MATRIX_ROW_PARTIALLY_VISIBLE_AT_TOP_P (w, row)) |
| 1009 | row->indicate_bob_p = !NILP (boundary_top); | 1009 | row->indicate_bob_p = !NILP (boundary_top); |
| 1010 | else | 1010 | else |
| @@ -1014,7 +1014,7 @@ update_window_fringes (struct window *w, int keep_current_p) | |||
| 1014 | 1014 | ||
| 1015 | if (bot_ind_rn < 0) | 1015 | if (bot_ind_rn < 0) |
| 1016 | { | 1016 | { |
| 1017 | if (MATRIX_ROW_END_CHARPOS (row) >= BUF_ZV (XBUFFER (w->buffer)) | 1017 | if (MATRIX_ROW_END_CHARPOS (row) >= BUF_ZV (XBUFFER (w->contents)) |
| 1018 | && !MATRIX_ROW_PARTIALLY_VISIBLE_AT_BOTTOM_P (w, row)) | 1018 | && !MATRIX_ROW_PARTIALLY_VISIBLE_AT_BOTTOM_P (w, row)) |
| 1019 | row->indicate_eob_p = !NILP (boundary_bot), bot_ind_rn = rn; | 1019 | row->indicate_eob_p = !NILP (boundary_bot), bot_ind_rn = rn; |
| 1020 | else if (y + row->height >= yb) | 1020 | else if (y + row->height >= yb) |
| @@ -1024,7 +1024,7 @@ update_window_fringes (struct window *w, int keep_current_p) | |||
| 1024 | } | 1024 | } |
| 1025 | } | 1025 | } |
| 1026 | 1026 | ||
| 1027 | empty_pos = BVAR (XBUFFER (w->buffer), indicate_empty_lines); | 1027 | empty_pos = BVAR (XBUFFER (w->contents), indicate_empty_lines); |
| 1028 | if (!NILP (empty_pos) && !EQ (empty_pos, Qright)) | 1028 | if (!NILP (empty_pos) && !EQ (empty_pos, Qright)) |
| 1029 | empty_pos = WINDOW_LEFT_FRINGE_WIDTH (w) == 0 ? Qright : Qleft; | 1029 | empty_pos = WINDOW_LEFT_FRINGE_WIDTH (w) == 0 ? Qright : Qleft; |
| 1030 | 1030 | ||
diff --git a/src/indent.c b/src/indent.c index b662b3bbaa0..1493e1d5ee5 100644 --- a/src/indent.c +++ b/src/indent.c | |||
| @@ -254,7 +254,7 @@ skip_invisible (ptrdiff_t pos, ptrdiff_t *next_boundary_p, ptrdiff_t to, Lisp_Ob | |||
| 254 | the next property change */ | 254 | the next property change */ |
| 255 | prop = Fget_char_property (position, Qinvisible, | 255 | prop = Fget_char_property (position, Qinvisible, |
| 256 | (!NILP (window) | 256 | (!NILP (window) |
| 257 | && EQ (XWINDOW (window)->buffer, buffer)) | 257 | && EQ (XWINDOW (window)->contents, buffer)) |
| 258 | ? window : buffer); | 258 | ? window : buffer); |
| 259 | inv_p = TEXT_PROP_MEANS_INVISIBLE (prop); | 259 | inv_p = TEXT_PROP_MEANS_INVISIBLE (prop); |
| 260 | /* When counting columns (window == nil), don't skip over ellipsis text. */ | 260 | /* When counting columns (window == nil), don't skip over ellipsis text. */ |
| @@ -1826,7 +1826,7 @@ vmotion (register ptrdiff_t from, register ptrdiff_t from_byte, | |||
| 1826 | 1826 | ||
| 1827 | /* If the window contains this buffer, use it for getting text properties. | 1827 | /* If the window contains this buffer, use it for getting text properties. |
| 1828 | Otherwise use the current buffer as arg for doing that. */ | 1828 | Otherwise use the current buffer as arg for doing that. */ |
| 1829 | if (EQ (w->buffer, Fcurrent_buffer ())) | 1829 | if (EQ (w->contents, Fcurrent_buffer ())) |
| 1830 | text_prop_object = window; | 1830 | text_prop_object = window; |
| 1831 | else | 1831 | else |
| 1832 | text_prop_object = Fcurrent_buffer (); | 1832 | text_prop_object = Fcurrent_buffer (); |
| @@ -1979,14 +1979,14 @@ whether or not it is currently displayed in some window. */) | |||
| 1979 | 1979 | ||
| 1980 | old_buffer = Qnil; | 1980 | old_buffer = Qnil; |
| 1981 | GCPRO1 (old_buffer); | 1981 | GCPRO1 (old_buffer); |
| 1982 | if (XBUFFER (w->buffer) != current_buffer) | 1982 | if (XBUFFER (w->contents) != current_buffer) |
| 1983 | { | 1983 | { |
| 1984 | /* Set the window's buffer temporarily to the current buffer. */ | 1984 | /* Set the window's buffer temporarily to the current buffer. */ |
| 1985 | old_buffer = w->buffer; | 1985 | old_buffer = w->contents; |
| 1986 | old_charpos = marker_position (w->pointm); | 1986 | old_charpos = marker_position (w->pointm); |
| 1987 | old_bytepos = marker_byte_position (w->pointm); | 1987 | old_bytepos = marker_byte_position (w->pointm); |
| 1988 | wset_buffer (w, Fcurrent_buffer ()); | 1988 | wset_buffer (w, Fcurrent_buffer ()); |
| 1989 | set_marker_both (w->pointm, w->buffer, | 1989 | set_marker_both (w->pointm, w->contents, |
| 1990 | BUF_PT (current_buffer), BUF_PT_BYTE (current_buffer)); | 1990 | BUF_PT (current_buffer), BUF_PT_BYTE (current_buffer)); |
| 1991 | } | 1991 | } |
| 1992 | 1992 | ||
| @@ -2139,7 +2139,7 @@ whether or not it is currently displayed in some window. */) | |||
| 2139 | if (BUFFERP (old_buffer)) | 2139 | if (BUFFERP (old_buffer)) |
| 2140 | { | 2140 | { |
| 2141 | wset_buffer (w, old_buffer); | 2141 | wset_buffer (w, old_buffer); |
| 2142 | set_marker_both (w->pointm, w->buffer, | 2142 | set_marker_both (w->pointm, w->contents, |
| 2143 | old_charpos, old_bytepos); | 2143 | old_charpos, old_bytepos); |
| 2144 | } | 2144 | } |
| 2145 | 2145 | ||
diff --git a/src/insdel.c b/src/insdel.c index a60fed0c32e..246ba80f290 100644 --- a/src/insdel.c +++ b/src/insdel.c | |||
| @@ -1798,7 +1798,7 @@ prepare_to_modify_buffer (ptrdiff_t start, ptrdiff_t end, | |||
| 1798 | 1798 | ||
| 1799 | /* If we're modifying the buffer other than shown in a selected window, | 1799 | /* If we're modifying the buffer other than shown in a selected window, |
| 1800 | let redisplay consider other windows if this buffer is visible. */ | 1800 | let redisplay consider other windows if this buffer is visible. */ |
| 1801 | if (XBUFFER (XWINDOW (selected_window)->buffer) != current_buffer | 1801 | if (XBUFFER (XWINDOW (selected_window)->contents) != current_buffer |
| 1802 | && buffer_window_count (current_buffer)) | 1802 | && buffer_window_count (current_buffer)) |
| 1803 | ++windows_or_buffers_changed; | 1803 | ++windows_or_buffers_changed; |
| 1804 | 1804 | ||
diff --git a/src/keyboard.c b/src/keyboard.c index d9187cd96b4..5b2eb8c7cd2 100644 --- a/src/keyboard.c +++ b/src/keyboard.c | |||
| @@ -833,7 +833,7 @@ This function is called by the editor initialization to begin editing. */) | |||
| 833 | update_mode_lines = 1; | 833 | update_mode_lines = 1; |
| 834 | 834 | ||
| 835 | if (command_loop_level | 835 | if (command_loop_level |
| 836 | && current_buffer != XBUFFER (XWINDOW (selected_window)->buffer)) | 836 | && current_buffer != XBUFFER (XWINDOW (selected_window)->contents)) |
| 837 | buffer = Fcurrent_buffer (); | 837 | buffer = Fcurrent_buffer (); |
| 838 | else | 838 | else |
| 839 | buffer = Qnil; | 839 | buffer = Qnil; |
| @@ -1395,7 +1395,7 @@ command_loop_1 (void) | |||
| 1395 | Fkill_emacs (Qnil); | 1395 | Fkill_emacs (Qnil); |
| 1396 | 1396 | ||
| 1397 | /* Make sure the current window's buffer is selected. */ | 1397 | /* Make sure the current window's buffer is selected. */ |
| 1398 | set_buffer_internal (XBUFFER (XWINDOW (selected_window)->buffer)); | 1398 | set_buffer_internal (XBUFFER (XWINDOW (selected_window)->contents)); |
| 1399 | 1399 | ||
| 1400 | /* Display any malloc warning that just came out. Use while because | 1400 | /* Display any malloc warning that just came out. Use while because |
| 1401 | displaying one warning can cause another. */ | 1401 | displaying one warning can cause another. */ |
| @@ -1461,7 +1461,7 @@ command_loop_1 (void) | |||
| 1461 | /* A filter may have run while we were reading the input. */ | 1461 | /* A filter may have run while we were reading the input. */ |
| 1462 | if (! FRAME_LIVE_P (XFRAME (selected_frame))) | 1462 | if (! FRAME_LIVE_P (XFRAME (selected_frame))) |
| 1463 | Fkill_emacs (Qnil); | 1463 | Fkill_emacs (Qnil); |
| 1464 | set_buffer_internal (XBUFFER (XWINDOW (selected_window)->buffer)); | 1464 | set_buffer_internal (XBUFFER (XWINDOW (selected_window)->contents)); |
| 1465 | 1465 | ||
| 1466 | ++num_input_keys; | 1466 | ++num_input_keys; |
| 1467 | 1467 | ||
| @@ -1492,7 +1492,7 @@ command_loop_1 (void) | |||
| 1492 | { | 1492 | { |
| 1493 | struct buffer *b; | 1493 | struct buffer *b; |
| 1494 | XWINDOW (selected_window)->force_start = 0; | 1494 | XWINDOW (selected_window)->force_start = 0; |
| 1495 | b = XBUFFER (XWINDOW (selected_window)->buffer); | 1495 | b = XBUFFER (XWINDOW (selected_window)->contents); |
| 1496 | BUF_BEG_UNCHANGED (b) = BUF_END_UNCHANGED (b) = 0; | 1496 | BUF_BEG_UNCHANGED (b) = BUF_END_UNCHANGED (b) = 0; |
| 1497 | } | 1497 | } |
| 1498 | 1498 | ||
| @@ -5142,7 +5142,7 @@ make_lispy_position (struct frame *f, Lisp_Object x, Lisp_Object y, | |||
| 5142 | if (STRINGP (string)) | 5142 | if (STRINGP (string)) |
| 5143 | string_info = Fcons (string, make_number (charpos)); | 5143 | string_info = Fcons (string, make_number (charpos)); |
| 5144 | textpos = (w == XWINDOW (selected_window) | 5144 | textpos = (w == XWINDOW (selected_window) |
| 5145 | && current_buffer == XBUFFER (w->buffer)) | 5145 | && current_buffer == XBUFFER (w->contents)) |
| 5146 | ? PT : marker_position (w->pointm); | 5146 | ? PT : marker_position (w->pointm); |
| 5147 | 5147 | ||
| 5148 | xret = wx; | 5148 | xret = wx; |
| @@ -9145,9 +9145,9 @@ read_key_sequence (Lisp_Object *keybuf, int bufsize, Lisp_Object prompt, | |||
| 9145 | { | 9145 | { |
| 9146 | if (! FRAME_LIVE_P (XFRAME (selected_frame))) | 9146 | if (! FRAME_LIVE_P (XFRAME (selected_frame))) |
| 9147 | Fkill_emacs (Qnil); | 9147 | Fkill_emacs (Qnil); |
| 9148 | if (XBUFFER (XWINDOW (selected_window)->buffer) | 9148 | if (XBUFFER (XWINDOW (selected_window)->contents) |
| 9149 | != current_buffer) | 9149 | != current_buffer) |
| 9150 | Fset_buffer (XWINDOW (selected_window)->buffer); | 9150 | Fset_buffer (XWINDOW (selected_window)->contents); |
| 9151 | } | 9151 | } |
| 9152 | 9152 | ||
| 9153 | goto replay_sequence; | 9153 | goto replay_sequence; |
| @@ -9195,9 +9195,9 @@ read_key_sequence (Lisp_Object *keybuf, int bufsize, Lisp_Object prompt, | |||
| 9195 | special-event-map, ...) might have switched the current buffer | 9195 | special-event-map, ...) might have switched the current buffer |
| 9196 | or the selected window from under us in the mean time. */ | 9196 | or the selected window from under us in the mean time. */ |
| 9197 | if (fix_current_buffer | 9197 | if (fix_current_buffer |
| 9198 | && (XBUFFER (XWINDOW (selected_window)->buffer) | 9198 | && (XBUFFER (XWINDOW (selected_window)->contents) |
| 9199 | != current_buffer)) | 9199 | != current_buffer)) |
| 9200 | Fset_buffer (XWINDOW (selected_window)->buffer); | 9200 | Fset_buffer (XWINDOW (selected_window)->contents); |
| 9201 | current_binding = active_maps (first_event); | 9201 | current_binding = active_maps (first_event); |
| 9202 | } | 9202 | } |
| 9203 | 9203 | ||
| @@ -9246,8 +9246,8 @@ read_key_sequence (Lisp_Object *keybuf, int bufsize, Lisp_Object prompt, | |||
| 9246 | not the current buffer. If we're at the | 9246 | not the current buffer. If we're at the |
| 9247 | beginning of a key sequence, switch buffers. */ | 9247 | beginning of a key sequence, switch buffers. */ |
| 9248 | if (WINDOWP (window) | 9248 | if (WINDOWP (window) |
| 9249 | && BUFFERP (XWINDOW (window)->buffer) | 9249 | && BUFFERP (XWINDOW (window)->contents) |
| 9250 | && XBUFFER (XWINDOW (window)->buffer) != current_buffer) | 9250 | && XBUFFER (XWINDOW (window)->contents) != current_buffer) |
| 9251 | { | 9251 | { |
| 9252 | ASET (raw_keybuf, raw_keybuf_count, key); | 9252 | ASET (raw_keybuf, raw_keybuf_count, key); |
| 9253 | raw_keybuf_count++; | 9253 | raw_keybuf_count++; |
| @@ -9268,7 +9268,7 @@ read_key_sequence (Lisp_Object *keybuf, int bufsize, Lisp_Object prompt, | |||
| 9268 | 9268 | ||
| 9269 | if (! FRAME_LIVE_P (XFRAME (selected_frame))) | 9269 | if (! FRAME_LIVE_P (XFRAME (selected_frame))) |
| 9270 | Fkill_emacs (Qnil); | 9270 | Fkill_emacs (Qnil); |
| 9271 | set_buffer_internal (XBUFFER (XWINDOW (window)->buffer)); | 9271 | set_buffer_internal (XBUFFER (XWINDOW (window)->contents)); |
| 9272 | goto replay_sequence; | 9272 | goto replay_sequence; |
| 9273 | } | 9273 | } |
| 9274 | } | 9274 | } |
diff --git a/src/keymap.c b/src/keymap.c index 110c8f43729..e759214fa33 100644 --- a/src/keymap.c +++ b/src/keymap.c | |||
| @@ -1556,8 +1556,8 @@ like in the respective argument of `key-binding'. */) | |||
| 1556 | window = POSN_WINDOW (position); | 1556 | window = POSN_WINDOW (position); |
| 1557 | 1557 | ||
| 1558 | if (WINDOWP (window) | 1558 | if (WINDOWP (window) |
| 1559 | && BUFFERP (XWINDOW (window)->buffer) | 1559 | && BUFFERP (XWINDOW (window)->contents) |
| 1560 | && XBUFFER (XWINDOW (window)->buffer) != current_buffer) | 1560 | && XBUFFER (XWINDOW (window)->contents) != current_buffer) |
| 1561 | { | 1561 | { |
| 1562 | /* Arrange to go back to the original buffer once we're done | 1562 | /* Arrange to go back to the original buffer once we're done |
| 1563 | processing the key sequence. We don't use | 1563 | processing the key sequence. We don't use |
| @@ -1567,7 +1567,7 @@ like in the respective argument of `key-binding'. */) | |||
| 1567 | things the same. | 1567 | things the same. |
| 1568 | */ | 1568 | */ |
| 1569 | record_unwind_current_buffer (); | 1569 | record_unwind_current_buffer (); |
| 1570 | set_buffer_internal (XBUFFER (XWINDOW (window)->buffer)); | 1570 | set_buffer_internal (XBUFFER (XWINDOW (window)->contents)); |
| 1571 | } | 1571 | } |
| 1572 | } | 1572 | } |
| 1573 | 1573 | ||
diff --git a/src/minibuf.c b/src/minibuf.c index 56459353714..75e54789912 100644 --- a/src/minibuf.c +++ b/src/minibuf.c | |||
| @@ -114,7 +114,7 @@ choose_minibuf_frame (void) | |||
| 114 | /* Under X, we come here with minibuf_window being the | 114 | /* Under X, we come here with minibuf_window being the |
| 115 | minibuffer window of the unused termcap window created in | 115 | minibuffer window of the unused termcap window created in |
| 116 | init_window_once. That window doesn't have a buffer. */ | 116 | init_window_once. That window doesn't have a buffer. */ |
| 117 | buffer = XWINDOW (minibuf_window)->buffer; | 117 | buffer = XWINDOW (minibuf_window)->contents; |
| 118 | if (BUFFERP (buffer)) | 118 | if (BUFFERP (buffer)) |
| 119 | /* Use set_window_buffer instead of Fset_window_buffer (see | 119 | /* Use set_window_buffer instead of Fset_window_buffer (see |
| 120 | discussion of bug#11984, bug#12025, bug#12026). */ | 120 | discussion of bug#11984, bug#12025, bug#12026). */ |
| @@ -844,7 +844,7 @@ read_minibuf_unwind (Lisp_Object data) | |||
| 844 | window = minibuf_window; | 844 | window = minibuf_window; |
| 845 | /* To keep things predictable, in case it matters, let's be in the | 845 | /* To keep things predictable, in case it matters, let's be in the |
| 846 | minibuffer when we reset the relevant variables. */ | 846 | minibuffer when we reset the relevant variables. */ |
| 847 | Fset_buffer (XWINDOW (window)->buffer); | 847 | Fset_buffer (XWINDOW (window)->contents); |
| 848 | 848 | ||
| 849 | /* Restore prompt, etc, from outer minibuffer level. */ | 849 | /* Restore prompt, etc, from outer minibuffer level. */ |
| 850 | minibuf_prompt = Fcar (minibuf_save_list); | 850 | minibuf_prompt = Fcar (minibuf_save_list); |
diff --git a/src/msdos.c b/src/msdos.c index ee47109d5f2..695cca60728 100644 --- a/src/msdos.c +++ b/src/msdos.c | |||
| @@ -1261,7 +1261,7 @@ IT_update_begin (struct frame *f) | |||
| 1261 | /* If the mouse highlight is in the window that was deleted | 1261 | /* If the mouse highlight is in the window that was deleted |
| 1262 | (e.g., if it was popped by completion), clear highlight | 1262 | (e.g., if it was popped by completion), clear highlight |
| 1263 | unconditionally. */ | 1263 | unconditionally. */ |
| 1264 | if (NILP (w->buffer)) | 1264 | if (NILP (w->contents)) |
| 1265 | hlinfo->mouse_face_window = Qnil; | 1265 | hlinfo->mouse_face_window = Qnil; |
| 1266 | else | 1266 | else |
| 1267 | { | 1267 | { |
| @@ -1271,7 +1271,7 @@ IT_update_begin (struct frame *f) | |||
| 1271 | break; | 1271 | break; |
| 1272 | } | 1272 | } |
| 1273 | 1273 | ||
| 1274 | if (NILP (w->buffer) || i < w->desired_matrix->nrows) | 1274 | if (NILP (w->contents) || i < w->desired_matrix->nrows) |
| 1275 | clear_mouse_face (hlinfo); | 1275 | clear_mouse_face (hlinfo); |
| 1276 | } | 1276 | } |
| 1277 | } | 1277 | } |
| @@ -1321,7 +1321,7 @@ IT_frame_up_to_date (struct frame *f) | |||
| 1321 | new_cursor = frame_desired_cursor; | 1321 | new_cursor = frame_desired_cursor; |
| 1322 | else | 1322 | else |
| 1323 | { | 1323 | { |
| 1324 | struct buffer *b = XBUFFER (sw->buffer); | 1324 | struct buffer *b = XBUFFER (sw->contents); |
| 1325 | 1325 | ||
| 1326 | if (EQ (BVAR (b,cursor_type), Qt)) | 1326 | if (EQ (BVAR (b,cursor_type), Qt)) |
| 1327 | new_cursor = frame_desired_cursor; | 1327 | new_cursor = frame_desired_cursor; |
diff --git a/src/nsfns.m b/src/nsfns.m index 9c3051a8c6a..17f27910ca2 100644 --- a/src/nsfns.m +++ b/src/nsfns.m | |||
| @@ -619,7 +619,7 @@ ns_set_name_as_filename (struct frame *f) | |||
| 619 | { | 619 | { |
| 620 | NSView *view; | 620 | NSView *view; |
| 621 | Lisp_Object name, filename; | 621 | Lisp_Object name, filename; |
| 622 | Lisp_Object buf = XWINDOW (f->selected_window)->buffer; | 622 | Lisp_Object buf = XWINDOW (f->selected_window)->contents; |
| 623 | const char *title; | 623 | const char *title; |
| 624 | NSAutoreleasePool *pool; | 624 | NSAutoreleasePool *pool; |
| 625 | struct gcpro gcpro1; | 625 | struct gcpro gcpro1; |
diff --git a/src/nsmenu.m b/src/nsmenu.m index 22ff4dd0b53..b764d3f5951 100644 --- a/src/nsmenu.m +++ b/src/nsmenu.m | |||
| @@ -191,7 +191,7 @@ ns_update_menubar (struct frame *f, bool deep_p, EmacsMenu *submenu) | |||
| 191 | = alloca (previous_menu_items_used * sizeof *previous_items); | 191 | = alloca (previous_menu_items_used * sizeof *previous_items); |
| 192 | 192 | ||
| 193 | /* lisp preliminaries */ | 193 | /* lisp preliminaries */ |
| 194 | buffer = XWINDOW (FRAME_SELECTED_WINDOW (f))->buffer; | 194 | buffer = XWINDOW (FRAME_SELECTED_WINDOW (f))->contents; |
| 195 | specbind (Qinhibit_quit, Qt); | 195 | specbind (Qinhibit_quit, Qt); |
| 196 | specbind (Qdebug_on_next_call, Qnil); | 196 | specbind (Qdebug_on_next_call, Qnil); |
| 197 | record_unwind_save_match_data (); | 197 | record_unwind_save_match_data (); |
diff --git a/src/nsterm.m b/src/nsterm.m index 40e506eab27..c75167d7531 100644 --- a/src/nsterm.m +++ b/src/nsterm.m | |||
| @@ -6532,7 +6532,7 @@ not_in_argv (NSString *arg) | |||
| 6532 | { | 6532 | { |
| 6533 | Lisp_Object str = Qnil; | 6533 | Lisp_Object str = Qnil; |
| 6534 | struct frame *f = SELECTED_FRAME (); | 6534 | struct frame *f = SELECTED_FRAME (); |
| 6535 | struct buffer *curbuf = XBUFFER (XWINDOW (f->selected_window)->buffer); | 6535 | struct buffer *curbuf = XBUFFER (XWINDOW (f->selected_window)->contents); |
| 6536 | 6536 | ||
| 6537 | if ([attribute isEqualToString:NSAccessibilityRoleAttribute]) | 6537 | if ([attribute isEqualToString:NSAccessibilityRoleAttribute]) |
| 6538 | return NSAccessibilityTextFieldRole; | 6538 | return NSAccessibilityTextFieldRole; |
diff --git a/src/print.c b/src/print.c index ce10d6295e6..811ab5011ce 100644 --- a/src/print.c +++ b/src/print.c | |||
| @@ -1769,10 +1769,10 @@ print_object (Lisp_Object obj, Lisp_Object printcharfun, bool escapeflag) | |||
| 1769 | strout ("#<window ", -1, -1, printcharfun); | 1769 | strout ("#<window ", -1, -1, printcharfun); |
| 1770 | len = sprintf (buf, "%p", XWINDOW (obj)); | 1770 | len = sprintf (buf, "%p", XWINDOW (obj)); |
| 1771 | strout (buf, len, len, printcharfun); | 1771 | strout (buf, len, len, printcharfun); |
| 1772 | if (!NILP (XWINDOW (obj)->buffer)) | 1772 | if (BUFFERP (XWINDOW (obj)->contents)) |
| 1773 | { | 1773 | { |
| 1774 | strout (" on ", -1, -1, printcharfun); | 1774 | strout (" on ", -1, -1, printcharfun); |
| 1775 | print_string (BVAR (XBUFFER (XWINDOW (obj)->buffer), name), | 1775 | print_string (BVAR (XBUFFER (XWINDOW (obj)->contents), name), |
| 1776 | printcharfun); | 1776 | printcharfun); |
| 1777 | } | 1777 | } |
| 1778 | PRINTCHAR ('>'); | 1778 | PRINTCHAR ('>'); |
diff --git a/src/textprop.c b/src/textprop.c index 2b454485370..cc364d5a38c 100644 --- a/src/textprop.c +++ b/src/textprop.c | |||
| @@ -597,8 +597,9 @@ get_char_property_and_overlay (Lisp_Object position, register Lisp_Object prop, | |||
| 597 | 597 | ||
| 598 | if (WINDOWP (object)) | 598 | if (WINDOWP (object)) |
| 599 | { | 599 | { |
| 600 | CHECK_LIVE_WINDOW (object); | ||
| 600 | w = XWINDOW (object); | 601 | w = XWINDOW (object); |
| 601 | object = w->buffer; | 602 | object = w->contents; |
| 602 | } | 603 | } |
| 603 | if (BUFFERP (object)) | 604 | if (BUFFERP (object)) |
| 604 | { | 605 | { |
diff --git a/src/w32fns.c b/src/w32fns.c index bb640ffcb8c..bd54e990efc 100644 --- a/src/w32fns.c +++ b/src/w32fns.c | |||
| @@ -5816,7 +5816,7 @@ Text larger than the specified size is clipped. */) | |||
| 5816 | 5816 | ||
| 5817 | /* Display the tooltip text in a temporary buffer. */ | 5817 | /* Display the tooltip text in a temporary buffer. */ |
| 5818 | old_buffer = current_buffer; | 5818 | old_buffer = current_buffer; |
| 5819 | set_buffer_internal_1 (XBUFFER (XWINDOW (FRAME_ROOT_WINDOW (f))->buffer)); | 5819 | set_buffer_internal_1 (XBUFFER (XWINDOW (FRAME_ROOT_WINDOW (f))->contents)); |
| 5820 | bset_truncate_lines (current_buffer, Qnil); | 5820 | bset_truncate_lines (current_buffer, Qnil); |
| 5821 | clear_glyph_matrix (w->desired_matrix); | 5821 | clear_glyph_matrix (w->desired_matrix); |
| 5822 | clear_glyph_matrix (w->current_matrix); | 5822 | clear_glyph_matrix (w->current_matrix); |
diff --git a/src/w32menu.c b/src/w32menu.c index 03904cf20b8..60ef6d2cfb5 100644 --- a/src/w32menu.c +++ b/src/w32menu.c | |||
| @@ -396,7 +396,7 @@ set_frame_menubar (FRAME_PTR f, bool first_time, bool deep_p) | |||
| 396 | if (! menubar_widget) | 396 | if (! menubar_widget) |
| 397 | previous_menu_items_used = 0; | 397 | previous_menu_items_used = 0; |
| 398 | 398 | ||
| 399 | buffer = XWINDOW (FRAME_SELECTED_WINDOW (f))->buffer; | 399 | buffer = XWINDOW (FRAME_SELECTED_WINDOW (f))->contents; |
| 400 | specbind (Qinhibit_quit, Qt); | 400 | specbind (Qinhibit_quit, Qt); |
| 401 | /* Don't let the debugger step into this code | 401 | /* Don't let the debugger step into this code |
| 402 | because it is not reentrant. */ | 402 | because it is not reentrant. */ |
diff --git a/src/window.c b/src/window.c index 1784b38ba6d..b66111a5605 100644 --- a/src/window.c +++ b/src/window.c | |||
| @@ -147,11 +147,6 @@ wset_display_table (struct window *w, Lisp_Object val) | |||
| 147 | w->display_table = val; | 147 | w->display_table = val; |
| 148 | } | 148 | } |
| 149 | static void | 149 | static void |
| 150 | wset_hchild (struct window *w, Lisp_Object val) | ||
| 151 | { | ||
| 152 | w->hchild = val; | ||
| 153 | } | ||
| 154 | static void | ||
| 155 | wset_left_fringe_width (struct window *w, Lisp_Object val) | 150 | wset_left_fringe_width (struct window *w, Lisp_Object val) |
| 156 | { | 151 | { |
| 157 | w->left_fringe_width = val; | 152 | w->left_fringe_width = val; |
| @@ -217,11 +212,6 @@ wset_temslot (struct window *w, Lisp_Object val) | |||
| 217 | w->temslot = val; | 212 | w->temslot = val; |
| 218 | } | 213 | } |
| 219 | static void | 214 | static void |
| 220 | wset_vchild (struct window *w, Lisp_Object val) | ||
| 221 | { | ||
| 222 | w->vchild = val; | ||
| 223 | } | ||
| 224 | static void | ||
| 225 | wset_vertical_scroll_bar_type (struct window *w, Lisp_Object val) | 215 | wset_vertical_scroll_bar_type (struct window *w, Lisp_Object val) |
| 226 | { | 216 | { |
| 227 | w->vertical_scroll_bar_type = val; | 217 | w->vertical_scroll_bar_type = val; |
| @@ -231,6 +221,18 @@ wset_window_parameters (struct window *w, Lisp_Object val) | |||
| 231 | { | 221 | { |
| 232 | w->window_parameters = val; | 222 | w->window_parameters = val; |
| 233 | } | 223 | } |
| 224 | static void | ||
| 225 | wset_combination (struct window *w, bool horflag, Lisp_Object val) | ||
| 226 | { | ||
| 227 | /* Since leaf windows never becomes non-leaf, there should | ||
| 228 | be no buffer and markers in start and pointm fields of W. */ | ||
| 229 | eassert (!BUFFERP (w->contents) && NILP (w->start) && NILP (w->pointm)); | ||
| 230 | w->contents = val; | ||
| 231 | /* When an internal window is deleted and VAL is nil, HORFLAG | ||
| 232 | is meaningless. */ | ||
| 233 | if (!NILP (val)) | ||
| 234 | w->horizontal = horflag; | ||
| 235 | } | ||
| 234 | 236 | ||
| 235 | struct window * | 237 | struct window * |
| 236 | decode_live_window (register Lisp_Object window) | 238 | decode_live_window (register Lisp_Object window) |
| @@ -275,9 +277,9 @@ static void | |||
| 275 | adjust_window_count (struct window *w, int arg) | 277 | adjust_window_count (struct window *w, int arg) |
| 276 | { | 278 | { |
| 277 | eassert (eabs (arg) == 1); | 279 | eassert (eabs (arg) == 1); |
| 278 | if (BUFFERP (w->buffer)) | 280 | if (BUFFERP (w->contents)) |
| 279 | { | 281 | { |
| 280 | struct buffer *b = XBUFFER (w->buffer); | 282 | struct buffer *b = XBUFFER (w->contents); |
| 281 | 283 | ||
| 282 | if (b->base_buffer) | 284 | if (b->base_buffer) |
| 283 | b = b->base_buffer; | 285 | b = b->base_buffer; |
| @@ -296,7 +298,11 @@ void | |||
| 296 | wset_buffer (struct window *w, Lisp_Object val) | 298 | wset_buffer (struct window *w, Lisp_Object val) |
| 297 | { | 299 | { |
| 298 | adjust_window_count (w, -1); | 300 | adjust_window_count (w, -1); |
| 299 | w->buffer = val; | 301 | if (BUFFERP (val)) |
| 302 | /* Make sure that we do not assign the buffer | ||
| 303 | to an internal window. */ | ||
| 304 | eassert (MARKERP (w->start) && MARKERP (w->pointm)); | ||
| 305 | w->contents = val; | ||
| 300 | adjust_window_count (w, 1); | 306 | adjust_window_count (w, 1); |
| 301 | } | 307 | } |
| 302 | 308 | ||
| @@ -394,15 +400,8 @@ the first window of that frame. */) | |||
| 394 | window = XFRAME (frame_or_window)->root_window; | 400 | window = XFRAME (frame_or_window)->root_window; |
| 395 | } | 401 | } |
| 396 | 402 | ||
| 397 | while (NILP (XWINDOW (window)->buffer)) | 403 | while (WINDOWP (XWINDOW (window)->contents)) |
| 398 | { | 404 | window = XWINDOW (window)->contents; |
| 399 | if (! NILP (XWINDOW (window)->hchild)) | ||
| 400 | window = XWINDOW (window)->hchild; | ||
| 401 | else if (! NILP (XWINDOW (window)->vchild)) | ||
| 402 | window = XWINDOW (window)->vchild; | ||
| 403 | else | ||
| 404 | emacs_abort (); | ||
| 405 | } | ||
| 406 | 405 | ||
| 407 | return window; | 406 | return window; |
| 408 | } | 407 | } |
| @@ -489,11 +488,11 @@ select_window (Lisp_Object window, Lisp_Object norecord, int inhibit_point_swap) | |||
| 489 | if (NILP (norecord)) | 488 | if (NILP (norecord)) |
| 490 | { | 489 | { |
| 491 | w->use_time = ++window_select_count; | 490 | w->use_time = ++window_select_count; |
| 492 | record_buffer (w->buffer); | 491 | record_buffer (w->contents); |
| 493 | } | 492 | } |
| 494 | 493 | ||
| 495 | /* Make the selected window's buffer current. */ | 494 | /* Make the selected window's buffer current. */ |
| 496 | Fset_buffer (w->buffer); | 495 | Fset_buffer (w->contents); |
| 497 | 496 | ||
| 498 | if (EQ (window, selected_window) && !inhibit_point_swap) | 497 | if (EQ (window, selected_window) && !inhibit_point_swap) |
| 499 | return window; | 498 | return window; |
| @@ -516,7 +515,7 @@ select_window (Lisp_Object window, Lisp_Object norecord, int inhibit_point_swap) | |||
| 516 | 515 | ||
| 517 | select_window_1 (window, inhibit_point_swap); | 516 | select_window_1 (window, inhibit_point_swap); |
| 518 | 517 | ||
| 519 | bset_last_selected_window (XBUFFER (w->buffer), window); | 518 | bset_last_selected_window (XBUFFER (w->contents), window); |
| 520 | windows_or_buffers_changed++; | 519 | windows_or_buffers_changed++; |
| 521 | return window; | 520 | return window; |
| 522 | } | 521 | } |
| @@ -533,10 +532,10 @@ select_window_1 (Lisp_Object window, bool inhibit_point_swap) | |||
| 533 | if (!inhibit_point_swap) | 532 | if (!inhibit_point_swap) |
| 534 | { | 533 | { |
| 535 | struct window *ow = XWINDOW (selected_window); | 534 | struct window *ow = XWINDOW (selected_window); |
| 536 | if (! NILP (ow->buffer)) | 535 | if (BUFFERP (ow->contents)) |
| 537 | set_marker_both (ow->pointm, ow->buffer, | 536 | set_marker_both (ow->pointm, ow->contents, |
| 538 | BUF_PT (XBUFFER (ow->buffer)), | 537 | BUF_PT (XBUFFER (ow->contents)), |
| 539 | BUF_PT_BYTE (XBUFFER (ow->buffer))); | 538 | BUF_PT_BYTE (XBUFFER (ow->contents))); |
| 540 | } | 539 | } |
| 541 | 540 | ||
| 542 | selected_window = window; | 541 | selected_window = window; |
| @@ -581,7 +580,8 @@ If WINDOW is omitted or nil, it defaults to the selected window. | |||
| 581 | Return nil for an internal window or a deleted window. */) | 580 | Return nil for an internal window or a deleted window. */) |
| 582 | (Lisp_Object window) | 581 | (Lisp_Object window) |
| 583 | { | 582 | { |
| 584 | return decode_any_window (window)->buffer; | 583 | struct window *w = decode_any_window (window); |
| 584 | return WINDOW_LEAF_P (w) ? w->contents : Qnil; | ||
| 585 | } | 585 | } |
| 586 | 586 | ||
| 587 | DEFUN ("window-parent", Fwindow_parent, Swindow_parent, 0, 1, 0, | 587 | DEFUN ("window-parent", Fwindow_parent, Swindow_parent, 0, 1, 0, |
| @@ -601,7 +601,8 @@ Return nil if WINDOW is an internal window whose children form a | |||
| 601 | horizontal combination. */) | 601 | horizontal combination. */) |
| 602 | (Lisp_Object window) | 602 | (Lisp_Object window) |
| 603 | { | 603 | { |
| 604 | return decode_valid_window (window)->vchild; | 604 | struct window *w = decode_valid_window (window); |
| 605 | return WINDOW_VERTICAL_COMBINATION_P (w) ? w->contents : Qnil; | ||
| 605 | } | 606 | } |
| 606 | 607 | ||
| 607 | DEFUN ("window-left-child", Fwindow_left_child, Swindow_left_child, 0, 1, 0, | 608 | DEFUN ("window-left-child", Fwindow_left_child, Swindow_left_child, 0, 1, 0, |
| @@ -612,7 +613,8 @@ Return nil if WINDOW is an internal window whose children form a | |||
| 612 | vertical combination. */) | 613 | vertical combination. */) |
| 613 | (Lisp_Object window) | 614 | (Lisp_Object window) |
| 614 | { | 615 | { |
| 615 | return decode_valid_window (window)->hchild; | 616 | struct window *w = decode_valid_window (window); |
| 617 | return WINDOW_HORIZONTAL_COMBINATION_P (w) ? w->contents : Qnil; | ||
| 616 | } | 618 | } |
| 617 | 619 | ||
| 618 | DEFUN ("window-next-sibling", Fwindow_next_sibling, Swindow_next_sibling, 0, 1, 0, | 620 | DEFUN ("window-next-sibling", Fwindow_next_sibling, Swindow_next_sibling, 0, 1, 0, |
| @@ -645,9 +647,9 @@ WINDOW are never \(re-)combined with WINDOW's siblings. */) | |||
| 645 | 647 | ||
| 646 | CHECK_VALID_WINDOW (window); | 648 | CHECK_VALID_WINDOW (window); |
| 647 | w = XWINDOW (window); | 649 | w = XWINDOW (window); |
| 648 | if (!NILP (w->buffer)) | 650 | if (WINDOW_LEAF_P (w)) |
| 649 | error ("Combination limit is meaningful for internal windows only"); | 651 | error ("Combination limit is meaningful for internal windows only"); |
| 650 | return XWINDOW (window)->combination_limit; | 652 | return w->combination_limit; |
| 651 | } | 653 | } |
| 652 | 654 | ||
| 653 | DEFUN ("set-window-combination-limit", Fset_window_combination_limit, Sset_window_combination_limit, 2, 2, 0, | 655 | DEFUN ("set-window-combination-limit", Fset_window_combination_limit, Sset_window_combination_limit, 2, 2, 0, |
| @@ -663,7 +665,7 @@ future use. */) | |||
| 663 | 665 | ||
| 664 | CHECK_VALID_WINDOW (window); | 666 | CHECK_VALID_WINDOW (window); |
| 665 | w = XWINDOW (window); | 667 | w = XWINDOW (window); |
| 666 | if (!NILP (w->buffer)) | 668 | if (WINDOW_LEAF_P (w)) |
| 667 | error ("Combination limit is meaningful for internal windows only"); | 669 | error ("Combination limit is meaningful for internal windows only"); |
| 668 | wset_combination_limit (w, limit); | 670 | wset_combination_limit (w, limit); |
| 669 | return limit; | 671 | return limit; |
| @@ -860,7 +862,7 @@ set_window_hscroll (struct window *w, EMACS_INT hscroll) | |||
| 860 | 862 | ||
| 861 | /* Prevent redisplay shortcuts when changing the hscroll. */ | 863 | /* Prevent redisplay shortcuts when changing the hscroll. */ |
| 862 | if (w->hscroll != new_hscroll) | 864 | if (w->hscroll != new_hscroll) |
| 863 | XBUFFER (w->buffer)->prevent_redisplay_optimizations_p = 1; | 865 | XBUFFER (w->contents)->prevent_redisplay_optimizations_p = 1; |
| 864 | 866 | ||
| 865 | w->hscroll = new_hscroll; | 867 | w->hscroll = new_hscroll; |
| 866 | return make_number (new_hscroll); | 868 | return make_number (new_hscroll); |
| @@ -1441,7 +1443,7 @@ correct to return the top-level value of `point', outside of any | |||
| 1441 | register struct window *w = decode_live_window (window); | 1443 | register struct window *w = decode_live_window (window); |
| 1442 | 1444 | ||
| 1443 | if (w == XWINDOW (selected_window)) | 1445 | if (w == XWINDOW (selected_window)) |
| 1444 | return make_number (BUF_PT (XBUFFER (w->buffer))); | 1446 | return make_number (BUF_PT (XBUFFER (w->contents))); |
| 1445 | else | 1447 | else |
| 1446 | return Fmarker_position (w->pointm); | 1448 | return Fmarker_position (w->pointm); |
| 1447 | } | 1449 | } |
| @@ -1483,7 +1485,7 @@ if it isn't already recorded. */) | |||
| 1483 | Lisp_Object buf; | 1485 | Lisp_Object buf; |
| 1484 | struct buffer *b; | 1486 | struct buffer *b; |
| 1485 | 1487 | ||
| 1486 | buf = w->buffer; | 1488 | buf = w->contents; |
| 1487 | CHECK_BUFFER (buf); | 1489 | CHECK_BUFFER (buf); |
| 1488 | b = XBUFFER (buf); | 1490 | b = XBUFFER (buf); |
| 1489 | 1491 | ||
| @@ -1546,7 +1548,7 @@ Return POS. */) | |||
| 1546 | 1548 | ||
| 1547 | if (w == XWINDOW (selected_window)) | 1549 | if (w == XWINDOW (selected_window)) |
| 1548 | { | 1550 | { |
| 1549 | if (XBUFFER (w->buffer) == current_buffer) | 1551 | if (XBUFFER (w->contents) == current_buffer) |
| 1550 | Fgoto_char (pos); | 1552 | Fgoto_char (pos); |
| 1551 | else | 1553 | else |
| 1552 | { | 1554 | { |
| @@ -1554,14 +1556,14 @@ Return POS. */) | |||
| 1554 | 1556 | ||
| 1555 | /* ... but here we want to catch type error before buffer change. */ | 1557 | /* ... but here we want to catch type error before buffer change. */ |
| 1556 | CHECK_NUMBER_COERCE_MARKER (pos); | 1558 | CHECK_NUMBER_COERCE_MARKER (pos); |
| 1557 | set_buffer_internal (XBUFFER (w->buffer)); | 1559 | set_buffer_internal (XBUFFER (w->contents)); |
| 1558 | Fgoto_char (pos); | 1560 | Fgoto_char (pos); |
| 1559 | set_buffer_internal (old_buffer); | 1561 | set_buffer_internal (old_buffer); |
| 1560 | } | 1562 | } |
| 1561 | } | 1563 | } |
| 1562 | else | 1564 | else |
| 1563 | { | 1565 | { |
| 1564 | set_marker_restricted (w->pointm, pos, w->buffer); | 1566 | set_marker_restricted (w->pointm, pos, w->contents); |
| 1565 | /* We have to make sure that redisplay updates the window to show | 1567 | /* We have to make sure that redisplay updates the window to show |
| 1566 | the new value of point. */ | 1568 | the new value of point. */ |
| 1567 | ++windows_or_buffers_changed; | 1569 | ++windows_or_buffers_changed; |
| @@ -1579,7 +1581,7 @@ overriding motion of point in order to display at this exact start. */) | |||
| 1579 | { | 1581 | { |
| 1580 | register struct window *w = decode_live_window (window); | 1582 | register struct window *w = decode_live_window (window); |
| 1581 | 1583 | ||
| 1582 | set_marker_restricted (w->start, pos, w->buffer); | 1584 | set_marker_restricted (w->start, pos, w->contents); |
| 1583 | /* This is not right, but much easier than doing what is right. */ | 1585 | /* This is not right, but much easier than doing what is right. */ |
| 1584 | w->start_at_line_beg = 0; | 1586 | w->start_at_line_beg = 0; |
| 1585 | if (NILP (noforce)) | 1587 | if (NILP (noforce)) |
| @@ -1623,7 +1625,7 @@ display row, and VPOS is the row number (0-based) containing POS. */) | |||
| 1623 | int x, y; | 1625 | int x, y; |
| 1624 | 1626 | ||
| 1625 | w = decode_live_window (window); | 1627 | w = decode_live_window (window); |
| 1626 | buf = XBUFFER (w->buffer); | 1628 | buf = XBUFFER (w->contents); |
| 1627 | SET_TEXT_POS_FROM_MARKER (top, w->start); | 1629 | SET_TEXT_POS_FROM_MARKER (top, w->start); |
| 1628 | 1630 | ||
| 1629 | if (EQ (pos, Qt)) | 1631 | if (EQ (pos, Qt)) |
| @@ -1692,8 +1694,8 @@ Return nil if window display is not up-to-date. In that case, use | |||
| 1692 | if (noninteractive || w->pseudo_window_p) | 1694 | if (noninteractive || w->pseudo_window_p) |
| 1693 | return Qnil; | 1695 | return Qnil; |
| 1694 | 1696 | ||
| 1695 | CHECK_BUFFER (w->buffer); | 1697 | CHECK_BUFFER (w->contents); |
| 1696 | b = XBUFFER (w->buffer); | 1698 | b = XBUFFER (w->contents); |
| 1697 | 1699 | ||
| 1698 | /* Fail if current matrix is not up-to-date. */ | 1700 | /* Fail if current matrix is not up-to-date. */ |
| 1699 | if (!w->window_end_valid | 1701 | if (!w->window_end_valid |
| @@ -1919,9 +1921,9 @@ window_display_table (struct window *w) | |||
| 1919 | 1921 | ||
| 1920 | if (DISP_TABLE_P (w->display_table)) | 1922 | if (DISP_TABLE_P (w->display_table)) |
| 1921 | dp = XCHAR_TABLE (w->display_table); | 1923 | dp = XCHAR_TABLE (w->display_table); |
| 1922 | else if (BUFFERP (w->buffer)) | 1924 | else if (BUFFERP (w->contents)) |
| 1923 | { | 1925 | { |
| 1924 | struct buffer *b = XBUFFER (w->buffer); | 1926 | struct buffer *b = XBUFFER (w->contents); |
| 1925 | 1927 | ||
| 1926 | if (DISP_TABLE_P (BVAR (b, display_table))) | 1928 | if (DISP_TABLE_P (BVAR (b, display_table))) |
| 1927 | dp = XCHAR_TABLE (BVAR (b, display_table)); | 1929 | dp = XCHAR_TABLE (BVAR (b, display_table)); |
| @@ -1946,17 +1948,14 @@ WINDOW must be a live window and defaults to the selected one. */) | |||
| 1946 | static void | 1948 | static void |
| 1947 | unshow_buffer (register struct window *w) | 1949 | unshow_buffer (register struct window *w) |
| 1948 | { | 1950 | { |
| 1949 | Lisp_Object buf; | 1951 | Lisp_Object buf = w->contents; |
| 1950 | struct buffer *b; | 1952 | struct buffer *b = XBUFFER (buf); |
| 1951 | 1953 | ||
| 1952 | buf = w->buffer; | 1954 | eassert (b == XMARKER (w->pointm)->buffer); |
| 1953 | b = XBUFFER (buf); | ||
| 1954 | if (b != XMARKER (w->pointm)->buffer) | ||
| 1955 | emacs_abort (); | ||
| 1956 | 1955 | ||
| 1957 | #if 0 | 1956 | #if 0 |
| 1958 | if (w == XWINDOW (selected_window) | 1957 | if (w == XWINDOW (selected_window) |
| 1959 | || ! EQ (buf, XWINDOW (selected_window)->buffer)) | 1958 | || ! EQ (buf, XWINDOW (selected_window)->contents)) |
| 1960 | /* Do this except when the selected window's buffer | 1959 | /* Do this except when the selected window's buffer |
| 1961 | is being removed from some other window. */ | 1960 | is being removed from some other window. */ |
| 1962 | #endif | 1961 | #endif |
| @@ -1972,14 +1971,14 @@ unshow_buffer (register struct window *w) | |||
| 1972 | /* Point in the selected window's buffer | 1971 | /* Point in the selected window's buffer |
| 1973 | is actually stored in that buffer, and the window's pointm isn't used. | 1972 | is actually stored in that buffer, and the window's pointm isn't used. |
| 1974 | So don't clobber point in that buffer. */ | 1973 | So don't clobber point in that buffer. */ |
| 1975 | if (! EQ (buf, XWINDOW (selected_window)->buffer) | 1974 | if (! EQ (buf, XWINDOW (selected_window)->contents) |
| 1976 | /* Don't clobber point in current buffer either (this could be | 1975 | /* Don't clobber point in current buffer either (this could be |
| 1977 | useful in connection with bug#12208). | 1976 | useful in connection with bug#12208). |
| 1978 | && XBUFFER (buf) != current_buffer */ | 1977 | && XBUFFER (buf) != current_buffer */ |
| 1979 | /* This line helps to fix Horsley's testbug.el bug. */ | 1978 | /* This line helps to fix Horsley's testbug.el bug. */ |
| 1980 | && !(WINDOWP (BVAR (b, last_selected_window)) | 1979 | && !(WINDOWP (BVAR (b, last_selected_window)) |
| 1981 | && w != XWINDOW (BVAR (b, last_selected_window)) | 1980 | && w != XWINDOW (BVAR (b, last_selected_window)) |
| 1982 | && EQ (buf, XWINDOW (BVAR (b, last_selected_window))->buffer))) | 1981 | && EQ (buf, XWINDOW (BVAR (b, last_selected_window))->contents))) |
| 1983 | temp_set_point_both (b, | 1982 | temp_set_point_both (b, |
| 1984 | clip_to_bounds (BUF_BEGV (b), | 1983 | clip_to_bounds (BUF_BEGV (b), |
| 1985 | marker_position (w->pointm), | 1984 | marker_position (w->pointm), |
| @@ -2044,13 +2043,8 @@ replace_window (Lisp_Object old, Lisp_Object new, int setflag) | |||
| 2044 | 2043 | ||
| 2045 | tem = o->parent; | 2044 | tem = o->parent; |
| 2046 | wset_parent (n, tem); | 2045 | wset_parent (n, tem); |
| 2047 | if (!NILP (tem)) | 2046 | if (!NILP (tem) && EQ (XWINDOW (tem)->contents, old)) |
| 2048 | { | 2047 | wset_combination (XWINDOW (tem), XWINDOW (tem)->horizontal, new); |
| 2049 | if (EQ (XWINDOW (tem)->vchild, old)) | ||
| 2050 | wset_vchild (XWINDOW (tem), new); | ||
| 2051 | if (EQ (XWINDOW (tem)->hchild, old)) | ||
| 2052 | wset_hchild (XWINDOW (tem), new); | ||
| 2053 | } | ||
| 2054 | } | 2048 | } |
| 2055 | 2049 | ||
| 2056 | /* If window WINDOW and its parent window are iso-combined, merge | 2050 | /* If window WINDOW and its parent window are iso-combined, merge |
| @@ -2069,22 +2063,19 @@ recombine_windows (Lisp_Object window) | |||
| 2069 | if (!NILP (parent) && NILP (w->combination_limit)) | 2063 | if (!NILP (parent) && NILP (w->combination_limit)) |
| 2070 | { | 2064 | { |
| 2071 | p = XWINDOW (parent); | 2065 | p = XWINDOW (parent); |
| 2072 | if (((!NILP (p->vchild) && !NILP (w->vchild)) | 2066 | if (WINDOWP (p->contents) && WINDOWP (w->contents) |
| 2073 | || (!NILP (p->hchild) && !NILP (w->hchild)))) | 2067 | && p->horizontal == w->horizontal) |
| 2074 | /* WINDOW and PARENT are both either a vertical or a horizontal | 2068 | /* WINDOW and PARENT are both either a vertical or a horizontal |
| 2075 | combination. */ | 2069 | combination. */ |
| 2076 | { | 2070 | { |
| 2077 | horflag = NILP (w->vchild); | 2071 | horflag = WINDOW_HORIZONTAL_COMBINATION_P (w); |
| 2078 | child = horflag ? w->hchild : w->vchild; | 2072 | child = w->contents; |
| 2079 | c = XWINDOW (child); | 2073 | c = XWINDOW (child); |
| 2080 | 2074 | ||
| 2081 | /* Splice WINDOW's children into its parent's children and | 2075 | /* Splice WINDOW's children into its parent's children and |
| 2082 | assign new normal sizes. */ | 2076 | assign new normal sizes. */ |
| 2083 | if (NILP (w->prev)) | 2077 | if (NILP (w->prev)) |
| 2084 | if (horflag) | 2078 | wset_combination (p, horflag, child); |
| 2085 | wset_hchild (p, child); | ||
| 2086 | else | ||
| 2087 | wset_vchild (p, child); | ||
| 2088 | else | 2079 | else |
| 2089 | { | 2080 | { |
| 2090 | wset_prev (c, w->prev); | 2081 | wset_prev (c, w->prev); |
| @@ -2122,8 +2113,7 @@ recombine_windows (Lisp_Object window) | |||
| 2122 | } | 2113 | } |
| 2123 | 2114 | ||
| 2124 | /* WINDOW can be deleted now. */ | 2115 | /* WINDOW can be deleted now. */ |
| 2125 | wset_vchild (w, Qnil); | 2116 | wset_combination (w, 0, Qnil); |
| 2126 | wset_hchild (w, Qnil); | ||
| 2127 | } | 2117 | } |
| 2128 | } | 2118 | } |
| 2129 | } | 2119 | } |
| @@ -2209,7 +2199,7 @@ candidate_window_p (Lisp_Object window, Lisp_Object owindow, Lisp_Object minibuf | |||
| 2209 | struct frame *f = XFRAME (w->frame); | 2199 | struct frame *f = XFRAME (w->frame); |
| 2210 | int candidate_p = 1; | 2200 | int candidate_p = 1; |
| 2211 | 2201 | ||
| 2212 | if (!BUFFERP (w->buffer)) | 2202 | if (!BUFFERP (w->contents)) |
| 2213 | candidate_p = 0; | 2203 | candidate_p = 0; |
| 2214 | else if (MINI_WINDOW_P (w) | 2204 | else if (MINI_WINDOW_P (w) |
| 2215 | && (EQ (minibuf, Qlambda) | 2205 | && (EQ (minibuf, Qlambda) |
| @@ -2549,7 +2539,7 @@ enum window_loop | |||
| 2549 | GET_BUFFER_WINDOW, /* Arg is buffer */ | 2539 | GET_BUFFER_WINDOW, /* Arg is buffer */ |
| 2550 | REPLACE_BUFFER_IN_WINDOWS_SAFELY, /* Arg is buffer */ | 2540 | REPLACE_BUFFER_IN_WINDOWS_SAFELY, /* Arg is buffer */ |
| 2551 | REDISPLAY_BUFFER_WINDOWS, /* Arg is buffer */ | 2541 | REDISPLAY_BUFFER_WINDOWS, /* Arg is buffer */ |
| 2552 | CHECK_ALL_WINDOWS | 2542 | CHECK_ALL_WINDOWS /* Arg is ignored */ |
| 2553 | }; | 2543 | }; |
| 2554 | 2544 | ||
| 2555 | static Lisp_Object | 2545 | static Lisp_Object |
| @@ -2613,7 +2603,7 @@ window_loop (enum window_loop type, Lisp_Object obj, int mini, Lisp_Object frame | |||
| 2613 | switch (type) | 2603 | switch (type) |
| 2614 | { | 2604 | { |
| 2615 | case GET_BUFFER_WINDOW: | 2605 | case GET_BUFFER_WINDOW: |
| 2616 | if (EQ (w->buffer, obj) | 2606 | if (EQ (w->contents, obj) |
| 2617 | /* Don't find any minibuffer window except the one that | 2607 | /* Don't find any minibuffer window except the one that |
| 2618 | is currently in use. */ | 2608 | is currently in use. */ |
| 2619 | && (MINI_WINDOW_P (w) ? EQ (window, minibuf_window) : 1)) | 2609 | && (MINI_WINDOW_P (w) ? EQ (window, minibuf_window) : 1)) |
| @@ -2637,25 +2627,25 @@ window_loop (enum window_loop type, Lisp_Object obj, int mini, Lisp_Object frame | |||
| 2637 | case REPLACE_BUFFER_IN_WINDOWS_SAFELY: | 2627 | case REPLACE_BUFFER_IN_WINDOWS_SAFELY: |
| 2638 | /* We could simply check whether the buffer shown by window | 2628 | /* We could simply check whether the buffer shown by window |
| 2639 | is live, and show another buffer in case it isn't. */ | 2629 | is live, and show another buffer in case it isn't. */ |
| 2640 | if (EQ (w->buffer, obj)) | 2630 | if (EQ (w->contents, obj)) |
| 2641 | { | 2631 | { |
| 2642 | /* Undedicate WINDOW. */ | 2632 | /* Undedicate WINDOW. */ |
| 2643 | wset_dedicated (w, Qnil); | 2633 | wset_dedicated (w, Qnil); |
| 2644 | /* Make WINDOW show the buffer returned by | 2634 | /* Make WINDOW show the buffer returned by |
| 2645 | other_buffer_safely, don't run any hooks. */ | 2635 | other_buffer_safely, don't run any hooks. */ |
| 2646 | set_window_buffer | 2636 | set_window_buffer |
| 2647 | (window, other_buffer_safely (w->buffer), 0, 0); | 2637 | (window, other_buffer_safely (w->contents), 0, 0); |
| 2648 | /* If WINDOW is the selected window, make its buffer | 2638 | /* If WINDOW is the selected window, make its buffer |
| 2649 | current. But do so only if the window shows the | 2639 | current. But do so only if the window shows the |
| 2650 | current buffer (Bug#6454). */ | 2640 | current buffer (Bug#6454). */ |
| 2651 | if (EQ (window, selected_window) | 2641 | if (EQ (window, selected_window) |
| 2652 | && XBUFFER (w->buffer) == current_buffer) | 2642 | && XBUFFER (w->contents) == current_buffer) |
| 2653 | Fset_buffer (w->buffer); | 2643 | Fset_buffer (w->contents); |
| 2654 | } | 2644 | } |
| 2655 | break; | 2645 | break; |
| 2656 | 2646 | ||
| 2657 | case REDISPLAY_BUFFER_WINDOWS: | 2647 | case REDISPLAY_BUFFER_WINDOWS: |
| 2658 | if (EQ (w->buffer, obj)) | 2648 | if (EQ (w->contents, obj)) |
| 2659 | { | 2649 | { |
| 2660 | mark_window_display_accurate (window, 0); | 2650 | mark_window_display_accurate (window, 0); |
| 2661 | w->update_mode_line = 1; | 2651 | w->update_mode_line = 1; |
| @@ -2665,11 +2655,20 @@ window_loop (enum window_loop type, Lisp_Object obj, int mini, Lisp_Object frame | |||
| 2665 | } | 2655 | } |
| 2666 | break; | 2656 | break; |
| 2667 | 2657 | ||
| 2668 | /* Check for a window that has a killed buffer. */ | 2658 | /* Check for a leaf window that has a killed buffer |
| 2659 | or broken markers. */ | ||
| 2669 | case CHECK_ALL_WINDOWS: | 2660 | case CHECK_ALL_WINDOWS: |
| 2670 | if (! NILP (w->buffer) | 2661 | if (BUFFERP (w->contents)) |
| 2671 | && !BUFFER_LIVE_P (XBUFFER (w->buffer))) | 2662 | { |
| 2672 | emacs_abort (); | 2663 | struct buffer *b = XBUFFER (w->contents); |
| 2664 | |||
| 2665 | if (!BUFFER_LIVE_P (b)) | ||
| 2666 | emacs_abort (); | ||
| 2667 | if (!MARKERP (w->start) || XMARKER (w->start)->buffer != b) | ||
| 2668 | emacs_abort (); | ||
| 2669 | if (!MARKERP (w->pointm) || XMARKER (w->pointm)->buffer != b) | ||
| 2670 | emacs_abort (); | ||
| 2671 | } | ||
| 2673 | break; | 2672 | break; |
| 2674 | 2673 | ||
| 2675 | case WINDOW_LOOP_UNUSED: | 2674 | case WINDOW_LOOP_UNUSED: |
| @@ -2786,7 +2785,7 @@ window-start value is reasonable when this function is called. */) | |||
| 2786 | else if (MINI_WINDOW_P (w)) /* && top > 0) */ | 2785 | else if (MINI_WINDOW_P (w)) /* && top > 0) */ |
| 2787 | error ("Can't expand minibuffer to full frame"); | 2786 | error ("Can't expand minibuffer to full frame"); |
| 2788 | 2787 | ||
| 2789 | if (!NILP (w->buffer)) | 2788 | if (BUFFERP (w->contents)) |
| 2790 | { | 2789 | { |
| 2791 | startpos = marker_position (w->start); | 2790 | startpos = marker_position (w->start); |
| 2792 | startbyte = marker_byte_position (w->start); | 2791 | startbyte = marker_byte_position (w->start); |
| @@ -2858,7 +2857,7 @@ window-start value is reasonable when this function is called. */) | |||
| 2858 | FRAME_WINDOW_SIZES_CHANGED (f) = 1; | 2857 | FRAME_WINDOW_SIZES_CHANGED (f) = 1; |
| 2859 | resize_failed = 0; | 2858 | resize_failed = 0; |
| 2860 | 2859 | ||
| 2861 | if (NILP (w->buffer)) | 2860 | if (!WINDOW_LEAF_P (w)) |
| 2862 | { | 2861 | { |
| 2863 | /* Resize child windows vertically. */ | 2862 | /* Resize child windows vertically. */ |
| 2864 | XSETINT (delta, r->total_lines - w->total_lines); | 2863 | XSETINT (delta, r->total_lines - w->total_lines); |
| @@ -2917,28 +2916,21 @@ window-start value is reasonable when this function is called. */) | |||
| 2917 | sibling = w->next; | 2916 | sibling = w->next; |
| 2918 | s = XWINDOW (sibling); | 2917 | s = XWINDOW (sibling); |
| 2919 | wset_prev (s, Qnil); | 2918 | wset_prev (s, Qnil); |
| 2920 | if (!NILP (XWINDOW (w->parent)->vchild)) | 2919 | wset_combination (XWINDOW (w->parent), |
| 2921 | wset_vchild (XWINDOW (w->parent), sibling); | 2920 | XWINDOW (w->parent)->horizontal, sibling); |
| 2922 | else | ||
| 2923 | wset_hchild (XWINDOW (w->parent), sibling); | ||
| 2924 | } | 2921 | } |
| 2925 | 2922 | ||
| 2926 | /* Delete ROOT and all child windows of ROOT. */ | 2923 | /* Delete ROOT and all child windows of ROOT. */ |
| 2927 | if (!NILP (r->vchild)) | 2924 | if (WINDOWP (r->contents)) |
| 2928 | { | 2925 | { |
| 2929 | delete_all_child_windows (r->vchild); | 2926 | delete_all_child_windows (r->contents); |
| 2930 | wset_vchild (r, Qnil); | 2927 | wset_combination (r, 0, Qnil); |
| 2931 | } | ||
| 2932 | else if (!NILP (r->hchild)) | ||
| 2933 | { | ||
| 2934 | delete_all_child_windows (r->hchild); | ||
| 2935 | wset_hchild (r, Qnil); | ||
| 2936 | } | 2928 | } |
| 2937 | 2929 | ||
| 2938 | replace_window (root, window, 1); | 2930 | replace_window (root, window, 1); |
| 2939 | 2931 | ||
| 2940 | /* This must become SWINDOW anyway ....... */ | 2932 | /* This must become SWINDOW anyway ....... */ |
| 2941 | if (!NILP (w->buffer) && !resize_failed) | 2933 | if (BUFFERP (w->contents) && !resize_failed) |
| 2942 | { | 2934 | { |
| 2943 | /* Try to minimize scrolling, by setting the window start to the | 2935 | /* Try to minimize scrolling, by setting the window start to the |
| 2944 | point will cause the text at the old window start to be at the | 2936 | point will cause the text at the old window start to be at the |
| @@ -2947,18 +2939,18 @@ window-start value is reasonable when this function is called. */) | |||
| 2947 | when the display is not current, due to typeahead). */ | 2939 | when the display is not current, due to typeahead). */ |
| 2948 | new_top = WINDOW_TOP_EDGE_LINE (w) - FRAME_TOP_MARGIN (XFRAME (WINDOW_FRAME (w))); | 2940 | new_top = WINDOW_TOP_EDGE_LINE (w) - FRAME_TOP_MARGIN (XFRAME (WINDOW_FRAME (w))); |
| 2949 | if (new_top != top | 2941 | if (new_top != top |
| 2950 | && startpos >= BUF_BEGV (XBUFFER (w->buffer)) | 2942 | && startpos >= BUF_BEGV (XBUFFER (w->contents)) |
| 2951 | && startpos <= BUF_ZV (XBUFFER (w->buffer))) | 2943 | && startpos <= BUF_ZV (XBUFFER (w->contents))) |
| 2952 | { | 2944 | { |
| 2953 | struct position pos; | 2945 | struct position pos; |
| 2954 | struct buffer *obuf = current_buffer; | 2946 | struct buffer *obuf = current_buffer; |
| 2955 | 2947 | ||
| 2956 | Fset_buffer (w->buffer); | 2948 | Fset_buffer (w->contents); |
| 2957 | /* This computation used to temporarily move point, but that | 2949 | /* This computation used to temporarily move point, but that |
| 2958 | can have unwanted side effects due to text properties. */ | 2950 | can have unwanted side effects due to text properties. */ |
| 2959 | pos = *vmotion (startpos, startbyte, -top, w); | 2951 | pos = *vmotion (startpos, startbyte, -top, w); |
| 2960 | 2952 | ||
| 2961 | set_marker_both (w->start, w->buffer, pos.bufpos, pos.bytepos); | 2953 | set_marker_both (w->start, w->contents, pos.bufpos, pos.bytepos); |
| 2962 | w->window_end_valid = 0; | 2954 | w->window_end_valid = 0; |
| 2963 | w->start_at_line_beg = (pos.bytepos == BEGV_BYTE | 2955 | w->start_at_line_beg = (pos.bytepos == BEGV_BYTE |
| 2964 | || FETCH_BYTE (pos.bytepos - 1) == '\n'); | 2956 | || FETCH_BYTE (pos.bytepos - 1) == '\n'); |
| @@ -3158,7 +3150,7 @@ set_window_buffer (Lisp_Object window, Lisp_Object buffer, | |||
| 3158 | struct window *w = XWINDOW (window); | 3150 | struct window *w = XWINDOW (window); |
| 3159 | struct buffer *b = XBUFFER (buffer); | 3151 | struct buffer *b = XBUFFER (buffer); |
| 3160 | ptrdiff_t count = SPECPDL_INDEX (); | 3152 | ptrdiff_t count = SPECPDL_INDEX (); |
| 3161 | int samebuf = EQ (buffer, w->buffer); | 3153 | int samebuf = EQ (buffer, w->contents); |
| 3162 | 3154 | ||
| 3163 | wset_buffer (w, buffer); | 3155 | wset_buffer (w, buffer); |
| 3164 | 3156 | ||
| @@ -3277,7 +3269,7 @@ This function runs `window-scroll-functions' before running | |||
| 3277 | if (!BUFFER_LIVE_P (XBUFFER (buffer))) | 3269 | if (!BUFFER_LIVE_P (XBUFFER (buffer))) |
| 3278 | error ("Attempt to display deleted buffer"); | 3270 | error ("Attempt to display deleted buffer"); |
| 3279 | 3271 | ||
| 3280 | tem = w->buffer; | 3272 | tem = w->contents; |
| 3281 | if (NILP (tem)) | 3273 | if (NILP (tem)) |
| 3282 | error ("Window is deleted"); | 3274 | error ("Window is deleted"); |
| 3283 | else | 3275 | else |
| @@ -3330,8 +3322,8 @@ displaying that buffer. */) | |||
| 3330 | struct window *w = XWINDOW (object); | 3322 | struct window *w = XWINDOW (object); |
| 3331 | mark_window_display_accurate (object, 0); | 3323 | mark_window_display_accurate (object, 0); |
| 3332 | w->update_mode_line = 1; | 3324 | w->update_mode_line = 1; |
| 3333 | if (BUFFERP (w->buffer)) | 3325 | if (BUFFERP (w->contents)) |
| 3334 | XBUFFER (w->buffer)->prevent_redisplay_optimizations_p = 1; | 3326 | XBUFFER (w->contents)->prevent_redisplay_optimizations_p = 1; |
| 3335 | ++update_mode_lines; | 3327 | ++update_mode_lines; |
| 3336 | return Qt; | 3328 | return Qt; |
| 3337 | } | 3329 | } |
| @@ -3400,7 +3392,7 @@ temp_output_buffer_show (register Lisp_Object buf) | |||
| 3400 | record_unwind_protect (Fset_buffer, prev_buffer); | 3392 | record_unwind_protect (Fset_buffer, prev_buffer); |
| 3401 | record_unwind_protect (select_window_norecord, prev_window); | 3393 | record_unwind_protect (select_window_norecord, prev_window); |
| 3402 | Fselect_window (window, Qt); | 3394 | Fselect_window (window, Qt); |
| 3403 | Fset_buffer (w->buffer); | 3395 | Fset_buffer (w->contents); |
| 3404 | Frun_hooks (1, &Qtemp_buffer_show_hook); | 3396 | Frun_hooks (1, &Qtemp_buffer_show_hook); |
| 3405 | unbind_to (count, Qnil); | 3397 | unbind_to (count, Qnil); |
| 3406 | } | 3398 | } |
| @@ -3421,7 +3413,7 @@ make_parent_window (Lisp_Object window, bool horflag) | |||
| 3421 | memcpy ((char *) p + sizeof (struct vectorlike_header), | 3413 | memcpy ((char *) p + sizeof (struct vectorlike_header), |
| 3422 | (char *) o + sizeof (struct vectorlike_header), | 3414 | (char *) o + sizeof (struct vectorlike_header), |
| 3423 | word_size * VECSIZE (struct window)); | 3415 | word_size * VECSIZE (struct window)); |
| 3424 | /* P's buffer slot may change from nil to a buffer. */ | 3416 | /* P's buffer slot may change from nil to a buffer... */ |
| 3425 | adjust_window_count (p, 1); | 3417 | adjust_window_count (p, 1); |
| 3426 | XSETWINDOW (parent, p); | 3418 | XSETWINDOW (parent, p); |
| 3427 | 3419 | ||
| @@ -3430,12 +3422,11 @@ make_parent_window (Lisp_Object window, bool horflag) | |||
| 3430 | wset_next (o, Qnil); | 3422 | wset_next (o, Qnil); |
| 3431 | wset_prev (o, Qnil); | 3423 | wset_prev (o, Qnil); |
| 3432 | wset_parent (o, parent); | 3424 | wset_parent (o, parent); |
| 3433 | 3425 | /* ...but now P becomes an internal window. */ | |
| 3434 | wset_hchild (p, horflag ? window : Qnil); | ||
| 3435 | wset_vchild (p, horflag ? Qnil : window); | ||
| 3436 | wset_start (p, Qnil); | 3426 | wset_start (p, Qnil); |
| 3437 | wset_pointm (p, Qnil); | 3427 | wset_pointm (p, Qnil); |
| 3438 | wset_buffer (p, Qnil); | 3428 | wset_buffer (p, Qnil); |
| 3429 | wset_combination (p, horflag, window); | ||
| 3439 | wset_combination_limit (p, Qnil); | 3430 | wset_combination_limit (p, Qnil); |
| 3440 | wset_window_parameters (p, Qnil); | 3431 | wset_window_parameters (p, Qnil); |
| 3441 | } | 3432 | } |
| @@ -3524,10 +3515,10 @@ window_resize_check (struct window *w, bool horflag) | |||
| 3524 | { | 3515 | { |
| 3525 | struct window *c; | 3516 | struct window *c; |
| 3526 | 3517 | ||
| 3527 | if (!NILP (w->vchild)) | 3518 | if (WINDOW_VERTICAL_COMBINATION_P (w)) |
| 3528 | /* W is a vertical combination. */ | 3519 | /* W is a vertical combination. */ |
| 3529 | { | 3520 | { |
| 3530 | c = XWINDOW (w->vchild); | 3521 | c = XWINDOW (w->contents); |
| 3531 | if (horflag) | 3522 | if (horflag) |
| 3532 | /* All child windows of W must have the same width as W. */ | 3523 | /* All child windows of W must have the same width as W. */ |
| 3533 | { | 3524 | { |
| @@ -3555,10 +3546,10 @@ window_resize_check (struct window *w, bool horflag) | |||
| 3555 | return (sum_of_sizes == XINT (w->new_total)); | 3546 | return (sum_of_sizes == XINT (w->new_total)); |
| 3556 | } | 3547 | } |
| 3557 | } | 3548 | } |
| 3558 | else if (!NILP (w->hchild)) | 3549 | else if (WINDOW_HORIZONTAL_COMBINATION_P (w)) |
| 3559 | /* W is a horizontal combination. */ | 3550 | /* W is a horizontal combination. */ |
| 3560 | { | 3551 | { |
| 3561 | c = XWINDOW (w->hchild); | 3552 | c = XWINDOW (w->contents); |
| 3562 | if (horflag) | 3553 | if (horflag) |
| 3563 | /* The sum of the widths of the child windows of W must equal W's | 3554 | /* The sum of the widths of the child windows of W must equal W's |
| 3564 | width. */ | 3555 | width. */ |
| @@ -3625,10 +3616,10 @@ window_resize_apply (struct window *w, bool horflag) | |||
| 3625 | pos = w->top_line; | 3616 | pos = w->top_line; |
| 3626 | } | 3617 | } |
| 3627 | 3618 | ||
| 3628 | if (!NILP (w->vchild)) | 3619 | if (WINDOW_VERTICAL_COMBINATION_P (w)) |
| 3629 | /* W is a vertical combination. */ | 3620 | /* W is a vertical combination. */ |
| 3630 | { | 3621 | { |
| 3631 | c = XWINDOW (w->vchild); | 3622 | c = XWINDOW (w->contents); |
| 3632 | while (c) | 3623 | while (c) |
| 3633 | { | 3624 | { |
| 3634 | if (horflag) | 3625 | if (horflag) |
| @@ -3641,10 +3632,10 @@ window_resize_apply (struct window *w, bool horflag) | |||
| 3641 | c = NILP (c->next) ? 0 : XWINDOW (c->next); | 3632 | c = NILP (c->next) ? 0 : XWINDOW (c->next); |
| 3642 | } | 3633 | } |
| 3643 | } | 3634 | } |
| 3644 | else if (!NILP (w->hchild)) | 3635 | else if (WINDOW_HORIZONTAL_COMBINATION_P (w)) |
| 3645 | /* W is a horizontal combination. */ | 3636 | /* W is a horizontal combination. */ |
| 3646 | { | 3637 | { |
| 3647 | c = XWINDOW (w->hchild); | 3638 | c = XWINDOW (w->contents); |
| 3648 | while (c) | 3639 | while (c) |
| 3649 | { | 3640 | { |
| 3650 | if (horflag) | 3641 | if (horflag) |
| @@ -3727,7 +3718,7 @@ resize_frame_windows (struct frame *f, int size, bool horflag) | |||
| 3727 | ? 1 : 0))); | 3718 | ? 1 : 0))); |
| 3728 | 3719 | ||
| 3729 | r->top_line = FRAME_TOP_MARGIN (f); | 3720 | r->top_line = FRAME_TOP_MARGIN (f); |
| 3730 | if (NILP (r->vchild) && NILP (r->hchild)) | 3721 | if (WINDOW_LEAF_P (r)) |
| 3731 | /* For a leaf root window just set the size. */ | 3722 | /* For a leaf root window just set the size. */ |
| 3732 | if (horflag) | 3723 | if (horflag) |
| 3733 | r->total_cols = new_size; | 3724 | r->total_cols = new_size; |
| @@ -3842,9 +3833,9 @@ set correctly. See the code of `split-window' for how this is done. */) | |||
| 3842 | combination_limit = | 3833 | combination_limit = |
| 3843 | EQ (Vwindow_combination_limit, Qt) | 3834 | EQ (Vwindow_combination_limit, Qt) |
| 3844 | || NILP (o->parent) | 3835 | || NILP (o->parent) |
| 3845 | || NILP (horflag | 3836 | || (horflag |
| 3846 | ? (XWINDOW (o->parent)->hchild) | 3837 | ? WINDOW_VERTICAL_COMBINATION_P (XWINDOW (o->parent)) |
| 3847 | : (XWINDOW (o->parent)->vchild)); | 3838 | : WINDOW_HORIZONTAL_COMBINATION_P (XWINDOW (o->parent))); |
| 3848 | 3839 | ||
| 3849 | /* We need a live reference window to initialize some parameters. */ | 3840 | /* We need a live reference window to initialize some parameters. */ |
| 3850 | if (WINDOW_LIVE_P (old)) | 3841 | if (WINDOW_LIVE_P (old)) |
| @@ -3914,17 +3905,12 @@ set correctly. See the code of `split-window' for how this is done. */) | |||
| 3914 | n = XWINDOW (new); | 3905 | n = XWINDOW (new); |
| 3915 | wset_frame (n, frame); | 3906 | wset_frame (n, frame); |
| 3916 | wset_parent (n, o->parent); | 3907 | wset_parent (n, o->parent); |
| 3917 | wset_vchild (n, Qnil); | ||
| 3918 | wset_hchild (n, Qnil); | ||
| 3919 | 3908 | ||
| 3920 | if (EQ (side, Qabove) || EQ (side, Qleft)) | 3909 | if (EQ (side, Qabove) || EQ (side, Qleft)) |
| 3921 | { | 3910 | { |
| 3922 | wset_prev (n, o->prev); | 3911 | wset_prev (n, o->prev); |
| 3923 | if (NILP (n->prev)) | 3912 | if (NILP (n->prev)) |
| 3924 | if (horflag) | 3913 | wset_combination (p, horflag, new); |
| 3925 | wset_hchild (p, new); | ||
| 3926 | else | ||
| 3927 | wset_vchild (p, new); | ||
| 3928 | else | 3914 | else |
| 3929 | wset_next (XWINDOW (n->prev), new); | 3915 | wset_next (XWINDOW (n->prev), new); |
| 3930 | wset_next (n, old); | 3916 | wset_next (n, old); |
| @@ -3973,7 +3959,7 @@ set correctly. See the code of `split-window' for how this is done. */) | |||
| 3973 | adjust_glyphs (f); | 3959 | adjust_glyphs (f); |
| 3974 | /* Set buffer of NEW to buffer of reference window. Don't run | 3960 | /* Set buffer of NEW to buffer of reference window. Don't run |
| 3975 | any hooks. */ | 3961 | any hooks. */ |
| 3976 | set_window_buffer (new, r->buffer, 0, 1); | 3962 | set_window_buffer (new, r->contents, 0, 1); |
| 3977 | unblock_input (); | 3963 | unblock_input (); |
| 3978 | 3964 | ||
| 3979 | /* Maybe we should run the scroll functions in Elisp (which already | 3965 | /* Maybe we should run the scroll functions in Elisp (which already |
| @@ -3995,13 +3981,11 @@ Signal an error when WINDOW is the only window on its frame. */) | |||
| 3995 | register Lisp_Object parent, sibling, frame, root; | 3981 | register Lisp_Object parent, sibling, frame, root; |
| 3996 | struct window *w, *p, *s, *r; | 3982 | struct window *w, *p, *s, *r; |
| 3997 | struct frame *f; | 3983 | struct frame *f; |
| 3998 | bool horflag; | 3984 | bool horflag, before_sibling = 0; |
| 3999 | int before_sibling = 0; | ||
| 4000 | 3985 | ||
| 4001 | w = decode_any_window (window); | 3986 | w = decode_any_window (window); |
| 4002 | XSETWINDOW (window, w); | 3987 | XSETWINDOW (window, w); |
| 4003 | if (NILP (w->buffer) | 3988 | if (NILP (w->contents)) |
| 4004 | && NILP (w->hchild) && NILP (w->vchild)) | ||
| 4005 | /* It's a no-op to delete an already deleted window. */ | 3989 | /* It's a no-op to delete an already deleted window. */ |
| 4006 | return Qnil; | 3990 | return Qnil; |
| 4007 | 3991 | ||
| @@ -4015,7 +3999,7 @@ Signal an error when WINDOW is the only window on its frame. */) | |||
| 4015 | error ("Attempt to delete sole window of parent"); | 3999 | error ("Attempt to delete sole window of parent"); |
| 4016 | 4000 | ||
| 4017 | p = XWINDOW (parent); | 4001 | p = XWINDOW (parent); |
| 4018 | horflag = NILP (p->vchild); | 4002 | horflag = WINDOW_HORIZONTAL_COMBINATION_P (p); |
| 4019 | 4003 | ||
| 4020 | frame = WINDOW_FRAME (w); | 4004 | frame = WINDOW_FRAME (w); |
| 4021 | f = XFRAME (frame); | 4005 | f = XFRAME (frame); |
| @@ -4033,10 +4017,7 @@ Signal an error when WINDOW is the only window on its frame. */) | |||
| 4033 | sibling = w->next; | 4017 | sibling = w->next; |
| 4034 | s = XWINDOW (sibling); | 4018 | s = XWINDOW (sibling); |
| 4035 | wset_prev (s, Qnil); | 4019 | wset_prev (s, Qnil); |
| 4036 | if (horflag) | 4020 | wset_combination (p, horflag, sibling); |
| 4037 | wset_hchild (p, sibling); | ||
| 4038 | else | ||
| 4039 | wset_vchild (p, sibling); | ||
| 4040 | } | 4021 | } |
| 4041 | else | 4022 | else |
| 4042 | /* Get SIBLING above (on the left of) WINDOW. */ | 4023 | /* Get SIBLING above (on the left of) WINDOW. */ |
| @@ -4075,17 +4056,12 @@ Signal an error when WINDOW is the only window on its frame. */) | |||
| 4075 | wset_next (w, Qnil); /* Don't delete w->next too. */ | 4056 | wset_next (w, Qnil); /* Don't delete w->next too. */ |
| 4076 | free_window_matrices (w); | 4057 | free_window_matrices (w); |
| 4077 | 4058 | ||
| 4078 | if (!NILP (w->vchild)) | 4059 | if (WINDOWP (w->contents)) |
| 4079 | { | 4060 | { |
| 4080 | delete_all_child_windows (w->vchild); | 4061 | delete_all_child_windows (w->contents); |
| 4081 | wset_vchild (w, Qnil); | 4062 | wset_combination (w, 0, Qnil); |
| 4082 | } | 4063 | } |
| 4083 | else if (!NILP (w->hchild)) | 4064 | else |
| 4084 | { | ||
| 4085 | delete_all_child_windows (w->hchild); | ||
| 4086 | wset_hchild (w, Qnil); | ||
| 4087 | } | ||
| 4088 | else if (!NILP (w->buffer)) | ||
| 4089 | { | 4065 | { |
| 4090 | unshow_buffer (w); | 4066 | unshow_buffer (w); |
| 4091 | unchain_marker (XMARKER (w->pointm)); | 4067 | unchain_marker (XMARKER (w->pointm)); |
| @@ -4104,8 +4080,7 @@ Signal an error when WINDOW is the only window on its frame. */) | |||
| 4104 | wset_normal_cols (s, p->normal_cols); | 4080 | wset_normal_cols (s, p->normal_cols); |
| 4105 | wset_normal_lines (s, p->normal_lines); | 4081 | wset_normal_lines (s, p->normal_lines); |
| 4106 | /* Mark PARENT as deleted. */ | 4082 | /* Mark PARENT as deleted. */ |
| 4107 | wset_vchild (p, Qnil); | 4083 | wset_combination (p, 0, Qnil); |
| 4108 | wset_hchild (p, Qnil); | ||
| 4109 | /* Try to merge SIBLING into its new parent. */ | 4084 | /* Try to merge SIBLING into its new parent. */ |
| 4110 | recombine_windows (sibling); | 4085 | recombine_windows (sibling); |
| 4111 | } | 4086 | } |
| @@ -4153,10 +4128,7 @@ Signal an error when WINDOW is the only window on its frame. */) | |||
| 4153 | if (before_sibling) | 4128 | if (before_sibling) |
| 4154 | { | 4129 | { |
| 4155 | wset_prev (s, window); | 4130 | wset_prev (s, window); |
| 4156 | if (horflag) | 4131 | wset_combination (p, horflag, window); |
| 4157 | wset_hchild (p, window); | ||
| 4158 | else | ||
| 4159 | wset_vchild (p, window); | ||
| 4160 | } | 4132 | } |
| 4161 | else | 4133 | else |
| 4162 | { | 4134 | { |
| @@ -4299,10 +4271,8 @@ mark_window_cursors_off (struct window *w) | |||
| 4299 | { | 4271 | { |
| 4300 | while (w) | 4272 | while (w) |
| 4301 | { | 4273 | { |
| 4302 | if (!NILP (w->hchild)) | 4274 | if (WINDOWP (w->contents)) |
| 4303 | mark_window_cursors_off (XWINDOW (w->hchild)); | 4275 | mark_window_cursors_off (XWINDOW (w->contents)); |
| 4304 | else if (!NILP (w->vchild)) | ||
| 4305 | mark_window_cursors_off (XWINDOW (w->vchild)); | ||
| 4306 | else | 4276 | else |
| 4307 | w->phys_cursor_on_p = 0; | 4277 | w->phys_cursor_on_p = 0; |
| 4308 | 4278 | ||
| @@ -4321,8 +4291,7 @@ window_internal_height (struct window *w) | |||
| 4321 | if (!MINI_WINDOW_P (w)) | 4291 | if (!MINI_WINDOW_P (w)) |
| 4322 | { | 4292 | { |
| 4323 | if (!NILP (w->parent) | 4293 | if (!NILP (w->parent) |
| 4324 | || !NILP (w->vchild) | 4294 | || WINDOWP (w->contents) |
| 4325 | || !NILP (w->hchild) | ||
| 4326 | || !NILP (w->next) | 4295 | || !NILP (w->next) |
| 4327 | || !NILP (w->prev) | 4296 | || !NILP (w->prev) |
| 4328 | || WINDOW_WANTS_MODELINE_P (w)) | 4297 | || WINDOW_WANTS_MODELINE_P (w)) |
| @@ -4461,7 +4430,7 @@ window_scroll_pixel_based (Lisp_Object window, int n, int whole, int noerror) | |||
| 4461 | else | 4430 | else |
| 4462 | spos = min (XINT (Fline_end_position (Qnil)) + 1, ZV); | 4431 | spos = min (XINT (Fline_end_position (Qnil)) + 1, ZV); |
| 4463 | set_marker_restricted (w->start, make_number (spos), | 4432 | set_marker_restricted (w->start, make_number (spos), |
| 4464 | w->buffer); | 4433 | w->contents); |
| 4465 | w->start_at_line_beg = 1; | 4434 | w->start_at_line_beg = 1; |
| 4466 | w->update_mode_line = 1; | 4435 | w->update_mode_line = 1; |
| 4467 | w->last_modified = 0; | 4436 | w->last_modified = 0; |
| @@ -4585,7 +4554,7 @@ window_scroll_pixel_based (Lisp_Object window, int n, int whole, int noerror) | |||
| 4585 | 4554 | ||
| 4586 | /* If control gets here, then we vscrolled. */ | 4555 | /* If control gets here, then we vscrolled. */ |
| 4587 | 4556 | ||
| 4588 | XBUFFER (w->buffer)->prevent_redisplay_optimizations_p = 1; | 4557 | XBUFFER (w->contents)->prevent_redisplay_optimizations_p = 1; |
| 4589 | 4558 | ||
| 4590 | /* Don't try to change the window start below. */ | 4559 | /* Don't try to change the window start below. */ |
| 4591 | vscrolled = 1; | 4560 | vscrolled = 1; |
| @@ -4605,7 +4574,7 @@ window_scroll_pixel_based (Lisp_Object window, int n, int whole, int noerror) | |||
| 4605 | } | 4574 | } |
| 4606 | 4575 | ||
| 4607 | /* Set the window start, and set up the window for redisplay. */ | 4576 | /* Set the window start, and set up the window for redisplay. */ |
| 4608 | set_marker_restricted_both (w->start, w->buffer, IT_CHARPOS (it), | 4577 | set_marker_restricted_both (w->start, w->contents, IT_CHARPOS (it), |
| 4609 | IT_BYTEPOS (it)); | 4578 | IT_BYTEPOS (it)); |
| 4610 | bytepos = marker_byte_position (w->start); | 4579 | bytepos = marker_byte_position (w->start); |
| 4611 | w->start_at_line_beg = (pos == BEGV || FETCH_BYTE (bytepos - 1) == '\n'); | 4580 | w->start_at_line_beg = (pos == BEGV || FETCH_BYTE (bytepos - 1) == '\n'); |
| @@ -4805,7 +4774,7 @@ window_scroll_line_based (Lisp_Object window, int n, int whole, int noerror) | |||
| 4805 | int this_scroll_margin = | 4774 | int this_scroll_margin = |
| 4806 | max (0, min (scroll_margin, w->total_lines / 4)); | 4775 | max (0, min (scroll_margin, w->total_lines / 4)); |
| 4807 | 4776 | ||
| 4808 | set_marker_restricted_both (w->start, w->buffer, pos, pos_byte); | 4777 | set_marker_restricted_both (w->start, w->contents, pos, pos_byte); |
| 4809 | w->start_at_line_beg = !NILP (bolp); | 4778 | w->start_at_line_beg = !NILP (bolp); |
| 4810 | w->update_mode_line = 1; | 4779 | w->update_mode_line = 1; |
| 4811 | w->last_modified = 0; | 4780 | w->last_modified = 0; |
| @@ -4899,10 +4868,10 @@ scroll_command (Lisp_Object n, int direction) | |||
| 4899 | 4868 | ||
| 4900 | /* If selected window's buffer isn't current, make it current for | 4869 | /* If selected window's buffer isn't current, make it current for |
| 4901 | the moment. But don't screw up if window_scroll gets an error. */ | 4870 | the moment. But don't screw up if window_scroll gets an error. */ |
| 4902 | if (XBUFFER (XWINDOW (selected_window)->buffer) != current_buffer) | 4871 | if (XBUFFER (XWINDOW (selected_window)->contents) != current_buffer) |
| 4903 | { | 4872 | { |
| 4904 | record_unwind_protect (save_excursion_restore, save_excursion_save ()); | 4873 | record_unwind_protect (save_excursion_restore, save_excursion_save ()); |
| 4905 | Fset_buffer (XWINDOW (selected_window)->buffer); | 4874 | Fset_buffer (XWINDOW (selected_window)->contents); |
| 4906 | 4875 | ||
| 4907 | /* Make redisplay consider other windows than just selected_window. */ | 4876 | /* Make redisplay consider other windows than just selected_window. */ |
| 4908 | ++windows_or_buffers_changed; | 4877 | ++windows_or_buffers_changed; |
| @@ -5017,7 +4986,7 @@ specifies the window to scroll. This takes precedence over | |||
| 5017 | record_unwind_protect (save_excursion_restore, save_excursion_save ()); | 4986 | record_unwind_protect (save_excursion_restore, save_excursion_save ()); |
| 5018 | ++windows_or_buffers_changed; | 4987 | ++windows_or_buffers_changed; |
| 5019 | 4988 | ||
| 5020 | Fset_buffer (w->buffer); | 4989 | Fset_buffer (w->contents); |
| 5021 | SET_PT_BOTH (marker_position (w->pointm), marker_byte_position (w->pointm)); | 4990 | SET_PT_BOTH (marker_position (w->pointm), marker_byte_position (w->pointm)); |
| 5022 | 4991 | ||
| 5023 | if (NILP (arg)) | 4992 | if (NILP (arg)) |
| @@ -5111,10 +5080,10 @@ displayed_window_lines (struct window *w) | |||
| 5111 | int bottom_y; | 5080 | int bottom_y; |
| 5112 | void *itdata = NULL; | 5081 | void *itdata = NULL; |
| 5113 | 5082 | ||
| 5114 | if (XBUFFER (w->buffer) != current_buffer) | 5083 | if (XBUFFER (w->contents) != current_buffer) |
| 5115 | { | 5084 | { |
| 5116 | old_buffer = current_buffer; | 5085 | old_buffer = current_buffer; |
| 5117 | set_buffer_internal (XBUFFER (w->buffer)); | 5086 | set_buffer_internal (XBUFFER (w->contents)); |
| 5118 | } | 5087 | } |
| 5119 | else | 5088 | else |
| 5120 | old_buffer = NULL; | 5089 | old_buffer = NULL; |
| @@ -5176,7 +5145,7 @@ and redisplay normally--don't erase and redraw the frame. */) | |||
| 5176 | (register Lisp_Object arg) | 5145 | (register Lisp_Object arg) |
| 5177 | { | 5146 | { |
| 5178 | struct window *w = XWINDOW (selected_window); | 5147 | struct window *w = XWINDOW (selected_window); |
| 5179 | struct buffer *buf = XBUFFER (w->buffer); | 5148 | struct buffer *buf = XBUFFER (w->contents); |
| 5180 | struct buffer *obuf = current_buffer; | 5149 | struct buffer *obuf = current_buffer; |
| 5181 | int center_p = 0; | 5150 | int center_p = 0; |
| 5182 | ptrdiff_t charpos, bytepos; | 5151 | ptrdiff_t charpos, bytepos; |
| @@ -5342,7 +5311,7 @@ and redisplay normally--don't erase and redraw the frame. */) | |||
| 5342 | } | 5311 | } |
| 5343 | 5312 | ||
| 5344 | /* Set the new window start. */ | 5313 | /* Set the new window start. */ |
| 5345 | set_marker_both (w->start, w->buffer, charpos, bytepos); | 5314 | set_marker_both (w->start, w->contents, charpos, bytepos); |
| 5346 | w->window_end_valid = 0; | 5315 | w->window_end_valid = 0; |
| 5347 | 5316 | ||
| 5348 | w->optional_new_start = 1; | 5317 | w->optional_new_start = 1; |
| @@ -5386,9 +5355,8 @@ zero means top of window, negative means relative to bottom of window. */) | |||
| 5386 | int this_scroll_margin; | 5355 | int this_scroll_margin; |
| 5387 | #endif | 5356 | #endif |
| 5388 | 5357 | ||
| 5389 | if (!(BUFFERP (w->buffer) | 5358 | if (!(BUFFERP (w->contents) && XBUFFER (w->contents) == current_buffer)) |
| 5390 | && XBUFFER (w->buffer) == current_buffer)) | 5359 | /* This test is needed to make sure PT/PT_BYTE make sense in w->contents |
| 5391 | /* This test is needed to make sure PT/PT_BYTE make sense in w->buffer | ||
| 5392 | when passed below to set_marker_both. */ | 5360 | when passed below to set_marker_both. */ |
| 5393 | error ("move-to-window-line called from unrelated buffer"); | 5361 | error ("move-to-window-line called from unrelated buffer"); |
| 5394 | 5362 | ||
| @@ -5398,7 +5366,7 @@ zero means top of window, negative means relative to bottom of window. */) | |||
| 5398 | { | 5366 | { |
| 5399 | int height = window_internal_height (w); | 5367 | int height = window_internal_height (w); |
| 5400 | Fvertical_motion (make_number (- (height / 2)), window); | 5368 | Fvertical_motion (make_number (- (height / 2)), window); |
| 5401 | set_marker_both (w->start, w->buffer, PT, PT_BYTE); | 5369 | set_marker_both (w->start, w->contents, PT, PT_BYTE); |
| 5402 | w->start_at_line_beg = !NILP (Fbolp ()); | 5370 | w->start_at_line_beg = !NILP (Fbolp ()); |
| 5403 | w->force_start = 1; | 5371 | w->force_start = 1; |
| 5404 | } | 5372 | } |
| @@ -5548,9 +5516,9 @@ the return value is nil. Otherwise the value is t. */) | |||
| 5548 | window-point of the final-selected-window to the window-point of | 5516 | window-point of the final-selected-window to the window-point of |
| 5549 | the current-selected-window. So we have to be careful which | 5517 | the current-selected-window. So we have to be careful which |
| 5550 | point of the current-buffer we copy into old_point. */ | 5518 | point of the current-buffer we copy into old_point. */ |
| 5551 | if (EQ (XWINDOW (data->current_window)->buffer, new_current_buffer) | 5519 | if (EQ (XWINDOW (data->current_window)->contents, new_current_buffer) |
| 5552 | && WINDOWP (selected_window) | 5520 | && WINDOWP (selected_window) |
| 5553 | && EQ (XWINDOW (selected_window)->buffer, new_current_buffer) | 5521 | && EQ (XWINDOW (selected_window)->contents, new_current_buffer) |
| 5554 | && !EQ (selected_window, data->current_window)) | 5522 | && !EQ (selected_window, data->current_window)) |
| 5555 | old_point = marker_position (XWINDOW (data->current_window)->pointm); | 5523 | old_point = marker_position (XWINDOW (data->current_window)->pointm); |
| 5556 | else | 5524 | else |
| @@ -5564,7 +5532,7 @@ the return value is nil. Otherwise the value is t. */) | |||
| 5564 | So if possible we want this arbitrary choice of "which point" to | 5532 | So if possible we want this arbitrary choice of "which point" to |
| 5565 | be the one from the to-be-selected-window so as to prevent this | 5533 | be the one from the to-be-selected-window so as to prevent this |
| 5566 | window's cursor from being copied from another window. */ | 5534 | window's cursor from being copied from another window. */ |
| 5567 | if (EQ (XWINDOW (data->current_window)->buffer, new_current_buffer) | 5535 | if (EQ (XWINDOW (data->current_window)->contents, new_current_buffer) |
| 5568 | /* If current_window = selected_window, its point is in BUF_PT. */ | 5536 | /* If current_window = selected_window, its point is in BUF_PT. */ |
| 5569 | && !EQ (selected_window, data->current_window)) | 5537 | && !EQ (selected_window, data->current_window)) |
| 5570 | old_point = marker_position (XWINDOW (data->current_window)->pointm); | 5538 | old_point = marker_position (XWINDOW (data->current_window)->pointm); |
| @@ -5606,8 +5574,8 @@ the return value is nil. Otherwise the value is t. */) | |||
| 5606 | p = SAVED_WINDOW_N (saved_windows, k); | 5574 | p = SAVED_WINDOW_N (saved_windows, k); |
| 5607 | window = p->window; | 5575 | window = p->window; |
| 5608 | w = XWINDOW (window); | 5576 | w = XWINDOW (window); |
| 5609 | if (!NILP (w->buffer) | 5577 | if (BUFFERP (w->contents) |
| 5610 | && !EQ (w->buffer, p->buffer) | 5578 | && !EQ (w->contents, p->buffer) |
| 5611 | && BUFFER_LIVE_P (XBUFFER (p->buffer))) | 5579 | && BUFFER_LIVE_P (XBUFFER (p->buffer))) |
| 5612 | /* If a window we restore gets another buffer, record the | 5580 | /* If a window we restore gets another buffer, record the |
| 5613 | window's old buffer. */ | 5581 | window's old buffer. */ |
| @@ -5640,13 +5608,13 @@ the return value is nil. Otherwise the value is t. */) | |||
| 5640 | window holds garbage.) We do this now, before | 5608 | window holds garbage.) We do this now, before |
| 5641 | restoring the window contents, and prevent it from | 5609 | restoring the window contents, and prevent it from |
| 5642 | being done later on when we select a new window. */ | 5610 | being done later on when we select a new window. */ |
| 5643 | if (! NILP (XWINDOW (selected_window)->buffer)) | 5611 | if (! NILP (XWINDOW (selected_window)->contents)) |
| 5644 | { | 5612 | { |
| 5645 | w = XWINDOW (selected_window); | 5613 | w = XWINDOW (selected_window); |
| 5646 | set_marker_both (w->pointm, | 5614 | set_marker_both (w->pointm, |
| 5647 | w->buffer, | 5615 | w->contents, |
| 5648 | BUF_PT (XBUFFER (w->buffer)), | 5616 | BUF_PT (XBUFFER (w->contents)), |
| 5649 | BUF_PT_BYTE (XBUFFER (w->buffer))); | 5617 | BUF_PT_BYTE (XBUFFER (w->contents))); |
| 5650 | } | 5618 | } |
| 5651 | 5619 | ||
| 5652 | windows_or_buffers_changed++; | 5620 | windows_or_buffers_changed++; |
| @@ -5693,18 +5661,10 @@ the return value is nil. Otherwise the value is t. */) | |||
| 5693 | { | 5661 | { |
| 5694 | wset_prev (w, Qnil); | 5662 | wset_prev (w, Qnil); |
| 5695 | if (!NILP (w->parent)) | 5663 | if (!NILP (w->parent)) |
| 5696 | { | 5664 | wset_combination (XWINDOW (w->parent), |
| 5697 | if (XINT (p->total_cols) == XWINDOW (w->parent)->total_cols) | 5665 | (XINT (p->total_cols) |
| 5698 | { | 5666 | != XWINDOW (w->parent)->total_cols), |
| 5699 | wset_vchild (XWINDOW (w->parent), p->window); | 5667 | p->window); |
| 5700 | wset_hchild (XWINDOW (w->parent), Qnil); | ||
| 5701 | } | ||
| 5702 | else | ||
| 5703 | { | ||
| 5704 | wset_hchild (XWINDOW (w->parent), p->window); | ||
| 5705 | wset_vchild (XWINDOW (w->parent), Qnil); | ||
| 5706 | } | ||
| 5707 | } | ||
| 5708 | } | 5668 | } |
| 5709 | 5669 | ||
| 5710 | /* If we squirreled away the buffer, restore it now. */ | 5670 | /* If we squirreled away the buffer, restore it now. */ |
| @@ -5753,20 +5713,16 @@ the return value is nil. Otherwise the value is t. */) | |||
| 5753 | w->last_modified = 0; | 5713 | w->last_modified = 0; |
| 5754 | w->last_overlay_modified = 0; | 5714 | w->last_overlay_modified = 0; |
| 5755 | 5715 | ||
| 5756 | /* Reinstall the saved buffer and pointers into it. */ | 5716 | if (BUFFERP (p->buffer) && BUFFER_LIVE_P (XBUFFER (p->buffer))) |
| 5757 | if (NILP (p->buffer)) | ||
| 5758 | /* An internal window. */ | ||
| 5759 | wset_buffer (w, p->buffer); | ||
| 5760 | else if (BUFFER_LIVE_P (XBUFFER (p->buffer))) | ||
| 5761 | /* If saved buffer is alive, install it. */ | 5717 | /* If saved buffer is alive, install it. */ |
| 5762 | { | 5718 | { |
| 5763 | wset_buffer (w, p->buffer); | 5719 | wset_buffer (w, p->buffer); |
| 5764 | w->start_at_line_beg = !NILP (p->start_at_line_beg); | 5720 | w->start_at_line_beg = !NILP (p->start_at_line_beg); |
| 5765 | set_marker_restricted (w->start, p->start, w->buffer); | 5721 | set_marker_restricted (w->start, p->start, w->contents); |
| 5766 | set_marker_restricted (w->pointm, p->pointm, | 5722 | set_marker_restricted (w->pointm, p->pointm, |
| 5767 | w->buffer); | 5723 | w->contents); |
| 5768 | Fset_marker (BVAR (XBUFFER (w->buffer), mark), | 5724 | Fset_marker (BVAR (XBUFFER (w->contents), mark), |
| 5769 | p->mark, w->buffer); | 5725 | p->mark, w->contents); |
| 5770 | 5726 | ||
| 5771 | /* As documented in Fcurrent_window_configuration, don't | 5727 | /* As documented in Fcurrent_window_configuration, don't |
| 5772 | restore the location of point in the buffer which was | 5728 | restore the location of point in the buffer which was |
| @@ -5775,23 +5731,21 @@ the return value is nil. Otherwise the value is t. */) | |||
| 5775 | && XBUFFER (p->buffer) == current_buffer) | 5731 | && XBUFFER (p->buffer) == current_buffer) |
| 5776 | Fgoto_char (w->pointm); | 5732 | Fgoto_char (w->pointm); |
| 5777 | } | 5733 | } |
| 5778 | else if (!NILP (w->buffer) | 5734 | else if (BUFFERP (w->contents) && BUFFER_LIVE_P (XBUFFER (w->contents))) |
| 5779 | && BUFFER_LIVE_P (XBUFFER (w->buffer))) | 5735 | /* Keep window's old buffer; make sure the markers are real. */ |
| 5780 | /* Keep window's old buffer; make sure the markers are | 5736 | { |
| 5781 | real. */ | 5737 | /* Set window markers at start of visible range. */ |
| 5782 | { | 5738 | if (XMARKER (w->start)->buffer == 0) |
| 5783 | /* Set window markers at start of visible range. */ | 5739 | set_marker_restricted_both (w->start, w->contents, 0, 0); |
| 5784 | if (XMARKER (w->start)->buffer == 0) | 5740 | if (XMARKER (w->pointm)->buffer == 0) |
| 5785 | set_marker_restricted_both (w->start, w->buffer, 0, 0); | 5741 | set_marker_restricted_both |
| 5786 | if (XMARKER (w->pointm)->buffer == 0) | 5742 | (w->pointm, w->contents, |
| 5787 | set_marker_restricted_both | 5743 | BUF_PT (XBUFFER (w->contents)), |
| 5788 | (w->pointm, w->buffer, | 5744 | BUF_PT_BYTE (XBUFFER (w->contents))); |
| 5789 | BUF_PT (XBUFFER (w->buffer)), | 5745 | w->start_at_line_beg = 1; |
| 5790 | BUF_PT_BYTE (XBUFFER (w->buffer))); | 5746 | } |
| 5791 | w->start_at_line_beg = 1; | 5747 | else if (!NILP (w->start)) |
| 5792 | } | 5748 | /* Leaf window has no live buffer, get one. */ |
| 5793 | else | ||
| 5794 | /* Window has no live buffer, get one. */ | ||
| 5795 | { | 5749 | { |
| 5796 | /* Get the buffer via other_buffer_safely in order to | 5750 | /* Get the buffer via other_buffer_safely in order to |
| 5797 | avoid showing an unimportant buffer and, if necessary, to | 5751 | avoid showing an unimportant buffer and, if necessary, to |
| @@ -5800,8 +5754,8 @@ the return value is nil. Otherwise the value is t. */) | |||
| 5800 | wset_buffer (w, other_buffer_safely (Fcurrent_buffer ())); | 5754 | wset_buffer (w, other_buffer_safely (Fcurrent_buffer ())); |
| 5801 | /* This will set the markers to beginning of visible | 5755 | /* This will set the markers to beginning of visible |
| 5802 | range. */ | 5756 | range. */ |
| 5803 | set_marker_restricted_both (w->start, w->buffer, 0, 0); | 5757 | set_marker_restricted_both (w->start, w->contents, 0, 0); |
| 5804 | set_marker_restricted_both (w->pointm, w->buffer, 0, 0); | 5758 | set_marker_restricted_both (w->pointm, w->contents, 0, 0); |
| 5805 | w->start_at_line_beg = 1; | 5759 | w->start_at_line_beg = 1; |
| 5806 | if (!NILP (w->dedicated)) | 5760 | if (!NILP (w->dedicated)) |
| 5807 | /* Record this window as dead. */ | 5761 | /* Record this window as dead. */ |
| @@ -5814,17 +5768,17 @@ the return value is nil. Otherwise the value is t. */) | |||
| 5814 | fset_root_window (f, data->root_window); | 5768 | fset_root_window (f, data->root_window); |
| 5815 | /* Arrange *not* to restore point in the buffer that was | 5769 | /* Arrange *not* to restore point in the buffer that was |
| 5816 | current when the window configuration was saved. */ | 5770 | current when the window configuration was saved. */ |
| 5817 | if (EQ (XWINDOW (data->current_window)->buffer, new_current_buffer)) | 5771 | if (EQ (XWINDOW (data->current_window)->contents, new_current_buffer)) |
| 5818 | set_marker_restricted (XWINDOW (data->current_window)->pointm, | 5772 | set_marker_restricted (XWINDOW (data->current_window)->pointm, |
| 5819 | make_number (old_point), | 5773 | make_number (old_point), |
| 5820 | XWINDOW (data->current_window)->buffer); | 5774 | XWINDOW (data->current_window)->contents); |
| 5821 | 5775 | ||
| 5822 | /* In the following call to `select-window', prevent "swapping out | 5776 | /* In the following call to `select-window', prevent "swapping out |
| 5823 | point" in the old selected window using the buffer that has | 5777 | point" in the old selected window using the buffer that has |
| 5824 | been restored into it. We already swapped out that point from | 5778 | been restored into it. We already swapped out that point from |
| 5825 | that window's old buffer. */ | 5779 | that window's old buffer. */ |
| 5826 | select_window (data->current_window, Qnil, 1); | 5780 | select_window (data->current_window, Qnil, 1); |
| 5827 | BVAR (XBUFFER (XWINDOW (selected_window)->buffer), last_selected_window) | 5781 | BVAR (XBUFFER (XWINDOW (selected_window)->contents), last_selected_window) |
| 5828 | = selected_window; | 5782 | = selected_window; |
| 5829 | 5783 | ||
| 5830 | if (NILP (data->focus_frame) | 5784 | if (NILP (data->focus_frame) |
| @@ -5851,14 +5805,9 @@ the return value is nil. Otherwise the value is t. */) | |||
| 5851 | /* Now, free glyph matrices in windows that were not reused. */ | 5805 | /* Now, free glyph matrices in windows that were not reused. */ |
| 5852 | for (i = n = 0; i < n_leaf_windows; ++i) | 5806 | for (i = n = 0; i < n_leaf_windows; ++i) |
| 5853 | { | 5807 | { |
| 5854 | if (NILP (leaf_windows[i]->buffer)) | 5808 | if (NILP (leaf_windows[i]->contents)) |
| 5855 | { | 5809 | free_window_matrices (leaf_windows[i]); |
| 5856 | /* Assert it's not reused as a combination. */ | 5810 | else if (EQ (leaf_windows[i]->contents, new_current_buffer)) |
| 5857 | eassert (NILP (leaf_windows[i]->hchild) | ||
| 5858 | && NILP (leaf_windows[i]->vchild)); | ||
| 5859 | free_window_matrices (leaf_windows[i]); | ||
| 5860 | } | ||
| 5861 | else if (EQ (leaf_windows[i]->buffer, new_current_buffer)) | ||
| 5862 | ++n; | 5811 | ++n; |
| 5863 | } | 5812 | } |
| 5864 | 5813 | ||
| @@ -5889,7 +5838,7 @@ the return value is nil. Otherwise the value is t. */) | |||
| 5889 | Fset_buffer (new_current_buffer); | 5838 | Fset_buffer (new_current_buffer); |
| 5890 | /* If the new current buffer doesn't appear in the selected | 5839 | /* If the new current buffer doesn't appear in the selected |
| 5891 | window, go to its old point (see bug#12208). */ | 5840 | window, go to its old point (see bug#12208). */ |
| 5892 | if (!EQ (XWINDOW (data->current_window)->buffer, new_current_buffer)) | 5841 | if (!EQ (XWINDOW (data->current_window)->contents, new_current_buffer)) |
| 5893 | Fgoto_char (make_number (old_point)); | 5842 | Fgoto_char (make_number (old_point)); |
| 5894 | } | 5843 | } |
| 5895 | 5844 | ||
| @@ -5900,8 +5849,10 @@ the return value is nil. Otherwise the value is t. */) | |||
| 5900 | } | 5849 | } |
| 5901 | 5850 | ||
| 5902 | 5851 | ||
| 5903 | /* Recursively delete all child windows reachable via the next, vchild, | 5852 | /* If WINDOW is an internal window, recursively delete all child windows |
| 5904 | and hchild slots of WINDOW. */ | 5853 | reachable via the next and contents slots of WINDOW. Otherwise setup |
| 5854 | WINDOW to not show any buffer. */ | ||
| 5855 | |||
| 5905 | void | 5856 | void |
| 5906 | delete_all_child_windows (Lisp_Object window) | 5857 | delete_all_child_windows (Lisp_Object window) |
| 5907 | { | 5858 | { |
| @@ -5913,17 +5864,12 @@ delete_all_child_windows (Lisp_Object window) | |||
| 5913 | /* Delete WINDOW's siblings (we traverse postorderly). */ | 5864 | /* Delete WINDOW's siblings (we traverse postorderly). */ |
| 5914 | delete_all_child_windows (w->next); | 5865 | delete_all_child_windows (w->next); |
| 5915 | 5866 | ||
| 5916 | if (!NILP (w->vchild)) | 5867 | if (WINDOWP (w->contents)) |
| 5917 | { | ||
| 5918 | delete_all_child_windows (w->vchild); | ||
| 5919 | wset_vchild (w, Qnil); | ||
| 5920 | } | ||
| 5921 | else if (!NILP (w->hchild)) | ||
| 5922 | { | 5868 | { |
| 5923 | delete_all_child_windows (w->hchild); | 5869 | delete_all_child_windows (w->contents); |
| 5924 | wset_hchild (w, Qnil); | 5870 | wset_combination (w, 0, Qnil); |
| 5925 | } | 5871 | } |
| 5926 | else if (!NILP (w->buffer)) | 5872 | else if (BUFFERP (w->contents)) |
| 5927 | { | 5873 | { |
| 5928 | unshow_buffer (w); | 5874 | unshow_buffer (w); |
| 5929 | unchain_marker (XMARKER (w->pointm)); | 5875 | unchain_marker (XMARKER (w->pointm)); |
| @@ -5931,7 +5877,7 @@ delete_all_child_windows (Lisp_Object window) | |||
| 5931 | /* Since combination limit makes sense for an internal windows | 5877 | /* Since combination limit makes sense for an internal windows |
| 5932 | only, we use this slot to save the buffer for the sake of | 5878 | only, we use this slot to save the buffer for the sake of |
| 5933 | possible resurrection in Fset_window_configuration. */ | 5879 | possible resurrection in Fset_window_configuration. */ |
| 5934 | wset_combination_limit (w, w->buffer); | 5880 | wset_combination_limit (w, w->contents); |
| 5935 | wset_buffer (w, Qnil); | 5881 | wset_buffer (w, Qnil); |
| 5936 | } | 5882 | } |
| 5937 | 5883 | ||
| @@ -5944,10 +5890,8 @@ count_windows (register struct window *window) | |||
| 5944 | register int count = 1; | 5890 | register int count = 1; |
| 5945 | if (!NILP (window->next)) | 5891 | if (!NILP (window->next)) |
| 5946 | count += count_windows (XWINDOW (window->next)); | 5892 | count += count_windows (XWINDOW (window->next)); |
| 5947 | if (!NILP (window->vchild)) | 5893 | if (WINDOWP (window->contents)) |
| 5948 | count += count_windows (XWINDOW (window->vchild)); | 5894 | count += count_windows (XWINDOW (window->contents)); |
| 5949 | if (!NILP (window->hchild)) | ||
| 5950 | count += count_windows (XWINDOW (window->hchild)); | ||
| 5951 | return count; | 5895 | return count; |
| 5952 | } | 5896 | } |
| 5953 | 5897 | ||
| @@ -5959,10 +5903,8 @@ get_leaf_windows (struct window *w, struct window **flat, int i) | |||
| 5959 | { | 5903 | { |
| 5960 | while (w) | 5904 | while (w) |
| 5961 | { | 5905 | { |
| 5962 | if (!NILP (w->hchild)) | 5906 | if (WINDOWP (w->contents)) |
| 5963 | i = get_leaf_windows (XWINDOW (w->hchild), flat, i); | 5907 | i = get_leaf_windows (XWINDOW (w->contents), flat, i); |
| 5964 | else if (!NILP (w->vchild)) | ||
| 5965 | i = get_leaf_windows (XWINDOW (w->vchild), flat, i); | ||
| 5966 | else | 5908 | else |
| 5967 | flat[i++] = w; | 5909 | flat[i++] = w; |
| 5968 | 5910 | ||
| @@ -6018,14 +5960,14 @@ save_window_save (Lisp_Object window, struct Lisp_Vector *vector, int i) | |||
| 6018 | register struct window *w; | 5960 | register struct window *w; |
| 6019 | register Lisp_Object tem, pers, par; | 5961 | register Lisp_Object tem, pers, par; |
| 6020 | 5962 | ||
| 6021 | for (;!NILP (window); window = w->next) | 5963 | for (; !NILP (window); window = w->next) |
| 6022 | { | 5964 | { |
| 6023 | p = SAVED_WINDOW_N (vector, i); | 5965 | p = SAVED_WINDOW_N (vector, i); |
| 6024 | w = XWINDOW (window); | 5966 | w = XWINDOW (window); |
| 6025 | 5967 | ||
| 6026 | wset_temslot (w, make_number (i)); i++; | 5968 | wset_temslot (w, make_number (i)); i++; |
| 6027 | p->window = window; | 5969 | p->window = window; |
| 6028 | p->buffer = w->buffer; | 5970 | p->buffer = (WINDOW_LEAF_P (w) ? w->contents : Qnil); |
| 6029 | p->left_col = make_number (w->left_col); | 5971 | p->left_col = make_number (w->left_col); |
| 6030 | p->top_line = make_number (w->top_line); | 5972 | p->top_line = make_number (w->top_line); |
| 6031 | p->total_cols = make_number (w->total_cols); | 5973 | p->total_cols = make_number (w->total_cols); |
| @@ -6092,15 +6034,15 @@ save_window_save (Lisp_Object window, struct Lisp_Vector *vector, int i) | |||
| 6092 | } | 6034 | } |
| 6093 | } | 6035 | } |
| 6094 | 6036 | ||
| 6095 | if (!NILP (w->buffer)) | 6037 | if (BUFFERP (w->contents)) |
| 6096 | { | 6038 | { |
| 6097 | /* Save w's value of point in the window configuration. If w | 6039 | /* Save w's value of point in the window configuration. If w |
| 6098 | is the selected window, then get the value of point from | 6040 | is the selected window, then get the value of point from |
| 6099 | the buffer; pointm is garbage in the selected window. */ | 6041 | the buffer; pointm is garbage in the selected window. */ |
| 6100 | if (EQ (window, selected_window)) | 6042 | if (EQ (window, selected_window)) |
| 6101 | p->pointm = build_marker (XBUFFER (w->buffer), | 6043 | p->pointm = build_marker (XBUFFER (w->contents), |
| 6102 | BUF_PT (XBUFFER (w->buffer)), | 6044 | BUF_PT (XBUFFER (w->contents)), |
| 6103 | BUF_PT_BYTE (XBUFFER (w->buffer))); | 6045 | BUF_PT_BYTE (XBUFFER (w->contents))); |
| 6104 | else | 6046 | else |
| 6105 | p->pointm = Fcopy_marker (w->pointm, Qnil); | 6047 | p->pointm = Fcopy_marker (w->pointm, Qnil); |
| 6106 | XMARKER (p->pointm)->insertion_type | 6048 | XMARKER (p->pointm)->insertion_type |
| @@ -6109,7 +6051,7 @@ save_window_save (Lisp_Object window, struct Lisp_Vector *vector, int i) | |||
| 6109 | p->start = Fcopy_marker (w->start, Qnil); | 6051 | p->start = Fcopy_marker (w->start, Qnil); |
| 6110 | p->start_at_line_beg = w->start_at_line_beg ? Qt : Qnil; | 6052 | p->start_at_line_beg = w->start_at_line_beg ? Qt : Qnil; |
| 6111 | 6053 | ||
| 6112 | tem = BVAR (XBUFFER (w->buffer), mark); | 6054 | tem = BVAR (XBUFFER (w->contents), mark); |
| 6113 | p->mark = Fcopy_marker (tem, Qnil); | 6055 | p->mark = Fcopy_marker (tem, Qnil); |
| 6114 | } | 6056 | } |
| 6115 | else | 6057 | else |
| @@ -6130,10 +6072,8 @@ save_window_save (Lisp_Object window, struct Lisp_Vector *vector, int i) | |||
| 6130 | else | 6072 | else |
| 6131 | p->prev = XWINDOW (w->prev)->temslot; | 6073 | p->prev = XWINDOW (w->prev)->temslot; |
| 6132 | 6074 | ||
| 6133 | if (!NILP (w->vchild)) | 6075 | if (WINDOWP (w->contents)) |
| 6134 | i = save_window_save (w->vchild, vector, i); | 6076 | i = save_window_save (w->contents, vector, i); |
| 6135 | if (!NILP (w->hchild)) | ||
| 6136 | i = save_window_save (w->hchild, vector, i); | ||
| 6137 | } | 6077 | } |
| 6138 | 6078 | ||
| 6139 | return i; | 6079 | return i; |
| @@ -6450,7 +6390,7 @@ If PIXELS-P is non-nil, the return value is VSCROLL. */) | |||
| 6450 | adjust_glyphs (f); | 6390 | adjust_glyphs (f); |
| 6451 | 6391 | ||
| 6452 | /* Prevent redisplay shortcuts. */ | 6392 | /* Prevent redisplay shortcuts. */ |
| 6453 | XBUFFER (w->buffer)->prevent_redisplay_optimizations_p = 1; | 6393 | XBUFFER (w->contents)->prevent_redisplay_optimizations_p = 1; |
| 6454 | } | 6394 | } |
| 6455 | } | 6395 | } |
| 6456 | 6396 | ||
| @@ -6484,10 +6424,8 @@ foreach_window_1 (struct window *w, int (*fn) (struct window *, void *), void *u | |||
| 6484 | 6424 | ||
| 6485 | for (cont = 1; w && cont;) | 6425 | for (cont = 1; w && cont;) |
| 6486 | { | 6426 | { |
| 6487 | if (!NILP (w->hchild)) | 6427 | if (WINDOWP (w->contents)) |
| 6488 | cont = foreach_window_1 (XWINDOW (w->hchild), fn, user_data); | 6428 | cont = foreach_window_1 (XWINDOW (w->contents), fn, user_data); |
| 6489 | else if (!NILP (w->vchild)) | ||
| 6490 | cont = foreach_window_1 (XWINDOW (w->vchild), fn, user_data); | ||
| 6491 | else | 6429 | else |
| 6492 | cont = fn (w, user_data); | 6430 | cont = fn (w, user_data); |
| 6493 | 6431 | ||
diff --git a/src/window.h b/src/window.h index 71c438ff7f2..411756f045e 100644 --- a/src/window.h +++ b/src/window.h | |||
| @@ -41,14 +41,13 @@ They are deleted only by calling delete-window on them (but | |||
| 41 | this can be done implicitly). Combination windows can be created | 41 | this can be done implicitly). Combination windows can be created |
| 42 | and deleted at any time. | 42 | and deleted at any time. |
| 43 | 43 | ||
| 44 | A leaf window has a non-nil buffer field, and also | 44 | A leaf window has a buffer stored in contents field and markers in its start |
| 45 | has markers in its start and pointm fields. Non-leaf windows | 45 | and pointm fields. Non-leaf windows have nil in the latter two fields. |
| 46 | have nil in these fields. | ||
| 47 | 46 | ||
| 48 | Non-leaf windows are either vertical or horizontal combinations. | 47 | Non-leaf windows are either vertical or horizontal combinations. |
| 49 | 48 | ||
| 50 | A vertical combination window has children that are arranged on the frame | 49 | A vertical combination window has children that are arranged on the frame |
| 51 | one above the next. Its vchild field points to the uppermost child. | 50 | one above the next. Its contents field points to the uppermost child. |
| 52 | The parent field of each of the children points to the vertical | 51 | The parent field of each of the children points to the vertical |
| 53 | combination window. The next field of each child points to the | 52 | combination window. The next field of each child points to the |
| 54 | child below it, or is nil for the lowest child. The prev field | 53 | child below it, or is nil for the lowest child. The prev field |
| @@ -56,7 +55,7 @@ of each child points to the child above it, or is nil for the | |||
| 56 | highest child. | 55 | highest child. |
| 57 | 56 | ||
| 58 | A horizontal combination window has children that are side by side. | 57 | A horizontal combination window has children that are side by side. |
| 59 | Its hchild field points to the leftmost child. In each child | 58 | Its contents field points to the leftmost child. In each child |
| 60 | the next field points to the child to the right and the prev field | 59 | the next field points to the child to the right and the prev field |
| 61 | points to the child to the left. | 60 | points to the child to the left. |
| 62 | 61 | ||
| @@ -78,7 +77,7 @@ the root window is the minibuf window. On minibufferless screens or | |||
| 78 | minibuffer-only screens, the root window and the minibuffer window are | 77 | minibuffer-only screens, the root window and the minibuffer window are |
| 79 | one and the same, so its prev and next members are nil. | 78 | one and the same, so its prev and next members are nil. |
| 80 | 79 | ||
| 81 | A dead window has its buffer, hchild, and vchild windows all nil. */ | 80 | A dead window has its contents field set to nil. */ |
| 82 | 81 | ||
| 83 | struct cursor_pos | 82 | struct cursor_pos |
| 84 | { | 83 | { |
| @@ -102,13 +101,6 @@ struct window | |||
| 102 | Lisp_Object next; | 101 | Lisp_Object next; |
| 103 | Lisp_Object prev; | 102 | Lisp_Object prev; |
| 104 | 103 | ||
| 105 | /* First child of this window: vchild is used if this is a vertical | ||
| 106 | combination, hchild if this is a horizontal combination. Of the | ||
| 107 | fields vchild, hchild and buffer, one and only one is non-nil | ||
| 108 | unless the window is dead. */ | ||
| 109 | Lisp_Object hchild; | ||
| 110 | Lisp_Object vchild; | ||
| 111 | |||
| 112 | /* The window this one is a child of. */ | 104 | /* The window this one is a child of. */ |
| 113 | Lisp_Object parent; | 105 | Lisp_Object parent; |
| 114 | 106 | ||
| @@ -123,10 +115,8 @@ struct window | |||
| 123 | Lisp_Object new_total; | 115 | Lisp_Object new_total; |
| 124 | Lisp_Object new_normal; | 116 | Lisp_Object new_normal; |
| 125 | 117 | ||
| 126 | /* The buffer displayed in this window. Of the fields vchild, | 118 | /* May be buffer, window, or nil. */ |
| 127 | hchild and buffer, one and only one is non-nil unless the window | 119 | Lisp_Object contents; |
| 128 | is dead. */ | ||
| 129 | Lisp_Object buffer; | ||
| 130 | 120 | ||
| 131 | /* A marker pointing to where in the text to start displaying. | 121 | /* A marker pointing to where in the text to start displaying. |
| 132 | BIDI Note: This is the _logical-order_ start, i.e. the smallest | 122 | BIDI Note: This is the _logical-order_ start, i.e. the smallest |
| @@ -282,6 +272,10 @@ struct window | |||
| 282 | /* Non-zero if this window is a minibuffer window. */ | 272 | /* Non-zero if this window is a minibuffer window. */ |
| 283 | unsigned mini : 1; | 273 | unsigned mini : 1; |
| 284 | 274 | ||
| 275 | /* Meaningful only if contents is a window, non-zero if this | ||
| 276 | internal window is used in horizontal combination. */ | ||
| 277 | unsigned horizontal : 1; | ||
| 278 | |||
| 285 | /* Non-zero means must regenerate mode line of this window. */ | 279 | /* Non-zero means must regenerate mode line of this window. */ |
| 286 | unsigned update_mode_line : 1; | 280 | unsigned update_mode_line : 1; |
| 287 | 281 | ||
| @@ -428,6 +422,21 @@ wset_next_buffers (struct window *w, Lisp_Object val) | |||
| 428 | 422 | ||
| 429 | /* A handy macro. */ | 423 | /* A handy macro. */ |
| 430 | 424 | ||
| 425 | /* Non-zero if W is leaf (carry the buffer). */ | ||
| 426 | |||
| 427 | #define WINDOW_LEAF_P(W) \ | ||
| 428 | (BUFFERP ((W)->contents)) | ||
| 429 | |||
| 430 | /* Non-zero if W is a member of horizontal combination. */ | ||
| 431 | |||
| 432 | #define WINDOW_HORIZONTAL_COMBINATION_P(W) \ | ||
| 433 | (WINDOWP ((W)->contents) && (W)->horizontal) | ||
| 434 | |||
| 435 | /* Non-zero if W is a member of vertical combination. */ | ||
| 436 | |||
| 437 | #define WINDOW_VERTICAL_COMBINATION_P(W) \ | ||
| 438 | (WINDOWP ((W)->contents) && !(W)->horizontal) | ||
| 439 | |||
| 431 | #define WINDOW_XFRAME(W) \ | 440 | #define WINDOW_XFRAME(W) \ |
| 432 | (XFRAME (WINDOW_FRAME ((W)))) | 441 | (XFRAME (WINDOW_FRAME ((W)))) |
| 433 | 442 | ||
| @@ -931,20 +940,17 @@ extern void check_frame_size (struct frame *frame, int *rows, int *cols); | |||
| 931 | struct glyph *get_phys_cursor_glyph (struct window *w); | 940 | struct glyph *get_phys_cursor_glyph (struct window *w); |
| 932 | 941 | ||
| 933 | /* Value is non-zero if WINDOW is a valid window. */ | 942 | /* Value is non-zero if WINDOW is a valid window. */ |
| 934 | #define WINDOW_VALID_P(WINDOW) \ | 943 | #define WINDOW_VALID_P(WINDOW) \ |
| 935 | (WINDOWP (WINDOW) \ | 944 | (WINDOWP (WINDOW) && !NILP (XWINDOW (WINDOW)->contents)) \ |
| 936 | && (!NILP (XWINDOW (WINDOW)->buffer) \ | 945 | |
| 937 | || !NILP (XWINDOW (WINDOW)->vchild) \ | 946 | /* A window of any sort, leaf or interior, is "valid" if its |
| 938 | || !NILP (XWINDOW (WINDOW)->hchild))) | 947 | contents slot is non-nil. */ |
| 939 | |||
| 940 | /* A window of any sort, leaf or interior, is "valid" if one | ||
| 941 | of its buffer, vchild, or hchild members is non-nil. */ | ||
| 942 | #define CHECK_VALID_WINDOW(WINDOW) \ | 948 | #define CHECK_VALID_WINDOW(WINDOW) \ |
| 943 | CHECK_TYPE (WINDOW_VALID_P (WINDOW), Qwindow_valid_p, WINDOW) | 949 | CHECK_TYPE (WINDOW_VALID_P (WINDOW), Qwindow_valid_p, WINDOW) |
| 944 | 950 | ||
| 945 | /* Value is non-zero if WINDOW is a live window. */ | 951 | /* Value is non-zero if WINDOW is a live window. */ |
| 946 | #define WINDOW_LIVE_P(WINDOW) \ | 952 | #define WINDOW_LIVE_P(WINDOW) \ |
| 947 | (WINDOWP (WINDOW) && !NILP (XWINDOW (WINDOW)->buffer)) | 953 | (WINDOWP (WINDOW) && BUFFERP (XWINDOW (WINDOW)->contents)) |
| 948 | 954 | ||
| 949 | /* A window is "live" if and only if it shows a buffer. */ | 955 | /* A window is "live" if and only if it shows a buffer. */ |
| 950 | #define CHECK_LIVE_WINDOW(WINDOW) \ | 956 | #define CHECK_LIVE_WINDOW(WINDOW) \ |
diff --git a/src/xdisp.c b/src/xdisp.c index dff8f719c0d..27987c69b19 100644 --- a/src/xdisp.c +++ b/src/xdisp.c | |||
| @@ -1283,10 +1283,10 @@ pos_visible_p (struct window *w, ptrdiff_t charpos, int *x, int *y, | |||
| 1283 | if (FRAME_INITIAL_P (XFRAME (WINDOW_FRAME (w)))) | 1283 | if (FRAME_INITIAL_P (XFRAME (WINDOW_FRAME (w)))) |
| 1284 | return visible_p; | 1284 | return visible_p; |
| 1285 | 1285 | ||
| 1286 | if (XBUFFER (w->buffer) != current_buffer) | 1286 | if (XBUFFER (w->contents) != current_buffer) |
| 1287 | { | 1287 | { |
| 1288 | old_buffer = current_buffer; | 1288 | old_buffer = current_buffer; |
| 1289 | set_buffer_internal_1 (XBUFFER (w->buffer)); | 1289 | set_buffer_internal_1 (XBUFFER (w->contents)); |
| 1290 | } | 1290 | } |
| 1291 | 1291 | ||
| 1292 | SET_TEXT_POS_FROM_MARKER (top, w->start); | 1292 | SET_TEXT_POS_FROM_MARKER (top, w->start); |
| @@ -4458,7 +4458,7 @@ handle_display_prop (struct it *it) | |||
| 4458 | if it was a text property. */ | 4458 | if it was a text property. */ |
| 4459 | 4459 | ||
| 4460 | if (!STRINGP (it->string)) | 4460 | if (!STRINGP (it->string)) |
| 4461 | object = it->w->buffer; | 4461 | object = it->w->contents; |
| 4462 | 4462 | ||
| 4463 | display_replaced_p = handle_display_spec (it, propval, object, overlay, | 4463 | display_replaced_p = handle_display_spec (it, propval, object, overlay, |
| 4464 | position, bufpos, | 4464 | position, bufpos, |
| @@ -4866,7 +4866,7 @@ handle_single_display_spec (struct it *it, Lisp_Object spec, Lisp_Object object, | |||
| 4866 | it->what = IT_IMAGE; | 4866 | it->what = IT_IMAGE; |
| 4867 | it->image_id = -1; /* no image */ | 4867 | it->image_id = -1; /* no image */ |
| 4868 | it->position = start_pos; | 4868 | it->position = start_pos; |
| 4869 | it->object = NILP (object) ? it->w->buffer : object; | 4869 | it->object = NILP (object) ? it->w->contents : object; |
| 4870 | it->method = GET_FROM_IMAGE; | 4870 | it->method = GET_FROM_IMAGE; |
| 4871 | it->from_overlay = Qnil; | 4871 | it->from_overlay = Qnil; |
| 4872 | it->face_id = face_id; | 4872 | it->face_id = face_id; |
| @@ -5012,7 +5012,7 @@ handle_single_display_spec (struct it *it, Lisp_Object spec, Lisp_Object object, | |||
| 5012 | it->what = IT_IMAGE; | 5012 | it->what = IT_IMAGE; |
| 5013 | it->image_id = lookup_image (it->f, value); | 5013 | it->image_id = lookup_image (it->f, value); |
| 5014 | it->position = start_pos; | 5014 | it->position = start_pos; |
| 5015 | it->object = NILP (object) ? it->w->buffer : object; | 5015 | it->object = NILP (object) ? it->w->contents : object; |
| 5016 | it->method = GET_FROM_IMAGE; | 5016 | it->method = GET_FROM_IMAGE; |
| 5017 | 5017 | ||
| 5018 | /* Say that we haven't consumed the characters with | 5018 | /* Say that we haven't consumed the characters with |
| @@ -5836,7 +5836,7 @@ pop_it (struct it *it) | |||
| 5836 | it->object = p->u.stretch.object; | 5836 | it->object = p->u.stretch.object; |
| 5837 | break; | 5837 | break; |
| 5838 | case GET_FROM_BUFFER: | 5838 | case GET_FROM_BUFFER: |
| 5839 | it->object = it->w->buffer; | 5839 | it->object = it->w->contents; |
| 5840 | break; | 5840 | break; |
| 5841 | case GET_FROM_STRING: | 5841 | case GET_FROM_STRING: |
| 5842 | it->object = it->string; | 5842 | it->object = it->string; |
| @@ -5849,7 +5849,7 @@ pop_it (struct it *it) | |||
| 5849 | else | 5849 | else |
| 5850 | { | 5850 | { |
| 5851 | it->method = GET_FROM_BUFFER; | 5851 | it->method = GET_FROM_BUFFER; |
| 5852 | it->object = it->w->buffer; | 5852 | it->object = it->w->contents; |
| 5853 | } | 5853 | } |
| 5854 | } | 5854 | } |
| 5855 | it->end_charpos = p->end_charpos; | 5855 | it->end_charpos = p->end_charpos; |
| @@ -6290,7 +6290,7 @@ reseat_1 (struct it *it, struct text_pos pos, int set_stop_p) | |||
| 6290 | IT_STRING_BYTEPOS (*it) = -1; | 6290 | IT_STRING_BYTEPOS (*it) = -1; |
| 6291 | it->string = Qnil; | 6291 | it->string = Qnil; |
| 6292 | it->method = GET_FROM_BUFFER; | 6292 | it->method = GET_FROM_BUFFER; |
| 6293 | it->object = it->w->buffer; | 6293 | it->object = it->w->contents; |
| 6294 | it->area = TEXT_AREA; | 6294 | it->area = TEXT_AREA; |
| 6295 | it->multibyte_p = !NILP (BVAR (current_buffer, enable_multibyte_characters)); | 6295 | it->multibyte_p = !NILP (BVAR (current_buffer, enable_multibyte_characters)); |
| 6296 | it->sp = 0; | 6296 | it->sp = 0; |
| @@ -7141,7 +7141,7 @@ set_iterator_to_next (struct it *it, int reseat_p) | |||
| 7141 | else | 7141 | else |
| 7142 | { | 7142 | { |
| 7143 | it->method = GET_FROM_BUFFER; | 7143 | it->method = GET_FROM_BUFFER; |
| 7144 | it->object = it->w->buffer; | 7144 | it->object = it->w->contents; |
| 7145 | } | 7145 | } |
| 7146 | 7146 | ||
| 7147 | it->dpvec = NULL; | 7147 | it->dpvec = NULL; |
| @@ -7714,7 +7714,7 @@ next_element_from_ellipsis (struct it *it) | |||
| 7714 | setting face_before_selective_p. */ | 7714 | setting face_before_selective_p. */ |
| 7715 | it->saved_face_id = it->face_id; | 7715 | it->saved_face_id = it->face_id; |
| 7716 | it->method = GET_FROM_BUFFER; | 7716 | it->method = GET_FROM_BUFFER; |
| 7717 | it->object = it->w->buffer; | 7717 | it->object = it->w->contents; |
| 7718 | reseat_at_next_visible_line_start (it, 1); | 7718 | reseat_at_next_visible_line_start (it, 1); |
| 7719 | it->face_before_selective_p = 1; | 7719 | it->face_before_selective_p = 1; |
| 7720 | } | 7720 | } |
| @@ -7978,7 +7978,7 @@ next_element_from_buffer (struct it *it) | |||
| 7978 | 7978 | ||
| 7979 | /* Record what we have and where it came from. */ | 7979 | /* Record what we have and where it came from. */ |
| 7980 | it->what = IT_CHARACTER; | 7980 | it->what = IT_CHARACTER; |
| 7981 | it->object = it->w->buffer; | 7981 | it->object = it->w->contents; |
| 7982 | it->position = it->current.pos; | 7982 | it->position = it->current.pos; |
| 7983 | 7983 | ||
| 7984 | /* Normally we return the character found above, except when we | 7984 | /* Normally we return the character found above, except when we |
| @@ -8084,7 +8084,7 @@ next_element_from_composition (struct it *it) | |||
| 8084 | return 0; | 8084 | return 0; |
| 8085 | } | 8085 | } |
| 8086 | it->position = it->current.pos; | 8086 | it->position = it->current.pos; |
| 8087 | it->object = it->w->buffer; | 8087 | it->object = it->w->contents; |
| 8088 | it->c = composition_update_it (&it->cmp_it, IT_CHARPOS (*it), | 8088 | it->c = composition_update_it (&it->cmp_it, IT_CHARPOS (*it), |
| 8089 | IT_BYTEPOS (*it), Qnil); | 8089 | IT_BYTEPOS (*it), Qnil); |
| 8090 | } | 8090 | } |
| @@ -10003,7 +10003,7 @@ with_echo_area_buffer_unwind_data (struct window *w) | |||
| 10003 | if (w) | 10003 | if (w) |
| 10004 | { | 10004 | { |
| 10005 | XSETWINDOW (tmp, w); ASET (vector, i, tmp); ++i; | 10005 | XSETWINDOW (tmp, w); ASET (vector, i, tmp); ++i; |
| 10006 | ASET (vector, i, w->buffer); ++i; | 10006 | ASET (vector, i, w->contents); ++i; |
| 10007 | ASET (vector, i, make_number (marker_position (w->pointm))); ++i; | 10007 | ASET (vector, i, make_number (marker_position (w->pointm))); ++i; |
| 10008 | ASET (vector, i, make_number (marker_byte_position (w->pointm))); ++i; | 10008 | ASET (vector, i, make_number (marker_byte_position (w->pointm))); ++i; |
| 10009 | ASET (vector, i, make_number (marker_position (w->start))); ++i; | 10009 | ASET (vector, i, make_number (marker_position (w->start))); ++i; |
| @@ -10259,9 +10259,9 @@ resize_mini_window (struct window *w, int exact_p) | |||
| 10259 | eassert (MINI_WINDOW_P (w)); | 10259 | eassert (MINI_WINDOW_P (w)); |
| 10260 | 10260 | ||
| 10261 | /* By default, start display at the beginning. */ | 10261 | /* By default, start display at the beginning. */ |
| 10262 | set_marker_both (w->start, w->buffer, | 10262 | set_marker_both (w->start, w->contents, |
| 10263 | BUF_BEGV (XBUFFER (w->buffer)), | 10263 | BUF_BEGV (XBUFFER (w->contents)), |
| 10264 | BUF_BEGV_BYTE (XBUFFER (w->buffer))); | 10264 | BUF_BEGV_BYTE (XBUFFER (w->contents))); |
| 10265 | 10265 | ||
| 10266 | /* Don't resize windows while redisplaying a window; it would | 10266 | /* Don't resize windows while redisplaying a window; it would |
| 10267 | confuse redisplay functions when the size of the window they are | 10267 | confuse redisplay functions when the size of the window they are |
| @@ -10288,10 +10288,10 @@ resize_mini_window (struct window *w, int exact_p) | |||
| 10288 | struct text_pos start; | 10288 | struct text_pos start; |
| 10289 | struct buffer *old_current_buffer = NULL; | 10289 | struct buffer *old_current_buffer = NULL; |
| 10290 | 10290 | ||
| 10291 | if (current_buffer != XBUFFER (w->buffer)) | 10291 | if (current_buffer != XBUFFER (w->contents)) |
| 10292 | { | 10292 | { |
| 10293 | old_current_buffer = current_buffer; | 10293 | old_current_buffer = current_buffer; |
| 10294 | set_buffer_internal (XBUFFER (w->buffer)); | 10294 | set_buffer_internal (XBUFFER (w->contents)); |
| 10295 | } | 10295 | } |
| 10296 | 10296 | ||
| 10297 | init_iterator (&it, w, BEGV, BEGV_BYTE, NULL, DEFAULT_FACE_ID); | 10297 | init_iterator (&it, w, BEGV, BEGV_BYTE, NULL, DEFAULT_FACE_ID); |
| @@ -10740,7 +10740,7 @@ buffer_shared_and_changed (void) | |||
| 10740 | 10740 | ||
| 10741 | /* Nonzero if W doesn't reflect the actual state of current buffer due | 10741 | /* Nonzero if W doesn't reflect the actual state of current buffer due |
| 10742 | to its text or overlays change. FIXME: this may be called when | 10742 | to its text or overlays change. FIXME: this may be called when |
| 10743 | XBUFFER (w->buffer) != current_buffer, which looks suspicious. */ | 10743 | XBUFFER (w->contents) != current_buffer, which looks suspicious. */ |
| 10744 | 10744 | ||
| 10745 | static int | 10745 | static int |
| 10746 | window_outdated (struct window *w) | 10746 | window_outdated (struct window *w) |
| @@ -10755,7 +10755,7 @@ window_outdated (struct window *w) | |||
| 10755 | static int | 10755 | static int |
| 10756 | window_buffer_changed (struct window *w) | 10756 | window_buffer_changed (struct window *w) |
| 10757 | { | 10757 | { |
| 10758 | struct buffer *b = XBUFFER (w->buffer); | 10758 | struct buffer *b = XBUFFER (w->contents); |
| 10759 | 10759 | ||
| 10760 | eassert (BUFFER_LIVE_P (b)); | 10760 | eassert (BUFFER_LIVE_P (b)); |
| 10761 | 10761 | ||
| @@ -11009,7 +11009,7 @@ x_consider_frame_title (Lisp_Object frame) | |||
| 11009 | 11009 | ||
| 11010 | Fselect_window (f->selected_window, Qt); | 11010 | Fselect_window (f->selected_window, Qt); |
| 11011 | set_buffer_internal_1 | 11011 | set_buffer_internal_1 |
| 11012 | (XBUFFER (XWINDOW (f->selected_window)->buffer)); | 11012 | (XBUFFER (XWINDOW (f->selected_window)->contents)); |
| 11013 | fmt = FRAME_ICONIFIED_P (f) ? Vicon_title_format : Vframe_title_format; | 11013 | fmt = FRAME_ICONIFIED_P (f) ? Vicon_title_format : Vframe_title_format; |
| 11014 | 11014 | ||
| 11015 | mode_line_target = MODE_LINE_TITLE; | 11015 | mode_line_target = MODE_LINE_TITLE; |
| @@ -11128,7 +11128,7 @@ prepare_menu_bars (void) | |||
| 11128 | if (windows_or_buffers_changed | 11128 | if (windows_or_buffers_changed |
| 11129 | && FRAME_NS_P (f)) | 11129 | && FRAME_NS_P (f)) |
| 11130 | ns_set_doc_edited | 11130 | ns_set_doc_edited |
| 11131 | (f, Fbuffer_modified_p (XWINDOW (f->selected_window)->buffer)); | 11131 | (f, Fbuffer_modified_p (XWINDOW (f->selected_window)->contents)); |
| 11132 | #endif | 11132 | #endif |
| 11133 | UNGCPRO; | 11133 | UNGCPRO; |
| 11134 | } | 11134 | } |
| @@ -11200,7 +11200,7 @@ update_menu_bar (struct frame *f, int save_match_data, int hooks_run) | |||
| 11200 | 11200 | ||
| 11201 | specbind (Qinhibit_menubar_update, Qt); | 11201 | specbind (Qinhibit_menubar_update, Qt); |
| 11202 | 11202 | ||
| 11203 | set_buffer_internal_1 (XBUFFER (w->buffer)); | 11203 | set_buffer_internal_1 (XBUFFER (w->contents)); |
| 11204 | if (save_match_data) | 11204 | if (save_match_data) |
| 11205 | record_unwind_save_match_data (); | 11205 | record_unwind_save_match_data (); |
| 11206 | if (NILP (Voverriding_local_map_menu_flag)) | 11206 | if (NILP (Voverriding_local_map_menu_flag)) |
| @@ -11404,7 +11404,7 @@ update_tool_bar (struct frame *f, int save_match_data) | |||
| 11404 | /* Set current_buffer to the buffer of the selected | 11404 | /* Set current_buffer to the buffer of the selected |
| 11405 | window of the frame, so that we get the right local | 11405 | window of the frame, so that we get the right local |
| 11406 | keymaps. */ | 11406 | keymaps. */ |
| 11407 | set_buffer_internal_1 (XBUFFER (w->buffer)); | 11407 | set_buffer_internal_1 (XBUFFER (w->contents)); |
| 11408 | 11408 | ||
| 11409 | /* Save match data, if we must. */ | 11409 | /* Save match data, if we must. */ |
| 11410 | if (save_match_data) | 11410 | if (save_match_data) |
| @@ -12271,10 +12271,8 @@ hscroll_window_tree (Lisp_Object window) | |||
| 12271 | { | 12271 | { |
| 12272 | struct window *w = XWINDOW (window); | 12272 | struct window *w = XWINDOW (window); |
| 12273 | 12273 | ||
| 12274 | if (WINDOWP (w->hchild)) | 12274 | if (WINDOWP (w->contents)) |
| 12275 | hscrolled_p |= hscroll_window_tree (w->hchild); | 12275 | hscrolled_p |= hscroll_window_tree (w->contents); |
| 12276 | else if (WINDOWP (w->vchild)) | ||
| 12277 | hscrolled_p |= hscroll_window_tree (w->vchild); | ||
| 12278 | else if (w->cursor.vpos >= 0) | 12276 | else if (w->cursor.vpos >= 0) |
| 12279 | { | 12277 | { |
| 12280 | int h_margin; | 12278 | int h_margin; |
| @@ -12294,7 +12292,7 @@ hscroll_window_tree (Lisp_Object window) | |||
| 12294 | /* Scroll when cursor is inside this scroll margin. */ | 12292 | /* Scroll when cursor is inside this scroll margin. */ |
| 12295 | h_margin = hscroll_margin * WINDOW_FRAME_COLUMN_WIDTH (w); | 12293 | h_margin = hscroll_margin * WINDOW_FRAME_COLUMN_WIDTH (w); |
| 12296 | 12294 | ||
| 12297 | if (!NILP (Fbuffer_local_value (Qauto_hscroll_mode, w->buffer)) | 12295 | if (!NILP (Fbuffer_local_value (Qauto_hscroll_mode, w->contents)) |
| 12298 | /* For left-to-right rows, hscroll when cursor is either | 12296 | /* For left-to-right rows, hscroll when cursor is either |
| 12299 | (i) inside the right hscroll margin, or (ii) if it is | 12297 | (i) inside the right hscroll margin, or (ii) if it is |
| 12300 | inside the left margin and the window is already | 12298 | inside the left margin and the window is already |
| @@ -12329,7 +12327,7 @@ hscroll_window_tree (Lisp_Object window) | |||
| 12329 | 12327 | ||
| 12330 | /* Find point in a display of infinite width. */ | 12328 | /* Find point in a display of infinite width. */ |
| 12331 | saved_current_buffer = current_buffer; | 12329 | saved_current_buffer = current_buffer; |
| 12332 | current_buffer = XBUFFER (w->buffer); | 12330 | current_buffer = XBUFFER (w->contents); |
| 12333 | 12331 | ||
| 12334 | if (w == XWINDOW (selected_window)) | 12332 | if (w == XWINDOW (selected_window)) |
| 12335 | pt = PT; | 12333 | pt = PT; |
| @@ -12382,7 +12380,7 @@ hscroll_window_tree (Lisp_Object window) | |||
| 12382 | redisplay. */ | 12380 | redisplay. */ |
| 12383 | if (w->hscroll != hscroll) | 12381 | if (w->hscroll != hscroll) |
| 12384 | { | 12382 | { |
| 12385 | XBUFFER (w->buffer)->prevent_redisplay_optimizations_p = 1; | 12383 | XBUFFER (w->contents)->prevent_redisplay_optimizations_p = 1; |
| 12386 | w->hscroll = hscroll; | 12384 | w->hscroll = hscroll; |
| 12387 | hscrolled_p = 1; | 12385 | hscrolled_p = 1; |
| 12388 | } | 12386 | } |
| @@ -12471,9 +12469,9 @@ debug_method_add (struct window *w, char const *fmt, ...) | |||
| 12471 | if (trace_redisplay_p) | 12469 | if (trace_redisplay_p) |
| 12472 | fprintf (stderr, "%p (%s): %s\n", | 12470 | fprintf (stderr, "%p (%s): %s\n", |
| 12473 | w, | 12471 | w, |
| 12474 | ((BUFFERP (w->buffer) | 12472 | ((BUFFERP (w->contents) |
| 12475 | && STRINGP (BVAR (XBUFFER (w->buffer), name))) | 12473 | && STRINGP (BVAR (XBUFFER (w->contents), name))) |
| 12476 | ? SSDATA (BVAR (XBUFFER (w->buffer), name)) | 12474 | ? SSDATA (BVAR (XBUFFER (w->contents), name)) |
| 12477 | : "no buffer"), | 12475 | : "no buffer"), |
| 12478 | method + len); | 12476 | method + len); |
| 12479 | } | 12477 | } |
| @@ -12537,8 +12535,8 @@ text_outside_line_unchanged_p (struct window *w, | |||
| 12537 | require to redisplay the whole paragraph. It might be worthwhile | 12535 | require to redisplay the whole paragraph. It might be worthwhile |
| 12538 | to find the paragraph limits and widen the range of redisplayed | 12536 | to find the paragraph limits and widen the range of redisplayed |
| 12539 | lines to that, but for now just give up this optimization. */ | 12537 | lines to that, but for now just give up this optimization. */ |
| 12540 | if (!NILP (BVAR (XBUFFER (w->buffer), bidi_display_reordering)) | 12538 | if (!NILP (BVAR (XBUFFER (w->contents), bidi_display_reordering)) |
| 12541 | && NILP (BVAR (XBUFFER (w->buffer), bidi_paragraph_direction))) | 12539 | && NILP (BVAR (XBUFFER (w->contents), bidi_paragraph_direction))) |
| 12542 | unchanged_p = 0; | 12540 | unchanged_p = 0; |
| 12543 | } | 12541 | } |
| 12544 | 12542 | ||
| @@ -12761,7 +12759,7 @@ reconsider_clip_changes (struct window *w, struct buffer *b) | |||
| 12761 | we set b->clip_changed to 1 to force updating the screen. If | 12759 | we set b->clip_changed to 1 to force updating the screen. If |
| 12762 | b->clip_changed has already been set to 1, we can skip this | 12760 | b->clip_changed has already been set to 1, we can skip this |
| 12763 | check. */ | 12761 | check. */ |
| 12764 | if (!b->clip_changed && BUFFERP (w->buffer) && w->window_end_valid) | 12762 | if (!b->clip_changed && BUFFERP (w->contents) && w->window_end_valid) |
| 12765 | { | 12763 | { |
| 12766 | ptrdiff_t pt; | 12764 | ptrdiff_t pt; |
| 12767 | 12765 | ||
| @@ -12770,11 +12768,11 @@ reconsider_clip_changes (struct window *w, struct buffer *b) | |||
| 12770 | else | 12768 | else |
| 12771 | pt = marker_position (w->pointm); | 12769 | pt = marker_position (w->pointm); |
| 12772 | 12770 | ||
| 12773 | if ((w->current_matrix->buffer != XBUFFER (w->buffer) | 12771 | if ((w->current_matrix->buffer != XBUFFER (w->contents) |
| 12774 | || pt != w->last_point) | 12772 | || pt != w->last_point) |
| 12775 | && check_point_in_composition (w->current_matrix->buffer, | 12773 | && check_point_in_composition (w->current_matrix->buffer, |
| 12776 | w->last_point, | 12774 | w->last_point, |
| 12777 | XBUFFER (w->buffer), pt)) | 12775 | XBUFFER (w->contents), pt)) |
| 12778 | b->clip_changed = 1; | 12776 | b->clip_changed = 1; |
| 12779 | } | 12777 | } |
| 12780 | } | 12778 | } |
| @@ -13029,11 +13027,11 @@ redisplay_internal (void) | |||
| 13029 | the whole window. The assignment to this_line_start_pos prevents | 13027 | the whole window. The assignment to this_line_start_pos prevents |
| 13030 | the optimization directly below this if-statement. */ | 13028 | the optimization directly below this if-statement. */ |
| 13031 | if (((!NILP (Vtransient_mark_mode) | 13029 | if (((!NILP (Vtransient_mark_mode) |
| 13032 | && !NILP (BVAR (XBUFFER (w->buffer), mark_active))) | 13030 | && !NILP (BVAR (XBUFFER (w->contents), mark_active))) |
| 13033 | != (w->region_showing > 0)) | 13031 | != (w->region_showing > 0)) |
| 13034 | || (w->region_showing | 13032 | || (w->region_showing |
| 13035 | && w->region_showing | 13033 | && w->region_showing |
| 13036 | != XINT (Fmarker_position (BVAR (XBUFFER (w->buffer), mark))))) | 13034 | != XINT (Fmarker_position (BVAR (XBUFFER (w->contents), mark))))) |
| 13037 | CHARPOS (this_line_start_pos) = 0; | 13035 | CHARPOS (this_line_start_pos) = 0; |
| 13038 | 13036 | ||
| 13039 | /* Optimize the case that only the line containing the cursor in the | 13037 | /* Optimize the case that only the line containing the cursor in the |
| @@ -13051,7 +13049,7 @@ redisplay_internal (void) | |||
| 13051 | && !FRAME_OBSCURED_P (XFRAME (w->frame)) | 13049 | && !FRAME_OBSCURED_P (XFRAME (w->frame)) |
| 13052 | /* Make sure recorded data applies to current buffer, etc. */ | 13050 | /* Make sure recorded data applies to current buffer, etc. */ |
| 13053 | && this_line_buffer == current_buffer | 13051 | && this_line_buffer == current_buffer |
| 13054 | && current_buffer == XBUFFER (w->buffer) | 13052 | && current_buffer == XBUFFER (w->contents) |
| 13055 | && !w->force_start | 13053 | && !w->force_start |
| 13056 | && !w->optional_new_start | 13054 | && !w->optional_new_start |
| 13057 | /* Point must be on the line that we have info recorded about. */ | 13055 | /* Point must be on the line that we have info recorded about. */ |
| @@ -13342,7 +13340,7 @@ redisplay_internal (void) | |||
| 13342 | Lisp_Object mini_window = FRAME_MINIBUF_WINDOW (sf); | 13340 | Lisp_Object mini_window = FRAME_MINIBUF_WINDOW (sf); |
| 13343 | struct frame *mini_frame; | 13341 | struct frame *mini_frame; |
| 13344 | 13342 | ||
| 13345 | displayed_buffer = XBUFFER (XWINDOW (selected_window)->buffer); | 13343 | displayed_buffer = XBUFFER (XWINDOW (selected_window)->contents); |
| 13346 | /* Use list_of_error, not Qerror, so that | 13344 | /* Use list_of_error, not Qerror, so that |
| 13347 | we catch only errors and don't run the debugger. */ | 13345 | we catch only errors and don't run the debugger. */ |
| 13348 | internal_condition_case_1 (redisplay_window_1, selected_window, | 13346 | internal_condition_case_1 (redisplay_window_1, selected_window, |
| @@ -13552,7 +13550,7 @@ unwind_redisplay (Lisp_Object old_frame) | |||
| 13552 | static void | 13550 | static void |
| 13553 | mark_window_display_accurate_1 (struct window *w, int accurate_p) | 13551 | mark_window_display_accurate_1 (struct window *w, int accurate_p) |
| 13554 | { | 13552 | { |
| 13555 | struct buffer *b = XBUFFER (w->buffer); | 13553 | struct buffer *b = XBUFFER (w->contents); |
| 13556 | 13554 | ||
| 13557 | w->last_modified = accurate_p ? BUF_MODIFF (b) : 0; | 13555 | w->last_modified = accurate_p ? BUF_MODIFF (b) : 0; |
| 13558 | w->last_overlay_modified = accurate_p ? BUF_OVERLAY_MODIFF (b) : 0; | 13556 | w->last_overlay_modified = accurate_p ? BUF_OVERLAY_MODIFF (b) : 0; |
| @@ -13599,11 +13597,9 @@ mark_window_display_accurate (Lisp_Object window, int accurate_p) | |||
| 13599 | for (; !NILP (window); window = w->next) | 13597 | for (; !NILP (window); window = w->next) |
| 13600 | { | 13598 | { |
| 13601 | w = XWINDOW (window); | 13599 | w = XWINDOW (window); |
| 13602 | if (!NILP (w->vchild)) | 13600 | if (WINDOWP (w->contents)) |
| 13603 | mark_window_display_accurate (w->vchild, accurate_p); | 13601 | mark_window_display_accurate (w->contents, accurate_p); |
| 13604 | else if (!NILP (w->hchild)) | 13602 | else |
| 13605 | mark_window_display_accurate (w->hchild, accurate_p); | ||
| 13606 | else if (BUFFERP (w->buffer)) | ||
| 13607 | mark_window_display_accurate_1 (w, accurate_p); | 13603 | mark_window_display_accurate_1 (w, accurate_p); |
| 13608 | } | 13604 | } |
| 13609 | 13605 | ||
| @@ -13660,13 +13656,11 @@ redisplay_windows (Lisp_Object window) | |||
| 13660 | { | 13656 | { |
| 13661 | struct window *w = XWINDOW (window); | 13657 | struct window *w = XWINDOW (window); |
| 13662 | 13658 | ||
| 13663 | if (!NILP (w->hchild)) | 13659 | if (WINDOWP (w->contents)) |
| 13664 | redisplay_windows (w->hchild); | 13660 | redisplay_windows (w->contents); |
| 13665 | else if (!NILP (w->vchild)) | 13661 | else if (BUFFERP (w->contents)) |
| 13666 | redisplay_windows (w->vchild); | ||
| 13667 | else if (!NILP (w->buffer)) | ||
| 13668 | { | 13662 | { |
| 13669 | displayed_buffer = XBUFFER (w->buffer); | 13663 | displayed_buffer = XBUFFER (w->contents); |
| 13670 | /* Use list_of_error, not Qerror, so that | 13664 | /* Use list_of_error, not Qerror, so that |
| 13671 | we catch only errors and don't run the debugger. */ | 13665 | we catch only errors and don't run the debugger. */ |
| 13672 | internal_condition_case_1 (redisplay_window_0, window, | 13666 | internal_condition_case_1 (redisplay_window_0, window, |
| @@ -14313,7 +14307,7 @@ set_cursor_from_row (struct window *w, struct glyph_row *row, | |||
| 14313 | && !MATRIX_ROW_CONTINUATION_LINE_P (row) | 14307 | && !MATRIX_ROW_CONTINUATION_LINE_P (row) |
| 14314 | && row->x == 0) | 14308 | && row->x == 0) |
| 14315 | { | 14309 | { |
| 14316 | this_line_buffer = XBUFFER (w->buffer); | 14310 | this_line_buffer = XBUFFER (w->contents); |
| 14317 | 14311 | ||
| 14318 | CHARPOS (this_line_start_pos) | 14312 | CHARPOS (this_line_start_pos) |
| 14319 | = MATRIX_ROW_START_CHARPOS (row) + delta; | 14313 | = MATRIX_ROW_START_CHARPOS (row) + delta; |
| @@ -14349,7 +14343,7 @@ run_window_scroll_functions (Lisp_Object window, struct text_pos startp) | |||
| 14349 | struct window *w = XWINDOW (window); | 14343 | struct window *w = XWINDOW (window); |
| 14350 | SET_MARKER_FROM_TEXT_POS (w->start, startp); | 14344 | SET_MARKER_FROM_TEXT_POS (w->start, startp); |
| 14351 | 14345 | ||
| 14352 | if (current_buffer != XBUFFER (w->buffer)) | 14346 | if (current_buffer != XBUFFER (w->contents)) |
| 14353 | emacs_abort (); | 14347 | emacs_abort (); |
| 14354 | 14348 | ||
| 14355 | if (!NILP (Vwindow_scroll_functions)) | 14349 | if (!NILP (Vwindow_scroll_functions)) |
| @@ -14358,7 +14352,7 @@ run_window_scroll_functions (Lisp_Object window, struct text_pos startp) | |||
| 14358 | make_number (CHARPOS (startp))); | 14352 | make_number (CHARPOS (startp))); |
| 14359 | SET_TEXT_POS_FROM_MARKER (startp, w->start); | 14353 | SET_TEXT_POS_FROM_MARKER (startp, w->start); |
| 14360 | /* In case the hook functions switch buffers. */ | 14354 | /* In case the hook functions switch buffers. */ |
| 14361 | set_buffer_internal (XBUFFER (w->buffer)); | 14355 | set_buffer_internal (XBUFFER (w->contents)); |
| 14362 | } | 14356 | } |
| 14363 | 14357 | ||
| 14364 | return startp; | 14358 | return startp; |
| @@ -15009,7 +15003,7 @@ try_cursor_movement (Lisp_Object window, struct text_pos startp, int *scroll_ste | |||
| 15009 | must_scroll = 1; | 15003 | must_scroll = 1; |
| 15010 | } | 15004 | } |
| 15011 | else if (rc != CURSOR_MOVEMENT_SUCCESS | 15005 | else if (rc != CURSOR_MOVEMENT_SUCCESS |
| 15012 | && !NILP (BVAR (XBUFFER (w->buffer), bidi_display_reordering))) | 15006 | && !NILP (BVAR (XBUFFER (w->contents), bidi_display_reordering))) |
| 15013 | { | 15007 | { |
| 15014 | struct glyph_row *row1; | 15008 | struct glyph_row *row1; |
| 15015 | 15009 | ||
| @@ -15072,7 +15066,7 @@ try_cursor_movement (Lisp_Object window, struct text_pos startp, int *scroll_ste | |||
| 15072 | else if (scroll_p) | 15066 | else if (scroll_p) |
| 15073 | rc = CURSOR_MOVEMENT_MUST_SCROLL; | 15067 | rc = CURSOR_MOVEMENT_MUST_SCROLL; |
| 15074 | else if (rc != CURSOR_MOVEMENT_SUCCESS | 15068 | else if (rc != CURSOR_MOVEMENT_SUCCESS |
| 15075 | && !NILP (BVAR (XBUFFER (w->buffer), bidi_display_reordering))) | 15069 | && !NILP (BVAR (XBUFFER (w->contents), bidi_display_reordering))) |
| 15076 | { | 15070 | { |
| 15077 | /* With bidi-reordered rows, there could be more than | 15071 | /* With bidi-reordered rows, there could be more than |
| 15078 | one candidate row whose start and end positions | 15072 | one candidate row whose start and end positions |
| @@ -15179,7 +15173,7 @@ set_vertical_scroll_bar (struct window *w) | |||
| 15179 | || (w == XWINDOW (minibuf_window) | 15173 | || (w == XWINDOW (minibuf_window) |
| 15180 | && NILP (echo_area_buffer[0]))) | 15174 | && NILP (echo_area_buffer[0]))) |
| 15181 | { | 15175 | { |
| 15182 | struct buffer *buf = XBUFFER (w->buffer); | 15176 | struct buffer *buf = XBUFFER (w->contents); |
| 15183 | whole = BUF_ZV (buf) - BUF_BEGV (buf); | 15177 | whole = BUF_ZV (buf) - BUF_BEGV (buf); |
| 15184 | start = marker_position (w->start) - BUF_BEGV (buf); | 15178 | start = marker_position (w->start) - BUF_BEGV (buf); |
| 15185 | /* I don't think this is guaranteed to be right. For the | 15179 | /* I don't think this is guaranteed to be right. For the |
| @@ -15213,7 +15207,7 @@ redisplay_window (Lisp_Object window, int just_this_one_p) | |||
| 15213 | { | 15207 | { |
| 15214 | struct window *w = XWINDOW (window); | 15208 | struct window *w = XWINDOW (window); |
| 15215 | struct frame *f = XFRAME (w->frame); | 15209 | struct frame *f = XFRAME (w->frame); |
| 15216 | struct buffer *buffer = XBUFFER (w->buffer); | 15210 | struct buffer *buffer = XBUFFER (w->contents); |
| 15217 | struct buffer *old = current_buffer; | 15211 | struct buffer *old = current_buffer; |
| 15218 | struct text_pos lpoint, opoint, startp; | 15212 | struct text_pos lpoint, opoint, startp; |
| 15219 | int update_mode_line; | 15213 | int update_mode_line; |
| @@ -15268,10 +15262,10 @@ redisplay_window (Lisp_Object window, int just_this_one_p) | |||
| 15268 | else if ((w != XWINDOW (minibuf_window) | 15262 | else if ((w != XWINDOW (minibuf_window) |
| 15269 | || minibuf_level == 0) | 15263 | || minibuf_level == 0) |
| 15270 | /* When buffer is nonempty, redisplay window normally. */ | 15264 | /* When buffer is nonempty, redisplay window normally. */ |
| 15271 | && BUF_Z (XBUFFER (w->buffer)) == BUF_BEG (XBUFFER (w->buffer)) | 15265 | && BUF_Z (XBUFFER (w->contents)) == BUF_BEG (XBUFFER (w->contents)) |
| 15272 | /* Quail displays non-mini buffers in minibuffer window. | 15266 | /* Quail displays non-mini buffers in minibuffer window. |
| 15273 | In that case, redisplay the window normally. */ | 15267 | In that case, redisplay the window normally. */ |
| 15274 | && !NILP (Fmemq (w->buffer, Vminibuffer_list))) | 15268 | && !NILP (Fmemq (w->contents, Vminibuffer_list))) |
| 15275 | { | 15269 | { |
| 15276 | /* W is a mini-buffer window, but it's not active, so clear | 15270 | /* W is a mini-buffer window, but it's not active, so clear |
| 15277 | it. */ | 15271 | it. */ |
| @@ -15293,7 +15287,7 @@ redisplay_window (Lisp_Object window, int just_this_one_p) | |||
| 15293 | value. */ | 15287 | value. */ |
| 15294 | /* Really select the buffer, for the sake of buffer-local | 15288 | /* Really select the buffer, for the sake of buffer-local |
| 15295 | variables. */ | 15289 | variables. */ |
| 15296 | set_buffer_internal_1 (XBUFFER (w->buffer)); | 15290 | set_buffer_internal_1 (XBUFFER (w->contents)); |
| 15297 | 15291 | ||
| 15298 | current_matrix_up_to_date_p | 15292 | current_matrix_up_to_date_p |
| 15299 | = (w->window_end_valid | 15293 | = (w->window_end_valid |
| @@ -16584,7 +16578,7 @@ try_window_reusing_current_matrix (struct window *w) | |||
| 16584 | bidi-reordered glyph rows. Let set_cursor_from_row | 16578 | bidi-reordered glyph rows. Let set_cursor_from_row |
| 16585 | figure out where to put the cursor, and if it fails, | 16579 | figure out where to put the cursor, and if it fails, |
| 16586 | give up. */ | 16580 | give up. */ |
| 16587 | if (!NILP (BVAR (XBUFFER (w->buffer), bidi_display_reordering))) | 16581 | if (!NILP (BVAR (XBUFFER (w->contents), bidi_display_reordering))) |
| 16588 | { | 16582 | { |
| 16589 | if (!set_cursor_from_row (w, row, w->current_matrix, | 16583 | if (!set_cursor_from_row (w, row, w->current_matrix, |
| 16590 | 0, 0, 0, 0)) | 16584 | 0, 0, 0, 0)) |
| @@ -16835,7 +16829,7 @@ sync_frame_with_window_matrix_rows (struct window *w) | |||
| 16835 | 16829 | ||
| 16836 | /* Preconditions: W must be a leaf window and full-width. Its frame | 16830 | /* Preconditions: W must be a leaf window and full-width. Its frame |
| 16837 | must have a frame matrix. */ | 16831 | must have a frame matrix. */ |
| 16838 | eassert (NILP (w->hchild) && NILP (w->vchild)); | 16832 | eassert (BUFFERP (w->contents)); |
| 16839 | eassert (WINDOW_FULL_WIDTH_P (w)); | 16833 | eassert (WINDOW_FULL_WIDTH_P (w)); |
| 16840 | eassert (!FRAME_WINDOW_P (f)); | 16834 | eassert (!FRAME_WINDOW_P (f)); |
| 16841 | 16835 | ||
| @@ -16877,7 +16871,7 @@ row_containing_pos (struct window *w, ptrdiff_t charpos, | |||
| 16877 | { | 16871 | { |
| 16878 | struct glyph_row *row = start; | 16872 | struct glyph_row *row = start; |
| 16879 | struct glyph_row *best_row = NULL; | 16873 | struct glyph_row *best_row = NULL; |
| 16880 | ptrdiff_t mindif = BUF_ZV (XBUFFER (w->buffer)) + 1; | 16874 | ptrdiff_t mindif = BUF_ZV (XBUFFER (w->contents)) + 1; |
| 16881 | int last_y; | 16875 | int last_y; |
| 16882 | 16876 | ||
| 16883 | /* If we happen to start on a header-line, skip that. */ | 16877 | /* If we happen to start on a header-line, skip that. */ |
| @@ -16913,7 +16907,7 @@ row_containing_pos (struct window *w, ptrdiff_t charpos, | |||
| 16913 | { | 16907 | { |
| 16914 | struct glyph *g; | 16908 | struct glyph *g; |
| 16915 | 16909 | ||
| 16916 | if (NILP (BVAR (XBUFFER (w->buffer), bidi_display_reordering)) | 16910 | if (NILP (BVAR (XBUFFER (w->contents), bidi_display_reordering)) |
| 16917 | || (!best_row && !row->continued_p)) | 16911 | || (!best_row && !row->continued_p)) |
| 16918 | return row; | 16912 | return row; |
| 16919 | /* In bidi-reordered rows, there could be several rows | 16913 | /* In bidi-reordered rows, there could be several rows |
| @@ -17079,7 +17073,7 @@ try_window_id (struct window *w) | |||
| 17079 | wrapped line can change the wrap position, altering the line | 17073 | wrapped line can change the wrap position, altering the line |
| 17080 | above it. It might be worthwhile to handle this more | 17074 | above it. It might be worthwhile to handle this more |
| 17081 | intelligently, but for now just redisplay from scratch. */ | 17075 | intelligently, but for now just redisplay from scratch. */ |
| 17082 | if (!NILP (BVAR (XBUFFER (w->buffer), word_wrap))) | 17076 | if (!NILP (BVAR (XBUFFER (w->contents), word_wrap))) |
| 17083 | GIVE_UP (21); | 17077 | GIVE_UP (21); |
| 17084 | 17078 | ||
| 17085 | /* Under bidi reordering, adding or deleting a character in the | 17079 | /* Under bidi reordering, adding or deleting a character in the |
| @@ -17090,8 +17084,8 @@ try_window_id (struct window *w) | |||
| 17090 | to find the paragraph limits and widen the range of redisplayed | 17084 | to find the paragraph limits and widen the range of redisplayed |
| 17091 | lines to that, but for now just give up this optimization and | 17085 | lines to that, but for now just give up this optimization and |
| 17092 | redisplay from scratch. */ | 17086 | redisplay from scratch. */ |
| 17093 | if (!NILP (BVAR (XBUFFER (w->buffer), bidi_display_reordering)) | 17087 | if (!NILP (BVAR (XBUFFER (w->contents), bidi_display_reordering)) |
| 17094 | && NILP (BVAR (XBUFFER (w->buffer), bidi_paragraph_direction))) | 17088 | && NILP (BVAR (XBUFFER (w->contents), bidi_paragraph_direction))) |
| 17095 | GIVE_UP (22); | 17089 | GIVE_UP (22); |
| 17096 | 17090 | ||
| 17097 | /* Make sure beg_unchanged and end_unchanged are up to date. Do it | 17091 | /* Make sure beg_unchanged and end_unchanged are up to date. Do it |
| @@ -17956,7 +17950,7 @@ glyphs in short form, otherwise show glyphs in long form. */) | |||
| 17956 | (Lisp_Object glyphs) | 17950 | (Lisp_Object glyphs) |
| 17957 | { | 17951 | { |
| 17958 | struct window *w = XWINDOW (selected_window); | 17952 | struct window *w = XWINDOW (selected_window); |
| 17959 | struct buffer *buffer = XBUFFER (w->buffer); | 17953 | struct buffer *buffer = XBUFFER (w->contents); |
| 17960 | 17954 | ||
| 17961 | fprintf (stderr, "PT = %"pI"d, BEGV = %"pI"d. ZV = %"pI"d\n", | 17955 | fprintf (stderr, "PT = %"pI"d, BEGV = %"pI"d. ZV = %"pI"d\n", |
| 17962 | BUF_PT (buffer), BUF_BEGV (buffer), BUF_ZV (buffer)); | 17956 | BUF_PT (buffer), BUF_BEGV (buffer), BUF_ZV (buffer)); |
| @@ -18062,7 +18056,7 @@ static struct glyph_row * | |||
| 18062 | get_overlay_arrow_glyph_row (struct window *w, Lisp_Object overlay_arrow_string) | 18056 | get_overlay_arrow_glyph_row (struct window *w, Lisp_Object overlay_arrow_string) |
| 18063 | { | 18057 | { |
| 18064 | struct frame *f = XFRAME (WINDOW_FRAME (w)); | 18058 | struct frame *f = XFRAME (WINDOW_FRAME (w)); |
| 18065 | struct buffer *buffer = XBUFFER (w->buffer); | 18059 | struct buffer *buffer = XBUFFER (w->contents); |
| 18066 | struct buffer *old = current_buffer; | 18060 | struct buffer *old = current_buffer; |
| 18067 | const unsigned char *arrow_string = SDATA (overlay_arrow_string); | 18061 | const unsigned char *arrow_string = SDATA (overlay_arrow_string); |
| 18068 | int arrow_len = SCHARS (overlay_arrow_string); | 18062 | int arrow_len = SCHARS (overlay_arrow_string); |
| @@ -19269,7 +19263,7 @@ display_line (struct it *it) | |||
| 19269 | row->glyphs[TEXT_AREA]->charpos = -1; | 19263 | row->glyphs[TEXT_AREA]->charpos = -1; |
| 19270 | row->displays_text_p = 0; | 19264 | row->displays_text_p = 0; |
| 19271 | 19265 | ||
| 19272 | if (!NILP (BVAR (XBUFFER (it->w->buffer), indicate_empty_lines)) | 19266 | if (!NILP (BVAR (XBUFFER (it->w->contents), indicate_empty_lines)) |
| 19273 | && (!MINI_WINDOW_P (it->w) | 19267 | && (!MINI_WINDOW_P (it->w) |
| 19274 | || (minibuf_level && EQ (it->window, minibuf_window)))) | 19268 | || (minibuf_level && EQ (it->window, minibuf_window)))) |
| 19275 | row->indicate_empty_line_p = 1; | 19269 | row->indicate_empty_line_p = 1; |
| @@ -20084,10 +20078,8 @@ redisplay_mode_lines (Lisp_Object window, int force) | |||
| 20084 | { | 20078 | { |
| 20085 | struct window *w = XWINDOW (window); | 20079 | struct window *w = XWINDOW (window); |
| 20086 | 20080 | ||
| 20087 | if (WINDOWP (w->hchild)) | 20081 | if (WINDOWP (w->contents)) |
| 20088 | nwindows += redisplay_mode_lines (w->hchild, force); | 20082 | nwindows += redisplay_mode_lines (w->contents, force); |
| 20089 | else if (WINDOWP (w->vchild)) | ||
| 20090 | nwindows += redisplay_mode_lines (w->vchild, force); | ||
| 20091 | else if (force | 20083 | else if (force |
| 20092 | || FRAME_GARBAGED_P (XFRAME (w->frame)) | 20084 | || FRAME_GARBAGED_P (XFRAME (w->frame)) |
| 20093 | || !MATRIX_MODE_LINE_ROW (w->current_matrix)->enabled_p) | 20085 | || !MATRIX_MODE_LINE_ROW (w->current_matrix)->enabled_p) |
| @@ -20097,7 +20089,7 @@ redisplay_mode_lines (Lisp_Object window, int force) | |||
| 20097 | 20089 | ||
| 20098 | /* Set the window's buffer for the mode line display. */ | 20090 | /* Set the window's buffer for the mode line display. */ |
| 20099 | SET_TEXT_POS (lpoint, PT, PT_BYTE); | 20091 | SET_TEXT_POS (lpoint, PT, PT_BYTE); |
| 20100 | set_buffer_internal_1 (XBUFFER (w->buffer)); | 20092 | set_buffer_internal_1 (XBUFFER (w->contents)); |
| 20101 | 20093 | ||
| 20102 | /* Point refers normally to the selected window. For any | 20094 | /* Point refers normally to the selected window. For any |
| 20103 | other window, set up appropriate value. */ | 20095 | other window, set up appropriate value. */ |
| @@ -20879,7 +20871,7 @@ are the selected window and the WINDOW's buffer). */) | |||
| 20879 | XSETWINDOW (window, w); | 20871 | XSETWINDOW (window, w); |
| 20880 | 20872 | ||
| 20881 | if (NILP (buffer)) | 20873 | if (NILP (buffer)) |
| 20882 | buffer = w->buffer; | 20874 | buffer = w->contents; |
| 20883 | CHECK_BUFFER (buffer); | 20875 | CHECK_BUFFER (buffer); |
| 20884 | 20876 | ||
| 20885 | /* Make formatting the modeline a non-op when noninteractive, otherwise | 20877 | /* Make formatting the modeline a non-op when noninteractive, otherwise |
| @@ -22185,7 +22177,7 @@ calc_pixel_width_or_height (double *res, struct it *it, Lisp_Object prop, | |||
| 22185 | return OK_PIXELS (WINDOW_SCROLL_BAR_AREA_WIDTH (it->w)); | 22177 | return OK_PIXELS (WINDOW_SCROLL_BAR_AREA_WIDTH (it->w)); |
| 22186 | } | 22178 | } |
| 22187 | 22179 | ||
| 22188 | prop = buffer_local_value_1 (prop, it->w->buffer); | 22180 | prop = buffer_local_value_1 (prop, it->w->contents); |
| 22189 | if (EQ (prop, Qunbound)) | 22181 | if (EQ (prop, Qunbound)) |
| 22190 | prop = Qnil; | 22182 | prop = Qnil; |
| 22191 | } | 22183 | } |
| @@ -22237,7 +22229,7 @@ calc_pixel_width_or_height (double *res, struct it *it, Lisp_Object prop, | |||
| 22237 | return OK_PIXELS (pixels); | 22229 | return OK_PIXELS (pixels); |
| 22238 | } | 22230 | } |
| 22239 | 22231 | ||
| 22240 | car = buffer_local_value_1 (car, it->w->buffer); | 22232 | car = buffer_local_value_1 (car, it->w->contents); |
| 22241 | if (EQ (car, Qunbound)) | 22233 | if (EQ (car, Qunbound)) |
| 22242 | car = Qnil; | 22234 | car = Qnil; |
| 22243 | } | 22235 | } |
| @@ -24089,7 +24081,7 @@ produce_stretch_glyph (struct it *it) | |||
| 24089 | int n = width; | 24081 | int n = width; |
| 24090 | 24082 | ||
| 24091 | if (!STRINGP (object)) | 24083 | if (!STRINGP (object)) |
| 24092 | object = it->w->buffer; | 24084 | object = it->w->contents; |
| 24093 | #ifdef HAVE_WINDOW_SYSTEM | 24085 | #ifdef HAVE_WINDOW_SYSTEM |
| 24094 | if (FRAME_WINDOW_P (it->f)) | 24086 | if (FRAME_WINDOW_P (it->f)) |
| 24095 | append_stretch_glyph (it, object, width, height, ascent); | 24087 | append_stretch_glyph (it, object, width, height, ascent); |
| @@ -25485,7 +25477,7 @@ get_window_cursor_type (struct window *w, struct glyph *glyph, int *width, | |||
| 25485 | int *active_cursor) | 25477 | int *active_cursor) |
| 25486 | { | 25478 | { |
| 25487 | struct frame *f = XFRAME (w->frame); | 25479 | struct frame *f = XFRAME (w->frame); |
| 25488 | struct buffer *b = XBUFFER (w->buffer); | 25480 | struct buffer *b = XBUFFER (w->contents); |
| 25489 | int cursor_type = DEFAULT_CURSOR; | 25481 | int cursor_type = DEFAULT_CURSOR; |
| 25490 | Lisp_Object alt_cursor; | 25482 | Lisp_Object alt_cursor; |
| 25491 | int non_selected = 0; | 25483 | int non_selected = 0; |
| @@ -26036,10 +26028,8 @@ update_cursor_in_window_tree (struct window *w, int on_p) | |||
| 26036 | { | 26028 | { |
| 26037 | while (w) | 26029 | while (w) |
| 26038 | { | 26030 | { |
| 26039 | if (!NILP (w->hchild)) | 26031 | if (WINDOWP (w->contents)) |
| 26040 | update_cursor_in_window_tree (XWINDOW (w->hchild), on_p); | 26032 | update_cursor_in_window_tree (XWINDOW (w->contents), on_p); |
| 26041 | else if (!NILP (w->vchild)) | ||
| 26042 | update_cursor_in_window_tree (XWINDOW (w->vchild), on_p); | ||
| 26043 | else | 26033 | else |
| 26044 | update_window_cursor (w, on_p); | 26034 | update_window_cursor (w, on_p); |
| 26045 | 26035 | ||
| @@ -27285,7 +27275,7 @@ note_mode_line_or_margin_highlight (Lisp_Object window, int x, int y, | |||
| 27285 | { | 27275 | { |
| 27286 | help_echo_string = help; | 27276 | help_echo_string = help; |
| 27287 | XSETWINDOW (help_echo_window, w); | 27277 | XSETWINDOW (help_echo_window, w); |
| 27288 | help_echo_object = w->buffer; | 27278 | help_echo_object = w->contents; |
| 27289 | help_echo_pos = charpos; | 27279 | help_echo_pos = charpos; |
| 27290 | } | 27280 | } |
| 27291 | } | 27281 | } |
| @@ -27321,7 +27311,7 @@ note_mode_line_or_margin_highlight (Lisp_Object window, int x, int y, | |||
| 27321 | { | 27311 | { |
| 27322 | Lisp_Object default_help | 27312 | Lisp_Object default_help |
| 27323 | = buffer_local_value_1 (Qmode_line_default_help_echo, | 27313 | = buffer_local_value_1 (Qmode_line_default_help_echo, |
| 27324 | w->buffer); | 27314 | w->contents); |
| 27325 | 27315 | ||
| 27326 | if (STRINGP (default_help)) | 27316 | if (STRINGP (default_help)) |
| 27327 | { | 27317 | { |
| @@ -27596,7 +27586,7 @@ note_mouse_highlight (struct frame *f, int x, int y) | |||
| 27596 | 27586 | ||
| 27597 | /* Are we in a window whose display is up to date? | 27587 | /* Are we in a window whose display is up to date? |
| 27598 | And verify the buffer's text has not changed. */ | 27588 | And verify the buffer's text has not changed. */ |
| 27599 | b = XBUFFER (w->buffer); | 27589 | b = XBUFFER (w->contents); |
| 27600 | if (part == ON_TEXT | 27590 | if (part == ON_TEXT |
| 27601 | && w->window_end_valid | 27591 | && w->window_end_valid |
| 27602 | && w->last_modified == BUF_MODIFF (b) | 27592 | && w->last_modified == BUF_MODIFF (b) |
| @@ -27805,8 +27795,8 @@ note_mouse_highlight (struct frame *f, int x, int y) | |||
| 27805 | if (pos > 0) | 27795 | if (pos > 0) |
| 27806 | { | 27796 | { |
| 27807 | mouse_face = get_char_property_and_overlay | 27797 | mouse_face = get_char_property_and_overlay |
| 27808 | (make_number (pos), Qmouse_face, w->buffer, &overlay); | 27798 | (make_number (pos), Qmouse_face, w->contents, &overlay); |
| 27809 | buffer = w->buffer; | 27799 | buffer = w->contents; |
| 27810 | disp_string = object; | 27800 | disp_string = object; |
| 27811 | } | 27801 | } |
| 27812 | } | 27802 | } |
| @@ -27919,11 +27909,11 @@ note_mouse_highlight (struct frame *f, int x, int y) | |||
| 27919 | if (p > 0) | 27909 | if (p > 0) |
| 27920 | { | 27910 | { |
| 27921 | help = Fget_char_property (make_number (p), | 27911 | help = Fget_char_property (make_number (p), |
| 27922 | Qhelp_echo, w->buffer); | 27912 | Qhelp_echo, w->contents); |
| 27923 | if (!NILP (help)) | 27913 | if (!NILP (help)) |
| 27924 | { | 27914 | { |
| 27925 | charpos = p; | 27915 | charpos = p; |
| 27926 | obj = w->buffer; | 27916 | obj = w->contents; |
| 27927 | } | 27917 | } |
| 27928 | } | 27918 | } |
| 27929 | } | 27919 | } |
| @@ -27974,7 +27964,7 @@ note_mouse_highlight (struct frame *f, int x, int y) | |||
| 27974 | ptrdiff_t p = string_buffer_position (obj, start); | 27964 | ptrdiff_t p = string_buffer_position (obj, start); |
| 27975 | if (p > 0) | 27965 | if (p > 0) |
| 27976 | pointer = Fget_char_property (make_number (p), | 27966 | pointer = Fget_char_property (make_number (p), |
| 27977 | Qpointer, w->buffer); | 27967 | Qpointer, w->contents); |
| 27978 | } | 27968 | } |
| 27979 | } | 27969 | } |
| 27980 | else if (BUFFERP (obj) | 27970 | else if (BUFFERP (obj) |
| @@ -28417,12 +28407,9 @@ expose_window_tree (struct window *w, XRectangle *r) | |||
| 28417 | 28407 | ||
| 28418 | while (w && !FRAME_GARBAGED_P (f)) | 28408 | while (w && !FRAME_GARBAGED_P (f)) |
| 28419 | { | 28409 | { |
| 28420 | if (!NILP (w->hchild)) | 28410 | if (WINDOWP (w->contents)) |
| 28421 | mouse_face_overwritten_p | ||
| 28422 | |= expose_window_tree (XWINDOW (w->hchild), r); | ||
| 28423 | else if (!NILP (w->vchild)) | ||
| 28424 | mouse_face_overwritten_p | 28411 | mouse_face_overwritten_p |
| 28425 | |= expose_window_tree (XWINDOW (w->vchild), r); | 28412 | |= expose_window_tree (XWINDOW (w->contents), r); |
| 28426 | else | 28413 | else |
| 28427 | mouse_face_overwritten_p |= expose_window (w, r); | 28414 | mouse_face_overwritten_p |= expose_window (w, r); |
| 28428 | 28415 | ||
diff --git a/src/xfaces.c b/src/xfaces.c index 6db6ac7683f..b988295e9b6 100644 --- a/src/xfaces.c +++ b/src/xfaces.c | |||
| @@ -5964,7 +5964,7 @@ face_at_buffer_position (struct window *w, ptrdiff_t pos, | |||
| 5964 | 5964 | ||
| 5965 | /* W must display the current buffer. We could write this function | 5965 | /* W must display the current buffer. We could write this function |
| 5966 | to use the frame and buffer of W, but right now it doesn't. */ | 5966 | to use the frame and buffer of W, but right now it doesn't. */ |
| 5967 | /* eassert (XBUFFER (w->buffer) == current_buffer); */ | 5967 | /* eassert (XBUFFER (w->contents) == current_buffer); */ |
| 5968 | 5968 | ||
| 5969 | XSETFASTINT (position, pos); | 5969 | XSETFASTINT (position, pos); |
| 5970 | 5970 | ||
| @@ -5974,9 +5974,9 @@ face_at_buffer_position (struct window *w, ptrdiff_t pos, | |||
| 5974 | 5974 | ||
| 5975 | /* Get the `face' or `mouse_face' text property at POS, and | 5975 | /* Get the `face' or `mouse_face' text property at POS, and |
| 5976 | determine the next position at which the property changes. */ | 5976 | determine the next position at which the property changes. */ |
| 5977 | prop = Fget_text_property (position, propname, w->buffer); | 5977 | prop = Fget_text_property (position, propname, w->contents); |
| 5978 | XSETFASTINT (limit1, (limit < endpos ? limit : endpos)); | 5978 | XSETFASTINT (limit1, (limit < endpos ? limit : endpos)); |
| 5979 | end = Fnext_single_property_change (position, propname, w->buffer, limit1); | 5979 | end = Fnext_single_property_change (position, propname, w->contents, limit1); |
| 5980 | if (INTEGERP (end)) | 5980 | if (INTEGERP (end)) |
| 5981 | endpos = XINT (end); | 5981 | endpos = XINT (end); |
| 5982 | 5982 | ||
| @@ -6072,7 +6072,7 @@ face_for_overlay_string (struct window *w, ptrdiff_t pos, | |||
| 6072 | 6072 | ||
| 6073 | /* W must display the current buffer. We could write this function | 6073 | /* W must display the current buffer. We could write this function |
| 6074 | to use the frame and buffer of W, but right now it doesn't. */ | 6074 | to use the frame and buffer of W, but right now it doesn't. */ |
| 6075 | /* eassert (XBUFFER (w->buffer) == current_buffer); */ | 6075 | /* eassert (XBUFFER (w->contents) == current_buffer); */ |
| 6076 | 6076 | ||
| 6077 | XSETFASTINT (position, pos); | 6077 | XSETFASTINT (position, pos); |
| 6078 | 6078 | ||
| @@ -6082,9 +6082,9 @@ face_for_overlay_string (struct window *w, ptrdiff_t pos, | |||
| 6082 | 6082 | ||
| 6083 | /* Get the `face' or `mouse_face' text property at POS, and | 6083 | /* Get the `face' or `mouse_face' text property at POS, and |
| 6084 | determine the next position at which the property changes. */ | 6084 | determine the next position at which the property changes. */ |
| 6085 | prop = Fget_text_property (position, propname, w->buffer); | 6085 | prop = Fget_text_property (position, propname, w->contents); |
| 6086 | XSETFASTINT (limit1, (limit < endpos ? limit : endpos)); | 6086 | XSETFASTINT (limit1, (limit < endpos ? limit : endpos)); |
| 6087 | end = Fnext_single_property_change (position, propname, w->buffer, limit1); | 6087 | end = Fnext_single_property_change (position, propname, w->contents, limit1); |
| 6088 | if (INTEGERP (end)) | 6088 | if (INTEGERP (end)) |
| 6089 | endpos = XINT (end); | 6089 | endpos = XINT (end); |
| 6090 | 6090 | ||
diff --git a/src/xfns.c b/src/xfns.c index e24d3981a09..b39b78004a4 100644 --- a/src/xfns.c +++ b/src/xfns.c | |||
| @@ -5043,7 +5043,7 @@ Text larger than the specified size is clipped. */) | |||
| 5043 | 5043 | ||
| 5044 | /* Display the tooltip text in a temporary buffer. */ | 5044 | /* Display the tooltip text in a temporary buffer. */ |
| 5045 | old_buffer = current_buffer; | 5045 | old_buffer = current_buffer; |
| 5046 | set_buffer_internal_1 (XBUFFER (XWINDOW (FRAME_ROOT_WINDOW (f))->buffer)); | 5046 | set_buffer_internal_1 (XBUFFER (XWINDOW (FRAME_ROOT_WINDOW (f))->contents)); |
| 5047 | bset_truncate_lines (current_buffer, Qnil); | 5047 | bset_truncate_lines (current_buffer, Qnil); |
| 5048 | clear_glyph_matrix (w->desired_matrix); | 5048 | clear_glyph_matrix (w->desired_matrix); |
| 5049 | clear_glyph_matrix (w->current_matrix); | 5049 | clear_glyph_matrix (w->current_matrix); |
diff --git a/src/xmenu.c b/src/xmenu.c index af08eeb657c..2042699f48c 100644 --- a/src/xmenu.c +++ b/src/xmenu.c | |||
| @@ -976,7 +976,7 @@ set_frame_menubar (FRAME_PTR f, bool first_time, bool deep_p) | |||
| 976 | if (! menubar_widget) | 976 | if (! menubar_widget) |
| 977 | previous_menu_items_used = 0; | 977 | previous_menu_items_used = 0; |
| 978 | 978 | ||
| 979 | buffer = XWINDOW (FRAME_SELECTED_WINDOW (f))->buffer; | 979 | buffer = XWINDOW (FRAME_SELECTED_WINDOW (f))->contents; |
| 980 | specbind (Qinhibit_quit, Qt); | 980 | specbind (Qinhibit_quit, Qt); |
| 981 | /* Don't let the debugger step into this code | 981 | /* Don't let the debugger step into this code |
| 982 | because it is not reentrant. */ | 982 | because it is not reentrant. */ |