]> git.eshelyaron.com Git - emacs.git/commitdiff
intern-soft with ':' trick
authorGerd Möllmann <gerd@gnu.org>
Sun, 16 Oct 2022 12:10:13 +0000 (14:10 +0200)
committerGerd Möllmann <gerd@gnu.org>
Sun, 16 Oct 2022 12:10:13 +0000 (14:10 +0200)
* src/lread.c (Fintern): Move everything to pkg.c
* src/pkg.c (pkg_emacs_intern): Handle ':' in symbol names.
(pkg_emacs_intern_soft): Ditto.

src/lread.c
src/pkg.c

index 3dad2650f285623bdb444d21825efc407b436adc..f322dc43e7b896af60415ac49956940cdbf6a5d0 100644 (file)
@@ -4785,13 +4785,6 @@ A second optional argument specifies the obarray to use;
 it defaults to the value of `obarray'.  */)
   (Lisp_Object string, Lisp_Object package)
 {
-  if (SREF (string, 0) == ':' && NILP (package))
-    {
-      /* PKG-FIXME: We are assuming that this is intended to be a
-        keyword like it was before.  */
-      string = Fsubstring (string, make_fixnum (1), Qnil);
-      package = Vkeyword_package;
-    }
   return pkg_emacs_intern (string, package);
 }
 
index 9019b698291040c18db94a7798ea9be164289780..53be9496bf6b6aa306c01795c22ceb1c4dd36ddf 100644 (file)
--- a/src/pkg.c
+++ b/src/pkg.c
@@ -642,12 +642,20 @@ pkg_emacs_intern (Lisp_Object name, Lisp_Object package)
 {
   CHECK_STRING (name);
 
+  /* PKG-FIXME: We are assuming that this is intended to be a keyword
+     like it was before.  */
+  if (SREF (name, 0) == ':' && NILP (package))
+    {
+      name = Fsubstring (name, make_fixnum (1), Qnil);
+      package = Vkeyword_package;
+    }
+
   eassert (SREF (name, 0) != ':');
 
-  /* This is presumable an obarray, and we are intending
-     to intern into the default pacakge.  */
+  /* PKG-FIXME: This is presumable an obarray, and we are intending to
+     intern into the default pacakge.  */
   if (VECTORP (package))
-    package = Vearmuffs_package;
+    package = Vemacs_package;
   package = package_or_default (package);
 
   return pkg_intern_symbol (name, package);
@@ -656,11 +664,21 @@ pkg_emacs_intern (Lisp_Object name, Lisp_Object package)
 /* Implements Emacs' old Fintern_soft function.  */
 
 Lisp_Object
-pkg_emacs_intern_soft (Lisp_Object symbol, Lisp_Object package)
+pkg_emacs_intern_soft (Lisp_Object name, Lisp_Object package)
 {
-  const Lisp_Object name = SYMBOLP (symbol) ? SYMBOL_NAME (symbol) : symbol;
+  /* intern-soft allows symbols.  */
+  if (SYMBOLP (name))
+    name = SYMBOL_NAME (name);
   CHECK_STRING (name);
 
+  /* PKG-FIXME: We are assuming that this is intended to be a keyword
+     like it was before.  */
+  if (SREF (name, 0) == ':' && NILP (package))
+    {
+      name = Fsubstring (name, make_fixnum (1), Qnil);
+      package = Vkeyword_package;
+    }
+
   package = package_or_default (package);
   Lisp_Object found = lookup_symbol (name, package);
   if (!EQ (found, Qunbound))