diff --git a/kernel/model/virutalref.go b/kernel/model/virutalref.go index 5c1c8698c..29a893e52 100644 --- a/kernel/model/virutalref.go +++ b/kernel/model/virutalref.go @@ -232,6 +232,14 @@ func getVirtualRefKeywords(docName string) (ret []string) { func prepareMarkKeywords(keywords []string) (ret []string) { ret = gulu.Str.RemoveDuplicatedElem(keywords) + var tmp []string + for _, k := range ret { + if "" != k { + tmp = append(tmp, k) + } + } + ret = tmp + sort.SliceStable(ret, func(i, j int) bool { return len(ret[i]) > len(ret[j]) }) diff --git a/kernel/search/mark.go b/kernel/search/mark.go index 5e0498564..a9f0c5a00 100644 --- a/kernel/search/mark.go +++ b/kernel/search/mark.go @@ -88,6 +88,10 @@ func EncloseHighlighting(text string, keywords []string, openMark, closeMark str } re := ic + "(" for i, k := range keywords { + if "" == k { + continue + } + wordBoundary := false if splitWords { wordBoundary = lex.IsASCIILetterNums(gulu.Str.ToBytes(k)) // Improve virtual reference split words https://github.com/siyuan-note/siyuan/issues/7833