]> code.delx.au - gnu-emacs/blobdiff - src/window.h
(syms_of_buffer): Set up Lisp variable buffer-display-time.
[gnu-emacs] / src / window.h
index ba2f81e53d2c94e29f8a572fc732440f685d6738..1a6c02a309c9482a9e1c7ae75ad35079f7a30559 100644 (file)
@@ -112,6 +112,9 @@ struct window
     /* Non-nil means next redisplay must use the value of start
        set up for it in advance.  Set by scrolling commands.  */
     Lisp_Object force_start;
+    /* Non-nil means we have explicitly changed the value of start,
+       but that the next redisplay is not obliged to use the new value.  */
+    Lisp_Object optional_new_start;
     /* Number of columns display within the window is scrolled to the left.  */
     Lisp_Object hscroll;
     /* Number saying how recently window was selected */
@@ -204,13 +207,15 @@ struct window
 
 /* 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.  */
+   a scroll bar or window-separating line on the right edge.  */
 
-#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))
+#define WINDOW_RIGHT_MARGIN(W)                                             \
+  (WINDOW_RIGHT_EDGE (W)                                                   \
+   - (! FRAME_HAS_VERTICAL_SCROLL_BARS (XFRAME (WINDOW_FRAME (W)))         \
+      ? ((WINDOW_RIGHTMOST_P (W)) ? 0 : 1)                                 \
+      : 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.  */ 
 
@@ -262,13 +267,20 @@ extern Lisp_Object Vmouse_window;
 /* Last mouse-click event (nil if no mouse support).  */
 extern Lisp_Object Vmouse_event;
 
-extern Lisp_Object Fnext_window ();
-extern Lisp_Object Fselect_window ();
-extern Lisp_Object Fdisplay_buffer ();
-extern Lisp_Object Fset_window_buffer ();
-extern Lisp_Object make_window ();
-extern Lisp_Object window_from_coordinates ();
-extern Lisp_Object Fwindow_dedicated_p ();
+EXFUN (Fnext_window, 3);
+EXFUN (Fselect_window, 1);
+EXFUN (Fdisplay_buffer, 3);
+EXFUN (Fset_window_buffer, 2);
+extern Lisp_Object make_window P_ ((void));
+extern void delete_window P_ ((Lisp_Object));
+extern Lisp_Object window_from_coordinates P_ ((struct frame *, int, int, int *));
+EXFUN (Fwindow_dedicated_p, 1);
+extern int window_height P_ ((Lisp_Object));
+extern int window_width P_ ((Lisp_Object));
+extern void set_window_height P_ ((Lisp_Object, int, int));
+extern void set_window_width P_ ((Lisp_Object, int, int));
+extern void change_window_height P_ ((int, int));
+extern void delete_all_subwindows P_ ((struct window *));
 
 /* Prompt to display in front of the minibuffer contents.  */
 extern Lisp_Object minibuf_prompt;
@@ -337,4 +349,4 @@ extern int buffer_shared;
 
 /* If *ROWS or *COLS are too small a size for FRAME, set them to the
    minimum allowable size.  */
-extern void check_frame_size ( /* FRAME_PTR frame, int *rows, int *cols */ );
+extern void check_frame_size P_ ((struct frame *frame, int *rows, int *cols));