#define TOTALLY_UNBLOCK_INPUT (interrupt_input_blocked = 0)
#define UNBLOCK_INPUT_RESIGNAL UNBLOCK_INPUT
+
+/* Defined in keyboard.c */
+extern void reinvoke_input_signal P_ ((void));
unsigned char *, int, int));
extern int encode_coding P_ ((struct coding_system *, unsigned char *,
unsigned char *, int, int));
+extern int code_convert_region P_ ((int, int, int, int, struct coding_system *,
+ int, int));
extern int decoding_buffer_size P_ ((struct coding_system *, int));
extern int encoding_buffer_size P_ ((struct coding_system *, int));
extern void detect_coding P_ ((struct coding_system *, unsigned char *, int));
int *total_charstarts;
};
-extern void get_display_line ();
-extern Lisp_Object sit_for ();
+extern void redraw_frame P_ ((struct frame *));
+extern void redraw_garbaged_frames P_ ((void));
+extern void free_frame_glyphs P_ ((struct frame *, struct frame_glyphs *));
+extern void remake_frame_glyphs P_ ((struct frame *));
+extern void cancel_line P_ ((int, struct frame *));
+extern void clear_frame_records P_ ((struct frame *));
+extern void init_desired_glyphs P_ ((struct frame *));
+extern void get_display_line P_ ((struct frame *, int, int));
+extern int scroll_frame_lines P_ ((struct frame *, int, int, int, int));
+extern void preserve_other_columns P_ ((struct window *));
+extern void adjust_window_charstarts P_ ((struct window *, int, int));
+extern void verify_charstarts P_ ((struct window *));
+extern void cancel_my_columns P_ ((struct window *));
+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 void quit_error_check P_ ((void));
+extern int scrolling P_ ((struct frame *));
+extern int buffer_posn_from_coords P_ ((struct window *, int, int));
+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));
+
+/* Defined in term.c */
+extern void ring_bell P_ ((void));
+extern void set_terminal_modes P_ ((void));
+extern void reset_terminal_modes P_ ((void));
+extern void update_begin P_ ((struct frame *));
+extern void update_end P_ ((struct frame *));
+extern void set_terminal_window P_ ((int));
+extern void set_scroll_region P_ ((int, int));
+extern void turn_off_insert P_ ((void));
+extern void turn_off_highlight P_ ((void));
+extern void background_highlight P_ ((void));
+extern void reassert_line_highlight P_ ((int, int));
+extern void change_line_highlight P_ ((int, int, int));
+extern void cursor_to P_ ((int, int));
+extern void clear_frame P_ ((void));
+extern void clear_end_of_line P_ ((int));
+extern void clear_end_of_line_raw P_ ((int));
+extern void write_glyphs P_ ((GLYPH *, int));
+extern void insert_glyphs P_ ((GLYPH *, int));
+extern void delete_glyphs P_ ((int));
+extern void ins_del_lines P_ ((int, int));
+extern int string_cost P_ ((char *));
+extern int per_line_cost P_ ((char *));
+extern void calculate_costs P_ ((struct frame *));
+extern void term_init P_ ((char *));
+extern void fatal P_ ((/* char *, ... */));
+
+/* Defined in scroll.c */
+extern int scrolling_max_lines_saved P_ ((int, int, int *, int *, int *));
+extern int scroll_cost P_ ((struct frame *, int, int, int));
+extern void do_line_insertion_deletion_costs P_ ((struct frame *, char *,
+ char *, char *, char *,
+ char *, char *, int));
#endif /* not _DISPEXTERN_H_ */
extern void move_if_not_intangible P_ ((int));
extern Lisp_Object get_local_map P_ ((int, struct buffer *));
extern INTERVAL update_interval P_ ((INTERVAL, int));
+extern void set_intervals_multibyte P_ ((int));
/* Defined in xdisp.c */
extern int invisible_ellipsis_p P_ ((Lisp_Object, Lisp_Object));
/* Sticky properties */
extern Lisp_Object Qfront_sticky, Qrear_nonsticky;
-extern Lisp_Object Fget_char_property (), Fget_text_property ();
-extern Lisp_Object Ftext_properties_at ();
-extern Lisp_Object Fnext_property_change (), Fprevious_property_change ();
-extern Lisp_Object Fadd_text_properties (), Fset_text_properties ();
-extern Lisp_Object Fremove_text_properties (), Ferase_text_properties ();
-extern Lisp_Object Ftext_property_any (), Ftext_property_not_all ();
-extern Lisp_Object copy_text_properties ();
+EXFUN (Fget_char_property, 3);
+EXFUN (Fget_text_property, 3);
+EXFUN (Ftext_properties_at, 2);
+EXFUN (Fnext_property_change, 3);
+EXFUN (Fprevious_property_change, 3);
+EXFUN (Fadd_text_properties, 4);
+EXFUN (Fset_text_properties, 4);
+EXFUN (Fremove_text_properties, 4);
+EXFUN (Ftext_property_any, 5);
+EXFUN (Ftext_property_not_all, 5);
+extern Lisp_Object copy_text_properties P_ ((Lisp_Object, Lisp_Object,
+ Lisp_Object, Lisp_Object,
+ Lisp_Object, Lisp_Object));
extern void syms_of_textprop ();
extern Lisp_Object map_prompt P_ ((Lisp_Object));
-extern int parse_menu_item ();
+extern int parse_menu_item P_ ((Lisp_Object, int, int));
extern void echo_now P_ ((void));
extern void init_kboard P_ ((KBOARD *));
extern int nonascii_insert_offset;
extern Lisp_Object Vnonascii_translate_table;
EXFUN (Fchar_bytes, 1);
+EXFUN (Fchar_width, 1);
extern int chars_in_text P_ ((unsigned char *, int));
extern int multibyte_chars_in_text P_ ((unsigned char *, int));
extern int unibyte_char_to_multibyte P_ ((int));
extern Lisp_Object assq_no_quit P_ ((Lisp_Object, Lisp_Object));
extern int string_char_to_byte P_ ((Lisp_Object, int));
extern int string_byte_to_char P_ ((Lisp_Object, int));
+extern Lisp_Object string_make_multibyte P_ ((Lisp_Object));
+extern Lisp_Object string_make_unibyte P_ ((Lisp_Object));
EXFUN (Fcopy_alist, 1);
EXFUN (Fplist_get, 2);
EXFUN (Fset_char_table_parent, 2);
EXFUN (Frassoc, 2);
EXFUN (Fstring_equal, 2);
EXFUN (Fstring_lessp, 2);
+extern int char_table_translate P_ ((Lisp_Object, int));
extern void map_char_table P_ ((void (*) (Lisp_Object, Lisp_Object, Lisp_Object),
Lisp_Object, Lisp_Object, Lisp_Object, int,
Lisp_Object *));
extern void make_gap P_ ((int));
extern int copy_text P_ ((unsigned char *, unsigned char *, int, int, int));
extern int count_size_as_multibyte P_ ((unsigned char *, int));
+extern int count_combining_before P_ ((unsigned char *, int, int, int));
+extern int count_combining_after P_ ((unsigned char *, int, int, int));
extern void insert P_ ((unsigned char *, int));
extern void insert_and_inherit P_ ((unsigned char *, int));
extern void insert_1 P_ ((unsigned char *, int, int, int, int));
EXFUN (Fmake_string, 2);
extern Lisp_Object build_string P_ ((char *));
extern Lisp_Object make_string P_ ((char *, int));
+extern Lisp_Object make_unibyte_string P_ ((char *, int));
extern Lisp_Object make_multibyte_string P_ ((char *, int, int));
extern Lisp_Object make_event_array P_ ((int, Lisp_Object *));
extern Lisp_Object make_uninit_string P_ ((int));
extern void write_string_1 P_ ((char *, int, Lisp_Object));
extern void print_error_message P_ ((Lisp_Object, Lisp_Object));
extern Lisp_Object internal_with_output_to_temp_buffer
- P_ ((char *, Lisp_Object (*) (), Lisp_Object));
+ P_ ((char *, Lisp_Object (*) (Lisp_Object), Lisp_Object));
extern void float_to_string P_ ((unsigned char *, double));
/* Defined in doprnt.c */
EXFUN (Fcopy_marker, 2);
EXFUN (Fset_marker, 3);
extern int marker_position P_ ((Lisp_Object));
+extern int marker_byte_position P_ ((Lisp_Object));
+extern void clear_charpos_cache P_ ((struct buffer *));
+extern int charpos_to_bytepos P_ ((int));
+extern int buf_charpos_to_bytepos P_ ((struct buffer *, int));
+extern int buf_bytepos_to_charpos P_ ((struct buffer *, int));
extern void unchain_marker P_ ((Lisp_Object));
extern Lisp_Object set_marker_restricted P_ ((Lisp_Object, Lisp_Object, Lisp_Object));
extern Lisp_Object set_marker_both P_ ((Lisp_Object, Lisp_Object, int, int));
extern Lisp_Object last_minibuf_string;
extern void choose_minibuf_frame P_ ((void));
+extern int scmp P_ ((unsigned char *, unsigned char *, int));
EXFUN (Fcompleting_read, 8);
EXFUN (Fread_from_minibuffer, 7);
EXFUN (Fread_variable, 2);
#define CHECK_IMPURE(obj) \
{ if (PURE_P (obj)) \
pure_write_error (); }
+
+extern void pure_write_error P_ ((void));
\f
/* Define PURE_P. */
/* If nonzero, send all terminal output characters to this stream also. */
extern FILE *termscript;
+/* Only use prototypes when lisp.h has been included. */
+#ifndef P_
+#define P_(X) ()
+#endif
\f
/* Text display hooks. */
-extern int (*cursor_to_hook) ();
-extern int (*raw_cursor_to_hook) ();
+extern void (*cursor_to_hook) P_ ((int, int));
+extern void (*raw_cursor_to_hook) P_ ((int, int));
-extern int (*clear_to_end_hook) ();
-extern int (*clear_frame_hook) ();
-extern int (*clear_end_of_line_hook) ();
+extern void (*clear_to_end_hook) P_ ((void));
+extern void (*clear_frame_hook) P_ ((void));
+extern void (*clear_end_of_line_hook) P_ ((int));
-extern int (*ins_del_lines_hook) ();
+extern void (*ins_del_lines_hook) P_ ((int, int));
-extern int (*change_line_highlight_hook) ();
-extern int (*reassert_line_highlight_hook) ();
+extern void (*change_line_highlight_hook) P_ ((int, int, int));
+extern void (*reassert_line_highlight_hook) P_ ((int, int));
-extern int (*insert_glyphs_hook) ();
-extern int (*write_glyphs_hook) ();
-extern int (*delete_glyphs_hook) ();
+extern void (*insert_glyphs_hook) P_ ((GLYPH *, int));
+extern void (*write_glyphs_hook) P_ ((GLYPH *, int));
+extern void (*delete_glyphs_hook) P_ ((int));
-extern int (*ring_bell_hook) ();
+extern void (*ring_bell_hook) P_ ((void));
-extern int (*reset_terminal_modes_hook) ();
-extern int (*set_terminal_modes_hook) ();
-extern int (*update_begin_hook) ();
-extern int (*update_end_hook) ();
-extern int (*set_terminal_window_hook) ();
+extern void (*reset_terminal_modes_hook) P_ ((void));
+extern void (*set_terminal_modes_hook) P_ ((void));
+extern void (*update_begin_hook) P_ ((struct frame *));
+extern void (*update_end_hook) P_ ((struct frame *));
+extern void (*set_terminal_window_hook) P_ ((int));
\f
This should clear mouse_moved until the next motion
event arrives. */
-extern void (*mouse_position_hook) ( /* FRAME_PTR *f,
+extern void (*mouse_position_hook) P_ ((struct frame **f, int,
Lisp_Object *bar_window,
enum scroll_bar_part *part,
Lisp_Object *x,
Lisp_Object *y,
- unsigned long *time */ );
+ unsigned long *time));
/* The window system handling code should set this if the mouse has
moved since the last call to the mouse_position_hook. Calling that
/* When a frame's focus redirection is changed, this hook tells the
window system code to re-decide where to put the highlight. Under
X, this means that Emacs lies about where the focus is. */
-extern void (*frame_rehighlight_hook) ( /* void */ );
+extern void (*frame_rehighlight_hook) P_ ((struct frame *));
/* If we're displaying frames using a window system that can stack
frames on top of each other, this hook allows you to bring a frame
If RAISE is non-zero, F is brought to the front, before all other
windows. If RAISE is zero, F is sent to the back, behind all other
windows. */
-extern void (*frame_raise_lower_hook) ( /* FRAME_PTR f, int raise */ );
+extern void (*frame_raise_lower_hook) P_ ((struct frame *f, int raise));
\f
/* Scroll bar hooks. */
of WHOLE characters, starting at POSITION. If WINDOW doesn't yet
have a scroll bar, create one for it. */
extern void (*set_vertical_scroll_bar_hook)
- ( /* struct window *window,
- int portion, int whole, int position */ );
+ P_ ((struct window *window,
+ int portion, int whole, int position));
/* The following three hooks are used when we're doing a thorough
If non-zero, this hook should be safe to apply to any frame,
whether or not it can support scroll bars, and whether or not it is
currently displaying them. */
-extern void (*condemn_scroll_bars_hook)( /* FRAME_PTR *frame */ );
+extern void (*condemn_scroll_bars_hook) P_ ((struct frame *frame));
/* Unmark WINDOW's scroll bar for deletion in this judgement cycle.
Note that it's okay to redeem a scroll bar that is not condemned. */
-extern void (*redeem_scroll_bar_hook)( /* struct window *window */ );
+extern void (*redeem_scroll_bar_hook) P_ ((struct window *window));
/* Remove all scroll bars on FRAME that haven't been saved since the
last call to `*condemn_scroll_bars_hook'.
If non-zero, this hook should be safe to apply to any frame,
whether or not it can support scroll bars, and whether or not it is
currently displaying them. */
-extern void (*judge_scroll_bars_hook)( /* FRAME_PTR *FRAME */ );
+extern void (*judge_scroll_bars_hook) P_ ((struct frame *FRAME));
\f
/* Input queue declarations and hooks. */
-/* Called to read input events. */
-extern int (*read_socket_hook) ();
-
-/* Called when a frame's display becomes entirely up to date. */
-extern int (*frame_up_to_date_hook) ();
-
/* Expedient hack: only provide the below definitions to files that
are prepared to handle lispy things. CONSP is defined iff lisp.h
has been included before this file. */
does not overlap with it. */
Lisp_Object frame_or_window;
};
+
+/* Called to read input events. */
+extern int (*read_socket_hook) P_ ((int, struct input_event *, int, int));
+
+/* Called when a frame's display becomes entirely up to date. */
+extern void (*frame_up_to_date_hook) P_ ((struct frame *));
\f
/* This is used in keyboard.c, to tell how many buttons we will need
to track the positions of. */
\f
/* Interface to the face code functions. */
+/* Forward declarations for prototypes. */
+struct frame;
+struct window;
+struct input_event;
+
/* Create the first two computed faces for a frame -- the ones that
have GC's. */
-extern void init_frame_faces (/* FRAME_PTR */);
+extern void init_frame_faces P_ ((struct frame *));
/* Free the resources for the faces associated with a frame. */
-extern void free_frame_faces (/* FRAME_PTR */);
+extern void free_frame_faces P_ ((struct frame *));
/* Given a computed face, find or make an equivalent display face
in face_vector, and return a pointer to it. */
-extern struct face *intern_face (/* FRAME_PTR, struct face * */);
+extern struct face *intern_face P_ ((struct frame *, struct face *));
/* Given a frame and a face name, return the face's ID number, or
zero if it isn't a recognized face name. */
-extern int face_name_id_number (/* FRAME_PTR, Lisp_Object */);
+extern int face_name_id_number P_ ((struct frame *, Lisp_Object));
/* Return non-zero if FONT1 and FONT2 have the same size bounding box.
We assume that they're both character-cell fonts. */
-extern int same_size_fonts (/* XFontStruct *, XFontStruct * */);
+extern int same_size_fonts P_ ((XFontStruct *, XFontStruct *));
/* Recompute the GC's for the default and modeline faces.
We call this after changing frame parameters on which those GC's
depend. */
-extern void recompute_basic_faces (/* FRAME_PTR */);
+extern void recompute_basic_faces P_ ((struct frame *));
/* Return the face ID associated with a buffer position POS. Store
into *ENDPTR the next position at which a different face is
window displaying the current buffer.
REGION_BEG, REGION_END delimit the region, so it can be highlighted. */
-extern int compute_char_face (/* FRAME_PTR frame,
- struct window *w,
- int pos,
- int region_beg, int region_end,
- int *endptr */);
+extern int compute_char_face P_ ((struct frame *frame,
+ struct window *w,
+ int pos,
+ int region_beg, int region_end,
+ int *endptr,
+ int limit, int mouse));
/* Return the face ID to use to display a special glyph which selects
FACE_CODE as the face ID, assuming that ordinarily the face would
be BASIC_FACE. F is the frame. */
-extern int compute_glyph_face (/* FRAME_PTR, int */);
+extern int compute_glyph_face P_ ((struct frame *, int, int));
+
+/* Given a pixel position (PIX_X, PIX_Y) on the frame F, return
+ glyph co-ordinates in (*X, *Y). Set *BOUNDS to the rectangle
+ that the glyph at X, Y occupies, if BOUNDS != 0.
+ If NOCLIP is nonzero, do not force the value into range. */
+
+extern void pixel_to_glyph_coords P_ ((struct frame *f, int pix_x, int pix_y,
+ int *x, int *y, XRectangle *bounds,
+ int noclip));
+
+extern void glyph_to_pixel_coords P_ ((struct frame *f, int x, int y,
+ int *pix_x, int *pix_y));
+
+/* Defined in xterm.c */
+
+extern void cancel_mouse_face P_ ((struct frame *));
+extern void x_scroll_bar_clear P_ ((struct frame *));
+extern void x_start_queuing_selection_requests P_ ((Display *));
+extern void x_stop_queuing_selection_requests P_ ((Display *));
+extern void x_display_cursor P_ ((struct frame *, int, int, int));
+extern void x_update_cursor P_ ((struct frame *, int));
+extern int x_text_icon P_ ((struct frame *, char *));
+extern int x_bitmap_icon P_ ((struct frame *, Lisp_Object));
+extern int x_catch_errors P_ ((Display *));
+extern void x_check_errors P_ ((Display *, char *));
+extern int x_had_errors_p P_ ((Display *));
+extern void x_uncatch_errors P_ ((Display *, int));
+extern Lisp_Object x_new_font P_ ((struct frame *, char *));
+extern Lisp_Object x_new_fontset P_ ((struct frame *, char *));
+extern void x_set_offset P_ ((struct frame *, int, int, int));
+extern void x_set_window_size P_ ((struct frame *, int, int, int));
+extern void x_set_mouse_position P_ ((struct frame *, int, int));
+extern void x_set_mouse_pixel_position P_ ((struct frame *, int, int));
+extern void x_raise_frame P_ ((struct frame *));
+extern void x_lower_frame P_ ((struct frame *));
+extern void x_make_frame_visible P_ ((struct frame *));
+extern void x_make_frame_invisible P_ ((struct frame *));
+extern void x_iconify_frame P_ ((struct frame *));
+extern void x_destroy_window P_ ((struct frame *));
+extern void x_wm_set_size_hint P_ ((struct frame *, long, int));
+extern void x_wm_set_window_state P_ ((struct frame *, int));
+extern void x_wm_set_icon_pixmap P_ ((struct frame *, int));
+extern void x_wm_set_icon_position P_ ((struct frame *, int, int));
+extern void x_delete_display P_ ((struct x_display_info *));
+extern void x_initialize P_ ((void));
+
+/* Defined in xselect.c */
+
+extern void x_handle_property_notify P_ ((XPropertyEvent *));
+extern void x_handle_selection_notify P_ ((XSelectionEvent *));
+extern void x_handle_selection_request P_ ((struct input_event *));
+extern void x_handle_selection_clear P_ ((struct input_event *));
+extern void x_clear_frame_selections P_ ((struct frame *));
+
+/* Defined in xfns.c */
+
+extern int have_menus_p P_ ((void));
+extern int x_bitmap_height P_ ((struct frame *, int));
+extern int x_bitmap_width P_ ((struct frame *, int));
+extern int x_bitmap_pixmap P_ ((struct frame *, int));
+extern void x_reference_bitmap P_ ((struct frame *, int));
+extern int x_create_bitmap_from_data P_ ((struct frame *, char *,
+ unsigned int, unsigned int));
+extern int x_create_bitmap_from_file P_ ((struct frame *, Lisp_Object));
+extern void x_destroy_bitmap P_ ((struct frame *, int));
+extern void x_set_frame_parameters P_ ((struct frame *, Lisp_Object));
+extern void x_real_positions P_ ((struct frame *, int *, int *));
+extern void x_report_frame_params P_ ((struct frame *, Lisp_Object *));
+extern int defined_color P_ ((struct frame *, char *, XColor *, int));
+extern void x_set_border_pixel P_ ((struct frame *, int));
+extern void x_set_menu_bar_lines P_ ((struct frame *, Lisp_Object, Lisp_Object));
+extern void x_implicitly_set_name P_ ((struct frame *, Lisp_Object, Lisp_Object));
+extern int x_pixel_width P_ ((struct frame *));
+extern int x_pixel_height P_ ((struct frame *));
+extern int x_char_width P_ ((struct frame *));
+extern int x_char_height P_ ((struct frame *));
+extern int x_screen_planes P_ ((struct frame *));
+extern void x_sync P_ ((struct frame *));
+
+/* Defined in xfaces.c */
+extern int frame_update_line_height P_ ((struct frame *));
+extern void clear_face_cache P_ ((void));
+extern int compute_glyph_face P_ ((struct frame *, int, int));
+extern int compute_glyph_face_1 P_ ((struct frame *, Lisp_Object, int));
+
+/* Defined in xmenu.c */
+extern void x_activate_menubar P_ ((struct frame *));
+extern int popup_activated P_ ((void));
+extern void initialize_frame_menubar P_ ((struct frame *));
+
+/* Defined in widget.c */
+extern void widget_store_internal_border P_ ((Widget));