[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
pkg b5c199b118 08/76: Check for keywords differently
From: |
Gerd Moellmann |
Subject: |
pkg b5c199b118 08/76: Check for keywords differently |
Date: |
Fri, 21 Oct 2022 00:16:08 -0400 (EDT) |
branch: pkg
commit b5c199b1183944986fac493e2778cdc13e827440
Author: Gerd Möllmann <gerd@gnu.org>
Commit: Gerd Möllmann <gerd@gnu.org>
Check for keywords differently
---
src/data.c | 55 +++++++++++++++++++++++++------------------------------
src/lisp.h | 14 +++++++++-----
src/lread.c | 4 ++--
3 files changed, 36 insertions(+), 37 deletions(-)
diff --git a/src/data.c b/src/data.c
index 5fda374f1f..226440c2a5 100644
--- a/src/data.c
+++ b/src/data.c
@@ -357,11 +357,7 @@ This means that it is a symbol with a print name beginning
with `:'
interned in the initial obarray. */)
(Lisp_Object object)
{
- if (SYMBOLP (object)
- && SREF (SYMBOL_NAME (object), 0) == ':'
- && SYMBOL_INTERNED_IN_INITIAL_OBARRAY_P (object))
- return Qt;
- return Qnil;
+ return pkg_keywordp (object) ? Qt : Qnil;
}
DEFUN ("vectorp", Fvectorp, Svectorp, 1, 1, 0,
@@ -1566,28 +1562,30 @@ swap_in_symval_forwarding (struct Lisp_Symbol *symbol,
struct Lisp_Buffer_Local_
Lisp_Object
find_symbol_value (Lisp_Object symbol)
{
- struct Lisp_Symbol *sym;
-
CHECK_SYMBOL (symbol);
- sym = XSYMBOL (symbol);
+ struct Lisp_Symbol *sym = XSYMBOL (symbol);
- start:
- switch (sym->u.s.redirect)
- {
- case SYMBOL_VARALIAS: sym = indirect_variable (sym); goto start;
- case SYMBOL_PLAINVAL: return SYMBOL_VAL (sym);
- case SYMBOL_LOCALIZED:
+ for (;;)
+ switch (sym->u.s.redirect)
{
- struct Lisp_Buffer_Local_Value *blv = SYMBOL_BLV (sym);
- swap_in_symval_forwarding (sym, blv);
- return (blv->fwd.fwdptr
- ? do_symval_forwarding (blv->fwd)
- : blv_value (blv));
+ case SYMBOL_VARALIAS:
+ sym = indirect_variable (sym);
+ break;
+ case SYMBOL_PLAINVAL:
+ return SYMBOL_VAL (sym);
+ case SYMBOL_LOCALIZED:
+ {
+ struct Lisp_Buffer_Local_Value *blv = SYMBOL_BLV (sym);
+ swap_in_symval_forwarding (sym, blv);
+ return (blv->fwd.fwdptr
+ ? do_symval_forwarding (blv->fwd)
+ : blv_value (blv));
+ }
+ case SYMBOL_FORWARDED:
+ return do_symval_forwarding (SYMBOL_FWD (sym));
+ default:
+ emacs_abort ();
}
- case SYMBOL_FORWARDED:
- return do_symval_forwarding (SYMBOL_FWD (sym));
- default: emacs_abort ();
- }
}
DEFUN ("symbol-value", Fsymbol_value, Ssymbol_value, 1, 1, 0,
@@ -1596,13 +1594,10 @@ Note that if `lexical-binding' is in effect, this
returns the
global value outside of any lexical scope. */)
(Lisp_Object symbol)
{
- Lisp_Object val;
-
- val = find_symbol_value (symbol);
- if (!BASE_EQ (val, Qunbound))
- return val;
-
- xsignal1 (Qvoid_variable, symbol);
+ const Lisp_Object val = find_symbol_value (symbol);
+ if (EQ (val, Qunbound))
+ xsignal1 (Qvoid_variable, symbol);
+ return val;
}
DEFUN ("set", Fset, Sset, 2, 2, 0,
diff --git a/src/lisp.h b/src/lisp.h
index f8267eea15..453f11dc75 100644
--- a/src/lisp.h
+++ b/src/lisp.h
@@ -2257,8 +2257,12 @@ XPACKAGE (Lisp_Object a)
extern void init_pkg_once (void);
extern void init_pkg (void);
extern void syms_of_pkg (void);
-extern void fix_symbol_packages (void);
-extern Lisp_Object pkg_insert_new_symbol (Lisp_Object symbol, Lisp_Object
package);
+extern Lisp_Object pkg_qualified_symbol (Lisp_Object name, Lisp_Object
package, bool external);
+extern void pkg_error (const char *fmt, ...);
+extern Lisp_Object pkg_unqualified_symbol (Lisp_Object name);
+extern bool pkg_keywordp (Lisp_Object obj);
+extern Lisp_Object pkg_add_keyword (Lisp_Object sym);
+extern Lisp_Object pkg_add_symbol (Lisp_Object symbol, Lisp_Object package);
/* Return whether a value might be a valid docstring.
@@ -4571,9 +4575,6 @@ extern ptrdiff_t evxprintf (char **, ptrdiff_t *, char *,
ptrdiff_t,
/* Defined in lread.c. */
extern Lisp_Object check_obarray (Lisp_Object);
-extern Lisp_Object intern_1 (const char *, ptrdiff_t);
-extern Lisp_Object intern_c_string_1 (const char *, ptrdiff_t);
-extern Lisp_Object intern_driver (Lisp_Object, Lisp_Object, Lisp_Object);
extern void init_symbol (Lisp_Object, Lisp_Object);
extern Lisp_Object oblookup (Lisp_Object, const char *, ptrdiff_t, ptrdiff_t);
INLINE void
@@ -4596,6 +4597,9 @@ extern void init_obarray_once (void);
extern void init_lread (void);
extern void syms_of_lread (void);
extern void mark_lread (void);
+extern Lisp_Object intern_1 (const char *str, ptrdiff_t len);
+extern Lisp_Object intern_c_string_1 (const char *str, ptrdiff_t len);
+extern Lisp_Object intern_driver (Lisp_Object string, Lisp_Object obarray,
Lisp_Object index);
INLINE Lisp_Object
intern (const char *str)
diff --git a/src/lread.c b/src/lread.c
index 87226907a9..cbf175a06b 100644
--- a/src/lread.c
+++ b/src/lread.c
@@ -4742,10 +4742,10 @@ intern_sym (Lisp_Object sym, Lisp_Object obarray,
Lisp_Object index)
in lexically bound elisp signal an error, as documented. */
XSYMBOL (sym)->u.s.declared_special = true;
SET_SYMBOL_VAL (XSYMBOL (sym), sym);
- pkg_insert_new_symbol (sym, Vkeyword_package);
+ pkg_add_keyword (sym);
}
else
- pkg_insert_new_symbol (sym, Vearmuffs_package);
+ pkg_add_symbol (sym, Vearmuffs_package);
ptr = aref_addr (obarray, XFIXNUM (index));
set_symbol_next (sym, SYMBOLP (*ptr) ? XSYMBOL (*ptr) : NULL);
- branch pkg created (now a93ec52542), Gerd Moellmann, 2022/10/21
- pkg 02e1214f23 06/76: More stuff in pkg.c, Gerd Moellmann, 2022/10/21
- pkg 2821ca31ae 20/76: Use packages instead of obarrays in obarray.el, Gerd Moellmann, 2022/10/21
- pkg 7ecfc3ca69 13/76: Can now pdump, Gerd Moellmann, 2022/10/21
- pkg b3cdb8a3d3 11/76: Intern keywords differently, Gerd Moellmann, 2022/10/21
- pkg 47a2e75c1c 07/76: Read symbols differently, Gerd Moellmann, 2022/10/21
- pkg b5c199b118 08/76: Check for keywords differently,
Gerd Moellmann <=
- pkg bb6b5db2b7 24/76: Dpn't assume symbol-name of keywords starts with colon, Gerd Moellmann, 2022/10/21
- pkg c025885c33 41/76: symbol-name returning ':' for keywords, Gerd Moellmann, 2022/10/21
- pkg 8561667124 33/76: Handle packages in completion, Gerd Moellmann, 2022/10/21
- pkg df9417ac57 66/76: Remove Lisp_Symbol::external, Gerd Moellmann, 2022/10/21
- pkg 85bd8cfcdb 18/76: Mapping over symbols in a package, mapatoms, Gerd Moellmann, 2022/10/21
- pkg 62c7059adc 19/76: Initialize package system earlier, Gerd Moellmann, 2022/10/21
- pkg a19917468c 04/76: Don't fix symbols here, Gerd Moellmann, 2022/10/21
- pkg 072e89afa1 23/76: Use make-package instead of make-vector, Gerd Moellmann, 2022/10/21
- pkg f6b80ef5a5 25/76: Blabla, Gerd Moellmann, 2022/10/21
- pkg 2ed1ac6639 09/76: Fixing stuff, Gerd Moellmann, 2022/10/21