[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/leaf d732e4b88c 07/28: use just `push` instead of using
From: |
ELPA Syncer |
Subject: |
[elpa] externals/leaf d732e4b88c 07/28: use just `push` instead of using `package--update-selected-packages` |
Date: |
Wed, 19 Jan 2022 18:58:37 -0500 (EST) |
branch: externals/leaf
commit d732e4b88c0686df386073a90587bea681bd005c
Author: Naoya Yamashita <conao3@gmail.com>
Commit: Naoya Yamashita <conao3@gmail.com>
use just `push` instead of using `package--update-selected-packages`
Note
- The previous function expanded `custom-save-variable`, which
saved custom.el sequentially, causing serious performance
degradation in some cases.
- Since `package-selected-packages` was introduced in Emacs-25.1,
we will consider the case where this variable is not declared.
If it is not declared, just `setq` it as a new variable. (leaf-safe-push)
- Remove progn from the second `condition-case`, since
it can accept multiple S-expressions in the error arm.
---
leaf-tests.el | 30 +++++++++++++++---------------
leaf.el | 52 ++++++++++++++++++++++++++++------------------------
2 files changed, 43 insertions(+), 39 deletions(-)
diff --git a/leaf-tests.el b/leaf-tests.el
index 86bf79fdec..97b4654742 100644
--- a/leaf-tests.el
+++ b/leaf-tests.el
@@ -2390,21 +2390,21 @@ Example:
;; otherwise try to install it.
;; If installation fails, update local cache and retry to install.
((leaf-handler-package macrostep macrostep nil)
- (if (package-installed-p 'macrostep)
- (package--update-selected-packages '(macrostep) nil)
- (unless (assoc 'macrostep package-archive-contents)
- (package-refresh-contents))
- (condition-case _err
- (package-install 'macrostep)
- (error
- (condition-case err
- (progn
- (package-refresh-contents)
- (package-install 'macrostep))
- (error
- (display-warning 'leaf
- (format "In `macrostep' block, failed to
:package of `macrostep'. Error msg: %s"
- (error-message-string err)))))))))))
+ (progn
+ (leaf-safe-push 'macrostep package-selected-packages 'no-dup)
+ (unless (package-installed-p 'macrostep)
+ (unless (assoc 'macrostep package-archive-contents)
+ (package-refresh-contents))
+ (condition-case _err
+ (package-install 'macrostep)
+ (error
+ (package-refresh-contents)
+ (condition-case err
+ (package-install 'macrostep)
+ (error
+ (display-warning 'leaf
+ (format "In `macrostep' block, failed to
:package of `macrostep'. Error msg: %s"
+ (error-message-string err))))))))))))
(when (version< "24.0" emacs-version)
(cort-deftest-with-macroexpand leaf/leaf-key
diff --git a/leaf.el b/leaf.el
index 7339302978..d341567251 100644
--- a/leaf.el
+++ b/leaf.el
@@ -775,12 +775,16 @@ see `alist-get'."
(indent-region (point-min) (point-max))
(display-buffer buf))))
-(defmacro leaf-safe-push (newelt place)
+(defmacro leaf-safe-push (newelt place &optional no-dup)
"Safely add NEWELT to the list stored in the generalized variable PLACE.
This is equivalent to `push' if PLACE is bound, otherwise, `setq'
-is used to define a new list."
+is used to define a new list.
+If NO-DUP is non-nil, do not `push' if the element already exists."
`(if (boundp ',place)
- (push ,newelt ,place)
+ ,(if (not no-dup)
+ `(push ,newelt ,place)
+ `(unless (memq ,newelt ,place)
+ (push ,newelt ,place)))
(setq ,place (list ,newelt))))
@@ -1076,27 +1080,27 @@ FN also accept list of FN."
(defmacro leaf-handler-package (name pkg _pin)
"Handler for ensuring the installation of PKG with package.el
via PIN in the leaf block NAME."
- `(if (package-installed-p ',pkg)
- (package--update-selected-packages '(,pkg) nil)
- (unless (assoc ',pkg package-archive-contents)
- (package-refresh-contents))
- (condition-case _err
- (package-install ',pkg)
- (error
- (condition-case err
- (progn
- (package-refresh-contents)
- (package-install ',pkg))
- (error
- (display-warning 'leaf
- (format
- ,(concat
- (format "In `%s' block" name)
- (when load-file-name
- (format " at `%s'" load-file-name))
- (format ", failed to :package of `%s'." pkg)
- " Error msg: %s")
- (error-message-string err)))))))))
+ `(progn
+ (leaf-safe-push ',pkg package-selected-packages 'no-dup)
+ (unless (package-installed-p ',pkg)
+ (unless (assoc ',pkg package-archive-contents)
+ (package-refresh-contents))
+ (condition-case _err
+ (package-install ',pkg)
+ (error
+ (package-refresh-contents)
+ (condition-case err
+ (package-install ',pkg)
+ (error
+ (display-warning 'leaf
+ (format
+ ,(concat
+ (format "In `%s' block" name)
+ (when load-file-name
+ (format " at `%s'" load-file-name))
+ (format ", failed to :package of `%s'." pkg)
+ " Error msg: %s")
+ (error-message-string err))))))))))
(defmacro leaf-handler-auth (name sym store)
"Handler auth-* to set SYM of NAME from STORE."
- [elpa] externals/leaf b6276d7faa 15/28: Change the expand form of leaf-key, when binding to lambda or menu-item, (continued)
- [elpa] externals/leaf b6276d7faa 15/28: Change the expand form of leaf-key, when binding to lambda or menu-item, ELPA Syncer, 2022/01/19
- [elpa] externals/leaf 9797d3258d 27/28: Get rid the warning in define minor mode., ELPA Syncer, 2022/01/19
- [elpa] externals/leaf d314af8e9f 26/28: Merge pull request #521 from lorniu/master, ELPA Syncer, 2022/01/19
- [elpa] externals/leaf 7460e3c5eb 11/28: Merge pull request #518 from conao3/test, ELPA Syncer, 2022/01/19
- [elpa] externals/leaf 2d395ee3d4 24/28: Merge pull request #525 from conao3/warn-after-keyword, ELPA Syncer, 2022/01/19
- [elpa] externals/leaf 5ac6ae61e1 04/28: leaf-keys use the BIND-KEYMAP-PKG ranther than :package's value, when 'bind-keymap being non-nil., ELPA Syncer, 2022/01/19
- [elpa] externals/leaf 5469c1b5cf 03/28: Bugfix: leaf-keys-bind-keymap*'s error: number of arguments., ELPA Syncer, 2022/01/19
- [elpa] externals/leaf 9d79978574 05/28: Merge pull request #509 from meziberry/p/leaf-keys-bind-keymap-asterisk, ELPA Syncer, 2022/01/19
- [elpa] externals/leaf 749593adae 08/28: tagged v4.5.3, ELPA Syncer, 2022/01/19
- [elpa] externals/leaf 7cc38f9739 23/28: tagged v4.5.5, ELPA Syncer, 2022/01/19
- [elpa] externals/leaf d732e4b88c 07/28: use just `push` instead of using `package--update-selected-packages`,
ELPA Syncer <=
- [elpa] externals/leaf e800a2288e 16/28: transform nil into (), ELPA Syncer, 2022/01/19
- [elpa] externals/leaf 61365188be 02/28: Merge pull request #505 from gksato/feature#504-package-save-selected, ELPA Syncer, 2022/01/19
- [elpa] externals/leaf 3a6b31f737 10/28: run test also on Emacs-27.2, ELPA Syncer, 2022/01/19
- [elpa] externals/leaf 8418473614 14/28: transform nil to (), ELPA Syncer, 2022/01/19
- [elpa] externals/leaf 8b5bbac137 06/28: Merge pull request #512 from meziberry/p/leaf-keys, ELPA Syncer, 2022/01/19
- [elpa] externals/leaf 91f7ba756c 18/28: tagged v4.5.4, ELPA Syncer, 2022/01/19
- [elpa] externals/leaf 097cb1d2fd 25/28: Remove extra quote before (lambda) generated by `leaf-key`., ELPA Syncer, 2022/01/19
- [elpa] externals/leaf 81ba02fb43 17/28: add lambda bind pattern to README, ELPA Syncer, 2022/01/19
- [elpa] externals/leaf 9eb18e8c9c 28/28: Merge pull request #526 from lorniu/minor-mode, ELPA Syncer, 2022/01/19
- [elpa] externals/leaf 7d5e17e41d 09/28: Merge pull request #517 from conao3/fix-custom, ELPA Syncer, 2022/01/19