changeset: 4426:515b91f904c1344a690b4ade3989a9cb69348894
tag: tip
user: Didier Verna <didier(a)xemacs.org>
date: Tue Feb 26 18:02:34 2008 +0100
files: src/ChangeLog src/glyphs.c src/objects.c src/specifier.c
description:
Fix specifier inheritance behavior
This patch ensures that no fallback is used if so requested, when the
specifier instantiation process involves inheritance (for instance, a face
[property] inheriting from another face [property]).
diff -r bfb8a26de3cbbf131d3b8ec8d30862aef96de7fc -r
515b91f904c1344a690b4ade3989a9cb69348894 src/ChangeLog
--- a/src/ChangeLog Sat Feb 23 14:32:19 2008 +0100
+++ b/src/ChangeLog Tue Feb 26 18:02:34 2008 +0100
@@ -1,6 +1,20 @@ 2008-02-11 Aidan Kehoe <kehoea@parhasa
+2008-02-26 Didier Verna <didier(a)xemacs.org>
+
+ * specifier.c (CHECK_INSTANCE_ENTRY): See below.
+ * specifier.c (specifier_instance_1): Propagate the no_fallback
+ flag to ...
+ * specifier.c (specifier_instance_from_inst_list): ... here, and
+ in turn propagate it to the <specifier>_instantiate methods.
+ * glyphs.c (image_instantiate): Handle the no_fallback flag.
+ * objects.c (color_instantiate): Ditto.
+ * objects.c (font_instantiate): Ditto.
+ * objects.c (face_boolean_instantiate): Ditto.
+ * specifier.c (specifier_matching_foo_from_inst_list): Update call
+ to specifier_instance_from_inst_list accordingly.
+
2008-02-11 Aidan Kehoe <kehoea(a)parhasard.net>
- * search.c (search_buffer):
+ * search.c (search_buffer):
In the event that a character is not representable in the buffer,
fail immediately. Prevents an assertion failure in the code to
deal with whether Boyer-Moore search can be used for such
@@ -21,16 +35,16 @@ 2008-02-01 Jerry James <james(a)xemacs.o
2008-01-30 Aidan Kehoe <kehoea(a)parhasard.net>
- * search.c (debug-xemacs-searches):
+ * search.c (debug-xemacs-searches):
New variable, available on debug builds. Used in
- tests/automated/case-tests.el.
+ tests/automated/case-tests.el.
(search_buffer): Only store the charset_base for characters with
translations. Correct some comments, correct some checks. If
- debug_xemacs_searches is non-zero, record which search was used.
+ debug_xemacs_searches is non-zero, record which search was used.
(boyer_moore): Remove an assertion that was incorrect. Remove its
documentation. Correct an assertion dealing with equivalence
tables; we may end up looking through the equivalence table if a
- non-ASCII non-case character was searched for.
+ non-ASCII non-case character was searched for.
2008-01-25 Michael Sperber <mike(a)xemacs.org>
@@ -43,13 +57,13 @@ 2008-01-24 Mike Sperber <mike(a)xemacs.o
2008-01-21 Aidan Kehoe <kehoea(a)parhasard.net>
- * elhash.c (Fputhash): Document the return value.
- (Fclrhash): Ditto.
+ * elhash.c (Fputhash): Document the return value.
+ (Fclrhash): Ditto.
2007-12-26 Aidan Kehoe <kehoea(a)parhasard.net>
* casetab.c:
- Extend and correct some case table documentation.
+ Extend and correct some case table documentation.
* search.c (search_buffer):
Correct a bug where only the first entry for a character in the
case equivalence table was examined in determining if the
@@ -64,7 +78,7 @@ 2007-12-26 Aidan Kehoe <kehoea@parhasa
* search.c (boyer_moore):
Assert that we haven't been passed a string with varying
characters sets or rows within character sets. That's what
- simple_search is for.
+ simple_search is for.
In the very rare event that a character in the search string has a
canonical case mapping that is not in the same character set and
@@ -74,14 +88,14 @@ 2007-12-26 Aidan Kehoe <kehoea@parhasa
Do not search for any character case mappings that cannot possibly
occur in the buffer, given the buffer metadata about its
- contents.
+ contents.
2008-01-19 Aidan Kehoe <kehoea(a)parhasard.net>
* dired.c (Ffile_attributes): If bignums are available, use them
for the file size when necessary. If they are not, be clearer
about the check for whether the file size can fit in a Lisp
- integer.
+ integer.
2008-01-18 Jerry James <james(a)xemacs.org>
@@ -99,30 +113,30 @@ 2008-01-15 Aidan Kehoe <kehoea@parhasa
* print.c (prin1_to_string): New.
The guts of Fprin1_to_string, without resetting
- Vprint_gensym_alist.
- (Fprin1_to_string):
+ Vprint_gensym_alist.
+ (Fprin1_to_string):
Call prin1_to_string, wrapped with RESET_PRINT_GENSYM calls.
- * doprnt.c (emacs_doprnt_1):
+ * doprnt.c (emacs_doprnt_1):
Call prin1_to_string, not Fprin1_to_string (dos veces). Avoids an
- inappropriate reset of print-gensym-alist.
+ inappropriate reset of print-gensym-alist.
2008-01-12 Aidan Kehoe <kehoea(a)parhasard.net>
- * rangetab.c (Fmap_range_table):
+ * rangetab.c (Fmap_range_table):
Clarify docstring. (If FUNCTION doesn't touch any range-table
entry, things will also be correct.)
2008-01-09 Aidan Kehoe <kehoea(a)parhasard.net>
- * config.h.in:
+ * config.h.in:
Check that __STDC_VERSION__ is defined before examining its
- value. Eliminates a Cygwin warning.
+ value. Eliminates a Cygwin warning.
2008-01-08 Aidan Kehoe <kehoea(a)parhasard.net>
* text.h (MAX_XETCHAR_SIZE): Remove, eliminating a redefinition
warning on Win32.
- * dumper.c (pdump_load):
+ * dumper.c (pdump_load):
Don't use PATH_MAX_EXTERNAL, instead allocate enough for the path
+ DUMP_SLACK (space for .dmp and version information), already
used on Win32 and #defined to be 100.
@@ -138,7 +152,7 @@ 2008-01-03 Aidan Kehoe <kehoea@parhasa
2008-01-03 Aidan Kehoe <kehoea(a)parhasard.net>
* fileio.c (Fmake_temp_name): Correct the comment to cross
- reference to make-temp-file, and not to this function.
+ reference to make-temp-file, and not to this function.
2008-01-03 Stephen J. Turnbull <stephen(a)xemacs.org>
@@ -146,8 +160,8 @@ 2008-01-03 Stephen J. Turnbull <stephe
2008-01-02 Aidan Kehoe <kehoea(a)parhasard.net>
- * emacs.c (main_1):
- Call the new vars_of_console_gtk function.
+ * emacs.c (main_1):
+ Call the new vars_of_console_gtk function.
* console-gtk.c (vars_of_console_gtk): New.
* console-gtk.c (gtk_perhaps_init_unseen_key_defaults):
Correct the initialisation of the hash table, on the model of the
@@ -157,7 +171,7 @@ 2008-01-02 Aidan Kehoe <kehoea@parhasa
* doc.c (Fbuilt_in_symbol_file):
Don't check is fun zero in the condition, check that it's not
- nil. Fixes the union build; thank you Stephen.
+ nil. Fixes the union build; thank you Stephen.
2008-01-02 Mike Sperber <mike(a)xemacs.org>
@@ -176,31 +190,31 @@ 2007-12-30 Aidan Kehoe <kehoea@parhasa
2007-12-24 Aidan Kehoe <kehoea(a)parhasard.net>
- * event-xlike-inc.c (x_keysym_to_character):
+ * event-xlike-inc.c (x_keysym_to_character):
* event-xlike-inc.c (gtk_keysym_to_character):
Unify the typed character if possible, following the current value
- for the unicode precedence list.
+ for the unicode precedence list.
2007-12-24 Aidan Kehoe <kehoea(a)parhasard.net>
- * symbols.c (Fintern_soft):
+ * symbols.c (Fintern_soft):
Provide a new optional third argument, DEFAULT, for those who want
to check if "nil" is a symbol or not. (More realistically, general
code that may get handed "nil" should probably use this argument.)
2007-12-23 Aidan Kehoe <kehoea(a)parhasard.net>
- * objects-tty.c (tty_find_charset_font):
+ * objects-tty.c (tty_find_charset_font):
* objects-msw.c (mswindows_font_spec_matches_charset_stage_2):
* objects-msw.c (mswindows_font_spec_matches_charset_stage_1):
- * objects-xlike-inc.c (x_font_spec_matches_charset):
+ * objects-xlike-inc.c (x_font_spec_matches_charset):
* objects-xlike-inc.c (gtk_font_spec_matches_charset):
If the charset is not specified when calling the
font_spec_matches_charset device method, its value is Qnil, not
Qunbound. See
http://mid.gmane.org/E1EfbmW-00029r-5G@iwi191.iwi.uni-sb.de and
Ben Wing's patch of
-
http://mid.gmane.org/439FA06B.3090007@xemacs.org.
+
http://mid.gmane.org/439FA06B.3090007@xemacs.org.
2007-12-22 Aidan Kehoe <kehoea(a)parhasard.net>
@@ -212,7 +226,7 @@ 2007-12-22 Aidan Kehoe <kehoea@parhasa
that's a great idea.
* database.c (print_database):
Give the coding system used for text conversion when printing a
- database object.
+ database object.
2007-12-20 Jerry James <james(a)xemacs.org>
@@ -228,11 +242,11 @@ 2007-12-18 Aidan Kehoe <kehoea@parhasa
* symbols.c (Fspecial_form_p):
Following commentary from Jerry James, don't error if not passed a
- subr.
+ subr.
Flesh out the docstring; give details of what a subr is, what a
special form is, and why one should probably not write special
- forms oneself.
+ forms oneself.
2007-12-18 Aidan Kehoe <kehoea(a)parhasard.net>
@@ -246,9 +260,9 @@ 2007-12-17 Aidan Kehoe <kehoea@parhasa
Add support for formatted printing of both longs and bignums as
base 2.
* editfns.c (Fformat):
- Document the new %b escape for #'format.
+ Document the new %b escape for #'format.
* lisp.h:
- Make ulong_to_bit_string available beside long_to_string.
+ Make ulong_to_bit_string available beside long_to_string.
* lread.c:
Fix a bug where the integer base was being ignored in certain
contexts; thank you Sebastian Freundt. This is necessary for
@@ -256,18 +270,18 @@ 2007-12-17 Aidan Kehoe <kehoea@parhasa
#'bit-vector-to-integer, just added to subr.el
* print.c (ulong_to_bit_string): New.
Analagous to long_to_string, but used all the time when %b is
- encountered, since we can't pass that to sprintf.
+ encountered, since we can't pass that to sprintf.
2007-12-12 Aidan Kehoe <kehoea(a)parhasard.net>
* config.h.in:
- Make the results of the checks for
+ Make the results of the checks for
FcConfigGetRescanInterval, FcConfigSetRescanInterval
available.
* font-mgr.h:
If FcConfigSetRescanInterval and FcConfigGetRescanInterval are not
available as functions, #define them to map to their old
- misspelled names.
+ misspelled names.
* font-mgr.c (Ffc_config_get_rescan_interval):
* font-mgr.c (Ffc_config_set_rescan_interval):
Use the correct spelling in
@@ -275,7 +289,7 @@ 2007-12-12 Aidan Kehoe <kehoea@parhasa
2007-12-11 Aidan Kehoe <kehoea(a)parhasard.net>
- * glyphs-eimage.c:
+ * glyphs-eimage.c:
Merge Ron Isaacson's patch of
3ggprxj7ifh.wl_Ron.Isaacson(a)morganstanley.com , originally from
Gennady Khokhorin. Prevents library incompatibilities on Win32.
@@ -314,7 +328,7 @@ 2007-12-04 Aidan Kehoe <kehoea@parhasa
coding systems) and make_coding_system_1 (which has to).
* file-coding.c (Ffind_coding_system):
Move the implementation to find_coding_system; call that function
- with a do_autoloads argument of 1.
+ with a do_autoloads argument of 1.
* file-coding.c (Fautoload_coding_system):
New.
* file-coding.c (add_coding_system_to_list_mapper):
@@ -331,21 +345,21 @@ 2007-12-04 Aidan Kehoe <kehoea@parhasa
system as its argument.
This is also tied in with the POSIX locale infrastructure by means
- of posix-charset-to-coding-system-hash.
+ of posix-charset-to-coding-system-hash.
2007-11-29 Aidan Kehoe <kehoea(a)parhasard.net>
* mule-ccl.c (ccl_driver):
- Take out a static variable I was using for debugging.
+ Take out a static variable I was using for debugging.
2007-11-26 Aidan Kehoe <kehoea(a)parhasard.net>
- * doprnt.c:
+ * doprnt.c:
Default to a buffer size of 350 for the sprintf call, but increase
it if the precision and minwidth indicate that it should be
bigger. Issue reported by Hans de Graaff; bug originally fixed by
Sebastian Freundt in SXEmacs following the change I merged on
- 2006-11-28. Forks have their disadvantages.
+ 2006-11-28. Forks have their disadvantages.
2007-11-11 Mats Lidell <matsl(a)xemacs.org>
@@ -367,18 +381,18 @@ 2007-11-14 Aidan Kehoe <kehoea@parhasa
* lread.c (read_unicode_escape):
Correct the range check for Unicode characters specified with
- source-level escapes.
+ source-level escapes.
* unicode.c:
* unicode.c (unicode_to_ichar):
* unicode.c (coding_system_type_create_unicode):
Correct the dump behaviour for just-in-time Unicode code
points. Update the docstring for #'unicode-to-char to indicate
- that code points will run out above around 400,000 in a session.
+ that code points will run out above around 400,000 in a session.
2007-11-14 Aidan Kehoe <kehoea(a)parhasard.net>
* editfns.c (vars_of_editfns):
- Correct the docstring of user-full-name.
+ Correct the docstring of user-full-name.
* fileio.c:
* fileio.c (Fmake_temp_name):
Document that make-temp-file is available and the best approach to
@@ -387,10 +401,10 @@ 2007-11-14 Aidan Kehoe <kehoea@parhasa
Take a new arg, MUSTBENEW, to error if the file to be written
already exists.
* fileio.c (auto_save_1):
- Update a call to Fwrite_region_internal to pass the new argument.
+ Update a call to Fwrite_region_internal to pass the new argument.
* fileio.c (syms_of_fileio):
Provide 'excl as a symbol, for the calls to
- write-region-internal.
+ write-region-internal.
2007-11-05 Didier Verna <didier(a)xemacs.org>
diff -r bfb8a26de3cbbf131d3b8ec8d30862aef96de7fc -r
515b91f904c1344a690b4ade3989a9cb69348894 src/glyphs.c
--- a/src/glyphs.c Sat Feb 23 14:32:19 2008 +0100
+++ b/src/glyphs.c Tue Feb 26 18:02:34 2008 +0100
@@ -3259,7 +3259,7 @@ static Lisp_Object
static Lisp_Object
image_instantiate (Lisp_Object specifier, Lisp_Object UNUSED (matchspec),
Lisp_Object domain, Lisp_Object instantiator,
- Lisp_Object depth)
+ Lisp_Object depth, int no_fallback)
{
Lisp_Object glyph = IMAGE_SPECIFIER_ATTACHEE (XIMAGE_SPECIFIER (specifier));
int dest_mask = XIMAGE_SPECIFIER_ALLOWED (specifier);
@@ -3298,7 +3298,7 @@ image_instantiate (Lisp_Object specifier
assert (XVECTOR_LENGTH (instantiator) == 3);
return (FACE_PROPERTY_INSTANCE
(Fget_face (XVECTOR_DATA (instantiator)[2]),
- Qbackground_pixmap, domain, 1, depth));
+ Qbackground_pixmap, domain, no_fallback, depth));
}
else
{
diff -r bfb8a26de3cbbf131d3b8ec8d30862aef96de7fc -r
515b91f904c1344a690b4ade3989a9cb69348894 src/objects.c
--- a/src/objects.c Sat Feb 23 14:32:19 2008 +0100
+++ b/src/objects.c Tue Feb 26 18:02:34 2008 +0100
@@ -103,7 +103,7 @@ print_color_instance (Lisp_Object obj, L
Lisp_Color_Instance *c = XCOLOR_INSTANCE (obj);
if (print_readably)
printing_unreadable_object ("#<color-instance 0x%x>",
- c->header.uid);
+ c->header.uid);
write_fmt_string_lisp (printcharfun, "#<color-instance %s", 1,
c->name);
write_fmt_string_lisp (printcharfun, " on %s", 1, c->device);
if (!NILP (c->device)) /* Vthe_null_color_instance */
@@ -153,7 +153,7 @@ DEFINE_LRECORD_IMPLEMENTATION ("color-in
0, /*dumpable-flag*/
mark_color_instance, print_color_instance,
finalize_color_instance, color_instance_equal,
- color_instance_hash,
+ color_instance_hash,
color_instance_description,
Lisp_Color_Instance);
@@ -295,7 +295,7 @@ static const struct memory_description f
{ XD_LISP_OBJECT, offsetof (Lisp_Font_Instance, truename)},
{ XD_LISP_OBJECT, offsetof (Lisp_Font_Instance, device)},
{ XD_LISP_OBJECT, offsetof (Lisp_Font_Instance, charset)},
- { XD_UNION, offsetof (Lisp_Font_Instance, data),
+ { XD_UNION, offsetof (Lisp_Font_Instance, data),
XD_INDIRECT (0, 0), { &font_instance_data_description } },
{ XD_END }
};
@@ -596,7 +596,7 @@ static Lisp_Object
static Lisp_Object
color_instantiate (Lisp_Object specifier, Lisp_Object UNUSED (matchspec),
Lisp_Object domain, Lisp_Object instantiator,
- Lisp_Object depth)
+ Lisp_Object depth, int no_fallback)
{
/* When called, we're inside of call_with_suspended_errors(),
so we can freely error. */
@@ -606,10 +606,10 @@ color_instantiate (Lisp_Object specifier
if (COLOR_INSTANCEP (instantiator))
{
/* If we are on the same device then we're done. Otherwise change
- the instantiator to the name used to generate the pixel and let the
- STRINGP case deal with it. */
+ the instantiator to the name used to generate the pixel and let the
+ STRINGP case deal with it. */
if (NILP (device) /* Vthe_null_color_instance */
- || EQ (device, XCOLOR_INSTANCE (instantiator)->device))
+ || EQ (device, XCOLOR_INSTANCE (instantiator)->device))
return instantiator;
else
instantiator = Fcolor_instance_name (instantiator);
@@ -647,13 +647,15 @@ color_instantiate (Lisp_Object specifier
instantiator);
return (FACE_PROPERTY_INSTANCE_1
(Fget_face (XVECTOR_DATA (instantiator)[0]),
- COLOR_SPECIFIER_FACE_PROPERTY (XCOLOR_SPECIFIER (specifier)),
- domain, ERROR_ME, 0, depth));
+ COLOR_SPECIFIER_FACE_PROPERTY
+ (XCOLOR_SPECIFIER (specifier)),
+ domain, ERROR_ME, no_fallback, depth));
case 2:
return (FACE_PROPERTY_INSTANCE_1
(Fget_face (XVECTOR_DATA (instantiator)[0]),
- XVECTOR_DATA (instantiator)[1], domain, ERROR_ME, 0, depth));
+ XVECTOR_DATA (instantiator)[1], domain, ERROR_ME,
+ no_fallback, depth));
default:
ABORT ();
@@ -830,11 +832,11 @@ invalidate_charset_font_caches (Lisp_Obj
hash_table = Fgethash (charset, d->charset_font_cache_stage_1,
Qunbound);
if (!UNBOUNDP (hash_table))
- Fclrhash (hash_table);
+ Fclrhash (hash_table);
hash_table = Fgethash (charset, d->charset_font_cache_stage_2,
Qunbound);
if (!UNBOUNDP (hash_table))
- Fclrhash (hash_table);
+ Fclrhash (hash_table);
}
}
@@ -845,7 +847,7 @@ font_instantiate (Lisp_Object UNUSED (sp
font_instantiate (Lisp_Object UNUSED (specifier),
Lisp_Object USED_IF_MULE (matchspec),
Lisp_Object domain, Lisp_Object instantiator,
- Lisp_Object depth)
+ Lisp_Object depth, int no_fallback)
{
/* When called, we're inside of call_with_suspended_errors(),
so we can freely error. */
@@ -877,7 +879,7 @@ font_instantiate (Lisp_Object UNUSED (sp
if (FONT_INSTANCEP (instantiator))
{
if (NILP (device)
- || EQ (device, XFONT_INSTANCE (instantiator)->device))
+ || EQ (device, XFONT_INSTANCE (instantiator)->device))
{
#ifdef MULE
if (font_spec_matches_charset (d, charset, 0,
@@ -895,7 +897,7 @@ font_instantiate (Lisp_Object UNUSED (sp
#ifdef MULE
/* #### rename these caches. */
Lisp_Object cache = stage ? d->charset_font_cache_stage_2 :
- d->charset_font_cache_stage_1;
+ d->charset_font_cache_stage_1;
#else
Lisp_Object cache = d->font_instance_cache;
#endif
@@ -926,9 +928,9 @@ font_instantiate (Lisp_Object UNUSED (sp
{
/* make sure we cache the failures, too. */
matching_font =
- DEVMETH_OR_GIVEN (d, find_charset_font,
- (device, instantiator, charset, stage),
- instantiator);
+ DEVMETH_OR_GIVEN (d, find_charset_font,
+ (device, instantiator, charset, stage),
+ instantiator);
Fputhash (instantiator, matching_font, hash_table);
}
if (NILP (matching_font))
@@ -956,13 +958,13 @@ font_instantiate (Lisp_Object UNUSED (sp
match_inst = face_property_matching_instance
(Fget_face (XVECTOR_DATA (instantiator)[0]), Qfont,
- charset, domain, ERROR_ME, 0, depth, initial);
-
- if (UNBOUNDP(match_inst))
+ charset, domain, ERROR_ME, no_fallback, depth, initial);
+
+ if (UNBOUNDP(match_inst))
{
match_inst = face_property_matching_instance
(Fget_face (XVECTOR_DATA (instantiator)[0]), Qfont,
- charset, domain, ERROR_ME, 0, depth, final);
+ charset, domain, ERROR_ME, no_fallback, depth, final);
}
return match_inst;
@@ -1067,7 +1069,7 @@ face_boolean_instantiate (Lisp_Object sp
face_boolean_instantiate (Lisp_Object specifier,
Lisp_Object UNUSED (matchspec),
Lisp_Object domain, Lisp_Object instantiator,
- Lisp_Object depth)
+ Lisp_Object depth, int no_fallback)
{
/* When called, we're inside of call_with_suspended_errors(),
so we can freely error. */
@@ -1094,7 +1096,7 @@ face_boolean_instantiate (Lisp_Object sp
retval = (FACE_PROPERTY_INSTANCE_1
(Fget_face (XVECTOR_DATA (instantiator)[0]),
- prop, domain, ERROR_ME, 0, depth));
+ prop, domain, ERROR_ME, no_fallback, depth));
if (instantiator_len == 3 && !NILP (XVECTOR_DATA (instantiator)[2]))
retval = NILP (retval) ? Qt : Qnil;
diff -r bfb8a26de3cbbf131d3b8ec8d30862aef96de7fc -r
515b91f904c1344a690b4ade3989a9cb69348894 src/specifier.c
--- a/src/specifier.c Sat Feb 23 14:32:19 2008 +0100
+++ b/src/specifier.c Tue Feb 26 18:02:34 2008 +0100
@@ -247,7 +247,7 @@ prune_specifiers (void)
{
Lisp_Specifier* sp = XSPECIFIER (rest);
/* A bit of assertion that we're removing both parts of the
- magic one altogether */
+ magic one altogether */
assert (!MAGIC_SPECIFIER_P(sp)
|| (BODILY_SPECIFIER_P(sp) && marked_p (sp->fallback))
|| (GHOST_SPECIFIER_P(sp) && marked_p (sp->magic_parent)));
@@ -386,10 +386,10 @@ static const struct memory_description s
};
#ifdef NEW_GC
-DEFINE_LRECORD_IMPLEMENTATION ("specifier-caching",
+DEFINE_LRECORD_IMPLEMENTATION ("specifier-caching",
specifier_caching,
1, /*dumpable-flag*/
- 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0,
specifier_caching_description_1,
struct specifier_caching);
#else /* not NEW_GC */
@@ -695,7 +695,7 @@ instantiated in.
? Qt : Qnil;
}
-DEFUN ("valid-specifier-locale-type-p", Fvalid_specifier_locale_type_p, 1,
+DEFUN ("valid-specifier-locale-type-p", Fvalid_specifier_locale_type_p, 1,
1, 0, /*
Given a specifier LOCALE-TYPE, return non-nil if it is valid.
Valid locale types are `global', `device', `frame', `window', and
`buffer'.
@@ -983,8 +983,8 @@ device_matches_specifier_tag_set_p (Lisp
static int
charset_matches_specifier_tag_set_p (Lisp_Object charset,
- Lisp_Object tag_set,
- enum font_specifier_matchspec_stages
+ Lisp_Object tag_set,
+ enum font_specifier_matchspec_stages
stage)
{
Lisp_Object rest;
@@ -998,20 +998,20 @@ charset_matches_specifier_tag_set_p (Lis
Lisp_Object assoc;
/* In the event that, during the creation of a charset, no specifier
- tags exist for which CHARSET-PREDICATE has been specified, then
- that charset's entry in Vcharset_tag_lists will be nil, and this
- charset shouldn't match. */
-
- if (NILP (XVECTOR_DATA(Vcharset_tag_lists)[XCHARSET_LEADING_BYTE(charset)
- - MIN_LEADING_BYTE]))
- {
- return 0;
- }
+ tags exist for which CHARSET-PREDICATE has been specified, then
+ that charset's entry in Vcharset_tag_lists will be nil, and this
+ charset shouldn't match. */
+
+ if (NILP (XVECTOR_DATA(Vcharset_tag_lists)[XCHARSET_LEADING_BYTE(charset)
+ - MIN_LEADING_BYTE]))
+ {
+ return 0;
+ }
/* Now, find out what the pre-calculated value is. */
assoc = assq_no_quit(tag,
XVECTOR_DATA(Vcharset_tag_lists)
- [XCHARSET_LEADING_BYTE(charset)
+ [XCHARSET_LEADING_BYTE(charset)
- MIN_LEADING_BYTE]);
if (!(NILP(assoc)) && !(NILP(XCDR(assoc))))
@@ -1060,18 +1060,18 @@ specifies which devices match it.)
}
Lisp_Object
-define_specifier_tag(Lisp_Object tag, Lisp_Object device_predicate,
+define_specifier_tag(Lisp_Object tag, Lisp_Object device_predicate,
Lisp_Object charset_predicate)
{
- Lisp_Object assoc = assq_no_quit (tag, Vuser_defined_tags),
+ Lisp_Object assoc = assq_no_quit (tag, Vuser_defined_tags),
concons, devcons, charpres = Qnil;
int recompute_devices = 0, recompute_charsets = 0, i, max_args = -1;
if (NILP (assoc))
{
recompute_devices = recompute_charsets = 1;
- Vuser_defined_tags = Fcons (list3 (tag, device_predicate,
- charset_predicate),
+ Vuser_defined_tags = Fcons (list3 (tag, device_predicate,
+ charset_predicate),
Vuser_defined_tags);
DEVICE_LOOP_NO_BREAK (devcons, concons)
{
@@ -1105,7 +1105,7 @@ define_specifier_tag(Lisp_Object tag, Li
invalid_argument
("Charset predicate must be able to take an argument", tag);
}
-
+
/* If there exists a charset_predicate for the tag currently (even if
the new charset_predicate is nil), or if we're adding one, we need
to recompute. This contrasts with the device predicates, where we
@@ -1139,7 +1139,7 @@ define_specifier_tag(Lisp_Object tag, Li
}
}
- if (recompute_charsets)
+ if (recompute_charsets)
{
if (NILP(charset_predicate))
{
@@ -1158,8 +1158,8 @@ define_specifier_tag(Lisp_Object tag, Li
if (!NILP(charset_predicate))
{
- struct gcpro gcpro1;
- charpres = make_vector(impossible, Qnil);
+ struct gcpro gcpro1;
+ charpres = make_vector(impossible, Qnil);
GCPRO1 (charpres);
/* If you want to extend the number of stages available, here
@@ -1212,8 +1212,8 @@ define_specifier_tag(Lisp_Object tag, Li
}
else
{
- XVECTOR_DATA(Vcharset_tag_lists)[i]
- = Fcons(Fcons(tag, charpres),
+ XVECTOR_DATA(Vcharset_tag_lists)[i]
+ = Fcons(Fcons(tag, charpres),
XVECTOR_DATA (Vcharset_tag_lists)[i]);
}
}
@@ -1310,15 +1310,15 @@ setup_device_initial_specifier_tags (str
assert(3 == list_len);
device_predicate = XCADR(XCAR (rest));
-
+
if (NILP (device_predicate))
{
- XCDR (XCAR (rest2)) = Qt;
+ XCDR (XCAR (rest2)) = Qt;
}
else
{
- device_predicate = !NILP (call_critical_lisp_code
- (d, device_predicate, device))
+ device_predicate = !NILP (call_critical_lisp_code
+ (d, device_predicate, device))
? Qt : Qnil;
XCDR (XCAR (rest2)) = device_predicate;
}
@@ -1329,7 +1329,7 @@ setup_charset_initial_specifier_tags (Li
setup_charset_initial_specifier_tags (Lisp_Object charset)
{
Lisp_Object rest, charset_predicate, tag, new_value;
- Lisp_Object charset_tag_list = Qnil;
+ Lisp_Object charset_tag_list = Qnil;
LIST_LOOP (rest, Vuser_defined_tags)
{
@@ -1362,7 +1362,7 @@ setup_charset_initial_specifier_tags (Li
\
} while (0)
- SETUP_CHARSET_TAGS_FROB (initial);
+ SETUP_CHARSET_TAGS_FROB (initial);
SETUP_CHARSET_TAGS_FROB (final);
/* More later? */
@@ -2325,10 +2325,10 @@ where
where
LOCALE := a window, a buffer, a frame, a device, or `global'
TAG-SET := an unordered list of zero or more TAGS, each of which
- is a symbol
+ is a symbol
TAG := a device class (see `valid-device-class-p'), a device type
- (see `valid-console-type-p'), or a tag defined with
- `define-specifier-tag'
+ (see `valid-console-type-p'), or a tag defined with
+ `define-specifier-tag'
INSTANTIATOR := format determined by the type of specifier
The pair (TAG-SET . INSTANTIATOR) is called an `inst-pair'.
@@ -2804,7 +2804,8 @@ specifier_instance_from_inst_list (Lisp_
Lisp_Object inst_list,
Error_Behavior errb, int no_quit,
Lisp_Object depth,
- Lisp_Object *instantiator)
+ Lisp_Object *instantiator,
+ int no_fallback)
{
/* This function can GC */
Lisp_Specifier *sp;
@@ -2866,7 +2867,7 @@ specifier_instance_from_inst_list (Lisp_
if (!device_matches_specifier_tag_set_p (device, tag_set))
{
- continue;
+ continue;
}
val = XCDR (tagged_inst);
@@ -2883,7 +2884,7 @@ specifier_instance_from_inst_list (Lisp_
val = call_with_suspended_errors
((lisp_fn_t) RAW_SPECMETH (sp, instantiate),
Qunbound, Qspecifier, errb, 5, specifier,
- matchspec, domain, val, depth);
+ matchspec, domain, val, depth, no_fallback);
if (!UNBOUNDP (val))
{
@@ -2922,7 +2923,7 @@ specifier_instance_from_inst_list (Lisp_
if (!device_matches_specifier_tag_set_p (device, tag_set))
{
- continue;
+ continue;
}
val = XCDR (tagged_inst);
@@ -2932,7 +2933,7 @@ specifier_instance_from_inst_list (Lisp_
val = call_with_suspended_errors
((lisp_fn_t) RAW_SPECMETH (sp, instantiate),
Qunbound, Qspecifier, errb, 5, specifier,
- matchspec, domain, val, depth);
+ matchspec, domain, val, depth, no_fallback);
if (!UNBOUNDP (val))
{
@@ -2963,7 +2964,7 @@ specifier_instance_from_inst_list (Lisp_
specifier_instance_from_inst_list (specifier, matchspec, \
domain, *CIE_inst_list, \
errb, no_quit, depth, \
- instantiator); \
+ instantiator, no_fallback); \
if (!UNBOUNDP (CIE_val)) \
return CIE_val; \
} \
@@ -3075,7 +3076,8 @@ specifier_instance_1 (Lisp_Object specif
assert (CONSP (sp->fallback));
return specifier_instance_from_inst_list (specifier, matchspec, domain,
sp->fallback, errb, no_quit,
- depth, instantiator);
+ depth, instantiator,
+ no_fallback);
}
#undef CHECK_INSTANCE_ENTRY
@@ -3245,7 +3247,7 @@ dependent on the particular type of spec
display table is not there. (Chartable specifiers are not yet
implemented.)
--- For font specifiers, MATCHSPEC should be a cons (CHARSET . STAGE).
+-- For font specifiers, MATCHSPEC should be a cons (CHARSET . STAGE).
The defined stages are currently `initial' and `final'. On X11, 'initial
is used when the font matching process is looking for fonts that match
the desired registries of the charset--see the `charset-registries'
@@ -3308,7 +3310,7 @@ specifier_matching_foo_from_inst_list (L
if (!NILP (built_up_list))
val = specifier_instance_from_inst_list (specifier, matchspec, domain,
built_up_list, ERROR_ME,
- 0, Qzero, &instantiator);
+ 0, Qzero, &instantiator, 0);
UNGCPRO;
return UNBOUNDP (val) ? default_ : want_instantiator ? instantiator : val;
@@ -3329,7 +3331,7 @@ you should not use this function; use `s
0);
}
-DEFUN ("specifier-instantiator-from-inst-list",
+DEFUN ("specifier-instantiator-from-inst-list",
Fspecifier_instantiator_from_inst_list, 3, 4, 0, /*
Attempt to convert an inst-list into an instance; return instantiator.
This is identical to `specifier-instance-from-inst-list' but returns
@@ -3923,5 +3925,5 @@ vars_of_specifier (void)
staticpro (&Vunlock_ghost_specifiers);
Vcharset_tag_lists = make_vector(NUM_LEADING_BYTES, Qnil);
- staticpro (&Vcharset_tag_lists);
-}
+ staticpro (&Vcharset_tag_lists);
+}
_______________________________________________
XEmacs-Patches mailing list
XEmacs-Patches(a)xemacs.org
http://calypso.tux.org/cgi-bin/mailman/listinfo/xemacs-patches