emacs-elpa-diffs
[Top][All Lists]
Advanced

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

[elpa] externals/org-real b9a7e8a 053/160: Removed existing containers f


From: ELPA Syncer
Subject: [elpa] externals/org-real b9a7e8a 053/160: Removed existing containers from completion candidates
Date: Wed, 6 Oct 2021 16:58:13 -0400 (EDT)

branch: externals/org-real
commit b9a7e8a305a850aa484c07f48e90804ea411fddc
Author: Tyler Grinn <tylergrinn@gmail.com>
Commit: Tyler Grinn <tylergrinn@gmail.com>

    Removed existing containers from completion candidates
---
 org-real.el | 24 ++++++++++++++++--------
 1 file changed, 16 insertions(+), 8 deletions(-)

diff --git a/org-real.el b/org-real.el
index c955618..0fd60ad 100644
--- a/org-real.el
+++ b/org-real.el
@@ -182,7 +182,7 @@ describing where BOX is."
   (let* ((container-matrix (org-real--parse-buffer))
          (containers (if existing
                          (org-real--parse-url existing)
-                       (org-real--complete-thing "Thing: " container-matrix))))
+                       (org-real--complete-thing "Thing: " container-matrix 
'()))))
     (catch 'confirm
       (while t
         (org-real--pp (org-real--make-instance 'org-real-box containers) 
containers)
@@ -193,27 +193,35 @@ describing where BOX is."
            ((eq response 'backspace)
             (pop containers)
             (if (= 0 (length containers))
-                (setq containers (org-real--complete-thing "Thing: " 
container-matrix))))
+                (setq containers (org-real--complete-thing "Thing: " 
container-matrix containers))))
            ((eq response ?+)
             (let* ((top (plist-get (car containers) :name))
                    (preposition
                     (completing-read (concat "The " top " is: ") 
org-real-prepositions nil t))
                    (additional-containers
-                    (org-real--complete-thing (concat "The " top " is " 
preposition " the: ") container-matrix)))
+                    (org-real--complete-thing (concat "The " top " is " 
preposition " the: ")
+                                              container-matrix
+                                              containers)))
               (setcar containers (plist-put (car containers) :rel preposition))
               (setq containers (append additional-containers containers))))))))
     (org-real--to-link containers)))
 
-(defun org-real--complete-thing (prompt container-matrix)
+(defun org-real--complete-thing (prompt container-matrix existing)
   "Use `completing-read' with PROMPT to get a list of containers.
 
 CONTAINER-MATRIX is used to generate possible completions.  The
 return value is the longest list of containers from the matrix
 that contains, as the last element, a container with a name
-matching the one returned from `completing-read'."
-  (let* ((completions (mapcar
-                       (lambda (container) (plist-get container :name))
-                       (apply 'append container-matrix)))
+matching the one returned from `completing-read'.
+
+EXISTING containers will be excluded from the completion."
+  (let* ((existing-names (mapcar (lambda (container) (plist-get container 
:name)) existing))
+         (completions (seq-filter
+                       (lambda (name) (not (member name existing-names)))
+                       (cl-delete-duplicates
+                        (mapcar
+                         (lambda (container) (plist-get container :name))
+                         (apply 'append container-matrix)))))
          (result (completing-read prompt completions nil 'confirm))
          (existing-containers (car (seq-sort
                                     (lambda (a b) (> (length a) (length b)))



reply via email to

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