diff options
author | BT Templeton <[email protected]> | 2013-08-17 16:31:30 -0400 |
---|---|---|
committer | Robin Templeton <[email protected]> | 2015-04-19 03:43:02 -0400 |
commit | 294180317b6417c54618d4822c19bc0809c2bc7a (patch) | |
tree | eb810a4ba208d7112539dffd7e1e785f4558e4ee /src | |
parent | 061cde1074b33e70d8d8d611a3806282f3e2c299 (diff) |
plist module
Diffstat (limited to 'src')
-rw-r--r-- | src/alloc.c | 2 | ||||
-rw-r--r-- | src/emacs.c | 7 | ||||
-rw-r--r-- | src/lisp.h | 8 |
3 files changed, 11 insertions, 6 deletions
diff --git a/src/alloc.c b/src/alloc.c index be38f3edf7..38a548266e 100644 --- a/src/alloc.c +++ b/src/alloc.c @@ -1180,7 +1180,7 @@ initialize_symbol (Lisp_Object val, Lisp_Object name) 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); diff --git a/src/emacs.c b/src/emacs.c index f013bbfe66..d4611f85ea 100644 --- a/src/emacs.c +++ b/src/emacs.c @@ -109,6 +109,7 @@ extern void moncontrol (int mode); 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; @@ -1177,6 +1178,12 @@ Using an Emacs configured with --with-x-toolkit=lucid does not have this problem 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 (); diff --git a/src/lisp.h b/src/lisp.h index c4c53443b5..ca44ab9810 100644 --- a/src/lisp.h +++ b/src/lisp.h @@ -648,6 +648,7 @@ extern void initialize_symbol (Lisp_Object, Lisp_Object); 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) @@ -1338,9 +1339,6 @@ struct Lisp_Symbol struct Lisp_Buffer_Local_Value *blv; union Lisp_Fwd *fwd; } val; - - /* The symbol's property list. */ - Lisp_Object plist; }; /* Value is name of symbol. */ @@ -2766,13 +2764,13 @@ set_symbol_function (Lisp_Object sym, Lisp_Object function) 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. */ |