From 1f6d45b375dd3dc2b49f17b8cd3147339a39bf17 Mon Sep 17 00:00:00 2001 From: Liang Ding Date: Thu, 30 Mar 2023 19:51:22 +0800 Subject: [PATCH] :art: Improve virtual reference split words https://github.com/siyuan-note/siyuan/issues/7833 --- kernel/search/mark.go | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/kernel/search/mark.go b/kernel/search/mark.go index b6c35a122..6296439ee 100644 --- a/kernel/search/mark.go +++ b/kernel/search/mark.go @@ -18,10 +18,12 @@ package search import ( "fmt" + "github.com/88250/gulu" "regexp" "strings" "unicode/utf8" + "github.com/88250/lute/lex" "github.com/siyuan-note/siyuan/kernel/util" ) @@ -86,8 +88,17 @@ func EncloseHighlighting(text string, keywords []string, openMark, closeMark str } re := ic + "(" for i, k := range keywords { + wordBoundary := lex.IsASCIILetterNums(gulu.Str.ToBytes(k)) // Improve virtual reference split words https://github.com/siyuan-note/siyuan/issues/7833 k = regexp.QuoteMeta(k) - re += "(" + k + ")" + re += "(" + if wordBoundary { + re += "\\b" + } + re += k + if wordBoundary { + re += "\\b" + } + re += ")" if i < len(keywords)-1 { re += "|" }