Mercurial > emacs
comparison src/window.h @ 769:1f320a0729f8
*** empty log message ***
author | Jim Blandy <jimb@redhat.com> |
---|---|
date | Tue, 14 Jul 1992 15:21:18 +0000 |
parents | a8d94735277e |
children | 61c6983219ff |
comparison
equal
deleted
inserted
replaced
768:4abf65b235d9 | 769:1f320a0729f8 |
---|---|
25 All windows in use are arranged into a tree, with pointers up and down. | 25 All windows in use are arranged into a tree, with pointers up and down. |
26 | 26 |
27 Windows that are leaves of the tree are actually displayed | 27 Windows that are leaves of the tree are actually displayed |
28 and show the contents of buffers. Windows that are not leaves | 28 and show the contents of buffers. Windows that are not leaves |
29 are used for representing the way groups of leaf windows are | 29 are used for representing the way groups of leaf windows are |
30 arranged on the screen. Leaf windows never become non-leaves. | 30 arranged on the frame. Leaf windows never become non-leaves. |
31 They are deleted only by calling delete-window on them (but | 31 They are deleted only by calling delete-window on them (but |
32 this can be done implicitly). Combination windows can be created | 32 this can be done implicitly). Combination windows can be created |
33 and deleted at any time. | 33 and deleted at any time. |
34 | 34 |
35 A leaf window has a non-nil buffer field, and also | 35 A leaf window has a non-nil buffer field, and also |
36 has markers in its start and pointm fields. Non-leaf windows | 36 has markers in its start and pointm fields. Non-leaf windows |
37 have nil in these fields. | 37 have nil in these fields. |
38 | 38 |
39 Non-leaf windows are either vertical or horizontal combinations. | 39 Non-leaf windows are either vertical or horizontal combinations. |
40 | 40 |
41 A vertical combination window has children that are arranged on the screen | 41 A vertical combination window has children that are arranged on the frame |
42 one above the next. Its vchild field points to the uppermost child. | 42 one above the next. Its vchild field points to the uppermost child. |
43 The parent field of each of the children points to the vertical | 43 The parent field of each of the children points to the vertical |
44 combination window. The next field of each child points to the | 44 combination window. The next field of each child points to the |
45 child below it, or is nil for the lowest child. The prev field | 45 child below it, or is nil for the lowest child. The prev field |
46 of each child points to the child above it, or is nil for the | 46 of each child points to the child above it, or is nil for the |
55 or horizontal combination windows. The children of a horizontal | 55 or horizontal combination windows. The children of a horizontal |
56 combination window may be leaf windows or vertical combination windows. | 56 combination window may be leaf windows or vertical combination windows. |
57 | 57 |
58 At the top of the tree are two windows which have nil as parent. | 58 At the top of the tree are two windows which have nil as parent. |
59 The second of these is minibuf_window. The first one manages all | 59 The second of these is minibuf_window. The first one manages all |
60 the screen area that is not minibuffer, and is called the root window. | 60 the frame area that is not minibuffer, and is called the root window. |
61 Different windows can be the root at different times; | 61 Different windows can be the root at different times; |
62 initially the root window is a leaf window, but if more windows | 62 initially the root window is a leaf window, but if more windows |
63 are created then that leaf window ceases to be root and a newly | 63 are created then that leaf window ceases to be root and a newly |
64 made combination window becomes root instead. | 64 made combination window becomes root instead. |
65 | 65 |
73 { | 73 { |
74 /* The first two fields are really the header of a vector */ | 74 /* The first two fields are really the header of a vector */ |
75 /* The window code does not refer to them. */ | 75 /* The window code does not refer to them. */ |
76 int size; | 76 int size; |
77 struct Lisp_Vector *vec_next; | 77 struct Lisp_Vector *vec_next; |
78 /* The screen this window is on. */ | 78 /* The frame this window is on. */ |
79 Lisp_Object screen; | 79 Lisp_Object frame; |
80 /* t if this window is a minibuffer window. */ | 80 /* t if this window is a minibuffer window. */ |
81 Lisp_Object mini_p; | 81 Lisp_Object mini_p; |
82 /* Following child (to right or down) at same level of tree */ | 82 /* Following child (to right or down) at same level of tree */ |
83 Lisp_Object next; | 83 Lisp_Object next; |
84 /* Preceding child (to left or up) at same level of tree */ | 84 /* Preceding child (to left or up) at same level of tree */ |
88 hchild if this is a horizontal combination. */ | 88 hchild if this is a horizontal combination. */ |
89 Lisp_Object hchild, vchild; | 89 Lisp_Object hchild, vchild; |
90 /* The window this one is a child of. */ | 90 /* The window this one is a child of. */ |
91 Lisp_Object parent; | 91 Lisp_Object parent; |
92 /* The upper left corner coordinates of this window, | 92 /* The upper left corner coordinates of this window, |
93 as integers relative to upper left corner of screen = 0, 0 */ | 93 as integers relative to upper left corner of frame = 0, 0 */ |
94 Lisp_Object left; | 94 Lisp_Object left; |
95 Lisp_Object top; | 95 Lisp_Object top; |
96 /* The size of the window */ | 96 /* The size of the window */ |
97 Lisp_Object height; | 97 Lisp_Object height; |
98 Lisp_Object width; | 98 Lisp_Object width; |
120 /* text.modified of displayed buffer as of last time display completed */ | 120 /* text.modified of displayed buffer as of last time display completed */ |
121 Lisp_Object last_modified; | 121 Lisp_Object last_modified; |
122 /* Value of point at that time */ | 122 /* Value of point at that time */ |
123 Lisp_Object last_point; | 123 Lisp_Object last_point; |
124 /* The rest are currently not used or only half used */ | 124 /* The rest are currently not used or only half used */ |
125 /* Screen coords of point at that time */ | 125 /* Frame coords of point at that time */ |
126 Lisp_Object last_point_x; | 126 Lisp_Object last_point_x; |
127 Lisp_Object last_point_y; | 127 Lisp_Object last_point_y; |
128 /* Screen coords of mark as of last time display completed */ | 128 /* Frame coords of mark as of last time display completed */ |
129 /* May be nil if mark does not exist or was not on screen */ | 129 /* May be nil if mark does not exist or was not on frame */ |
130 Lisp_Object last_mark_x; | 130 Lisp_Object last_mark_x; |
131 Lisp_Object last_mark_y; | 131 Lisp_Object last_mark_y; |
132 /* Number of characters in buffer past bottom of window, | 132 /* Number of characters in buffer past bottom of window, |
133 as of last redisplay that finished. */ | 133 as of last redisplay that finished. */ |
134 Lisp_Object window_end_pos; | 134 Lisp_Object window_end_pos; |
135 /* t if window_end_pos is truly valid. | 135 /* t if window_end_pos is truly valid. |
136 This is nil if nontrivial redisplay is preempted | 136 This is nil if nontrivial redisplay is preempted |
137 since in that case the screen image that window_end_pos | 137 since in that case the frame image that window_end_pos |
138 did not get onto the screen. */ | 138 did not get onto the frame. */ |
139 Lisp_Object window_end_valid; | 139 Lisp_Object window_end_valid; |
140 /* Vertical position (relative to window top) of that buffer position | 140 /* Vertical position (relative to window top) of that buffer position |
141 of the first of those characters */ | 141 of the first of those characters */ |
142 Lisp_Object window_end_vpos; | 142 Lisp_Object window_end_vpos; |
143 /* Non-nil means must regenerate mode line of this window */ | 143 /* Non-nil means must regenerate mode line of this window */ |
160 be left when nothing is being done with it. This must | 160 be left when nothing is being done with it. This must |
161 always be a leaf window, and its buffer is selected by | 161 always be a leaf window, and its buffer is selected by |
162 the top level editing loop at the end of each command. | 162 the top level editing loop at the end of each command. |
163 | 163 |
164 This value is always the same as | 164 This value is always the same as |
165 SCREEN_SELECTED_WINDOW (selected_screen). */ | 165 FRAME_SELECTED_WINDOW (selected_frame). */ |
166 | 166 |
167 extern Lisp_Object selected_window; | 167 extern Lisp_Object selected_window; |
168 | 168 |
169 /* This is a time stamp for window selection, so we can find the least | 169 /* This is a time stamp for window selection, so we can find the least |
170 recently used window. Its only users are Fselect_window, | 170 recently used window. Its only users are Fselect_window, |
171 init_window_once, and make_screen. */ | 171 init_window_once, and make_frame. */ |
172 | 172 |
173 extern int window_select_count; | 173 extern int window_select_count; |
174 | 174 |
175 /* The minibuffer window of the selected screen. | 175 /* The minibuffer window of the selected frame. |
176 Note that you cannot test for minibufferness of an arbitrary window | 176 Note that you cannot test for minibufferness of an arbitrary window |
177 by comparing against this; but you can test for minibufferness of | 177 by comparing against this; but you can test for minibufferness of |
178 the selected window or of any window that is displayed. */ | 178 the selected window or of any window that is displayed. */ |
179 | 179 |
180 extern Lisp_Object minibuf_window; | 180 extern Lisp_Object minibuf_window; |