Mercurial > hg > xemacs-beta
annotate src/console-x.h @ 4906:6ef8256a020a
implement equalp in C, fix case-folding, add equal() method for keymaps
-------------------- ChangeLog entries follow: --------------------
lisp/ChangeLog addition:
2010-02-01 Ben Wing <ben@xemacs.org>
* cl-extra.el:
* cl-extra.el (cl-string-vector-equalp): Removed.
* cl-extra.el (cl-bit-vector-vector-equalp): Removed.
* cl-extra.el (cl-vector-array-equalp): Removed.
* cl-extra.el (cl-hash-table-contents-equalp): Removed.
* cl-extra.el (equalp): Removed.
* cl-extra.el (cl-mapcar-many):
Comment out the whole `equalp' implementation for the moment;
remove once we're sure the C implementation works.
* cl-macs.el:
* cl-macs.el (equalp):
Simplify the compiler-macro for `equalp' -- once it's in C,
we don't need to try so hard to expand it.
src/ChangeLog addition:
2010-02-01 Ben Wing <ben@xemacs.org>
* abbrev.c (abbrev_match_mapper):
* buffer.h (CANON_TABLE_OF):
* buffer.h:
* editfns.c (Fchar_equal):
* minibuf.c (scmp_1):
* text.c (qxestrcasecmp_i18n):
* text.c (qxestrncasecmp_i18n):
* text.c (qxetextcasecmp):
* text.c (qxetextcasecmp_matching):
Create new macro CANONCASE that converts to a canonical mapping
and use it to do caseless comparisons instead of DOWNCASE.
* alloc.c:
* alloc.c (cons_equal):
* alloc.c (vector_equal):
* alloc.c (string_equal):
* bytecode.c (compiled_function_equal):
* chartab.c (char_table_entry_equal):
* chartab.c (char_table_equal):
* data.c (weak_list_equal):
* data.c (weak_box_equal):
* data.c (ephemeron_equal):
* device-msw.c (equal_devmode):
* elhash.c (hash_table_equal):
* events.c (event_equal):
* extents.c (properties_equal):
* extents.c (extent_equal):
* faces.c:
* faces.c (face_equal):
* faces.c (face_hash):
* floatfns.c (float_equal):
* fns.c:
* fns.c (bit_vector_equal):
* fns.c (plists_differ):
* fns.c (Fplists_eq):
* fns.c (Fplists_equal):
* fns.c (Flax_plists_eq):
* fns.c (Flax_plists_equal):
* fns.c (internal_equal):
* fns.c (internal_equalp):
* fns.c (internal_equal_0):
* fns.c (syms_of_fns):
* glyphs.c (image_instance_equal):
* glyphs.c (glyph_equal):
* glyphs.c (glyph_hash):
* gui.c (gui_item_equal):
* lisp.h:
* lrecord.h (struct lrecord_implementation):
* marker.c (marker_equal):
* number.c (bignum_equal):
* number.c (ratio_equal):
* number.c (bigfloat_equal):
* objects.c (color_instance_equal):
* objects.c (font_instance_equal):
* opaque.c (equal_opaque):
* opaque.c (equal_opaque_ptr):
* rangetab.c (range_table_equal):
* specifier.c (specifier_equal):
Add a `foldcase' param to the equal() method and use it to implement
`equalp' comparisons. Also add to plists_differ(), although we
don't currently use it here.
Rewrite internal_equalp(). Implement cross-type vector comparisons.
Don't implement our own handling of numeric promotion -- just use
the `=' primitive.
Add internal_equal_0(), which takes a `foldcase' param and calls
either internal_equal() or internal_equalp().
* buffer.h:
When given a 0 for buffer (which is the norm when functions don't
have a specific buffer available), use the current buffer's table,
not `standard-case-table'; otherwise the current settings are
ignored.
* casetab.c:
* casetab.c (set_case_table):
When handling old-style vectors of 256 in `set-case-table' don't
overwrite the existing table! Instead create a new table and
populate.
* device-msw.c (sync_printer_with_devmode):
* lisp.h:
* text.c (lisp_strcasecmp_ascii):
Rename lisp_strcasecmp to lisp_strcasecmp_ascii and use
lisp_strcasecmp_i18n for caseless comparisons in some places.
* elhash.c:
Delete unused lisp_string_hash and lisp_string_equal().
* events.h:
* keymap-buttons.h:
* keymap.h:
* keymap.c (keymap_lookup_directly):
* keymap.c (keymap_store):
* keymap.c (FROB):
* keymap.c (key_desc_list_to_event):
* keymap.c (describe_map_mapper):
* keymap.c (INCLUDE_BUTTON_ZERO):
New file keymap-buttons.h; use to handle buttons 1-26 in place of
duplicating code 26 times.
* frame-gtk.c (allocate_gtk_frame_struct):
* frame-msw.c (mswindows_init_frame_1):
Fix some comments about internal_equal() in redisplay that don't
apply any more.
* keymap-slots.h:
* keymap.c:
New file keymap-slots.h. Use it to notate the slots in a keymap
structure, similar to frameslots.h or coding-system-slots.h.
* keymap.c (MARKED_SLOT):
* keymap.c (keymap_equal):
* keymap.c (keymap_hash):
Implement.
tests/ChangeLog addition:
2010-02-01 Ben Wing <ben@xemacs.org>
* automated/case-tests.el:
* automated/case-tests.el (uni-mappings):
* automated/search-tests.el:
Delete old pristine-case-table code. Rewrite the Unicode torture
test to take into account whether overlapping mappings exist for
more than one character, and not doing the upcase/downcase
comparisons in such cases.
* automated/lisp-tests.el (foo):
* automated/lisp-tests.el (string-variable):
* automated/lisp-tests.el (featurep):
Replace Assert (equal ... with Assert-equal; same for other types
of equality. Replace some awkward equivalents of Assert-equalp
with Assert-equalp. Add lots of equalp tests.
* automated/case-tests.el:
* automated/regexp-tests.el:
* automated/search-tests.el:
Fix up the comments at the top of the files. Move rules about where
to put tests into case-tests.el.
* automated/test-harness.el:
* automated/test-harness.el (test-harness-aborted-summary-template): New.
* automated/test-harness.el (test-harness-from-buffer):
* automated/test-harness.el (batch-test-emacs):
Fix Assert-test-not. Create Assert-not-equal and variants.
Delete the doc strings from all these convenience functions to avoid
excessive repetition; instead use one copy in a comment.
author | Ben Wing <ben@xemacs.org> |
---|---|
date | Mon, 01 Feb 2010 01:02:40 -0600 |
parents | 726060ee587c |
children | b3ce27ca7647 19a72041c5ed |
rev | line source |
---|---|
428 | 1 /* Define X specific console, device, and frame object for XEmacs. |
2 Copyright (C) 1989, 1992, 1993, 1994, 1995 Free Software Foundation, Inc. | |
3 Copyright (C) 1994, 1995 Board of Trustees, University of Illinois. | |
1318 | 4 Copyright (C) 1996, 2002, 2003 Ben Wing. |
428 | 5 |
6 This file is part of XEmacs. | |
7 | |
8 XEmacs is free software; you can redistribute it and/or modify it | |
9 under the terms of the GNU General Public License as published by the | |
10 Free Software Foundation; either version 2, or (at your option) any | |
11 later version. | |
12 | |
13 XEmacs is distributed in the hope that it will be useful, but WITHOUT | |
14 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
15 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | |
16 for more details. | |
17 | |
18 You should have received a copy of the GNU General Public License | |
19 along with XEmacs; see the file COPYING. If not, write to | |
20 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, | |
21 Boston, MA 02111-1307, USA. */ | |
22 | |
23 /* Synched up with: Not in FSF. */ | |
24 | |
25 | |
26 /* Authorship: | |
27 | |
28 Ultimately based on FSF, then later on JWZ work for Lemacs. | |
29 Rewritten over time by Ben Wing and Chuck Thompson (original | |
30 multi-device work by Chuck Thompson). | |
31 */ | |
32 | |
440 | 33 #ifndef INCLUDED_console_x_h_ |
34 #define INCLUDED_console_x_h_ | |
428 | 35 |
36 #ifdef HAVE_X_WINDOWS | |
37 | |
38 #include "console.h" | |
2484 | 39 /* must come before Xutil.h, which is included indirectly from xintrinsic.h, |
40 to avoid breakage in keysym-parsing macros from X11R6, at least X.org as | |
41 of 2005-01-17, and probably XFree86 too from reports on c.e.x */ | |
42 #include <X11/keysym.h> | |
428 | 43 #include "xintrinsic.h" |
1346 | 44 #include "../lwlib/lwlib.h" |
428 | 45 |
46 #include <X11/cursorfont.h> | |
47 #include <X11/Xatom.h> | |
48 #include <X11/StringDefs.h> | |
49 | |
50 #ifdef HAVE_XPM | |
51 #include <X11/xpm.h> | |
52 #endif | |
53 | |
3094 | 54 #ifdef USE_XFT |
55 /* shut up GCC */ | |
56 #define face_index face_index_arg | |
57 #define glyph_index glyph_index_arg | |
58 #include <X11/Xft/Xft.h> | |
59 #undef glyph_index | |
60 #undef face_index | |
61 #endif | |
62 | |
428 | 63 /* R5 defines the XPointer type, but R4 doesn't. |
64 R4 also doesn't define a version number, but R5 does. */ | |
65 #if (XlibSpecificationRelease < 5) | |
66 # define XPointer char * | |
67 #endif | |
68 | |
1204 | 69 #ifdef __cplusplus |
70 #define X_CLASSFIELD c_class | |
71 #else | |
72 #define X_CLASSFIELD class | |
73 #endif | |
74 | |
428 | 75 /* Variables associated with the X display frame this emacs is using. */ |
76 extern XtAppContext Xt_app_con; | |
77 | |
78 extern Lisp_Object Vx_gc_pointer_shape; | |
79 extern Lisp_Object Vx_scrollbar_pointer_shape; | |
80 extern Lisp_Object Qx_error; | |
81 | |
82 /* Number of pixels below each line. */ | |
83 extern int x_interline_space; /* #### implement me */ | |
84 | |
458 | 85 extern Fixnum x_selection_timeout; |
428 | 86 |
87 struct frame *x_any_window_to_frame (struct device *d, Window); | |
88 struct frame *x_any_widget_or_parent_to_frame (struct device *d, | |
89 Widget widget); | |
90 struct frame *decode_x_frame (Lisp_Object); | |
91 struct frame *x_window_to_frame (struct device *d, Window); | |
92 struct device *get_device_from_display (Display *dpy); | |
93 struct device *decode_x_device (Lisp_Object); | |
94 | |
95 void x_handle_selection_notify (XSelectionEvent *event); | |
96 void x_handle_selection_request (XSelectionRequestEvent *event); | |
97 void x_handle_selection_clear (XSelectionClearEvent *event); | |
98 void x_handle_property_notify (XPropertyEvent *event); | |
99 | |
440 | 100 void Xatoms_of_select_x (struct device *d); |
428 | 101 void Xatoms_of_objects_x (struct device *d); |
102 | |
103 void x_wm_set_shell_iconic_p (Widget shell, int iconic_p); | |
104 void x_wm_set_cell_size (Widget wmshell, int cw, int ch); | |
105 void x_wm_set_variable_size (Widget wmshell, int width, int height); | |
106 | |
442 | 107 const char *x_event_name (int event_type); |
1204 | 108 int check_if_pending_expose_event (struct device *d); |
428 | 109 int x_error_handler (Display *disp, XErrorEvent *event); |
110 void expect_x_error (Display *dpy); | |
111 int x_error_occurred_p (Display *dpy); | |
112 int signal_if_x_error (Display *dpy, int resumable_p); | |
113 int x_IO_error_handler (Display *disp); | |
114 | |
1346 | 115 widget_value *xmalloc_widget_value (void); |
116 | |
117 LWLIB_ID new_lwlib_id (void); | |
118 | |
119 void gcpro_popup_callbacks (LWLIB_ID id); | |
120 void ungcpro_popup_callbacks (LWLIB_ID id); | |
121 int popup_handled_p (LWLIB_ID id); | |
122 void free_popup_widget_value_tree (widget_value *wv); | |
123 void popup_selection_callback (Widget widget, LWLIB_ID ignored_id, | |
124 XtPointer client_data); | |
125 Extbyte *add_accel_and_to_external (Lisp_Object string); | |
126 int button_item_to_widget_value (Lisp_Object gui_object_instance, | |
127 Lisp_Object gui_item, widget_value *wv, | |
128 int allow_text_field_p, int no_keys_p, | |
129 int menu_entry_p, int accel_p); | |
130 widget_value * gui_items_to_widget_values (Lisp_Object gui_object_instance, | |
131 Lisp_Object items, int accel_p); | |
132 Extbyte *menu_separator_style_and_to_external (const Ibyte *s); | |
133 Lisp_Object widget_value_unwind (Lisp_Object closure); | |
134 | |
428 | 135 void x_output_string (struct window *w, struct display_line *dl, |
867 | 136 Ichar_dynarr *buf, int xpos, int xoffset, |
428 | 137 int start_pixpos, int width, face_index findex, |
138 int cursor, int cursor_start, int cursor_width, | |
139 int cursor_height); | |
440 | 140 void x_output_x_pixmap (struct frame *f, Lisp_Image_Instance *p, |
428 | 141 int x, int y, int xoffset, int yoffset, |
142 int width, int height, | |
143 unsigned long fg, unsigned long bg, | |
144 GC override_gc); | |
145 void x_output_shadows (struct frame *f, int x, int y, int width, | |
146 int height, GC top_shadow_gc, | |
147 GC bottom_shadow_gc, GC background_gc, | |
148 int shadow_thickness, int edges); | |
149 void x_generate_shadow_pixels (struct frame *f, | |
150 unsigned long *top_shadow, | |
151 unsigned long *bottom_shadow, | |
152 unsigned long background, | |
153 unsigned long core_background); | |
154 | |
155 int x_initialize_frame_menubar (struct frame *f); | |
156 void x_init_modifier_mapping (struct device *d); | |
157 | |
593 | 158 int x_frame_window_state (struct frame *f); |
159 | |
428 | 160 #define X_ERROR_OCCURRED(dpy, body) \ |
161 (expect_x_error (dpy), body, x_error_occurred_p (dpy)) | |
162 | |
163 #define HANDLING_X_ERROR(dpy, body) \ | |
164 (expect_x_error (dpy), body, signal_if_x_error (dpy, 0)) | |
165 | |
166 void Initialize_Locale (void); | |
167 | |
168 #ifdef HAVE_XIM | |
169 | |
170 /* X Input Method `methods' */ | |
171 void XIM_init_device (struct device *d); | |
172 void XIM_init_frame (struct frame *f); | |
173 void XIM_SetSpotLocation (struct frame *f, int x, int y); | |
174 void XIM_SetGeometry (struct frame *f); | |
175 void XIM_focus_event (struct frame *f, int in_p); | |
176 | |
177 #ifdef XIM_XLIB | |
178 /* XtTypeConverter */ | |
179 Boolean EmacsXtCvtStringToXIMStyles ( | |
180 Display *dpy, | |
181 XrmValuePtr args, | |
182 Cardinal *num_args, | |
183 XrmValuePtr from, | |
184 XrmValuePtr to_in_out, | |
185 XtPointer *converter_data); | |
186 | |
187 /* XtDestructor */ | |
188 void EmacsFreeXIMStyles ( | |
189 XtAppContext app, | |
190 XrmValuePtr to, | |
191 XtPointer converter_data, | |
192 XrmValuePtr args, | |
193 Cardinal *num_args); | |
194 | |
195 #ifdef DEBUG_XEMACS | |
196 void describe_Window (Window win); | |
197 void describe_XFontSet (XFontSet font_set); | |
198 void describe_XIM (XIM im); | |
199 void describe_XIMStyle (XIMStyle style); | |
200 void describe_XIMStyles (XIMStyles *styles); | |
201 void describe_XIC (XIC ic); | |
202 void describe_event_mask (unsigned long mask); | |
4528
726060ee587c
First draft of g++ 4.3 warning removal patch. Builds. *Needs ChangeLogs.*
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4522
diff
changeset
|
203 void describe_XRectangle (const char *name, XRectangle *rect); |
428 | 204 void describe_Status (Status status); |
205 #endif /* DEBUG_XEMACS */ | |
206 #endif /* XIM_XLIB */ | |
207 #endif /* HAVE_XIM */ | |
208 | |
771 | 209 extern Lisp_Object Qxintl; |
210 | |
428 | 211 extern int in_resource_setting; |
212 extern int in_specifier_change_function; | |
213 | |
214 extern Lisp_Object Vx_initial_argv_list; /* #### ugh! */ | |
215 | |
216 #endif /* HAVE_X_WINDOWS */ | |
440 | 217 |
218 #endif /* INCLUDED_console_x_h_ */ |