aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorBT Templeton <[email protected]>2013-08-17 16:31:30 -0400
committerRobin Templeton <[email protected]>2015-04-19 03:43:02 -0400
commit294180317b6417c54618d4822c19bc0809c2bc7a (patch)
treeeb810a4ba208d7112539dffd7e1e785f4558e4ee /src
parent061cde1074b33e70d8d8d611a3806282f3e2c299 (diff)
plist module
Diffstat (limited to 'src')
-rw-r--r--src/alloc.c2
-rw-r--r--src/emacs.c7
-rw-r--r--src/lisp.h8
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. */