[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);
}