branch: externals/denote
commit 14fc0197a2b34d64ba8a615d834f28478d49f6af
Author: Protesilaos Stavrou <i...@protesilaos.com>
Commit: Protesilaos Stavrou <i...@protesilaos.com>

    Make denote-sequence-get-relative get parents more reliably
---
 denote-sequence.el | 21 +++++++++++++--------
 1 file changed, 13 insertions(+), 8 deletions(-)

diff --git a/denote-sequence.el b/denote-sequence.el
index bbd9e90073..e994d78179 100644
--- a/denote-sequence.el
+++ b/denote-sequence.el
@@ -574,21 +574,26 @@ return value of `denote-sequence-get-all-sequences'."
 With optional FILES consider only those, otherwise operate on all files
 returned by `denote-sequence-get-all-files'."
   (let* ((depth (denote-sequence-depth sequence))
+         (scheme (cdr (denote-sequence-and-scheme-p sequence)))
          (components (denote-sequence-split sequence))
          (filter-common (lambda (comparison prefix)
-                   (seq-filter
-                    (lambda (file)
-                      (funcall comparison (denote-sequence-depth 
(denote-retrieve-filename-signature file)) depth))
-                    (denote-sequence-get-all-files-with-prefix prefix 
files)))))
+                          (seq-filter
+                           (lambda (file)
+                             (funcall comparison (denote-sequence-depth 
(denote-retrieve-filename-signature file)) depth))
+                           (denote-sequence-get-all-files-with-prefix prefix 
files)))))
     (pcase type
       ('parent (let ((parents nil)
                      (butlast (butlast components)))
                  (while (>= (length butlast) 1)
-                   (let ((prefix (denote-sequence-join butlast (cdr 
(denote-sequence-and-scheme-p sequence)))))
-                     (push (car (denote-sequence-get-all-files-with-prefix 
prefix files)) parents))
-                   (setq butlast (butlast butlast)))
+                   (when-let* ((prefix (denote-sequence-join butlast scheme))
+                               (parent (seq-find
+                                        (lambda (file)
+                                          (string= 
(denote-retrieve-filename-signature file) prefix))
+                                        (denote-sequence-get-all-files 
files))))
+                     (push parent parents)
+                     (setq butlast (butlast butlast))))
                  parents))
-      ('sibling (funcall filter-common '= (denote-sequence-join (butlast 
components) (cdr (denote-sequence-and-scheme-p sequence)))))
+      ('sibling (funcall filter-common '= (denote-sequence-join (butlast 
components) scheme)))
       ('child (funcall filter-common '> sequence))
       (_ (error "The type `%s' is not among the `denote-sequence-types'" 
type)))))
 

Reply via email to