]> code.delx.au - gnu-emacs/blobdiff - src/window.h
Auto-generate EXFUN using make-docfile
[gnu-emacs] / src / window.h
index 6a9641e3e6d6c2b4bf0d7ba8a45ffc177c002467..10cabed979bbf0dc756bc544b41766d4fc2965cd 100644 (file)
@@ -1,5 +1,5 @@
 /* Window definitions for GNU Emacs.
-   Copyright (C) 1985-1986, 1993, 1995, 1997-2011
+   Copyright (C) 1985-1986, 1993, 1995, 1997-2012
                  Free Software Foundation, Inc.
 
 This file is part of GNU Emacs.
@@ -94,9 +94,6 @@ struct window
     /* The frame this window is on.  */
     Lisp_Object frame;
 
-    /* t if this window is a minibuffer window.  */
-    Lisp_Object mini_p;
-
     /* Following (to right or down) and preceding (to left or up) child
        at same level of tree.  */
     Lisp_Object next, prev;
@@ -144,42 +141,10 @@ struct window
        each one can have its own value of point.  */
     Lisp_Object pointm;
 
-    /* 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.
-       This is used in Fdelete_other_windows to force a call to
-       Vwindow_scroll_functions; also by Frecenter with argument.  */
-    Lisp_Object optional_new_start;
-
-    /* Number of columns display within the window is scrolled to the left.  */
-    Lisp_Object hscroll;
-    /* Minimum hscroll for automatic hscrolling.  This is the value
-       the user has set, by set-window-hscroll for example.  */
-    Lisp_Object min_hscroll;
-
-    /* Number saying how recently window was selected.  */
-    Lisp_Object use_time;
-
-    /* Unique number of window assigned when it was created.  */
-    Lisp_Object sequence_number;
-
     /* No permanent meaning; used by save-window-excursion's
        bookkeeping.  */
     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
@@ -194,9 +159,6 @@ struct window
     /* Width of left and right fringes.
        A value of nil or t means use frame values.  */
     Lisp_Object left_fringe_width, right_fringe_width;
-    /* Non-nil means fringes are drawn outside display margins;
-       othersize draw them between margin areas and text.  */
-    Lisp_Object fringes_outside_margins;
 
     /* Pixel width of scroll bars.
        A value of nil or t means use frame values.  */
@@ -206,11 +168,6 @@ struct window
        no scroll bar.  A value of t means use frame value.  */
     Lisp_Object vertical_scroll_bar_type;
 
-    /* Frame coords of mark as of last time display completed */
-    /* May be nil if mark does not exist or was not on frame */
-    Lisp_Object last_mark_x;
-    Lisp_Object last_mark_y;
-
     /* Z - the buffer position of the last glyph in the current matrix
        of W.  Only valid if WINDOW_END_VALID is not nil.  */
     Lisp_Object window_end_pos;
@@ -223,18 +180,13 @@ struct window
        did not get onto the frame.  */
     Lisp_Object window_end_valid;
 
-    /* Non-nil means must regenerate mode line of this window */
-    Lisp_Object update_mode_line;
-
-    /* Non-nil means current value of `start'
-       was the beginning of a line when it was chosen.  */
-    Lisp_Object start_at_line_beg;
-
     /* Display-table to use for displaying chars in this window.
        Nil means use the buffer's own display-table.  */
     Lisp_Object display_table;
 
-    /* Non-nil means window is marked as dedicated.  */
+    /* Non-nil usually means window is marked as dedicated.
+       Note Lisp code may set this to something beyond Qnil
+       and Qt, so bitfield can't be used here.  */
     Lisp_Object dedicated;
 
     /* Line number and position of a line somewhere above the top of the
@@ -258,13 +210,8 @@ struct window
        must run the redisplay-end-trigger-hook.  */
     Lisp_Object redisplay_end_trigger;
 
-    /* Non-nil means deleting or resizing this window distributes
-       space among all windows in the same combination.  */
-    Lisp_Object splits;
-
-    /* Non-nil means this window's child windows are never
-       (re-)combined.  */
-    Lisp_Object nest;
+    /* t means this window's child windows are not (re-)combined.  */
+    Lisp_Object combination_limit;
 
     /* Alist of <buffer, window-start, window-point> triples listing
        buffers previously shown in this window.  */
@@ -273,7 +220,7 @@ struct window
     /* List of buffers re-shown in this window.  */
     Lisp_Object next_buffers;
 
-    /* An alist with parameteres.  */
+    /* An alist with parameters.  */
     Lisp_Object window_parameters;
 
     /* No Lisp data may follow below this point without changing
@@ -284,6 +231,31 @@ struct window
     struct glyph_matrix *current_matrix;
     struct glyph_matrix *desired_matrix;
 
+    /* Number saying how recently window was selected.  */
+    int use_time;
+
+    /* Unique number of window assigned when it was created.  */
+    int sequence_number;
+
+    /* Number of columns display within the window is scrolled to the left.  */
+    ptrdiff_t hscroll;
+
+    /* Minimum hscroll for automatic hscrolling.  This is the value
+       the user has set, by set-window-hscroll for example.  */
+    ptrdiff_t min_hscroll;
+
+    /* Displayed buffer's text modification events counter as of last time
+       display completed.  */
+    EMACS_INT last_modified;
+
+    /* Displayed buffer's overlays modification events counter as of last
+       complete update.  */
+    EMACS_INT last_overlay_modified;
+
+    /* Value of point at that time.  Since this is a position in a buffer,
+       it should be positive. */
+    ptrdiff_t last_point;
+
     /* Scaling factor for the glyph_matrix size calculation in this window.
        Used if window contains many small images or uses proportional fonts,
        as the normal  may yield a matrix which is too small.  */
@@ -307,6 +279,30 @@ struct window
     /* This is handy for undrawing the cursor.  */
     int phys_cursor_ascent, phys_cursor_height;
 
+    /* Non-zero if this window is a minibuffer window.  */
+    unsigned mini : 1;
+
+    /* Non-zero means must regenerate mode line of this window */
+    unsigned update_mode_line : 1;
+
+    /* Non-nil if the buffer was "modified" when the window
+       was last updated.  */
+    unsigned last_had_star : 1;
+
+    /* Non-zero means current value of `start'
+       was the beginning of a line when it was chosen.  */
+    unsigned start_at_line_beg : 1;
+
+    /* Non-zero means next redisplay must use the value of start
+       set up for it in advance.  Set by scrolling commands.  */
+    unsigned force_start : 1;
+
+    /* Non-zero means we have explicitly changed the value of start,
+       but that the next redisplay is not obliged to use the new value.
+       This is used in Fdelete_other_windows to force a call to
+       Vwindow_scroll_functions; also by Frecenter with argument.  */
+    unsigned optional_new_start : 1;
+
     /* Non-zero means the cursor is currently displayed.  This can be
        set to zero by functions overpainting the cursor image.  */
     unsigned phys_cursor_on_p : 1;
@@ -331,18 +327,22 @@ struct window
        accept that.  */
     unsigned frozen_window_start_p : 1;
 
+    /* Non-zero means fringes are drawn outside display margins.
+       Otherwise draw them between margin areas and text.  */
+    unsigned fringes_outside_margins : 1;
+
     /* Amount by which lines of this window are scrolled in
        y-direction (smooth scrolling).  */
     int vscroll;
 
-    /* Z_BYTE - the buffer position of the last glyph in the current matrix
-       of W.  Only valid if WINDOW_END_VALID is not nil.  */
-    int window_end_bytepos;
+    /* Z_BYTE - the buffer position of the last glyph in the current matrix of W.
+       Should be nonnegative, and only valid if window_end_valid is not nil.  */
+    ptrdiff_t window_end_bytepos;
 };
 
 /* 1 if W is a minibuffer window.  */
 
-#define MINI_WINDOW_P(W)       (!NILP ((W)->mini_p))
+#define MINI_WINDOW_P(W)       ((W)->mini)
 
 /* General window layout:
 
@@ -613,7 +613,7 @@ struct window
 /* Are fringes outside display margins in window W.  */
 
 #define WINDOW_HAS_FRINGES_OUTSIDE_MARGINS(W)  \
-  (!NILP ((W)->fringes_outside_margins))
+  ((W)->fringes_outside_margins)
 
 /* Say whether scroll bars are currently enabled for window W,
    and which side they are on.  */
@@ -815,14 +815,9 @@ extern Lisp_Object Vmouse_window;
 
 extern Lisp_Object Vmouse_event;
 
-EXFUN (Fnext_window, 3);
-EXFUN (Fselect_window, 2);
-EXFUN (Fset_window_buffer, 3);
-EXFUN (Fset_window_point, 2);
 extern Lisp_Object make_window (void);
 extern Lisp_Object window_from_coordinates (struct frame *, int, int,
                                             enum window_part *, int);
-EXFUN (Fwindow_dedicated_p, 1);
 extern void resize_frame_windows (struct frame *, int, int);
 extern void delete_all_child_windows (Lisp_Object);
 extern void freeze_window_starts (struct frame *, int);
@@ -857,11 +852,6 @@ extern EMACS_INT minibuf_level;
 
 extern int update_mode_lines;
 
-/* Nonzero if BEGV - BEG or Z - ZV of current buffer has changed since
-   last redisplay that finished.  */
-
-extern int clip_changed;
-
 /* Nonzero if window sizes or contents have changed since last
    redisplay that finished */
 
@@ -882,7 +872,7 @@ extern int buffer_shared;
 extern void check_frame_size (struct frame *frame, int *rows, int *cols);
 
 /* Return a pointer to the glyph W's physical cursor is on.  Value is
-   null if W's current matrix is invalid, so that no meaningfull glyph
+   null if W's current matrix is invalid, so that no meaningful glyph
    can be returned.  */
 
 struct glyph *get_phys_cursor_glyph (struct window *w);
@@ -898,21 +888,10 @@ struct glyph *get_phys_cursor_glyph (struct window *w);
 extern Lisp_Object Qwindowp, Qwindow_live_p;
 extern Lisp_Object Vwindow_list;
 
-EXFUN (Fwindow_buffer, 1);
-EXFUN (Fget_buffer_window, 2);
-EXFUN (Fwindow_minibuffer_p, 1);
-EXFUN (Fselected_window, 0);
-EXFUN (Fframe_root_window, 1);
-EXFUN (Fframe_first_window, 1);
-EXFUN (Fset_frame_selected_window, 3);
-EXFUN (Fset_window_configuration, 1);
-EXFUN (Fcurrent_window_configuration, 1);
 extern int compare_window_configurations (Lisp_Object, Lisp_Object, int);
-EXFUN (Fpos_visible_in_window_p, 3);
 extern void mark_window_cursors_off (struct window *);
 extern int window_internal_height (struct window *);
 extern int window_body_cols (struct window *w);
-EXFUN (Frecenter, 1);
 extern void temp_output_buffer_show (Lisp_Object);
 extern void replace_buffer_in_windows (Lisp_Object);
 extern void replace_buffer_in_windows_safely (Lisp_Object);