[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/helm e3194ed464 1/2: Make helm-mklist working on cons cell
From: |
ELPA Syncer |
Subject: |
[nongnu] elpa/helm e3194ed464 1/2: Make helm-mklist working on cons cell |
Date: |
Sat, 5 Nov 2022 14:58:48 -0400 (EDT) |
branch: elpa/helm
commit e3194ed4645103031c60b152d4f5d5f1c3df4108
Author: Thierry Volpiatto <thievol@posteo.net>
Commit: Thierry Volpiatto <thievol@posteo.net>
Make helm-mklist working on cons cell
Add an implementation of proper-list-p for compatibility with older
emacs < to 27.
---
helm-lib.el | 20 ++++++++++++++++----
1 file changed, 16 insertions(+), 4 deletions(-)
diff --git a/helm-lib.el b/helm-lib.el
index 2a3ddabff1..d47bc38bc0 100644
--- a/helm-lib.el
+++ b/helm-lib.el
@@ -399,6 +399,14 @@ available APPEND is ignored."
(defun helm-subr-native-elisp-p (object)
(when (fboundp 'subr-native-elisp-p)
(subr-native-elisp-p object)))
+
+;; Available only in emacs-27+
+(unless (fboundp 'proper-list-p)
+ (defun proper-list-p (seq)
+ "Return OBJECT's length if it is a proper list, nil otherwise."
+ (unless (or (null (consp seq))
+ (cdr (last seq)))
+ (length seq))))
;;; Macros helper.
;;
@@ -841,9 +849,10 @@ See `helm-help-hkmap' for supported keys and functions."
(nreverse result)))
(defun helm-mklist (obj)
- "If OBJ is a list (but not lambda), return itself.
-Otherwise make a list with one element."
- (if (and (listp obj) (not (functionp obj)))
+ "Return OBJ as a list.
+If OBJ is a proper list (but not lambda), return itself.
+Otherwise make a list with one element OBJ."
+ (if (and (listp obj) (proper-list-p obj) (not (functionp obj)))
obj
(list obj)))
@@ -964,7 +973,10 @@ Examples:
=>(a b z c d)
(helm-append-at-nth \\='(a b c d) \\='((x . 1) (y . 2)) 2)
=>(a b (x . 1) (y . 2) c d)
-"
+
+NOTE: This function uses `append' internally, so ELM is expected to be a list
to
+be appended to SEQ, however for convenience ELM can be an atom or a cons cell,
+it will be wrapped inside a list automatically."
(setq index (min (max index 0) (length seq))
elm (helm-mklist elm))
(if (zerop index)