[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
pkg 7acb6c5ca1 68/76: Intrdduce pkg_find_symbol
From: |
Gerd Moellmann |
Subject: |
pkg 7acb6c5ca1 68/76: Intrdduce pkg_find_symbol |
Date: |
Fri, 21 Oct 2022 00:16:16 -0400 (EDT) |
branch: pkg
commit 7acb6c5ca1c629846bb413c8ab0605a045bb3752
Author: Gerd Möllmann <gerd@gnu.org>
Commit: Gerd Möllmann <gerd@gnu.org>
Intrdduce pkg_find_symbol
---
src/lisp.h | 1 +
src/pkg.c | 39 ++++++++++++++++++++-------------------
src/print.c | 12 ++++++------
3 files changed, 27 insertions(+), 25 deletions(-)
diff --git a/src/lisp.h b/src/lisp.h
index 5417881a0a..461333f01b 100644
--- a/src/lisp.h
+++ b/src/lisp.h
@@ -2280,6 +2280,7 @@ extern void pkg_break (void);
extern void pkg_define_builtin_symbols (void);
extern void pkg_map_symbols_c_fn (void (*fn) (Lisp_Object, Lisp_Object),
Lisp_Object arg);
extern Lisp_Object pkg_find_package (Lisp_Object name);
+extern Lisp_Object pkg_find_symbol (Lisp_Object name, Lisp_Object package,
Lisp_Object *status);
/* Return whether a value might be a valid docstring.
diff --git a/src/pkg.c b/src/pkg.c
index ace28ea1ae..e62d6ae323 100644
--- a/src/pkg.c
+++ b/src/pkg.c
@@ -209,7 +209,7 @@ package_or_default (Lisp_Object designator)
recursion. */
static Lisp_Object
-lookup_symbol1 (Lisp_Object name, Lisp_Object package, Lisp_Object seen,
+pkg_find_symbol1 (Lisp_Object name, Lisp_Object package, Lisp_Object seen,
Lisp_Object *status)
{
eassert (STRINGP (name));
@@ -240,7 +240,7 @@ lookup_symbol1 (Lisp_Object name, Lisp_Object package,
Lisp_Object seen,
if (NILP (Fmemq (used_package, seen)))
{
seen = Fcons (used_package, seen);
- symbol = lookup_symbol1 (name, used_package, seen, NULL);
+ symbol = pkg_find_symbol1 (name, used_package, seen, NULL);
if (!EQ (symbol, Qunbound))
return symbol;
}
@@ -250,10 +250,10 @@ lookup_symbol1 (Lisp_Object name, Lisp_Object package,
Lisp_Object seen,
return symbol;
}
-static Lisp_Object
-lookup_symbol (Lisp_Object name, Lisp_Object package, Lisp_Object *status)
+Lisp_Object
+pkg_find_symbol (Lisp_Object name, Lisp_Object package, Lisp_Object *status)
{
- return lookup_symbol1 (name, package, Qnil, status);
+ return pkg_find_symbol1 (name, package, Qnil, status);
}
/* Add a SYMBOL to package PACKAGE. Value is SYMBOL. The symbol
@@ -303,7 +303,7 @@ pkg_intern_symbol1 (const Lisp_Object name, Lisp_Object
package,
eassert (PACKAGEP (package));
/* If already accessible in package, return that. */
- Lisp_Object symbol = lookup_symbol (name, package, status);
+ Lisp_Object symbol = pkg_find_symbol (name, package, status);
if (!EQ (symbol, Qunbound))
return symbol;
@@ -376,7 +376,7 @@ pkg_lookup_non_keyword_c_string (const char *ptr, ptrdiff_t
nchars, ptrdiff_t nb
{
eassert (*ptr != ':');
const Lisp_Object name = make_string_from_bytes (ptr, nchars, nbytes);
- return lookup_symbol (name, Vearmuffs_package, NULL);
+ return pkg_find_symbol (name, Vearmuffs_package, NULL);
}
static Lisp_Object
@@ -386,7 +386,7 @@ pkg_unintern_symbol (Lisp_Object symbol, Lisp_Object
package)
package = package_or_default (package);
Lisp_Object status;
- Lisp_Object found = lookup_symbol (SYMBOL_NAME (symbol), package, &status);
+ Lisp_Object found = pkg_find_symbol (SYMBOL_NAME (symbol), package, &status);
Lisp_Object removedp = Qnil;
if (!EQ (found, Qunbound) && !EQ (status, QCinherited))
@@ -514,7 +514,7 @@ pkg_emacs_intern_soft (Lisp_Object name, Lisp_Object
package)
package = fake_me_an_obarray (package);
package = package_or_default (package);
- Lisp_Object found = lookup_symbol (name, package, NULL);
+ Lisp_Object found = pkg_find_symbol (name, package, NULL);
if (EQ (found, Qunbound))
return Qnil;
@@ -563,7 +563,8 @@ pkg_qualified_symbol (Lisp_Object name, Lisp_Object
package, bool external)
{
/* If we want a symbol for a given package, check the
package has that symbol and its accessibily. */
- Lisp_Object found = Ffind_symbol (name, package);
+ Lisp_Object status;
+ Lisp_Object found = pkg_find_symbol (name, package, &status);
if (EQ (package, Vkeyword_package))
{
@@ -571,23 +572,22 @@ pkg_qualified_symbol (Lisp_Object name, Lisp_Object
package, bool external)
PKG-FIXME: there might already be a symbol named
'test' in the obarray, and we'd like to use that
name for ':test'. That's a problem. */
- if (NILP (found))
+ if (EQ (found, Qunbound))
return pkg_intern_symbol (name, package, NULL);
- return XCAR (found);
+ return found;
}
- if (NILP (found))
+ if (EQ (found, Qunbound))
pkg_error ("Symbol '%s' is not accessible in package '%s'",
SDATA (name), SDATA (XPACKAGE (package)->name));
/* Check if the symbol is accesible in the package as external
symbol. PKG-FIXME: Check what to do for inherited symbols. */
- const Lisp_Object status = XCAR (XCDR (found));
if (external && EQ (status, QCinternal))
pkg_error ("Symbol '%s' is internal in package '%s'",
SDATA (name), SDATA (XPACKAGE (package)->name));
- return XCAR (found);
+ return found;
}
/* Return symbol with name NAME when accessed without qualification in
@@ -603,9 +603,10 @@ pkg_unqualified_symbol (Lisp_Object name)
/* If we want a symbol for a given package, check the
package has that symboland its accessibily. */
- const Lisp_Object found = Ffind_symbol (name, package);
- if (!NILP (found))
- return XCAR (found);
+ Lisp_Object status;
+ const Lisp_Object found = pkg_find_symbol (name, package, &status);
+ if (!EQ (found, Qunbound))
+ return found;
return pkg_intern_symbol (name, package, NULL);
}
@@ -657,7 +658,7 @@ symbol that was found, and STATUS is one of the following:
CHECK_STRING (name);
package = package_or_default (package);
Lisp_Object status;
- const Lisp_Object symbol = lookup_symbol (name, package, &status);
+ const Lisp_Object symbol = pkg_find_symbol (name, package, &status);
if (EQ (symbol, Qunbound))
return Qnil;
return list2 (symbol, status);
diff --git a/src/print.c b/src/print.c
index fed549099a..e76bd44a82 100644
--- a/src/print.c
+++ b/src/print.c
@@ -2235,15 +2235,15 @@ print_symbol (Lisp_Object symbol, Lisp_Object
printcharfun,
else
{
/* If the symbol is accessible, it need not be qualified. */
- const Lisp_Object found = Ffind_symbol (name, Vearmuffs_package);
- const bool accessible = !NILP (found);
- if (!accessible || !EQ (XCAR (found), symbol))
+ Lisp_Object status;
+ const Lisp_Object found = pkg_find_symbol (name, Vearmuffs_package,
&status);
+ const bool accessible = !EQ (found, Qunbound);
+ if (!accessible || !EQ (found, symbol))
{
print_symbol_name (XPACKAGE (package)->name,
printcharfun, escape);
- const Lisp_Object found = Ffind_symbol (name, package);
- eassert (!NILP (found));
- const Lisp_Object status = XCAR (XCDR (found));
+ const Lisp_Object found = pkg_find_symbol (name, package, &status);
+ eassert (!EQ (found, Qunbound));
if (EQ (status, QCexternal))
print_c_string (":", printcharfun);
else
- pkg 2518bc249c 39/76: Fix printing symbols, (continued)
- pkg 2518bc249c 39/76: Fix printing symbols, Gerd Moellmann, 2022/10/21
- pkg bbb2609103 40/76: Recognize vectors as obarrays, Gerd Moellmann, 2022/10/21
- pkg 76d59f8a03 60/76: Fix missing ')', Gerd Moellmann, 2022/10/21
- pkg 73b617eaa9 64/76: Change package symbol table layout, Gerd Moellmann, 2022/10/21
- pkg 0976c09890 37/76: Fix printing of confusing symbol names, Gerd Moellmann, 2022/10/21
- pkg aaf12c12b6 32/76: Some scribbling, Gerd Moellmann, 2022/10/21
- pkg 963de7cafe 35/76: More scribbling, Gerd Moellmann, 2022/10/21
- pkg 90c070fec6 59/76: Restore obarray.el to return vectors, Gerd Moellmann, 2022/10/21
- pkg 74da61ff09 74/76: Remove a call to pkg_break, Gerd Moellmann, 2022/10/21
- pkg cc6095482b 73/76: Add pkg_set_status and Lisp defun for it, Gerd Moellmann, 2022/10/21
- pkg 7acb6c5ca1 68/76: Intrdduce pkg_find_symbol,
Gerd Moellmann <=
- pkg 55cef2c78c 69/76: Some cleanup in pkg.c and lisp.h, Gerd Moellmann, 2022/10/21
- pkg df1e4c1e51 34/76: Allow intern with ":xyz" again, Gerd Moellmann, 2022/10/21
- pkg 513f5a0b90 21/76: Remove obarrays, Gerd Moellmann, 2022/10/21
- pkg 051a17f540 63/76: Fix some warnings, Gerd Moellmann, 2022/10/21
- pkg 0f4b419fa3 65/76: Remove unused function prototype from lisp.h, Gerd Moellmann, 2022/10/21
- pkg adf7b760f2 12/76: More symbol reading, Gerd Moellmann, 2022/10/21
- pkg e2b79c2c5a 14/76: Revert the escaping of symbol names in lisp files, Gerd Moellmann, 2022/10/21
- pkg 4d4690f8cf 75/76: Handle keywords in image specs, Gerd Moellmann, 2022/10/21
- pkg f45b266d0e 03/76: Don't use symbols that look package-qualified, Gerd Moellmann, 2022/10/21
- pkg 06cfa629a5 05/76: Print symbols differently, Gerd Moellmann, 2022/10/21