annotate src/window.h @ 26059:2a7f35e0072b

(Fminibuffer_complete_and_exit): Supply value for new ESCAPE_FROM_EDGE parameter to Ffield_beginning. (Fminibuffer_complete_word): Use Ffield_beginning to find the prompt end. (Fminibuffer_complete_and_exit): Test for an empty input string by seeing where the field begins, instead of looking at text-properties. (read_minibuf): Don't save minibuffer prompt length on minibuf_save_list. Don't initialize minibuffer prompt length. Wrap prompt text-properties around the entire prompt. Add 'prompt text-property to prompt. Get final value with Ffield_string instead of make_buffer_string. (read_minibuf_unwind): Don't restore minibuffer prompt length from minibuf_save_list. (do_completion): Get minibuffer input with Ffield_string instead of Fbuffer_string. Erase minibuffer input with Ferase_field instead of erase_buffer. (Fminibuffer_complete_and_exit): Likewise. Test whether buffer is empty by looking for the 'prompt text property at the end. Set prompt length by looking for the end of the prompt text property, and save prompt length for later use (since there is no longer a buffer variable to get it from). (Fminibuffer_prompt_width, Fminibuffer_prompt_end): Functions removed. (syms_of_minibuf): Remove initializations of Sminibuffer_prompt_width and Sminibuffer_prompt_end.
author Gerd Moellmann <gerd@gnu.org>
date Sun, 17 Oct 1999 12:55:49 +0000
parents 2bbee3534773
children 344d89e485f2
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
361
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1 /* Window definitions for GNU Emacs.
10440
055b4219b6d7 (struct window): New member column_number_displayed.
Karl Heuer <kwzh@gnu.org>
parents: 8833
diff changeset
2 Copyright (C) 1985, 1986, 1993, 1995 Free Software Foundation, Inc.
361
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4 This file is part of GNU Emacs.
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
6 GNU Emacs is free software; you can redistribute it and/or modify
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
7 it under the terms of the GNU General Public License as published by
732
a8d94735277e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 488
diff changeset
8 the Free Software Foundation; either version 2, or (at your option)
361
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
9 any later version.
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
10
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
11 GNU Emacs is distributed in the hope that it will be useful,
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
14 GNU General Public License for more details.
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
15
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
16 You should have received a copy of the GNU General Public License
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
17 along with GNU Emacs; see the file COPYING. If not, write to
14186
ee40177f6c68 Update FSF's address in the preamble.
Erik Naggum <erik@naggum.no>
parents: 13458
diff changeset
18 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
ee40177f6c68 Update FSF's address in the preamble.
Erik Naggum <erik@naggum.no>
parents: 13458
diff changeset
19 Boston, MA 02111-1307, USA. */
361
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
20
24996
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
21 #ifndef WINDOW_H_INCLUDED
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
22 #define WINDOW_H_INCLUDED
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
23
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
24 #include "dispextern.h"
361
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
25
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
26 /* Windows are allocated as if they were vectors, but then the
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
27 Lisp data type is changed to Lisp_Window. They are garbage
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
28 collected along with the vectors.
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
29
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
30 All windows in use are arranged into a tree, with pointers up and down.
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
31
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
32 Windows that are leaves of the tree are actually displayed
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
33 and show the contents of buffers. Windows that are not leaves
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
34 are used for representing the way groups of leaf windows are
769
1f320a0729f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
35 arranged on the frame. Leaf windows never become non-leaves.
361
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
36 They are deleted only by calling delete-window on them (but
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
37 this can be done implicitly). Combination windows can be created
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
38 and deleted at any time.
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
39
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
40 A leaf window has a non-nil buffer field, and also
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
41 has markers in its start and pointm fields. Non-leaf windows
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
42 have nil in these fields.
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
43
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
44 Non-leaf windows are either vertical or horizontal combinations.
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
45
769
1f320a0729f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
46 A vertical combination window has children that are arranged on the frame
361
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
47 one above the next. Its vchild field points to the uppermost child.
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
48 The parent field of each of the children points to the vertical
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
49 combination window. The next field of each child points to the
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
50 child below it, or is nil for the lowest child. The prev field
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
51 of each child points to the child above it, or is nil for the
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
52 highest child.
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
53
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
54 A horizontal combination window has children that are side by side.
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
55 Its hchild field points to the leftmost child. In each child
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
56 the next field points to the child to the right and the prev field
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
57 points to the child to the left.
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
58
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
59 The children of a vertical combination window may be leaf windows
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
60 or horizontal combination windows. The children of a horizontal
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
61 combination window may be leaf windows or vertical combination windows.
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
62
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
63 At the top of the tree are two windows which have nil as parent.
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
64 The second of these is minibuf_window. The first one manages all
769
1f320a0729f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
65 the frame area that is not minibuffer, and is called the root window.
361
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
66 Different windows can be the root at different times;
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
67 initially the root window is a leaf window, but if more windows
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
68 are created then that leaf window ceases to be root and a newly
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
69 made combination window becomes root instead.
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
70
998
61c6983219ff entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 769
diff changeset
71 In any case, on screens which have an ordinary window and a
61c6983219ff entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 769
diff changeset
72 minibuffer, prev of the minibuf window is the root window and next of
61c6983219ff entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 769
diff changeset
73 the root window is the minibuf window. On minibufferless screens or
61c6983219ff entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 769
diff changeset
74 minibuffer-only screens, the root window and the minibuffer window are
1445
3b0906e2b82c * window.h (struct window): Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 998
diff changeset
75 one and the same, so its prev and next members are nil.
361
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
76
1445
3b0906e2b82c * window.h (struct window): Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 998
diff changeset
77 A dead window has its buffer, hchild, and vchild windows all nil. */
361
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
78
24996
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
79 struct cursor_pos
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
80 {
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
81 /* Pixel position. These are always window relative. */
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
82 int x, y;
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
83
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
84 /* Glyph matrix position. */
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
85 int hpos, vpos;
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
86 };
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
87
361
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
88 struct window
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
89 {
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
90 /* The first two fields are really the header of a vector */
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
91 /* The window code does not refer to them. */
8833
e2b9f8616738 (struct window): Use EMACS_INT.
Richard M. Stallman <rms@gnu.org>
parents: 7950
diff changeset
92 EMACS_INT size;
361
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
93 struct Lisp_Vector *vec_next;
769
1f320a0729f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
94 /* The frame this window is on. */
1f320a0729f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
95 Lisp_Object frame;
361
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
96 /* t if this window is a minibuffer window. */
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
97 Lisp_Object mini_p;
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
98 /* Following child (to right or down) at same level of tree */
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
99 Lisp_Object next;
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
100 /* Preceding child (to left or up) at same level of tree */
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
101 Lisp_Object prev;
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
102 /* First child of this window. */
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
103 /* vchild is used if this is a vertical combination,
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
104 hchild if this is a horizontal combination. */
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
105 Lisp_Object hchild, vchild;
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
106 /* The window this one is a child of. */
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
107 Lisp_Object parent;
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
108 /* The upper left corner coordinates of this window,
769
1f320a0729f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
109 as integers relative to upper left corner of frame = 0, 0 */
361
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
110 Lisp_Object left;
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
111 Lisp_Object top;
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
112 /* The size of the window */
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
113 Lisp_Object height;
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
114 Lisp_Object width;
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
115 /* The buffer displayed in this window */
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
116 /* Of the fields vchild, hchild and buffer, only one is non-nil. */
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
117 Lisp_Object buffer;
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
118 /* A marker pointing to where in the text to start displaying */
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
119 Lisp_Object start;
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
120 /* A marker pointing to where in the text point is in this window,
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
121 used only when the window is not selected.
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
122 This exists so that when multiple windows show one buffer
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
123 each one can have its own value of point. */
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
124 Lisp_Object pointm;
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
125 /* Non-nil means next redisplay must use the value of start
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
126 set up for it in advance. Set by scrolling commands. */
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
127 Lisp_Object force_start;
16553
39aa8dd49637 (struct window): New field optional_new_start.
Richard M. Stallman <rms@gnu.org>
parents: 16264
diff changeset
128 /* Non-nil means we have explicitly changed the value of start,
39aa8dd49637 (struct window): New field optional_new_start.
Richard M. Stallman <rms@gnu.org>
parents: 16264
diff changeset
129 but that the next redisplay is not obliged to use the new value. */
39aa8dd49637 (struct window): New field optional_new_start.
Richard M. Stallman <rms@gnu.org>
parents: 16264
diff changeset
130 Lisp_Object optional_new_start;
361
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
131 /* Number of columns display within the window is scrolled to the left. */
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
132 Lisp_Object hscroll;
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
133 /* Number saying how recently window was selected */
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
134 Lisp_Object use_time;
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
135 /* Unique number of window assigned when it was created */
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
136 Lisp_Object sequence_number;
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
137 /* No permanent meaning; used by save-window-excursion's bookkeeping */
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
138 Lisp_Object temslot;
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
139 /* text.modified of displayed buffer as of last time display completed */
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
140 Lisp_Object last_modified;
16192
b67b2e8eacb3 (struct window): New field last_overlay_modified.
Richard M. Stallman <rms@gnu.org>
parents: 15542
diff changeset
141 /* BUF_OVERLAY_MODIFIED of displayed buffer as of last complete update. */
b67b2e8eacb3 (struct window): New field last_overlay_modified.
Richard M. Stallman <rms@gnu.org>
parents: 15542
diff changeset
142 Lisp_Object last_overlay_modified;
361
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
143 /* Value of point at that time */
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
144 Lisp_Object last_point;
15542
f57ee448e79e (struct window): New field, last_had_star.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
145 /* Non-nil if the buffer was "modified" when the window
f57ee448e79e (struct window): New field, last_had_star.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
146 was last updated. */
f57ee448e79e (struct window): New field, last_had_star.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
147 Lisp_Object last_had_star;
1994
73ce9dd21093 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1872
diff changeset
148 /* This window's vertical scroll bar. This field is only for use
1784
11f62e53acff Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1717
diff changeset
149 by the window-system-dependent code which implements the
1994
73ce9dd21093 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1872
diff changeset
150 scroll bars; it can store anything it likes here. If this
73ce9dd21093 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1872
diff changeset
151 window is newly created and we haven't displayed a scroll bar in
73ce9dd21093 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1872
diff changeset
152 it yet, or if the frame doesn't have any scroll bars, this is nil. */
73ce9dd21093 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1872
diff changeset
153 Lisp_Object vertical_scroll_bar;
1717
aa7d6d57504b * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1526
diff changeset
154
24996
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
155 /* Width of left and right marginal areas. A value of nil means
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
156 no margin. */
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
157 Lisp_Object left_margin_width;
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
158 Lisp_Object right_margin_width;
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
159
361
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
160 /* The rest are currently not used or only half used */
769
1f320a0729f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
161 /* Frame coords of mark as of last time display completed */
1f320a0729f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
162 /* May be nil if mark does not exist or was not on frame */
361
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
163 Lisp_Object last_mark_x;
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
164 Lisp_Object last_mark_y;
24996
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
165 /* Z - the buffer position of the last glyph in the current matrix
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
166 of W. Only valid if WINDOW_END_VALID is not nil. */
361
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
167 Lisp_Object window_end_pos;
24996
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
168 /* Glyph matrix row of the last glyph in the current matrix
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
169 of W. Only valid if WINDOW_END_VALID is not nil. */
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
170 Lisp_Object window_end_vpos;
361
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
171 /* t if window_end_pos is truly valid.
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
172 This is nil if nontrivial redisplay is preempted
769
1f320a0729f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
173 since in that case the frame image that window_end_pos
1f320a0729f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
174 did not get onto the frame. */
361
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
175 Lisp_Object window_end_valid;
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
176 /* Non-nil means must regenerate mode line of this window */
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
177 Lisp_Object update_mode_line;
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
178 /* Non-nil means current value of `start'
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
179 was the beginning of a line when it was chosen. */
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
180 Lisp_Object start_at_line_beg;
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
181 /* Display-table to use for displaying chars in this window.
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
182 Nil means use the buffer's own display-table. */
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
183 Lisp_Object display_table;
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
184 /* Non-nil means window is marked as dedicated. */
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
185 Lisp_Object dedicated;
2304
480abddc8bdd (struct window): New fields base_line_number and base_line_pos.
Richard M. Stallman <rms@gnu.org>
parents: 1994
diff changeset
186 /* Line number and position of a line somewhere above the
480abddc8bdd (struct window): New fields base_line_number and base_line_pos.
Richard M. Stallman <rms@gnu.org>
parents: 1994
diff changeset
187 top of the screen. */
480abddc8bdd (struct window): New fields base_line_number and base_line_pos.
Richard M. Stallman <rms@gnu.org>
parents: 1994
diff changeset
188 /* If this field is nil, it means we don't have a base line. */
480abddc8bdd (struct window): New fields base_line_number and base_line_pos.
Richard M. Stallman <rms@gnu.org>
parents: 1994
diff changeset
189 Lisp_Object base_line_number;
480abddc8bdd (struct window): New fields base_line_number and base_line_pos.
Richard M. Stallman <rms@gnu.org>
parents: 1994
diff changeset
190 /* If this field is nil, it means we don't have a base line.
480abddc8bdd (struct window): New fields base_line_number and base_line_pos.
Richard M. Stallman <rms@gnu.org>
parents: 1994
diff changeset
191 If it is a buffer, it means don't display the line number
480abddc8bdd (struct window): New fields base_line_number and base_line_pos.
Richard M. Stallman <rms@gnu.org>
parents: 1994
diff changeset
192 as long as the window shows that buffer. */
480abddc8bdd (struct window): New fields base_line_number and base_line_pos.
Richard M. Stallman <rms@gnu.org>
parents: 1994
diff changeset
193 Lisp_Object base_line_pos;
2856
794899b97115 (struct window): New slot region_showing.
Richard M. Stallman <rms@gnu.org>
parents: 2304
diff changeset
194 /* If we have highlighted the region (or any part of it),
794899b97115 (struct window): New slot region_showing.
Richard M. Stallman <rms@gnu.org>
parents: 2304
diff changeset
195 this is the mark position that we used, as an integer. */
794899b97115 (struct window): New slot region_showing.
Richard M. Stallman <rms@gnu.org>
parents: 2304
diff changeset
196 Lisp_Object region_showing;
10440
055b4219b6d7 (struct window): New member column_number_displayed.
Karl Heuer <kwzh@gnu.org>
parents: 8833
diff changeset
197 /* The column number currently displayed in this window's mode line,
055b4219b6d7 (struct window): New member column_number_displayed.
Karl Heuer <kwzh@gnu.org>
parents: 8833
diff changeset
198 or nil if column numbers are not being displayed. */
055b4219b6d7 (struct window): New member column_number_displayed.
Karl Heuer <kwzh@gnu.org>
parents: 8833
diff changeset
199 Lisp_Object column_number_displayed;
13458
adc8fc9fe6ed (struct window): New field redisplay_end_trigger.
Richard M. Stallman <rms@gnu.org>
parents: 12632
diff changeset
200 /* If redisplay in this window goes beyond this buffer position,
adc8fc9fe6ed (struct window): New field redisplay_end_trigger.
Richard M. Stallman <rms@gnu.org>
parents: 12632
diff changeset
201 must run the redisplay-end-trigger-hook. */
adc8fc9fe6ed (struct window): New field redisplay_end_trigger.
Richard M. Stallman <rms@gnu.org>
parents: 12632
diff changeset
202 Lisp_Object redisplay_end_trigger;
25256
631f514ef580 (struct window): New field too_small_ok.
Gerd Moellmann <gerd@gnu.org>
parents: 24996
diff changeset
203 /* Non-nil means don't delete this window for becoming "too small". */
631f514ef580 (struct window): New field too_small_ok.
Gerd Moellmann <gerd@gnu.org>
parents: 24996
diff changeset
204 Lisp_Object too_small_ok;
25793
2bbee3534773 (struct window): New members orig_top, orig_height.
Gerd Moellmann <gerd@gnu.org>
parents: 25740
diff changeset
205
2bbee3534773 (struct window): New members orig_top, orig_height.
Gerd Moellmann <gerd@gnu.org>
parents: 25740
diff changeset
206 /* Original window height and top before mini-window was
2bbee3534773 (struct window): New members orig_top, orig_height.
Gerd Moellmann <gerd@gnu.org>
parents: 25740
diff changeset
207 enlarged. */
2bbee3534773 (struct window): New members orig_top, orig_height.
Gerd Moellmann <gerd@gnu.org>
parents: 25740
diff changeset
208 Lisp_Object orig_height, orig_top;
24996
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
209
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
210 /* No Lisp data may follow below this point without changing
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
211 mark_object in alloc.c. The member current_matrix must be the
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
212 first non-Lisp member. */
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
213
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
214 /* Glyph matrices. */
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
215 struct glyph_matrix *current_matrix;
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
216 struct glyph_matrix *desired_matrix;
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
217
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
218 /* Cursor position as of last update that completed without
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
219 pause. This is the position of last_point. */
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
220 struct cursor_pos last_cursor;
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
221
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
222 /* Intended cursor position. This is a position within the
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
223 glyph matrix. */
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
224 struct cursor_pos cursor;
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
225
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
226 /* Where the cursor actually is. */
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
227 struct cursor_pos phys_cursor;
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
228
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
229 /* Cursor type last drawn on the window. Used for X frames; -1
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
230 initially. */
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
231 int phys_cursor_type;
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
232
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
233 /* This is handy for undrawing the cursor. */
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
234 int phys_cursor_ascent, phys_cursor_height;
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
235
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
236 /* Non-zero means the cursor is currently displayed. This can be
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
237 set to zero by functions overpainting the cursor image. */
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
238 unsigned phys_cursor_on_p : 1;
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
239
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
240 /* 0 means cursor is logically on, 1 means it's off. Used for
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
241 blinking cursor. */
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
242 unsigned cursor_off_p : 1;
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
243
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
244 /* Value of cursor_off_p as of the last redisplay. */
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
245 unsigned last_cursor_off_p : 1;
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
246
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
247 /* 1 means desired matrix has been build and window must be
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
248 updated in update_frame. */
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
249 unsigned must_be_updated_p : 1;
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
250
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
251 /* Flag indicating that this window is not a real one.
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
252 Currently only used for menu bar windows of frames. */
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
253 unsigned pseudo_window_p : 1;
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
254
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
255 /* Amount by which lines of this window are scrolled in
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
256 y-direction (smooth scrolling). */
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
257 int vscroll;
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
258
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
259 /* Z_BYTE - the buffer position of the last glyph in the current matrix
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
260 of W. Only valid if WINDOW_END_VALID is not nil. */
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
261 int window_end_bytepos;
25518
319e90e7bd82 New member frozen_window_start_p.
Gerd Moellmann <gerd@gnu.org>
parents: 25376
diff changeset
262
319e90e7bd82 New member frozen_window_start_p.
Gerd Moellmann <gerd@gnu.org>
parents: 25376
diff changeset
263 /* 1 means the window start of this window is frozen and may not
319e90e7bd82 New member frozen_window_start_p.
Gerd Moellmann <gerd@gnu.org>
parents: 25376
diff changeset
264 be changed during redisplay. If point is not in the window,
319e90e7bd82 New member frozen_window_start_p.
Gerd Moellmann <gerd@gnu.org>
parents: 25376
diff changeset
265 accept that. */
319e90e7bd82 New member frozen_window_start_p.
Gerd Moellmann <gerd@gnu.org>
parents: 25376
diff changeset
266 unsigned frozen_window_start_p : 1;
25740
68659a16bc42 (struct window): New member height_fixed_p.
Gerd Moellmann <gerd@gnu.org>
parents: 25713
diff changeset
267
68659a16bc42 (struct window): New member height_fixed_p.
Gerd Moellmann <gerd@gnu.org>
parents: 25713
diff changeset
268 /* 1 means that this window's height is temporarily fixed. Used
68659a16bc42 (struct window): New member height_fixed_p.
Gerd Moellmann <gerd@gnu.org>
parents: 25713
diff changeset
269 in resize_mini_window to precent resizing selected_window, if
68659a16bc42 (struct window): New member height_fixed_p.
Gerd Moellmann <gerd@gnu.org>
parents: 25713
diff changeset
270 possible. */
68659a16bc42 (struct window): New member height_fixed_p.
Gerd Moellmann <gerd@gnu.org>
parents: 25713
diff changeset
271 unsigned height_fixed_p : 1;
24996
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
272 };
361
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
273
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
274 /* 1 if W is a minibuffer window. */
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
275
24996
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
276 #define MINI_WINDOW_P(W) (!EQ ((W)->mini_p, Qnil))
361
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
277
24996
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
278 /* Return the window column at which the text in window W starts.
16264
012a1d850ee8 (WINDOW_LEFT_MARGIN): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 16192
diff changeset
279 This is different from the `left' field because it does not include
012a1d850ee8 (WINDOW_LEFT_MARGIN): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 16192
diff changeset
280 a left-hand scroll bar if any. */
012a1d850ee8 (WINDOW_LEFT_MARGIN): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 16192
diff changeset
281
012a1d850ee8 (WINDOW_LEFT_MARGIN): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 16192
diff changeset
282 #define WINDOW_LEFT_MARGIN(W) \
012a1d850ee8 (WINDOW_LEFT_MARGIN): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 16192
diff changeset
283 (XFASTINT ((W)->left) \
012a1d850ee8 (WINDOW_LEFT_MARGIN): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 16192
diff changeset
284 + FRAME_LEFT_SCROLL_BAR_WIDTH (XFRAME (WINDOW_FRAME (W))))
012a1d850ee8 (WINDOW_LEFT_MARGIN): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 16192
diff changeset
285
24996
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
286 /* Return the window column before which window W ends.
16264
012a1d850ee8 (WINDOW_LEFT_MARGIN): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 16192
diff changeset
287 This includes a right-hand scroll bar, if any. */
012a1d850ee8 (WINDOW_LEFT_MARGIN): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 16192
diff changeset
288
012a1d850ee8 (WINDOW_LEFT_MARGIN): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 16192
diff changeset
289 #define WINDOW_RIGHT_EDGE(W) \
012a1d850ee8 (WINDOW_LEFT_MARGIN): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 16192
diff changeset
290 (XFASTINT ((W)->left) + XFASTINT ((W)->width))
012a1d850ee8 (WINDOW_LEFT_MARGIN): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 16192
diff changeset
291
24996
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
292 /* Return the window column before which the text in window W ends.
16264
012a1d850ee8 (WINDOW_LEFT_MARGIN): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 16192
diff changeset
293 This is different from WINDOW_RIGHT_EDGE because it does not include
20700
524d1cfb6913 (WINDOW_RIGHT_MARGIN): Deduct width of vertical line
Richard M. Stallman <rms@gnu.org>
parents: 20349
diff changeset
294 a scroll bar or window-separating line on the right edge. */
16264
012a1d850ee8 (WINDOW_LEFT_MARGIN): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 16192
diff changeset
295
24996
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
296 #define WINDOW_RIGHT_MARGIN(W) \
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
297 (WINDOW_RIGHT_EDGE (W) \
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
298 - (FRAME_HAS_VERTICAL_SCROLL_BARS_ON_RIGHT (XFRAME (WINDOW_FRAME (W))) \
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
299 ? FRAME_SCROLL_BAR_COLS (XFRAME (WINDOW_FRAME (W))) \
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
300 : 0))
16264
012a1d850ee8 (WINDOW_LEFT_MARGIN): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 16192
diff changeset
301
012a1d850ee8 (WINDOW_LEFT_MARGIN): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 16192
diff changeset
302 /* 1 if window W takes up the full width of its frame. */
012a1d850ee8 (WINDOW_LEFT_MARGIN): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 16192
diff changeset
303
012a1d850ee8 (WINDOW_LEFT_MARGIN): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 16192
diff changeset
304 #define WINDOW_FULL_WIDTH_P(W) \
012a1d850ee8 (WINDOW_LEFT_MARGIN): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 16192
diff changeset
305 (XFASTINT ((W)->width) == FRAME_WINDOW_WIDTH (XFRAME (WINDOW_FRAME (W))))
012a1d850ee8 (WINDOW_LEFT_MARGIN): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 16192
diff changeset
306
012a1d850ee8 (WINDOW_LEFT_MARGIN): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 16192
diff changeset
307 /* 1 if window W's has no other windows to its right in its frame. */
012a1d850ee8 (WINDOW_LEFT_MARGIN): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 16192
diff changeset
308
012a1d850ee8 (WINDOW_LEFT_MARGIN): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 16192
diff changeset
309 #define WINDOW_RIGHTMOST_P(W) \
012a1d850ee8 (WINDOW_LEFT_MARGIN): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 16192
diff changeset
310 (WINDOW_RIGHT_EDGE (W) == FRAME_WINDOW_WIDTH (XFRAME (WINDOW_FRAME (W))))
012a1d850ee8 (WINDOW_LEFT_MARGIN): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 16192
diff changeset
311
24996
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
312
361
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
313 /* This is the window in which the terminal's cursor should
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
314 be left when nothing is being done with it. This must
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
315 always be a leaf window, and its buffer is selected by
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
316 the top level editing loop at the end of each command.
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
317
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
318 This value is always the same as
769
1f320a0729f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
319 FRAME_SELECTED_WINDOW (selected_frame). */
361
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
320
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
321 extern Lisp_Object selected_window;
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
322
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
323 /* This is a time stamp for window selection, so we can find the least
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
324 recently used window. Its only users are Fselect_window,
769
1f320a0729f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
325 init_window_once, and make_frame. */
361
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
326
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
327 extern int window_select_count;
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
328
769
1f320a0729f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
329 /* The minibuffer window of the selected frame.
361
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
330 Note that you cannot test for minibufferness of an arbitrary window
998
61c6983219ff entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 769
diff changeset
331 by comparing against this; use the MINI_WINDOW_P macro instead. */
361
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
332
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
333 extern Lisp_Object minibuf_window;
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
334
24996
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
335 /* Non-nil => window to for C-M-v to scroll when the minibuffer is
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
336 selected. */
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
337
361
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
338 extern Lisp_Object Vminibuf_scroll_window;
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
339
24996
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
340 /* Nil or a symbol naming the window system under which emacs is
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
341 running ('x is the only current possibility) */
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
342
361
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
343 extern Lisp_Object Vwindow_system;
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
344
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
345 /* Version number of X windows: 10, 11 or nil. */
24996
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
346
361
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
347 extern Lisp_Object Vwindow_system_version;
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
348
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
349 /* Window that the mouse is over (nil if no mouse support). */
24996
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
350
361
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
351 extern Lisp_Object Vmouse_window;
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
352
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
353 /* Last mouse-click event (nil if no mouse support). */
24996
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
354
361
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
355 extern Lisp_Object Vmouse_event;
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
356
20349
6ab8801244c2 Add prototypes.
Andreas Schwab <schwab@suse.de>
parents: 16553
diff changeset
357 EXFUN (Fnext_window, 3);
6ab8801244c2 Add prototypes.
Andreas Schwab <schwab@suse.de>
parents: 16553
diff changeset
358 EXFUN (Fselect_window, 1);
20856
1e37bbef998c Change argument number of Fdisplay_buffer to 3.
Kenichi Handa <handa@m17n.org>
parents: 20700
diff changeset
359 EXFUN (Fdisplay_buffer, 3);
20349
6ab8801244c2 Add prototypes.
Andreas Schwab <schwab@suse.de>
parents: 16553
diff changeset
360 EXFUN (Fset_window_buffer, 2);
24996
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
361 EXFUN (Fset_window_hscroll, 2);
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
362 EXFUN (Fwindow_hscroll, 1);
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
363 EXFUN (Fset_window_vscroll, 2);
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
364 EXFUN (Fwindow_vscroll, 1);
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
365 EXFUN (Fset_window_margins, 3);
20349
6ab8801244c2 Add prototypes.
Andreas Schwab <schwab@suse.de>
parents: 16553
diff changeset
366 extern Lisp_Object make_window P_ ((void));
6ab8801244c2 Add prototypes.
Andreas Schwab <schwab@suse.de>
parents: 16553
diff changeset
367 extern void delete_window P_ ((Lisp_Object));
24996
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
368 extern Lisp_Object window_from_coordinates P_ ((struct frame *, int, int, int *, int));
20349
6ab8801244c2 Add prototypes.
Andreas Schwab <schwab@suse.de>
parents: 16553
diff changeset
369 EXFUN (Fwindow_dedicated_p, 1);
6ab8801244c2 Add prototypes.
Andreas Schwab <schwab@suse.de>
parents: 16553
diff changeset
370 extern int window_height P_ ((Lisp_Object));
6ab8801244c2 Add prototypes.
Andreas Schwab <schwab@suse.de>
parents: 16553
diff changeset
371 extern int window_width P_ ((Lisp_Object));
6ab8801244c2 Add prototypes.
Andreas Schwab <schwab@suse.de>
parents: 16553
diff changeset
372 extern void set_window_height P_ ((Lisp_Object, int, int));
6ab8801244c2 Add prototypes.
Andreas Schwab <schwab@suse.de>
parents: 16553
diff changeset
373 extern void set_window_width P_ ((Lisp_Object, int, int));
6ab8801244c2 Add prototypes.
Andreas Schwab <schwab@suse.de>
parents: 16553
diff changeset
374 extern void delete_all_subwindows P_ ((struct window *));
25713
54a8aba6712b (freeze_window_starts): Fix typo in prototype.
Gerd Moellmann <gerd@gnu.org>
parents: 25518
diff changeset
375 extern void freeze_window_starts P_ ((struct frame *, int));
25518
319e90e7bd82 New member frozen_window_start_p.
Gerd Moellmann <gerd@gnu.org>
parents: 25376
diff changeset
376 extern void foreach_window ();
25793
2bbee3534773 (struct window): New members orig_top, orig_height.
Gerd Moellmann <gerd@gnu.org>
parents: 25740
diff changeset
377 extern void grow_mini_window P_ ((struct window *, int));
2bbee3534773 (struct window): New members orig_top, orig_height.
Gerd Moellmann <gerd@gnu.org>
parents: 25740
diff changeset
378 extern void shrink_mini_window P_ ((struct window *));
2bbee3534773 (struct window): New members orig_top, orig_height.
Gerd Moellmann <gerd@gnu.org>
parents: 25740
diff changeset
379
361
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
380
24996
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
381 /* Make WINDOW display BUFFER as its contents. RUN_HOOKS_P non-zero
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
382 means it's allowed to run hooks. See make_frame for a case where
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
383 it's not allowed. */
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
384
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
385 void set_window_buffer P_ ((Lisp_Object window, Lisp_Object buffer,
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
386 int run_hooks_p));
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
387
361
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
388 /* Prompt to display in front of the minibuffer contents. */
24996
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
389
7950
c0a4d26e7498 (minibuf_prompt): Now a Lisp_Object. All uses changed.
Karl Heuer <kwzh@gnu.org>
parents: 5235
diff changeset
390 extern Lisp_Object minibuf_prompt;
361
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
391
488
4fddd0f0fc33 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 361
diff changeset
392 /* The visual width of the above. */
24996
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
393
488
4fddd0f0fc33 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 361
diff changeset
394 extern int minibuf_prompt_width;
4fddd0f0fc33 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 361
diff changeset
395
24996
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
396 /* This is the window where the echo area message was displayed. It
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
397 is always a minibuffer window, but it may not be the same window
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
398 currently active as a minibuffer. */
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
399
12632
81f12c1d0178 (echo_area_window): Declared.
Richard M. Stallman <rms@gnu.org>
parents: 11171
diff changeset
400 extern Lisp_Object echo_area_window;
81f12c1d0178 (echo_area_window): Declared.
Richard M. Stallman <rms@gnu.org>
parents: 11171
diff changeset
401
361
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
402 /* Depth in recursive edits. */
24996
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
403
361
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
404 extern int command_loop_level;
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
405
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
406 /* Depth in minibuffer invocations. */
24996
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
407
361
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
408 extern int minibuf_level;
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
409
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
410 /* true iff we should redraw the mode lines on the next redisplay. */
24996
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
411
361
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
412 extern int update_mode_lines;
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
413
24996
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
414 /* Nonzero if BEGV - BEG or Z - ZV of current buffer has changed since
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
415 last redisplay that finished. */
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
416
361
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
417 extern int clip_changed;
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
418
24996
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
419 /* Nonzero if window sizes or contents have changed since last
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
420 redisplay that finished */
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
421
361
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
422 extern int windows_or_buffers_changed;
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
423
24996
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
424 /* Number of windows displaying the selected buffer. Normally this is
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
425 1, but it can be more. */
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
426
361
313b0555ba8f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
427 extern int buffer_shared;
998
61c6983219ff entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 769
diff changeset
428
61c6983219ff entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 769
diff changeset
429 /* If *ROWS or *COLS are too small a size for FRAME, set them to the
61c6983219ff entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 769
diff changeset
430 minimum allowable size. */
24996
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
431
20349
6ab8801244c2 Add prototypes.
Andreas Schwab <schwab@suse.de>
parents: 16553
diff changeset
432 extern void check_frame_size P_ ((struct frame *frame, int *rows, int *cols));
24996
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
433
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
434 /* Return a pointer to the glyph W's physical cursor is on. Value is
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
435 null if W's current matrix is invalid, so that no meaningfull glyph
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
436 can be returned. */
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
437
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
438 struct glyph *get_phys_cursor_glyph P_ ((struct window *w));
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
439
429ec2c075e4 (struct window): Add vscroll.
Gerd Moellmann <gerd@gnu.org>
parents: 21938
diff changeset
440 #endif /* not WINDOW_H_INCLUDED */