Mercurial > hg > xemacs-beta
annotate src/glade.c @ 5649:d026b665014f
Actually obey POSIX rules in #'posix-string-match, don't ignore them.
src/ChangeLog addition:
2012-04-25 Aidan Kehoe <kehoea@parhasard.net>
* search.c (string_match_1): Actually use the POSIX argument here,
pass it to compile_pattern(). Thank you for the bug report, Ilya
Shlyakhter!
tests/ChangeLog addition:
2012-04-25 Aidan Kehoe <kehoea@parhasard.net>
* automated/regexp-tests.el: Check that #'posix-string-match
actually returns the longest match; thank you Ilya Shlyakhter in
jn1j8t$ujq$1@dough.gmane.org !
author | Aidan Kehoe <kehoea@parhasard.net> |
---|---|
date | Wed, 25 Apr 2012 20:25:33 +0100 |
parents | 2aa9cd456ae7 |
children |
rev | line source |
---|---|
462 | 1 /* glade.c |
2 ** | |
3 ** Description: Interface to `libglade' for XEmacs/GTK | |
4 ** | |
5 ** Created by: William M. Perry <wmperry@gnu.org> | |
6 ** | |
7 ** Copyright (C) 1999 John Harper <john@dcs.warwick.ac.uk> | |
8 ** Copyright (c) 2000 Free Software Foundation | |
9 ** | |
4709
db7068430402
Add explicit GPL v2 or later notices to Bill Perry's code, where such notices
Jerry James <james@xemacs.org>
parents:
4677
diff
changeset
|
10 ** This file is part of XEmacs. |
db7068430402
Add explicit GPL v2 or later notices to Bill Perry's code, where such notices
Jerry James <james@xemacs.org>
parents:
4677
diff
changeset
|
11 ** |
5405
2aa9cd456ae7
Move src/ to GPLv3.
Mike Sperber <sperber@deinprogramm.de>
parents:
5231
diff
changeset
|
12 ** XEmacs is free software: you can redistribute it and/or modify it |
4709
db7068430402
Add explicit GPL v2 or later notices to Bill Perry's code, where such notices
Jerry James <james@xemacs.org>
parents:
4677
diff
changeset
|
13 ** under the terms of the GNU General Public License as published by the |
5405
2aa9cd456ae7
Move src/ to GPLv3.
Mike Sperber <sperber@deinprogramm.de>
parents:
5231
diff
changeset
|
14 ** Free Software Foundation, either version 3 of the License, or (at your |
2aa9cd456ae7
Move src/ to GPLv3.
Mike Sperber <sperber@deinprogramm.de>
parents:
5231
diff
changeset
|
15 ** option) any later version. |
2aa9cd456ae7
Move src/ to GPLv3.
Mike Sperber <sperber@deinprogramm.de>
parents:
5231
diff
changeset
|
16 ** |
4709
db7068430402
Add explicit GPL v2 or later notices to Bill Perry's code, where such notices
Jerry James <james@xemacs.org>
parents:
4677
diff
changeset
|
17 ** XEmacs is distributed in the hope that it will be useful, but WITHOUT |
db7068430402
Add explicit GPL v2 or later notices to Bill Perry's code, where such notices
Jerry James <james@xemacs.org>
parents:
4677
diff
changeset
|
18 ** ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
db7068430402
Add explicit GPL v2 or later notices to Bill Perry's code, where such notices
Jerry James <james@xemacs.org>
parents:
4677
diff
changeset
|
19 ** FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
db7068430402
Add explicit GPL v2 or later notices to Bill Perry's code, where such notices
Jerry James <james@xemacs.org>
parents:
4677
diff
changeset
|
20 ** for more details. |
5405
2aa9cd456ae7
Move src/ to GPLv3.
Mike Sperber <sperber@deinprogramm.de>
parents:
5231
diff
changeset
|
21 ** |
4709
db7068430402
Add explicit GPL v2 or later notices to Bill Perry's code, where such notices
Jerry James <james@xemacs.org>
parents:
4677
diff
changeset
|
22 ** You should have received a copy of the GNU General Public License |
5405
2aa9cd456ae7
Move src/ to GPLv3.
Mike Sperber <sperber@deinprogramm.de>
parents:
5231
diff
changeset
|
23 ** along with XEmacs. If not, see <http://www.gnu.org/licenses/>. */ |
462 | 24 |
25 #if defined(HAVE_GLADE_H) || defined(HAVE_GLADE_GLADE_H) | |
26 | |
27 /* For COMPILED_FUNCTIONP */ | |
28 #include "bytecode.h" | |
29 | |
30 #ifdef HAVE_GLADE_GLADE_H | |
31 #include <glade/glade.h> | |
32 #endif | |
33 | |
34 #ifdef HAVE_GLADE_H | |
35 #include <glade.h> | |
36 #endif | |
37 | |
38 /* This is based on the code from rep-gtk 0.11 in libglade-support.c */ | |
39 | |
40 static void | |
41 connector (const gchar *handler_name, GtkObject *object, | |
42 const gchar *signal_name, const gchar *signal_data, | |
43 GtkObject *connect_object, gboolean after, gpointer user_data) | |
44 { | |
45 Lisp_Object func; | |
46 Lisp_Object lisp_data = Qnil; | |
47 | |
5013 | 48 func = GET_LISP_FROM_VOID (user_data); |
462 | 49 |
50 if (NILP (func)) | |
51 { | |
52 /* Look for a lisp function called HANDLER_NAME */ | |
53 func = intern (handler_name); | |
54 } | |
55 | |
56 if (signal_data && signal_data[0]) | |
57 { | |
4677
8f1ee2d15784
Support full Common Lisp multiple values in C.
Aidan Kehoe <kehoea@parhasard.net>
parents:
2054
diff
changeset
|
58 lisp_data |
4953
304aebb79cd3
function renamings to track names of char typedefs
Ben Wing <ben@xemacs.org>
parents:
4709
diff
changeset
|
59 = IGNORE_MULTIPLE_VALUES (Feval (Fread (build_cistring (signal_data)))); |
462 | 60 } |
61 | |
62 /* obj, name, func, cb_data, object_signal, after_p */ | |
63 Fgtk_signal_connect (build_gtk_object (object), | |
64 intern (signal_name), | |
65 func, | |
66 lisp_data, | |
67 connect_object ? Qt : Qnil, | |
68 after ? Qt : Qnil); | |
69 } | |
70 | |
71 /* This differs from lisp/subr.el (functionp) definition by allowing | |
72 ** symbol names that may not necessarily be fboundp yet. | |
73 */ | |
74 static int __almost_functionp (Lisp_Object obj) | |
75 { | |
76 return (SYMBOLP (obj) || | |
77 SUBRP (obj) || | |
78 COMPILED_FUNCTIONP (obj) || | |
79 EQ (Fcar_safe (obj), Qlambda)); | |
80 } | |
81 | |
82 DEFUN ("glade-xml-signal-connect", Fglade_xml_signal_connect, 3, 3, 0, /* | |
83 Connect a glade handler. | |
84 */ | |
85 (xml, handler_name, func)) | |
86 { | |
87 CHECK_GTK_OBJECT (xml); | |
88 CHECK_STRING (handler_name); | |
89 | |
90 if (!__almost_functionp (func)) | |
91 { | |
92 func = wrong_type_argument (intern ("functionp"), func); | |
93 } | |
94 | |
95 glade_xml_signal_connect_full (GLADE_XML (XGTK_OBJECT (xml)->object), | |
2054 | 96 (char*) XSTRING_DATA (handler_name), |
5013 | 97 connector, STORE_LISP_IN_VOID (func)); |
462 | 98 return (Qt); |
99 } | |
100 | |
101 DEFUN ("glade-xml-signal-autoconnect", Fglade_xml_signal_autoconnect, 1, 1, 0, /* | |
102 Connect all glade handlers. | |
103 */ | |
104 (xml)) | |
105 { | |
106 CHECK_GTK_OBJECT (xml); | |
107 | |
108 glade_xml_signal_autoconnect_full (GLADE_XML (XGTK_OBJECT (xml)->object), | |
5013 | 109 connector, STORE_LISP_IN_VOID (Qnil)); |
462 | 110 return (Qt); |
111 } | |
112 | |
113 DEFUN ("glade-xml-textdomain", Fglade_xml_textdomain, 1, 1, 0, /* | |
114 Return the textdomain of a GladeXML object. | |
115 */ | |
116 (xml)) | |
117 { | |
118 gchar *the_domain = NULL; | |
119 | |
120 CHECK_GTK_OBJECT (xml); | |
121 | |
122 if (!GLADE_IS_XML (XGTK_OBJECT (xml)->object)) | |
123 { | |
563 | 124 wtaerror ("Object is not a GladeXML type.", xml); |
462 | 125 } |
126 | |
127 #ifdef LIBGLADE_XML_TXTDOMAIN | |
128 the_domain = GLADE_XML (XGTK_OBJECT (xml)->object)->txtdomain; | |
129 #else | |
130 the_domain = GLADE_XML (XGTK_OBJECT (xml)->object)->textdomain; | |
131 #endif | |
4953
304aebb79cd3
function renamings to track names of char typedefs
Ben Wing <ben@xemacs.org>
parents:
4709
diff
changeset
|
132 return (build_cistring (the_domain)); |
462 | 133 } |
134 | |
135 void syms_of_glade (void) | |
136 { | |
137 DEFSUBR (Fglade_xml_signal_connect); | |
138 DEFSUBR (Fglade_xml_signal_autoconnect); | |
139 DEFSUBR (Fglade_xml_textdomain); | |
140 } | |
141 | |
142 void vars_of_glade (void) | |
143 { | |
144 Fprovide (intern ("glade")); | |
145 } | |
146 | |
147 #else /* !(HAVE_GLADE_H || HAVE_GLADE_GLADE_H) */ | |
148 #define syms_of_glade() | |
149 #define vars_of_glade() | |
150 #endif |