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

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

[elpa] externals/denote c76b313352 1/4: Fix false matches in 'denote-seq


From: ELPA Syncer
Subject: [elpa] externals/denote c76b313352 1/4: Fix false matches in 'denote-sequence-get-all-sequences-with-prefix'
Date: Fri, 31 Jan 2025 03:57:49 -0500 (EST)

branch: externals/denote
commit c76b313352f0b693ef72c9ccad012518681d6477
Author: Kierin Bell <fernseed@fernseed.me>
Commit: Kierin Bell <fernseed@fernseed.me>

    Fix false matches in 'denote-sequence-get-all-sequences-with-prefix'
    
    Change the prefix match test from 'string-prefix-p' to an algorithm
    that compares entire prefix components individually.
---
 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).



reply via email to

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