]> code.delx.au - gnu-emacs/blobdiff - src/dispextern.h
(echo_char): Use KEY_DESCRIPTION_SIZE to check free
[gnu-emacs] / src / dispextern.h
index a1432ee937da785d29eceebbb96fb37cc7be535e..c7edd020f85c6ffa579ebb9135ae67be46887810 100644 (file)
@@ -26,7 +26,10 @@ Boston, MA 02111-1307, USA.  */
 
 #ifdef HAVE_X_WINDOWS
 #include <X11/Xlib.h>
-#endif
+#ifdef USE_X_TOOLKIT
+#include <X11/Intrinsic.h>
+#endif /* USE_X_TOOLKIT */
+#endif /* HAVE_X_WINDOWS */
 
 #ifdef MSDOS
 #include "msdos.h"
@@ -36,6 +39,9 @@ Boston, MA 02111-1307, USA.  */
 #include "w32gui.h"
 #endif
 
+#ifdef macintosh
+#include "macterm.h"
+#endif
 
 /* Structure forward declarations.  Some are here because function
    prototypes below reference structure types before their definition
@@ -50,22 +56,6 @@ struct frame;
 struct window;
 
 
-\f
-/***********************************************************************
-                             Configuration
- ***********************************************************************/
-
-/* If NO_PROMPT_IN_BUFFER is zero or undefined (default), prompts are
-   inserted into minibuffers as read-only text.  Otherwise, the
-   behavior of Emacs 20.2 is restored.  Define this as part of CFLAGS
-   because dispextern.h is not included in every C source file
-   containing conditional code for it.  */
-
-#if 0
-#define NO_PROMPT_IN_BUFFER 1
-#endif
-
-
 \f
 /***********************************************************************
                              Debugging
@@ -82,7 +72,7 @@ struct window;
 
 #if GLYPH_DEBUG
 #define IF_DEBUG(X)    X
-#define xassert(X)     if (!(X)) abort (); else (void) 0
+#define xassert(X)     do {if (!(X)) abort ();} while (0)
 #else
 #define IF_DEBUG(X)    (void) 0
 #define xassert(X)     (void) 0
@@ -474,12 +464,18 @@ struct glyph_matrix
 
   /* Non-zero means window displayed in this matrix has a top mode
      line.  */
-  unsigned top_line_p : 1;
+  unsigned header_line_p : 1;
 
 #ifdef GLYPH_DEBUG
   /* A string identifying the method used to display the matrix.  */
   char method[512];
 #endif
+
+  /* The buffer this matrix displays.  Set in redisplay_internal.  */
+  struct buffer *buffer;
+
+  /* Values of BEGV and ZV as of last redisplay.  */
+  int begv, zv;
 };
 
 
@@ -681,7 +677,7 @@ struct glyph_row *matrix_row P_ ((struct glyph_matrix *, int));
    This is always the first row in MATRIX because that's the only
    way that works in frame-based redisplay.  */
 
-#define MATRIX_TOP_LINE_ROW(MATRIX) (MATRIX)->rows
+#define MATRIX_HEADER_LINE_ROW(MATRIX) (MATRIX)->rows
 
 /* Return a pointer to first row in MATRIX used for text display.  */
 
@@ -751,7 +747,7 @@ struct glyph_row *matrix_row P_ ((struct glyph_matrix *, int));
      
 #define MATRIX_ROW_PARTIALLY_VISIBLE_AT_TOP_P(W, ROW)          \
      (MATRIX_ROW_PARTIALLY_VISIBLE_P ((ROW))                   \
-      && (ROW)->y < WINDOW_DISPLAY_TOP_LINE_HEIGHT ((W)))
+      && (ROW)->y < WINDOW_DISPLAY_HEADER_LINE_HEIGHT ((W)))
 
 /* Non-zero if ROW is partially visible at the bottom of window W.  */
      
@@ -870,9 +866,9 @@ extern struct glyph_row scratch_glyph_row;
    if not known.  This macro is called under circumstances where
    MATRIX might not have been allocated yet.  */
 
-#define MATRIX_TOP_LINE_HEIGHT(MATRIX)         \
+#define MATRIX_HEADER_LINE_HEIGHT(MATRIX)      \
      ((MATRIX) && (MATRIX)->rows               \
-      ? MATRIX_TOP_LINE_ROW (MATRIX)->height   \
+      ? MATRIX_HEADER_LINE_ROW (MATRIX)->height        \
       : 0)
 
 /* Return the current height of the mode line of window W.  If not
@@ -888,10 +884,10 @@ extern struct glyph_row scratch_glyph_row;
    known from W's current glyph matrix, return an estimation based on
    the height of the font of the face `top-line'.  */
 
-#define CURRENT_TOP_LINE_HEIGHT(W)                                        \
-      (MATRIX_TOP_LINE_HEIGHT ((W)->current_matrix)                       \
-      ? MATRIX_TOP_LINE_HEIGHT ((W)->current_matrix)                      \
-      : estimate_mode_line_height (XFRAME ((W)->frame), TOP_LINE_FACE_ID))
+#define CURRENT_HEADER_LINE_HEIGHT(W)                                     \
+      (MATRIX_HEADER_LINE_HEIGHT ((W)->current_matrix)                    \
+      ? MATRIX_HEADER_LINE_HEIGHT ((W)->current_matrix)                           \
+      : estimate_mode_line_height (XFRAME ((W)->frame), HEADER_LINE_FACE_ID))
 
 /* Return the height of the desired mode line of window W.  */
 
@@ -900,8 +896,8 @@ extern struct glyph_row scratch_glyph_row;
 
 /* Return the height of the desired top line of window W.  */
 
-#define DESIRED_TOP_LINE_HEIGHT(W) \
-     MATRIX_TOP_LINE_HEIGHT ((W)->desired_matrix)
+#define DESIRED_HEADER_LINE_HEIGHT(W) \
+     MATRIX_HEADER_LINE_HEIGHT ((W)->desired_matrix)
 
 /* Like FRAME_INTERNAL_BORDER_WIDTH but checks whether frame F is a
    window-system frame.  */
@@ -917,7 +913,7 @@ extern struct glyph_row scratch_glyph_row;
 #define WINDOW_DISPLAY_PIXEL_WIDTH(W)                                  \
      (((XFASTINT ((W)->width)                                          \
         - FRAME_SCROLL_BAR_WIDTH (XFRAME (WINDOW_FRAME ((W))))         \
-       - 2 * FRAME_FLAGS_AREA_COLS (XFRAME (WINDOW_FRAME ((W)))))      \
+       - FRAME_FLAGS_AREA_COLS (XFRAME (WINDOW_FRAME ((W)))))          \
        * CANON_X_UNIT (XFRAME (WINDOW_FRAME ((W))))))
 
 /* Height of the display region of W, including a mode line, if any.  */
@@ -937,9 +933,9 @@ extern struct glyph_row scratch_glyph_row;
 /* Height in pixels of the top line.  Zero if W doesn't have a top
    line.  */
      
-#define WINDOW_DISPLAY_TOP_LINE_HEIGHT(W)      \
-     (WINDOW_WANTS_TOP_LINE_P ((W))            \
-      ? CURRENT_TOP_LINE_HEIGHT (W)            \
+#define WINDOW_DISPLAY_HEADER_LINE_HEIGHT(W)   \
+     (WINDOW_WANTS_HEADER_LINE_P ((W))         \
+      ? CURRENT_HEADER_LINE_HEIGHT (W)         \
       : 0)
 
 /* Pixel height of window W without mode line.  */
@@ -953,7 +949,7 @@ extern struct glyph_row scratch_glyph_row;
 #define WINDOW_DISPLAY_TEXT_HEIGHT(W)          \
      (WINDOW_DISPLAY_PIXEL_HEIGHT ((W))                \
       - WINDOW_DISPLAY_MODE_LINE_HEIGHT ((W))  \
-      - WINDOW_DISPLAY_TOP_LINE_HEIGHT ((W)))
+      - WINDOW_DISPLAY_HEADER_LINE_HEIGHT ((W)))
 
 /* Left edge of W in pixels relative to its frame.  */
      
@@ -961,7 +957,7 @@ extern struct glyph_row scratch_glyph_row;
      (FRAME_INTERNAL_BORDER_WIDTH_SAFE (XFRAME (WINDOW_FRAME ((W))))   \
       + (WINDOW_LEFT_MARGIN ((W))                                      \
          * CANON_X_UNIT (XFRAME (WINDOW_FRAME ((W)))))                 \
-      + FRAME_FLAGS_AREA_WIDTH (XFRAME (WINDOW_FRAME ((W)))))
+      + FRAME_LEFT_FLAGS_AREA_WIDTH (XFRAME (WINDOW_FRAME ((W)))))
 
 /* Right edge of window W in pixels, relative to its frame.  */
      
@@ -1063,11 +1059,11 @@ extern struct glyph_row scratch_glyph_row;
 
 /* Value is non-zero if window W wants a top line.  */
 
-#define WINDOW_WANTS_TOP_LINE_P(W)                                     \
+#define WINDOW_WANTS_HEADER_LINE_P(W)                                  \
      (!MINI_WINDOW_P (W)                                               \
       && !(W)->pseudo_window_p                                         \
       && FRAME_WANTS_MODELINE_P (XFRAME (WINDOW_FRAME (W)))            \
-      && !NILP (XBUFFER ((W)->buffer)->top_line_format))
+      && !NILP (XBUFFER ((W)->buffer)->header_line_format))
 
 \f     
 /***********************************************************************
@@ -1271,9 +1267,14 @@ enum face_id
 {
   DEFAULT_FACE_ID,
   MODE_LINE_FACE_ID,
-  TOOLBAR_FACE_ID,
+  TOOL_BAR_FACE_ID,
   BITMAP_AREA_FACE_ID,
-  TOP_LINE_FACE_ID,
+  HEADER_LINE_FACE_ID,
+  SCROLL_BAR_FACE_ID,
+  BORDER_FACE_ID,
+  CURSOR_FACE_ID,
+  MOUSE_FACE_ID,
+  MENU_FACE_ID,
   BASIC_FACE_ID_SENTINEL
 };
 
@@ -1480,7 +1481,7 @@ struct it
   unsigned multibyte_p : 1;
 
   /* 1 means window has a mode line at its top.  */
-  unsigned top_line_p : 1;
+  unsigned header_line_p : 1;
 
   /* 1 means `string' is the value of a `display' property.
      Don't handle some `display' properties in these strings.  */
@@ -1507,8 +1508,11 @@ struct it
   int saved_face_id;
 
   /* Vector of glyphs for control character translation.  The pointer
-     dpvec is set to ctl_chars when a control character is translated.  */
-  Lisp_Object ctl_chars[4];
+     dpvec is set to ctl_chars when a control character is translated.
+     This vector is also used for incomplete multibyte character
+     translation (e.g \222\244).  Such a character is at most 3 bytes,
+     thus we need at most 12 bytes here.  */
+  Lisp_Object ctl_chars[12];
 
   /* Current buffer or string position of the iterator, including
      position in overlay strings etc.  */
@@ -1585,7 +1589,7 @@ struct it
   unsigned overlay_strings_at_end_processed_p : 1;
 
   /* The ID of the default face to use.  One of DEFAULT_FACE_ID,
-     MODE_LINE_FACE_ID, or TOOLBAR_FACE_ID, depending on what we
+     MODE_LINE_FACE_ID, or TOOL_BAR_FACE_ID, depending on what we
      are displaying.  */
   int base_face_id;
 
@@ -1899,6 +1903,9 @@ struct image
   /* Reference to the type of the image.  */
   struct image_type *type;
 
+  /* 1 means that loading the image failed.  Don't try again.  */
+  unsigned load_failed_p;
+
   /* A place for image types to store additional data.  The member
      data.lisp_val is marked during GC, so it's safe to store Lisp data
      there.  Image types should free this data when their `free'
@@ -1965,69 +1972,69 @@ struct image_cache
 
 \f
 /***********************************************************************
-                              Toolbars
+                              Tool-bars
  ***********************************************************************/
 
-/* Enumeration defining where to find toolbar item information in
-   toolbar items vectors stored with frames.  Each toolbar item
-   occupies TOOLBAR_ITEM_NSLOTS elements in such a vector.  */
+/* Enumeration defining where to find tool-bar item information in
+   tool-bar items vectors stored with frames.  Each tool-bar item
+   occupies TOOL_BAR_ITEM_NSLOTS elements in such a vector.  */
 
-enum toolbar_item_idx
+enum tool_bar_item_idx
 {
-  /* The key of the toolbar item.  Used to remove items when a binding
+  /* The key of the tool-bar item.  Used to remove items when a binding
      for `undefined' is found.  */
-  TOOLBAR_ITEM_KEY,
+  TOOL_BAR_ITEM_KEY,
 
   /* Non-nil if item is enabled.  */
-  TOOLBAR_ITEM_ENABLED_P,
+  TOOL_BAR_ITEM_ENABLED_P,
 
   /* Non-nil if item is selected (pressed).  */
-  TOOLBAR_ITEM_SELECTED_P,
+  TOOL_BAR_ITEM_SELECTED_P,
 
   /* Caption.  */
-  TOOLBAR_ITEM_CAPTION,
+  TOOL_BAR_ITEM_CAPTION,
 
   /* Image(s) to display.  This is either a single image specification
      or a vector of specifications.  */
-  TOOLBAR_ITEM_IMAGES,
+  TOOL_BAR_ITEM_IMAGES,
 
   /* The binding.  */
-  TOOLBAR_ITEM_BINDING,
+  TOOL_BAR_ITEM_BINDING,
 
   /* Button type.  One of nil, `:radio' or `:toggle'.  */
-  TOOLBAR_ITEM_TYPE,
+  TOOL_BAR_ITEM_TYPE,
 
   /* Help string.  */
-  TOOLBAR_ITEM_HELP,
+  TOOL_BAR_ITEM_HELP,
 
-  /* Sentinel = number of slots in toolbar_items occupied by one
-     toolbar item.  */
-  TOOLBAR_ITEM_NSLOTS
+  /* Sentinel = number of slots in tool_bar_items occupied by one
+     tool-bar item.  */
+  TOOL_BAR_ITEM_NSLOTS
 };
 
 
 /* An enumeration for the different images that can be specified
-   for a toolbar item.  */
+   for a tool-bar item.  */
 
-enum toolbar_item_image
+enum tool_bar_item_image
 {
-  TOOLBAR_IMAGE_ENABLED_SELECTED,
-  TOOLBAR_IMAGE_ENABLED_DESELECTED,
-  TOOLBAR_IMAGE_DISABLED_SELECTED,
-  TOOLBAR_IMAGE_DISABLED_DESELECTED
+  TOOL_BAR_IMAGE_ENABLED_SELECTED,
+  TOOL_BAR_IMAGE_ENABLED_DESELECTED,
+  TOOL_BAR_IMAGE_DISABLED_SELECTED,
+  TOOL_BAR_IMAGE_DISABLED_DESELECTED
 };
 
-/* Non-zero means raise toolbar buttons when the mouse moves over them.  */
+/* Non-zero means raise tool-bar buttons when the mouse moves over them.  */
 
-extern int auto_raise_toolbar_buttons_p;
+extern int auto_raise_tool_bar_buttons_p;
 
-/* Margin around toolbar buttons in pixels.  */
+/* Margin around tool-bar buttons in pixels.  */
 
-extern int toolbar_button_margin;
+extern int tool_bar_button_margin;
 
-/* Thickness of relief to draw around toolbar buttons.  */
+/* Thickness of relief to draw around tool-bar buttons.  */
 
-extern int toolbar_button_relief;
+extern int tool_bar_button_relief;
 
 
 \f
@@ -2037,6 +2044,8 @@ extern int toolbar_button_relief;
 
 /* Defined in xdisp.c */
 
+void resize_echo_area_axactly P_ ((void));
+int resize_mini_window P_ ((struct window *, int));
 int try_window P_ ((Lisp_Object, struct text_pos));
 void window_box P_ ((struct window *, int, int *, int *, int *, int *));
 int window_box_height P_ ((struct window *));
@@ -2063,10 +2072,11 @@ void move_it_vertically P_ ((struct it *, int));
 void move_it_by_lines P_ ((struct it *, int, int));
 int frame_mode_line_height P_ ((struct frame *));
 void highlight_trailing_whitespace P_ ((struct frame *, struct glyph_row *));
-int toolbar_item_info P_ ((struct frame *, struct glyph *, int *));
-extern Lisp_Object Qtoolbar;
+int tool_bar_item_info P_ ((struct frame *, struct glyph *, int *));
+extern Lisp_Object Qtool_bar;
 extern Lisp_Object Vshow_trailing_whitespace;
 extern int redisplaying_p;
+extern void add_to_log P_ ((char *, Lisp_Object, Lisp_Object));
 
 /* Defined in sysdep.c */
 
@@ -2077,8 +2087,14 @@ int tabs_safe_p P_ ((void));
 void init_baud_rate P_ ((void));
 void init_sigio P_ ((int));
 
-/* Defined in xface.c */
+/* Defined in xfaces.c */
+
+#ifdef USE_X_TOOLKIT
+void x_set_menu_resources_from_menu_face P_ ((struct frame *, Widget));
+#endif
 
+void update_face_from_frame_parameter P_ ((struct frame *, Lisp_Object,
+                                          Lisp_Object));
 char *x_charset_registry P_ ((int));
 void clear_face_cache P_ ((int));
 unsigned long load_color P_ ((struct frame *, struct face *, Lisp_Object,
@@ -2110,6 +2126,8 @@ extern Lisp_Object Qforeground_color, Qbackground_color;
 
 #ifdef HAVE_X_WINDOWS 
 
+void gamma_correct P_ ((struct frame *, XColor *));
+void x_kill_gs_process P_ ((Pixmap, struct frame *));
 int x_screen_planes P_ ((struct frame *));
 void x_implicitly_set_name P_ ((struct frame *, Lisp_Object, Lisp_Object));
 struct image_cache *make_image_cache P_ ((void));
@@ -2136,8 +2154,9 @@ extern int display_busy_cursor_p;
 
 int popup_activated P_ ((void));
 
-/* Defined in dispnw.c  */
+/* Defined in dispnew.c  */
 
+int estimate_mode_line_height P_ ((struct frame *, enum face_id));
 Lisp_Object mode_line_string P_ ((struct window *, int, int, int, int *));
 extern void redraw_frame P_ ((struct frame *));
 extern void redraw_garbaged_frames P_ ((void));
@@ -2148,8 +2167,6 @@ extern int direct_output_for_insert P_ ((int));
 extern int direct_output_forward_char P_ ((int));
 extern int update_frame P_ ((struct frame *, int, int));
 extern int scrolling P_ ((struct frame *));
-extern void do_pending_window_change P_ ((void));
-extern void change_frame_size P_ ((struct frame *, int, int, int, int));
 extern void bitch_at_user P_ ((void));
 void adjust_glyphs P_ ((struct frame *));
 void free_glyphs P_ ((struct frame *));
@@ -2182,8 +2199,8 @@ int update_frame P_ ((struct frame *, int, int));
 void update_single_window P_ ((struct window *, int));
 int scrolling P_ ((struct frame *));
 int buffer_posn_from_coords P_ ((struct window *, int *, int *));
-void do_pending_window_change P_ ((void));
-void change_frame_size P_ ((struct frame *, int, int, int, int));
+void do_pending_window_change P_ ((int));
+void change_frame_size P_ ((struct frame *, int, int, int, int, int));
 void bitch_at_user P_ ((void));
 Lisp_Object sit_for P_ ((int, int, int, int, int));
 void init_display P_ ((void));