]> code.delx.au - gnu-emacs/blobdiff - src/window.h
(set_properties, add_properties, remove_properties):
[gnu-emacs] / src / window.h
index 75aa047c1682a3fa3720a5bd7836d96f147bc1e8..ba2f81e53d2c94e29f8a572fc732440f685d6738 100644 (file)
@@ -15,7 +15,8 @@ GNU General Public License for more details.
 
 You should have received a copy of the GNU General Public License
 along with GNU Emacs; see the file COPYING.  If not, write to
-the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
+the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.  */
 
 
 /* Windows are allocated as if they were vectors, but then the
@@ -121,8 +122,13 @@ struct window
     Lisp_Object temslot;
     /* text.modified of displayed buffer as of last time display completed */
     Lisp_Object last_modified;
+    /* BUF_OVERLAY_MODIFIED of displayed buffer as of last complete update.  */
+    Lisp_Object last_overlay_modified;
     /* Value of point at that time */
     Lisp_Object last_point;
+    /* Non-nil if the buffer was "modified" when the window
+       was last updated.  */
+    Lisp_Object last_had_star;
     /* This window's vertical scroll bar.  This field is only for use
        by the window-system-dependent code which implements the
        scroll bars; it can store anything it likes here.  If this
@@ -182,6 +188,40 @@ struct window
 
 #define MINI_WINDOW_P(W)  (!EQ ((W)->mini_p, Qnil))
 
+/* Return the frame column at which the text in window W starts.
+   This is different from the `left' field because it does not include
+   a left-hand scroll bar if any.  */
+   
+#define WINDOW_LEFT_MARGIN(W) \
+     (XFASTINT ((W)->left) \
+      + FRAME_LEFT_SCROLL_BAR_WIDTH (XFRAME (WINDOW_FRAME (W))))
+
+/* Return the frame column before window W ends.
+   This includes a right-hand scroll bar, if any.  */
+
+#define WINDOW_RIGHT_EDGE(W) \
+     (XFASTINT ((W)->left) + XFASTINT ((W)->width))
+
+/* Return the frame column before which the text in window W ends.
+   This is different from WINDOW_RIGHT_EDGE because it does not include
+   a right-hand scroll bar if any.  */
+
+#define WINDOW_RIGHT_MARGIN(W) \
+     (WINDOW_RIGHT_EDGE (W) \
+      - (FRAME_HAS_VERTICAL_SCROLL_BARS_ON_RIGHT (XFRAME (WINDOW_FRAME (W))) \
+        ? FRAME_SCROLL_BAR_COLS (XFRAME (WINDOW_FRAME (W))) \
+        : 0))
+
+/* 1 if window W takes up the full width of its frame.  */ 
+
+#define WINDOW_FULL_WIDTH_P(W) \
+     (XFASTINT ((W)->width) == FRAME_WINDOW_WIDTH (XFRAME (WINDOW_FRAME (W))))
+
+/* 1 if window W's has no other windows to its right in its frame.  */ 
+
+#define WINDOW_RIGHTMOST_P(W) \
+     (WINDOW_RIGHT_EDGE (W) == FRAME_WINDOW_WIDTH (XFRAME (WINDOW_FRAME (W))))
+     
 /* This is the window in which the terminal's cursor should
    be left when nothing is being done with it.  This must
    always be a leaf window, and its buffer is selected by
@@ -278,6 +318,11 @@ extern int end_unchanged;
    contain no useful information.  */
 extern int unchanged_modified;
 
+/* BUF_OVERLAY_MODIFF of current buffer, as of last redisplay that finished;
+   if it matches BUF_OVERLAY_MODIFF, beg_unchanged and end_unchanged
+   contain no useful information.  */
+extern int overlay_unchanged_modified;
+
 /* Nonzero if BEGV - BEG or Z - ZV of current buffer has changed
    since last redisplay that finished.  */
 extern int clip_changed;