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

    Rewrite denote-sequence--get-new-sibling to address its bugs
---
 denote-sequence.el | 16 +++++++++++++---
 1 file changed, 13 insertions(+), 3 deletions(-)

diff --git a/denote-sequence.el b/denote-sequence.el
index 4c2826438c..d3ce74105d 100644
--- a/denote-sequence.el
+++ b/denote-sequence.el
@@ -189,14 +189,24 @@ function `denote-sequence-get-all-sequences-with-prefix'."
             (format "%s=1" largest))))
     (error "Cannot find sequences given sequence `%s'" sequence)))
 
+(defun denote-sequence--get-prefix-for-siblings (sequence)
+  "Get the prefix of SEQUENCE such that it is possible to find its siblings."
+  (when (string-match-p "=" sequence)
+    (mapconcat #'identity (butlast (denote-sequence-split sequence)) "=")))
+
 (defun denote-sequence--get-new-sibling (sequence &optional sequences)
   "Return a new sibling SEQUENCE.
 Optional SEQUENCES has the same meaning as that specified in the
 function `denote-sequence-get-all-sequences-with-prefix'."
   (let* ((children-p (string-match-p "=" sequence)))
-    (if-let* ((all (if children-p
-                       (denote-sequence-get-all-sequences-with-prefix sequence 
sequences)
-                     (denote-sequence-get-all-sequences)))
+    (if-let* ((depth (denote-sequence-depth sequence))
+              (all-unfiltered (if children-p
+                                  
(denote-sequence-get-all-sequences-with-prefix
+                                   (denote-sequence--get-prefix-for-siblings 
sequence)
+                                   sequences)
+                                (denote-sequence-get-all-sequences)))
+              (all (denote-sequence-get-sequences-with-max-depth depth 
all-unfiltered))
+              ((member sequence all))
               (largest (if children-p
                            (denote-sequence--get-largest all 'sibling)
                          (denote-sequence--get-largest all 'parent))))

Reply via email to