annotate src/console-gtk.h @ 1296:87084e8445a7

[xemacs-hg @ 2003-02-14 09:50:15 by ben] syntax-table fixes 1. the updating of mirror tables every time a syntax table was modified was taking up huge amounts of time so i added a dirty flag and made the updating "just-in-time". 2. no-longer-used char-table-entries were not getting "freed", generating tons of garbage. 3. syntax_match() was being incorrectly called on mirror tables in the cache, not the original syntax table. buffer.c, syntax.c: Move syntax table description from buffer.c to syntax.c. chartab.c, chartab.h: Free extra char table entries to avoid excessive garbage. Add flags for dirty and mirror_table_p to char tables. Add a back pointer from mirror tables to the original syntax table. When modifying a syntax table, don't update the mirror table right away, just mark as dirty. Add various asserts to make sure we are dealing with the right type of table (mirror or non-mirror). font-lock.c, syntax.c, syntax.h: Add entry to syntax caches for the non-mirror table. Set it appropriately when initializing the syntax table. Use it, not the mirror table, for calls to syntax_match(). Don't create a bogus float each time, just once at startup. Add some asserts, as in chartab.c. syntax.h: When retrieving the syntax code, check the dirty flag and update the mirror tables as appropriate. Add some asserts, as above.
author ben
date Fri, 14 Feb 2003 09:50:17 +0000
parents 79c6ff3eef26
children b531bf8658e9
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
462
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
1 /* Define X specific console, device, and frame object for XEmacs.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
2 Copyright (C) 1989, 1992, 1993, 1994, 1995 Free Software Foundation, Inc.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
3 Copyright (C) 1994, 1995 Board of Trustees, University of Illinois.
872
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
4 Copyright (C) 2002 Ben Wing.
462
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
5
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
6 This file is part of XEmacs.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
7
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
8 XEmacs is free software; you can redistribute it and/or modify it
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
9 under the terms of the GNU General Public License as published by the
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
10 Free Software Foundation; either version 2, or (at your option) any
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
11 later version.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
12
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
13 XEmacs is distributed in the hope that it will be useful, but WITHOUT
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
14 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
15 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
16 for more details.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
17
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
18 You should have received a copy of the GNU General Public License
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
19 along with XEmacs; see the file COPYING. If not, write to
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
20 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
21 Boston, MA 02111-1307, USA. */
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
22
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
23 /* Synched up with: Not in FSF. */
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
24
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
25
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
26 /* Authorship:
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
27
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
28 Ultimately based on FSF, then later on JWZ work for Lemacs.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
29 Rewritten over time by Ben Wing and Chuck Thompson (original
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
30 multi-device work by Chuck Thompson).
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
31 */
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
32
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
33 #ifndef _XEMACS_CONSOLE_GTK_H_
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
34 #define _XEMACS_CONSOLE_GTK_H_
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
35
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
36 #ifdef HAVE_GTK
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
37
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
38 #include "console.h"
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
39 #include <gtk/gtk.h>
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
40
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
41 /* Variables associated with the X display frame this emacs is using. */
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
42
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
43 extern Lisp_Object Vx_gc_pointer_shape;
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
44 extern Lisp_Object Vx_scrollbar_pointer_shape;
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
45
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
46 /* Number of pixels below each line. */
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
47 extern int gtk_interline_space;
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
48
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
49 extern int gtk_selection_timeout;
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
50
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
51 struct frame *gtk_any_window_to_frame (struct device *d, GdkWindow *);
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
52 struct frame *gtk_window_to_frame (struct device *d, GdkWindow *);
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
53 struct frame *gtk_any_widget_or_parent_to_frame (struct device *d, GtkWidget *widget);
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
54 struct frame *decode_gtk_frame (Lisp_Object);
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
55 struct device *gtk_any_window_to_device (GdkWindow *);
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
56 struct device *decode_gtk_device (Lisp_Object);
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
57 void gtk_handle_property_notify (GdkEventProperty *event);
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
58
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
59 void signal_special_gtk_user_event (Lisp_Object channel, Lisp_Object function,
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
60 Lisp_Object object);
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
61 void gtk_redraw_exposed_area (struct frame *f, int x, int y,
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
62 int width, int height);
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
63 void gtk_output_string (struct window *w, struct display_line *dl,
867
804517e16990 [xemacs-hg @ 2002-06-05 09:54:39 by ben]
ben
parents: 778
diff changeset
64 Ichar_dynarr *buf, int xpos, int xoffset,
462
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
65 int start_pixpos, int width, face_index findex,
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
66 int cursor, int cursor_start, int cursor_width,
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
67 int cursor_height);
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
68 void gtk_output_shadows (struct frame *f, int x, int y, int width,
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
69 int height, int shadow_thickness);
714
02339d4ebed4 [xemacs-hg @ 2001-12-23 20:28:19 by wmperry]
wmperry
parents: 462
diff changeset
70 GdkGC *gtk_get_gc (struct device *d, Lisp_Object font, Lisp_Object fg, Lisp_Object bg,
02339d4ebed4 [xemacs-hg @ 2001-12-23 20:28:19 by wmperry]
wmperry
parents: 462
diff changeset
71 Lisp_Object bg_pmap, Lisp_Object lwidth);
462
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
72
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
73 int gtk_initialize_frame_menubar (struct frame *f);
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
74 void gtk_init_modifier_mapping (struct device *d);
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
75
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
76 void Initialize_Locale (void);
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
77
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
78 extern Lisp_Object Vgtk_initial_argv_list; /* #### ugh! */
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
79
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
80 const char *gtk_event_name (GdkEventType event_type);
778
2923009caf47 [xemacs-hg @ 2002-03-16 10:38:59 by ben]
ben
parents: 714
diff changeset
81
2923009caf47 [xemacs-hg @ 2002-03-16 10:38:59 by ben]
ben
parents: 714
diff changeset
82 void reinit_console_type_create_gtk (void);
2923009caf47 [xemacs-hg @ 2002-03-16 10:38:59 by ben]
ben
parents: 714
diff changeset
83
2923009caf47 [xemacs-hg @ 2002-03-16 10:38:59 by ben]
ben
parents: 714
diff changeset
84 void emacs_gtk_selection_handle (GtkWidget *,
2923009caf47 [xemacs-hg @ 2002-03-16 10:38:59 by ben]
ben
parents: 714
diff changeset
85 GtkSelectionData *selection_data,
2923009caf47 [xemacs-hg @ 2002-03-16 10:38:59 by ben]
ben
parents: 714
diff changeset
86 guint info,
2923009caf47 [xemacs-hg @ 2002-03-16 10:38:59 by ben]
ben
parents: 714
diff changeset
87 guint time_stamp,
2923009caf47 [xemacs-hg @ 2002-03-16 10:38:59 by ben]
ben
parents: 714
diff changeset
88 gpointer data);
2923009caf47 [xemacs-hg @ 2002-03-16 10:38:59 by ben]
ben
parents: 714
diff changeset
89 void emacs_gtk_selection_clear_event_handle (GtkWidget *widget,
2923009caf47 [xemacs-hg @ 2002-03-16 10:38:59 by ben]
ben
parents: 714
diff changeset
90 GdkEventSelection *event,
2923009caf47 [xemacs-hg @ 2002-03-16 10:38:59 by ben]
ben
parents: 714
diff changeset
91 gpointer data);
2923009caf47 [xemacs-hg @ 2002-03-16 10:38:59 by ben]
ben
parents: 714
diff changeset
92 void emacs_gtk_selection_received (GtkWidget *widget,
2923009caf47 [xemacs-hg @ 2002-03-16 10:38:59 by ben]
ben
parents: 714
diff changeset
93 GtkSelectionData *selection_data,
2923009caf47 [xemacs-hg @ 2002-03-16 10:38:59 by ben]
ben
parents: 714
diff changeset
94 gpointer user_data);
2923009caf47 [xemacs-hg @ 2002-03-16 10:38:59 by ben]
ben
parents: 714
diff changeset
95
462
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
96 #endif /* HAVE_GTK */
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
97 #endif /* _XEMACS_DEVICE_X_H_ */