name specifier_instance) to avoid creating "external"
specification loops.
- This method must presume that both INSTANTIATOR and MATCSPEC are
+ This method must presume that both INSTANTIATOR and MATCHSPEC are
already validated by the corresponding validate_* methods, and
may abort if they are invalid.
#define DEFINE_SPECIFIER_TYPE(type) \
struct specifier_methods * type##_specifier_methods
-#define INITIALIZE_SPECIFIER_TYPE(type, obj_name, pred_sym) do { \
- type##_specifier_methods = xnew_and_zero (struct specifier_methods); \
- type##_specifier_methods->name = obj_name; \
- type##_specifier_methods->extra_description = \
- specifier_empty_extra_description; \
- defsymbol_nodump (&type##_specifier_methods->predicate_symbol, pred_sym); \
- add_entry_to_specifier_type_list (Q##type, type##_specifier_methods); \
- dumpstruct (&type##_specifier_methods, &specifier_methods_description); \
+#define INITIALIZE_SPECIFIER_TYPE(type, obj_name, pred_sym) do { \
+ type##_specifier_methods = xnew_and_zero (struct specifier_methods); \
+ type##_specifier_methods->name = obj_name; \
+ type##_specifier_methods->extra_description = \
+ specifier_empty_extra_description; \
+ defsymbol_nodump (&type##_specifier_methods->predicate_symbol, pred_sym); \
+ add_entry_to_specifier_type_list (Q##type, type##_specifier_methods); \
+ dump_add_root_struct_ptr (&type##_specifier_methods, \
+ &specifier_methods_description); \
} while (0)
#define REINITIALIZE_SPECIFIER_TYPE(type) do { \
int offset_into_struct_frame;
void (*value_changed_in_frame) (Lisp_Object specifier, struct frame *f,
Lisp_Object oldval);
+ int always_recompute;
};
/* #### get image instances out of domains! */
int struct_frame_offset,
void (*value_changed_in_frame)
(Lisp_Object specifier, struct frame *f,
- Lisp_Object oldval));
+ Lisp_Object oldval),
+ int always_recompute);
void set_specifier_fallback (Lisp_Object specifier,
Lisp_Object fallback);
void recompute_all_cached_specifiers_in_window (struct window *w);