branch: externals/denote commit 8d130358a2a7b7063cf9bf3d5a9ef6a29d15738f Author: Protesilaos Stavrou <i...@protesilaos.com> Commit: Protesilaos Stavrou <i...@protesilaos.com>
Fix some more issues with denote-sequence--get-new-child STILL NEEDS TESTING. --- denote-sequence.el | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/denote-sequence.el b/denote-sequence.el index f23b30148e..6d4fbbb465 100644 --- a/denote-sequence.el +++ b/denote-sequence.el @@ -163,21 +163,24 @@ return value of `denote-sequence-get-all-sequences'." "Return a new child of SEQUENCE. Optional SEQUENCES has the same meaning as that specified in the function `denote-sequence-get-all-sequences-with-prefix'." - (let* ((descendants-p (string-match-p "=" sequence))) - (if-let* ((depth (+ (denote-sequence-depth sequence) 1)) - (all-unfiltered (if descendants-p - (denote-sequence-get-all-sequences-with-prefix sequence sequences) - (denote-sequence-get-all-sequences))) - (all (denote-sequence-get-sequences-with-max-depth depth all-unfiltered)) + (let ((no-descendants (= (length sequence) 1))) + (if-let* ((depth (if no-descendants + 2 + (denote-sequence-depth sequence))) + (all-unfiltered (denote-sequence-get-all-sequences-with-prefix sequence sequences)) + (all (or (denote-sequence-get-sequences-with-max-depth depth all-unfiltered) + all-unfiltered)) (largest (denote-sequence--get-largest all 'child))) - (if descendants-p - (let* ((components (split-string largest "=")) - (butlast (butlast components)) + (if (string-match-p "=" largest) + (let* ((components (denote-sequence-split largest)) + (butlast (when no-descendants (butlast components))) (last-component (car (nreverse components))) (current-number (string-to-number last-component)) (new-number (number-to-string (+ current-number 1)))) - (mapconcat #'identity (append butlast (list new-number)) "=")) - (number-to-string (+ (string-to-number largest) 1))) + (if butlast + (mapconcat #'identity (append butlast (list new-number)) "=") + (mapconcat #'identity (list largest new-number) "="))) + (format "%s=1" largest)) (error "Cannot find sequences given sequence `%s'" sequence)))) (defun denote-sequence--get-new-sibling (sequence &optional sequences)