emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] Changes to emacs/src/window.h [lexbind]


From: Miles Bader
Subject: [Emacs-diffs] Changes to emacs/src/window.h [lexbind]
Date: Tue, 14 Oct 2003 19:23:32 -0400

Index: emacs/src/window.h
diff -c emacs/src/window.h:1.49.2.1 emacs/src/window.h:1.49.2.2
*** emacs/src/window.h:1.49.2.1 Fri Apr  4 01:21:05 2003
--- emacs/src/window.h  Tue Oct 14 19:22:49 2003
***************
*** 1,5 ****
  /* Window definitions for GNU Emacs.
!    Copyright (C) 1985, 1986, 1993, 1995, 1997, 1998, 1999, 2000, 2001
     Free Software Foundation, Inc.
  
  This file is part of GNU Emacs.
--- 1,5 ----
  /* Window definitions for GNU Emacs.
!    Copyright (C) 1985, 1986, 1993, 1995, 1997, 1998, 1999, 2000, 2001, 2003
     Free Software Foundation, Inc.
  
  This file is part of GNU Emacs.
***************
*** 24,29 ****
--- 24,31 ----
  
  #include "dispextern.h"
  
+ extern Lisp_Object Qleft, Qright;
+ 
  /* Windows are allocated as if they were vectors, but then the
  Lisp data type is changed to Lisp_Window.  They are garbage
  collected along with the vectors.
***************
*** 108,118 ****
      Lisp_Object parent;
      /* The upper left corner coordinates of this window,
         as integers relative to upper left corner of frame = 0, 0 */
!     Lisp_Object left;
!     Lisp_Object top;
      /* The size of the window */
!     Lisp_Object height;
!     Lisp_Object width;
      /* The buffer displayed in this window */
      /* Of the fields vchild, hchild and buffer, only one is non-nil.  */
      Lisp_Object buffer;
--- 110,120 ----
      Lisp_Object parent;
      /* The upper left corner coordinates of this window,
         as integers relative to upper left corner of frame = 0, 0 */
!     Lisp_Object left_col;
!     Lisp_Object top_line;
      /* The size of the window */
!     Lisp_Object total_lines;
!     Lisp_Object total_cols;
      /* The buffer displayed in this window */
      /* Of the fields vchild, hchild and buffer, only one is non-nil.  */
      Lisp_Object buffer;
***************
*** 160,169 ****
  
      /* Width of left and right marginal areas.  A value of nil means
         no margin.  */
!     Lisp_Object left_margin_width;
!     Lisp_Object right_margin_width;
  
- /* The rest are currently not used or only half used */
      /* 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;
--- 162,184 ----
  
      /* Width of left and right marginal areas.  A value of nil means
         no margin.  */
!     Lisp_Object left_margin_cols, right_margin_cols;
! 
!     /* 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.  */
!     Lisp_Object scroll_bar_width;
!     /* Type of vertical scroll bar.  A value of nil means
!        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;
***************
*** 211,217 ****
  
      /* Original window height and top before mini-window was
         enlarged. */
!     Lisp_Object orig_height, orig_top;
  
      /* No Lisp data may follow below this point without changing
         mark_object in alloc.c.  The member current_matrix must be the
--- 226,232 ----
  
      /* Original window height and top before mini-window was
         enlarged. */
!     Lisp_Object orig_total_lines, orig_top_line;
  
      /* No Lisp data may follow below this point without changing
         mark_object in alloc.c.  The member current_matrix must be the
***************
*** 281,320 ****
  
  #define MINI_WINDOW_P(W)      (!NILP ((W)->mini_p))
  
! /* Return the window 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 window column before which 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 window column before which the text in window W ends.
!    This is different from WINDOW_RIGHT_EDGE because it does not include
!    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))
  
  /* 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
--- 296,713 ----
  
  #define MINI_WINDOW_P(W)      (!NILP ((W)->mini_p))
  
! /* General window layout:
! 
!    LEFT_EDGE_COL         RIGHT_EDGE_COL
!    |                                  |
!    |                                  |
!    |  BOX_LEFT_EDGE_COL               |
!    |  |           BOX_RIGHT_EDGE_COL  |
!    |  |                            |  |
!    v  v                            v  v
!    <-><-><---><-----------><---><-><->
!     ^  ^   ^        ^        ^   ^  ^
!     |  |   |        |        |   |  |
!     |  |   |        |        |   |  +-- RIGHT_SCROLL_BAR_COLS
!     |  |   |        |        |   +----- RIGHT_FRINGE_WIDTH
!     |  |   |        |        +--------- RIGHT_MARGIN_COLS
!     |  |   |        |
!     |  |   |        +------------------ TEXT_AREA_COLS
!     |  |   |
!     |  |   +--------------------------- LEFT_MARGIN_COLS
!     |  +------------------------------- LEFT_FRINGE_WIDTH
!     +---------------------------------- LEFT_SCROLL_BAR_COLS
!     
! */
! 
! 
! /* A handy macro.  */
! 
! #define WINDOW_XFRAME(W) \
!   (XFRAME (WINDOW_FRAME ((W))))
! 
! /* Return the canonical column width of the frame of window W.  */
! 
! #define WINDOW_FRAME_COLUMN_WIDTH(W) \
!   (FRAME_COLUMN_WIDTH (WINDOW_XFRAME ((W))))
! 
! /* Return the canonical column width of the frame of window W.  */
! 
! #define WINDOW_FRAME_LINE_HEIGHT(W) \
!   (FRAME_LINE_HEIGHT (WINDOW_XFRAME ((W))))
! 
! 
! /* Return the frame width in canonical column units.
!    This includes scroll bars and fringes.  */
! 
! #define WINDOW_TOTAL_COLS(W) \
!   (XFASTINT ((W)->total_cols))
! 
! /* Return the frame height in canonical line units.
!    This includes header and mode lines, if any.  */
! 
! #define WINDOW_TOTAL_LINES(W) \
!   (XFASTINT ((W)->total_lines))
  
! 
! /* Return the total pixel width of window W.  */
! 
! #define WINDOW_TOTAL_WIDTH(W) \
!   (WINDOW_TOTAL_COLS (W) * WINDOW_FRAME_COLUMN_WIDTH (W))
! 
! /* Return the total pixel height of window W.  */
! 
! #define WINDOW_TOTAL_HEIGHT(W) \
!   (WINDOW_TOTAL_LINES (W) * WINDOW_FRAME_LINE_HEIGHT (W))
! 
! 
! /* Return the canonical frame column at which window W starts.
!    This includes a left-hand scroll bar, if any.  */
! 
! #define WINDOW_LEFT_EDGE_COL(W) \
!   (XFASTINT ((W)->left_col))
! 
! /* Return the canonical frame column before which window W ends.
     This includes a right-hand scroll bar, if any.  */
  
! #define WINDOW_RIGHT_EDGE_COL(W) \
!   (WINDOW_LEFT_EDGE_COL (W) + WINDOW_TOTAL_COLS (W))
  
! /* Return the canonical frame line at which window W starts.
!    This includes a header line, if any.  */
! 
! #define WINDOW_TOP_EDGE_LINE(W) \
!   (XFASTINT ((W)->top_line))
! 
! /* Return the canonical frame line before which window W ends.
!    This includes a mode line, if any.  */
! 
! #define WINDOW_BOTTOM_EDGE_LINE(W) \
!   (WINDOW_TOP_EDGE_LINE (W) + WINDOW_TOTAL_LINES (W))
! 
! 
! /* Return the frame x-position at which window W starts.
!    This includes a left-hand scroll bar, if any.  */
! 
! #define WINDOW_LEFT_EDGE_X(W) \
!   (FRAME_INTERNAL_BORDER_WIDTH (WINDOW_XFRAME (W)) \
!    + WINDOW_LEFT_EDGE_COL (W) * WINDOW_FRAME_COLUMN_WIDTH (W))
! 
! /* Return the frame x- position before which window W ends.
!    This includes a right-hand scroll bar, if any.  */
! 
! #define WINDOW_RIGHT_EDGE_X(W) \
!   (FRAME_INTERNAL_BORDER_WIDTH (WINDOW_XFRAME (W)) \
!    + WINDOW_RIGHT_EDGE_COL (W) * WINDOW_FRAME_COLUMN_WIDTH (W))
! 
! /* Return the frame y-position at which window W starts.
!    This includes a header line, if any.  */
! 
! #define WINDOW_TOP_EDGE_Y(W) \
!   (FRAME_INTERNAL_BORDER_WIDTH (WINDOW_XFRAME (W)) \
!    + WINDOW_TOP_EDGE_LINE (W) * WINDOW_FRAME_LINE_HEIGHT (W))
! 
! /* Return the frame y-position before which window W ends.
!    This includes a mode line, if any.  */
! 
! #define WINDOW_BOTTOM_EDGE_Y(W) \
!   (FRAME_INTERNAL_BORDER_WIDTH (WINDOW_XFRAME (W)) \
!    + WINDOW_BOTTOM_EDGE_LINE (W) * WINDOW_FRAME_LINE_HEIGHT (W))
  
  
  /* 1 if window W takes up the full width of its frame.  */
  
  #define WINDOW_FULL_WIDTH_P(W) \
!   (WINDOW_TOTAL_COLS (W) == FRAME_TOTAL_COLS (WINDOW_XFRAME (W)))
! 
! /* 1 if window W's has no other windows to its left in its frame.  */
! 
! #define WINDOW_LEFTMOST_P(W) \
!   (WINDOW_LEFT_EDGE_COL (W) == 0)
  
  /* 1 if window W's has no other windows to its right in its frame.  */
  
  #define WINDOW_RIGHTMOST_P(W) \
!   (WINDOW_RIGHT_EDGE_COL (W) == FRAME_TOTAL_COLS (WINDOW_XFRAME (W)))
! 
! 
! /* Return the frame column at which the text (or left fringe) in
!    window W starts.  This is different from the `LEFT_EDGE' because it
!    does not include a left-hand scroll bar if any.  */
! 
! #define WINDOW_BOX_LEFT_EDGE_COL(W) \
!   (WINDOW_LEFT_EDGE_COL (W) \
!    + WINDOW_LEFT_SCROLL_BAR_COLS (W))
! 
! /* Return the window column before which the text in window W ends.
!    This is different from WINDOW_RIGHT_EDGE_COL because it does not
!    include a scroll bar or window-separating line on the right edge.  */
! 
! #define WINDOW_BOX_RIGHT_EDGE_COL(W) \
!   (WINDOW_RIGHT_EDGE_COL (W) \
!    - WINDOW_RIGHT_SCROLL_BAR_COLS (W))
! 
! 
! /* Return the frame position at which the text (or left fringe) in
!    window W starts.  This is different from the `LEFT_EDGE' because it
!    does not include a left-hand scroll bar if any.  */
! 
! #define WINDOW_BOX_LEFT_EDGE_X(W) \
!   (FRAME_INTERNAL_BORDER_WIDTH (WINDOW_XFRAME (W)) \
!    + WINDOW_BOX_LEFT_EDGE_COL (W) * WINDOW_FRAME_COLUMN_WIDTH (W))
! 
! /* Return the window column before which the text in window W ends.
!    This is different from WINDOW_RIGHT_EDGE_COL because it does not
!    include a scroll bar or window-separating line on the right edge.  */
! 
! #define WINDOW_BOX_RIGHT_EDGE_X(W) \
!   (FRAME_INTERNAL_BORDER_WIDTH (WINDOW_XFRAME (W)) \
!    + WINDOW_BOX_RIGHT_EDGE_COL (W) * WINDOW_FRAME_COLUMN_WIDTH (W))
! 
! 
! /* Width of left margin area in columns.  */
! 
! #define WINDOW_LEFT_MARGIN_COLS(W)                    \
!   (NILP ((W)->left_margin_cols)                               \
!    ? 0                                                        \
!    : XINT ((W)->left_margin_cols))
! 
! /* Width of right marginal area in columns.  */
! 
! #define WINDOW_RIGHT_MARGIN_COLS(W)                   \
!   (NILP ((W)->right_margin_cols)                      \
!    ? 0                                                        \
!    : XINT ((W)->right_margin_cols))
! 
! /* Width of left margin area in pixels.  */
! 
! #define WINDOW_LEFT_MARGIN_WIDTH(W)                   \
!   (NILP ((W)->left_margin_cols)                               \
!    ? 0                                                        \
!    : (XINT ((W)->left_margin_cols)                    \
!       * WINDOW_FRAME_COLUMN_WIDTH (W)))
! 
! /* Width of right marginal area in pixels.  */
! 
! #define WINDOW_RIGHT_MARGIN_WIDTH(W)                  \
!   (NILP ((W)->right_margin_cols)                      \
!    ? 0                                                        \
!    : (XINT ((W)->right_margin_cols)                   \
!       * WINDOW_FRAME_COLUMN_WIDTH (W)))
! 
! /* Total width of fringes reserved for drawing truncation bitmaps,
!    continuation bitmaps and alike.  The width is in canonical char
!    units of the frame.  This must currently be the case because window
!    sizes aren't pixel values.  If it weren't the case, we wouldn't be
!    able to split windows horizontally nicely.  */
! 
! #define WINDOW_FRINGE_COLS(W)                         \
!   ((INTEGERP ((W)->left_fringe_width)                 \
!     || INTEGERP ((W)->right_fringe_width))            \
!    ? ((WINDOW_LEFT_FRINGE_WIDTH (W)                   \
!        + WINDOW_RIGHT_FRINGE_WIDTH (W)                        \
!        + WINDOW_FRAME_COLUMN_WIDTH (W) - 1)           \
!       / WINDOW_FRAME_COLUMN_WIDTH (W))                        \
!    : FRAME_FRINGE_COLS (WINDOW_XFRAME (W)))
! 
! /* Column-width of the left and right fringe.  */
! 
! #define WINDOW_LEFT_FRINGE_COLS(W)                    \
!   ((WINDOW_LEFT_FRINGE_WIDTH ((W))                    \
!     + WINDOW_FRAME_COLUMN_WIDTH (W) - 1)              \
!    / WINDOW_FRAME_COLUMN_WIDTH (W))
  
+ #define WINDOW_RIGHT_FRINGE_COLS(W)                   \
+   ((WINDOW_RIGHT_FRINGE_WIDTH ((W))                   \
+     + WINDOW_FRAME_COLUMN_WIDTH (W) - 1)              \
+    / WINDOW_FRAME_COLUMN_WIDTH (W))
+ 
+ /* Pixel-width of the left and right fringe.  */
+ 
+ #define WINDOW_LEFT_FRINGE_WIDTH(W)                   \
+   (INTEGERP ((W)->left_fringe_width)                  \
+    ? XFASTINT ((W)->left_fringe_width)                        \
+    : FRAME_LEFT_FRINGE_WIDTH (WINDOW_XFRAME (W)))
+ 
+ #define WINDOW_RIGHT_FRINGE_WIDTH(W)                  \
+   (INTEGERP ((W)->right_fringe_width)                 \
+    ? XFASTINT ((W)->right_fringe_width)                       \
+    : FRAME_RIGHT_FRINGE_WIDTH (WINDOW_XFRAME (W)))
+ 
+ /* Total width of fringes in pixels.  */
+ 
+ #define WINDOW_TOTAL_FRINGE_WIDTH(W)          \
+   (WINDOW_LEFT_FRINGE_WIDTH (W) + WINDOW_RIGHT_FRINGE_WIDTH (W))
+ 
+ /* Are fringes outside display margins in window W.  */
+ 
+ #define WINDOW_HAS_FRINGES_OUTSIDE_MARGINS(W) \
+   (!NILP ((W)->fringes_outside_margins))
+ 
+ /* Say whether scroll bars are currently enabled for window W,
+    and which side they are on.  */
+ 
+ #define WINDOW_VERTICAL_SCROLL_BAR_TYPE(w)            \
+   (EQ ((w)->vertical_scroll_bar_type, Qt)             \
+    ? FRAME_VERTICAL_SCROLL_BAR_TYPE (WINDOW_XFRAME (w))       \
+    : EQ ((w)->vertical_scroll_bar_type, Qleft)                \
+    ? vertical_scroll_bar_left                         \
+    : EQ ((w)->vertical_scroll_bar_type, Qright)               \
+    ? vertical_scroll_bar_right                                \
+    : vertical_scroll_bar_none)                                \
+ 
+ #define WINDOW_HAS_VERTICAL_SCROLL_BAR(w)             \
+   (EQ ((w)->vertical_scroll_bar_type, Qt)             \
+    ? FRAME_HAS_VERTICAL_SCROLL_BARS (WINDOW_XFRAME (w))       \
+    : !NILP ((w)->vertical_scroll_bar_type))
+ 
+ #define WINDOW_HAS_VERTICAL_SCROLL_BAR_ON_LEFT(w)             \
+   (EQ ((w)->vertical_scroll_bar_type, Qt)                     \
+    ? FRAME_HAS_VERTICAL_SCROLL_BARS_ON_LEFT (WINDOW_XFRAME (w))       \
+    : EQ ((w)->vertical_scroll_bar_type, Qleft))
+ 
+ #define WINDOW_HAS_VERTICAL_SCROLL_BAR_ON_RIGHT(w)            \
+   (EQ ((w)->vertical_scroll_bar_type, Qt)                     \
+    ? FRAME_HAS_VERTICAL_SCROLL_BARS_ON_RIGHT (WINDOW_XFRAME (w))\
+    : EQ ((w)->vertical_scroll_bar_type, Qright))
+ 
+ /* Width that a scroll bar in window W should have, if there is one.
+    Measured in pixels.  If scroll bars are turned off, this is still
+    nonzero.  */
+ 
+ #define WINDOW_CONFIG_SCROLL_BAR_WIDTH(w)             \
+   (INTEGERP ((w)->scroll_bar_width)                   \
+    ? XFASTINT ((w)->scroll_bar_width)                 \
+    : FRAME_CONFIG_SCROLL_BAR_WIDTH (WINDOW_XFRAME (w)))
+ 
+ /* Width that a scroll bar in window W should have, if there is one.
+    Measured in columns (characters).  If scroll bars are turned off,
+    this is still nonzero.  */
+ 
+ #define WINDOW_CONFIG_SCROLL_BAR_COLS(w)              \
+   (INTEGERP ((w)->scroll_bar_width)                   \
+    ? ((XFASTINT ((w)->scroll_bar_width)                       \
+        + WINDOW_FRAME_COLUMN_WIDTH (w) - 1)           \
+       / WINDOW_FRAME_COLUMN_WIDTH (w))                        \
+    : FRAME_CONFIG_SCROLL_BAR_COLS (WINDOW_XFRAME (w)))
+ 
+ /* Width of a scroll bar in window W, measured in columns (characters),
+    but only if scroll bars are on the left.  If scroll bars are on
+    the right in this frame, or there are no scroll bars, value is 0.  */
+ 
+ #define WINDOW_LEFT_SCROLL_BAR_COLS(w)               \
+   (WINDOW_HAS_VERTICAL_SCROLL_BAR_ON_LEFT (w) \
+    ? (WINDOW_CONFIG_SCROLL_BAR_COLS (w))       \
+    : 0)
+ 
+ /* Width of a left scroll bar area in window W , measured in pixels.  */
+ 
+ #define WINDOW_LEFT_SCROLL_BAR_AREA_WIDTH(w) \
+   (WINDOW_HAS_VERTICAL_SCROLL_BAR_ON_LEFT (w) \
+    ? (WINDOW_CONFIG_SCROLL_BAR_COLS (w) * WINDOW_FRAME_COLUMN_WIDTH (w)) \
+    : 0)
+ 
+ /* Width of a scroll bar in window W, measured in columns (characters),
+    but only if scroll bars are on the right.  If scroll bars are on
+    the left in this frame, or there are no scroll bars, value is 0.  */
+ 
+ #define WINDOW_RIGHT_SCROLL_BAR_COLS(w)               \
+   (WINDOW_HAS_VERTICAL_SCROLL_BAR_ON_RIGHT (w) \
+    ? WINDOW_CONFIG_SCROLL_BAR_COLS (w)                \
+    : 0)
+ 
+ /* Width of a left scroll bar area in window W , measured in pixels.  */
+ 
+ #define WINDOW_RIGHT_SCROLL_BAR_AREA_WIDTH(w)                          \
+   (WINDOW_HAS_VERTICAL_SCROLL_BAR_ON_RIGHT (w)                                
 \
+    ? (WINDOW_CONFIG_SCROLL_BAR_COLS (w) * WINDOW_FRAME_COLUMN_WIDTH (w)) \
+    : 0)
+ 
+ 
+ /* Actual width of a scroll bar in window W, measured in columns.  */
+ 
+ #define WINDOW_SCROLL_BAR_COLS(w)            \
+   (WINDOW_HAS_VERTICAL_SCROLL_BAR (w)        \
+    ? WINDOW_CONFIG_SCROLL_BAR_COLS (w)               \
+    : 0)
+ 
+ /* Width of a left scroll bar area in window W , measured in pixels.  */
+ 
+ #define WINDOW_SCROLL_BAR_AREA_WIDTH(w)                                       
 \
+   (WINDOW_HAS_VERTICAL_SCROLL_BAR (w)                                 \
+    ? (WINDOW_CONFIG_SCROLL_BAR_COLS (w) * WINDOW_FRAME_COLUMN_WIDTH (w)) \
+    : 0)
+ 
+ 
+ /* Return the frame position where the scroll bar of window W starts.  */
+ 
+ #define WINDOW_SCROLL_BAR_AREA_X(W)           \
+   (WINDOW_HAS_VERTICAL_SCROLL_BAR_ON_RIGHT (W)        \
+    ? WINDOW_BOX_RIGHT_EDGE_X (W)              \
+    : WINDOW_LEFT_EDGE_X (W))
+ 
+ 
+ /* Height in pixels, and in lines, of the mode line.
+    May be zero if W doesn't have a mode line.  */
+ 
+ #define WINDOW_MODE_LINE_HEIGHT(W)    \
+   (WINDOW_WANTS_MODELINE_P ((W))      \
+    ? CURRENT_MODE_LINE_HEIGHT (W)     \
+    : 0)
+ 
+ #define WINDOW_MODE_LINE_LINES(W)             \
+   (!! WINDOW_WANTS_MODELINE_P ((W)))
+ 
+ /* Height in pixels, and in lines, of the header line.
+    Zero if W doesn't have a header line.  */
+ 
+ #define WINDOW_HEADER_LINE_HEIGHT(W)  \
+   (WINDOW_WANTS_HEADER_LINE_P ((W))   \
+    ? CURRENT_HEADER_LINE_HEIGHT (W)   \
+    : 0)
+ 
+ #define WINDOW_HEADER_LINE_LINES(W)           \
+   (!! WINDOW_WANTS_HEADER_LINE_P ((W)))
+ 
+ /* Pixel height of window W without mode line.  */
+ 
+ #define WINDOW_BOX_HEIGHT_NO_MODE_LINE(W)     \
+   (WINDOW_TOTAL_HEIGHT ((W))                  \
+    - WINDOW_MODE_LINE_HEIGHT ((W)))
+ 
+ /* Pixel height of window W without mode and header line.  */
+ 
+ #define WINDOW_BOX_TEXT_HEIGHT(W)             \
+   (WINDOW_TOTAL_HEIGHT ((W))                  \
+    - WINDOW_MODE_LINE_HEIGHT ((W))            \
+    - WINDOW_HEADER_LINE_HEIGHT ((W)))
+ 
+ 
+ /* Convert window W relative pixel X to frame pixel coordinates.  */
+ 
+ #define WINDOW_TO_FRAME_PIXEL_X(W, X)         \
+   ((X) + WINDOW_BOX_LEFT_EDGE_X ((W)))
+ 
+ /* Convert window W relative pixel Y to frame pixel coordinates.  */
+ 
+ #define WINDOW_TO_FRAME_PIXEL_Y(W, Y)         \
+   ((Y) + WINDOW_TOP_EDGE_Y ((W)))
+ 
+ /* Convert frame relative pixel X to window relative pixel X.  */
+ 
+ #define FRAME_TO_WINDOW_PIXEL_X(W, X)         \
+   ((X) - WINDOW_BOX_LEFT_EDGE_X ((W)))
+ 
+ /* Convert frame relative pixel Y to window relative pixel Y.  */
+ 
+ #define FRAME_TO_WINDOW_PIXEL_Y(W, Y)         \
+   ((Y) - WINDOW_TOP_EDGE_Y ((W)))
+ 
+ /* Convert a text area relative x-position in window W to frame X
+    pixel coordinates.  */
+ 
+ #define WINDOW_TEXT_TO_FRAME_PIXEL_X(W, X)            \
+   (window_box_left ((W), TEXT_AREA) + (X))
  
  /* This is the window in which the terminal's cursor should
     be left when nothing is being done with it.  This must
***************
*** 366,374 ****
  extern Lisp_Object Vmouse_event;
  
  EXFUN (Fnext_window, 3);
! EXFUN (Fselect_window, 1);
  EXFUN (Fdisplay_buffer, 3);
! EXFUN (Fset_window_buffer, 2);
  EXFUN (Fset_window_hscroll, 2);
  EXFUN (Fwindow_hscroll, 1);
  EXFUN (Fset_window_vscroll, 2);
--- 759,767 ----
  extern Lisp_Object Vmouse_event;
  
  EXFUN (Fnext_window, 3);
! EXFUN (Fselect_window, 2);
  EXFUN (Fdisplay_buffer, 3);
! EXFUN (Fset_window_buffer, 3);
  EXFUN (Fset_window_hscroll, 2);
  EXFUN (Fwindow_hscroll, 1);
  EXFUN (Fset_window_vscroll, 2);
***************
*** 379,385 ****
  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,
!                                               enum window_part *, int));
  EXFUN (Fwindow_dedicated_p, 1);
  extern int window_height P_ ((Lisp_Object));
  extern int window_width P_ ((Lisp_Object));
--- 772,779 ----
  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,
!                                               enum window_part *,
!                                               int *, int*, int));
  EXFUN (Fwindow_dedicated_p, 1);
  extern int window_height P_ ((Lisp_Object));
  extern int window_width P_ ((Lisp_Object));
***************
*** 400,406 ****
     it's not allowed.  */
  
  void set_window_buffer P_ ((Lisp_Object window, Lisp_Object buffer,
!                           int run_hooks_p));
  
  /* Prompt to display in front of the minibuffer contents.  */
  
--- 794,800 ----
     it's not allowed.  */
  
  void set_window_buffer P_ ((Lisp_Object window, Lisp_Object buffer,
!                           int run_hooks_p, int keep_margins_p));
  
  /* Prompt to display in front of the minibuffer contents.  */
  
***************
*** 463,466 ****
--- 857,897 ----
  #define WINDOW_LIVE_P(WINDOW) \
       (WINDOWP ((WINDOW)) && !NILP (XWINDOW ((WINDOW))->buffer))
  
+ 
+ /* These used to be in lisp.h.  */
+ 
+ extern Lisp_Object Qwindowp, Qwindow_live_p;
+ extern Lisp_Object Vwindow_list;
+ 
+ EXFUN (Fwindow_end, 2);
+ EXFUN (Fselected_window, 0);
+ EXFUN (Fdelete_window, 1);
+ EXFUN (Fwindow_buffer, 1);
+ EXFUN (Fget_buffer_window, 2);
+ EXFUN (Fsave_window_excursion, UNEVALLED);
+ EXFUN (Fsplit_window, 3);
+ EXFUN (Fset_window_configuration, 1);
+ EXFUN (Fcurrent_window_configuration, 1);
+ extern int compare_window_configurations P_ ((Lisp_Object, Lisp_Object, int));
+ EXFUN (Fcoordinates_in_window_p, 2);
+ EXFUN (Fwindow_at, 3);
+ EXFUN (Fpos_visible_in_window_p, 3);
+ extern void mark_window_cursors_off P_ ((struct window *));
+ extern int window_internal_height P_ ((struct window *));
+ extern int window_internal_width P_ ((struct window *));
+ EXFUN (Frecenter, 1);
+ EXFUN (Fscroll_other_window, 1);
+ EXFUN (Fset_window_start, 3);
+ extern void temp_output_buffer_show P_ ((Lisp_Object));
+ extern void replace_buffer_in_all_windows P_ ((Lisp_Object));
+ extern void init_window_once P_ ((void));
+ extern void init_window P_ ((void));
+ extern void syms_of_window P_ ((void));
+ extern void keys_of_window P_ ((void));
+ 
+ extern int window_box_text_cols P_ ((struct window *w));
+ 
  #endif /* not WINDOW_H_INCLUDED */
+ 
+ /* arch-tag: d4a6942f-e433-4ffe-ac10-2c3574f28577
+    (do not change this comment) */




reply via email to

[Prev in Thread] Current Thread [Next in Thread]