branch: externals/denote
commit 70e85ef34cd688a8fdfedd74ffec30f21e5342f5
Merge: 88de969826 c76b313352
Author: Protesilaos Stavrou <[email protected]>
Commit: GitHub <[email protected]>
Merge pull request #540 from frnsd/fix-sequence-prefix
Fix false matches in 'denote-sequence-get-all-sequences-with-prefix'
---
denote-sequence.el | 16 ++++++++++++----
1 file changed, 12 insertions(+), 4 deletions(-)
diff --git a/denote-sequence.el b/denote-sequence.el
index 40073a7500..858c311a0a 100644
--- a/denote-sequence.el
+++ b/denote-sequence.el
@@ -380,10 +380,18 @@ With optional SEQUENCES operate on those, else use the
return value of
`denote-sequence-get-all-sequences'.
A sequence is a Denote signature that conforms with `denote-sequence-p'."
- (seq-filter
- (lambda (string)
- (string-prefix-p sequence string))
- (or sequences (denote-sequence-get-all-sequences))))
+ (let* ((prefix (denote-sequence-split sequence))
+ (depth (length prefix)))
+ (seq-filter
+ (lambda (string)
+ (let ((value (denote-sequence-split string))
+ (matched 0))
+ (while (and value
+ (< matched depth)
+ (string-equal (pop value) (nth matched prefix)))
+ (setq matched (1+ matched)))
+ (= matched depth)))
+ (or sequences (denote-sequence-get-all-sequences)))))
(defun denote-sequence-get-all-sequences-with-max-depth (depth &optional
sequences)
"Get sequences up to DEPTH (inclusive).