emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

scratch/pkg e79ff2b6e55 4/5: Local package nicknames -> package objects


From: Gerd Moellmann
Subject: scratch/pkg e79ff2b6e55 4/5: Local package nicknames -> package objects
Date: Tue, 19 Dec 2023 03:35:45 -0500 (EST)

branch: scratch/pkg
commit e79ff2b6e55a7d9836b4074262c8acc1192b1330
Author: Gerd Möllmann <gerd@gnu.org>
Commit: Gerd Möllmann <gerd@gnu.org>

    Local package nicknames -> package objects
    
    Also, find nicknames in pkg_find_package.
---
 lisp/emacs-lisp/pkg.el |  6 +++++-
 src/pkg.c              | 11 +++++++++++
 2 files changed, 16 insertions(+), 1 deletion(-)

diff --git a/lisp/emacs-lisp/pkg.el b/lisp/emacs-lisp/pkg.el
index 2acb5057ded..9045c4b8514 100644
--- a/lisp/emacs-lisp/pkg.el
+++ b/lisp/emacs-lisp/pkg.el
@@ -713,7 +713,11 @@ Value is t."
     (register-package package)
 
     ;; Package-local nicknames.
-    (package-%set-local-nicknames package local-nicknames)
+    (let ((new-nicknames
+           (cl-loop for (nickname . package-name) in local-nicknames
+                    collect (cons nickname
+                                  (pkg--package-or-lose nickname)))))
+      (package-%set-local-nicknames package new-nicknames))
 
     ;; Shadows and Shadowing-imports.
     (let ((old-shadows (package-%shadowing-symbols package)))
diff --git a/src/pkg.c b/src/pkg.c
index 87f082adae2..b1d79824de8 100644
--- a/src/pkg.c
+++ b/src/pkg.c
@@ -137,6 +137,17 @@ Lisp_Object
 pkg_find_package (Lisp_Object name)
 {
   CHECK_STRING (name);
+
+  /* Check for a package-local nickname.  */
+  const Lisp_Object local_nicknames
+    = XPACKAGE (Vearmuffs_package)->local_nicknames;
+  if (!NILP (local_nicknames))
+    {
+      const Lisp_Object entry = CALLN (Fassoc, name, local_nicknames);
+      if (!NILP (entry))
+       return XCDR (entry);
+    }
+
   return Fgethash (name, Vpackage_registry, Qnil);
 }
 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]