* lisp/fringe.el (fringe-mode): Doc fix.
authorDmitry Antipov <dmantipov@yandex.ru>
Fri, 29 Jun 2012 11:48:08 +0000 (15:48 +0400)
committerDmitry Antipov <dmantipov@yandex.ru>
Fri, 29 Jun 2012 11:48:08 +0000 (15:48 +0400)
* src/window.h (struct window): Change type of 'fringes_outside_margins'
to bitfield.  Fix comment.  Adjust users accordingly.
(struct window): Change type of 'window_end_bytepos' to ptrdiff_t.
Adjust comment.
* src/xdisp.c (try_window_id): Change type of 'first_vpos' and 'vpos'
to ptrdiff_t.

lisp/ChangeLog
lisp/fringe.el
src/ChangeLog
src/window.c
src/window.h
src/xdisp.c

index 788a94e..064b141 100644 (file)
@@ -1,3 +1,7 @@
+2012-06-29  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       * fringe.el (fringe-mode): Doc fix.
+
 2012-06-29  Michael Albinus  <michael.albinus@gmx.de>
 
        * net/ange-ftp.el (ange-ftp-get-passwd): Throw if `non-essential'
index 70a28bd..0c7e7eb 100644 (file)
@@ -207,8 +207,8 @@ frame parameter is used."
   "Set the default appearance of fringes on all frames.
 
 When called interactively, query the user for MODE.  Valid values
-for MODE include `none', `default', `left-only', `right-only',
-`minimal' and `half'.
+for MODE include `no-fringes', `default', `left-only', `right-only',
+`minimal' and `half-width'.
 
 When used in a Lisp program, MODE can be a cons cell where the
 integer in car specifies the left fringe width and the integer in
index 29fc256..e5517ee 100644 (file)
@@ -1,3 +1,12 @@
+2012-06-29  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       * window.h (struct window): Change type of 'fringes_outside_margins'
+       to bitfield.  Fix comment.  Adjust users accordingly.
+       (struct window): Change type of 'window_end_bytepos' to ptrdiff_t.
+       Adjust comment.
+       * xdisp.c (try_window_id): Change type of 'first_vpos' and 'vpos'
+       to ptrdiff_t.
+
 2012-06-29  Andreas Schwab  <schwab@linux-m68k.org>
 
        * gnutls.c (emacs_gnutls_handshake):
index 9d78a3e..7691eb4 100644 (file)
@@ -5542,7 +5542,7 @@ the return value is nil.  Otherwise the value is t.  */)
          w->right_margin_cols = p->right_margin_cols;
          w->left_fringe_width = p->left_fringe_width;
          w->right_fringe_width = p->right_fringe_width;
-         w->fringes_outside_margins = p->fringes_outside_margins;
+         w->fringes_outside_margins = !NILP (p->fringes_outside_margins);
          w->scroll_bar_width = p->scroll_bar_width;
          w->vertical_scroll_bar_type = p->vertical_scroll_bar_type;
          w->dedicated = p->dedicated;
@@ -5858,7 +5858,7 @@ save_window_save (Lisp_Object window, struct Lisp_Vector *vector, int i)
       p->right_margin_cols = w->right_margin_cols;
       p->left_fringe_width = w->left_fringe_width;
       p->right_fringe_width = w->right_fringe_width;
-      p->fringes_outside_margins = w->fringes_outside_margins;
+      p->fringes_outside_margins = w->fringes_outside_margins ? Qt : Qnil;
       p->scroll_bar_width = w->scroll_bar_width;
       p->vertical_scroll_bar_type = w->vertical_scroll_bar_type;
       p->dedicated = w->dedicated;
@@ -6095,6 +6095,7 @@ display marginal areas and the text area.  */)
   (Lisp_Object window, Lisp_Object left_width, Lisp_Object right_width, Lisp_Object outside_margins)
 {
   struct window *w = decode_window (window);
+  int outside = !NILP (outside_margins);
 
   if (!NILP (left_width))
     CHECK_NATNUM (left_width);
@@ -6105,11 +6106,11 @@ display marginal areas and the text area.  */)
   if (FRAME_WINDOW_P (WINDOW_XFRAME (w))
       && (!EQ (w->left_fringe_width, left_width)
          || !EQ (w->right_fringe_width, right_width)
-         || !EQ (w->fringes_outside_margins, outside_margins)))
+         || w->fringes_outside_margins != outside))
     {
       w->left_fringe_width = left_width;
       w->right_fringe_width = right_width;
-      w->fringes_outside_margins = outside_margins;
+      w->fringes_outside_margins = outside;
 
       adjust_window_margins (w);
 
index 50bd713..34b5bb7 100644 (file)
@@ -159,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.  */
@@ -330,13 +327,17 @@ 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.  */
@@ -612,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.  */
index ae06355..0b10129 100644 (file)
@@ -17761,8 +17761,8 @@ try_window_id (struct window *w)
     {
       /* Displayed to end of window, but no line containing text was
         displayed.  Lines were deleted at the end of the window.  */
-      int first_vpos = WINDOW_WANTS_HEADER_LINE_P (w) ? 1 : 0;
-      int vpos = XFASTINT (w->window_end_vpos);
+      ptrdiff_t first_vpos = WINDOW_WANTS_HEADER_LINE_P (w) ? 1 : 0;
+      ptrdiff_t vpos = XFASTINT (w->window_end_vpos);
       struct glyph_row *current_row = current_matrix->rows + vpos;
       struct glyph_row *desired_row = desired_matrix->rows + vpos;