p = XSYMBOL (val);
p->self = val;
set_symbol_name (val, name);
- set_symbol_plist (val, Qnil);
+ scm_module_define (plist_module, val, Qnil);
p->redirect = SYMBOL_PLAINVAL;
SET_SYMBOL_VAL (p, Qunbound);
scm_module_define (function_module, val, Qnil);
Lisp_Object symbol_module;
Lisp_Object function_module;
+Lisp_Object plist_module;
static const char emacs_version[] = PACKAGE_VERSION;
static const char emacs_copyright[] = COPYRIGHT;
scm_from_locale_keyword ("pure"),
SCM_BOOL_T,
SCM_UNDEFINED);
+ plist_module = scm_call (scm_c_public_ref ("guile", "define-module*"),
+ scm_list_1 (scm_from_utf8_symbol ("elisp-plists")),
+ scm_from_locale_keyword ("pure"),
+ SCM_BOOL_T,
+ SCM_UNDEFINED);
+
init_alloc_once ();
init_guile ();
init_fns_once ();
INLINE Lisp_Object build_string (const char *);
extern Lisp_Object symbol_module;
extern Lisp_Object function_module;
+extern Lisp_Object plist_module;
INLINE struct Lisp_Symbol *
XSYMBOL (Lisp_Object a)
struct Lisp_Buffer_Local_Value *blv;
union Lisp_Fwd *fwd;
} val;
-
- /* The symbol's property list. */
- Lisp_Object plist;
};
/* Value is name of symbol. */
INLINE Lisp_Object
symbol_plist (Lisp_Object sym)
{
- return XSYMBOL (sym)->plist;
+ return scm_variable_ref (scm_module_lookup (plist_module, sym));
}
INLINE void
set_symbol_plist (Lisp_Object sym, Lisp_Object plist)
{
- XSYMBOL (sym)->plist = plist;
+ scm_variable_set_x (scm_module_lookup (plist_module, sym), plist);
}
/* Buffer-local (also frame-local) variable access functions. */