diff --git a/app/appearance/langs/en_US.json b/app/appearance/langs/en_US.json
index 9949269d3..d8b907c7e 100644
--- a/app/appearance/langs/en_US.json
+++ b/app/appearance/langs/en_US.json
@@ -1,6 +1,6 @@
{
"onlySearchForDoc": "[[ only search documents",
- "onlySearchForDocTip": "After enabling, [[ to search for block references only in doc blocks",
+ "onlySearchForDocTip": "After enabling, [[ or 【【 to search for block references only in doc blocks",
"ocrResult": "OCR result text",
"reOCR": "Re OCR",
"continueReview1": "Continue Review",
diff --git a/app/appearance/langs/es_ES.json b/app/appearance/langs/es_ES.json
index bbb1c0869..da7217e50 100644
--- a/app/appearance/langs/es_ES.json
+++ b/app/appearance/langs/es_ES.json
@@ -1,6 +1,6 @@
{
"onlySearchForDoc": "[[ solo buscar documentos",
- "onlySearchForDocTip": "Después de habilitar, [[ para buscar referencias de bloque solo en bloques de documentos",
+ "onlySearchForDocTip": "Después de habilitar, [[ o 【【 para buscar referencias de bloque solo en bloques de documentos",
"ocrResult": "Texto de resultado de OCR",
"reOCR": "Re-OCR",
"continueReview1": "Continuar revisión",
diff --git a/app/appearance/langs/fr_FR.json b/app/appearance/langs/fr_FR.json
index d1270e0cb..e338d521d 100644
--- a/app/appearance/langs/fr_FR.json
+++ b/app/appearance/langs/fr_FR.json
@@ -1,6 +1,6 @@
{
"onlySearchForDoc": "[[ rechercher uniquement les documents",
- "onlySearchForDocTip": "Après l'activation, [[ pour rechercher des références de bloc uniquement dans les blocs doc",
+ "onlySearchForDocTip": "Après l'activation, [[ ou 【【 pour rechercher des références de bloc uniquement dans les blocs doc",
"reOCR": "ReOCR",
"continueReview1": "Continuer la révision",
"continueReview2": "Il reste encore des fiches ${count} à examiner, continuer ?",
diff --git a/app/appearance/langs/zh_CHT.json b/app/appearance/langs/zh_CHT.json
index 24d9cdfb2..350291ca0 100644
--- a/app/appearance/langs/zh_CHT.json
+++ b/app/appearance/langs/zh_CHT.json
@@ -1,6 +1,6 @@
{
"onlySearchForDoc": "[[ 僅搜索文檔",
- "onlySearchForDocTip": "啟用後使用 [[ 搜索塊引用時將只在文檔塊中進行搜索",
+ "onlySearchForDocTip": "啟用後使用 [[ 或 【【 搜索塊引用時將只在文檔塊中進行搜索",
"ocrResult": "OCR 結果文本",
"reOCR": "重新 OCR",
"continueReview1": "繼續複習",
diff --git a/app/appearance/langs/zh_CN.json b/app/appearance/langs/zh_CN.json
index c9c123644..adf9e5556 100644
--- a/app/appearance/langs/zh_CN.json
+++ b/app/appearance/langs/zh_CN.json
@@ -1,6 +1,6 @@
{
"onlySearchForDoc": "[[ 仅搜索文档",
- "onlySearchForDocTip": "启用后使用 [[ 搜索块引用时将只在文档块中进行搜索",
+ "onlySearchForDocTip": "启用后使用 [[ 或 【【 搜索块引用时将只在文档块中进行搜索",
"ocrResult": "OCR 结果文本",
"reOCR": "重新 OCR",
"continueReview1": "继续复习",
diff --git a/app/src/protyle/hint/extend.ts b/app/src/protyle/hint/extend.ts
index 2ddb7a9fb..4c4f1c243 100644
--- a/app/src/protyle/hint/extend.ts
+++ b/app/src/protyle/hint/extend.ts
@@ -307,6 +307,7 @@ export const hintRef = (key: string, protyle: IProtyle, isQuick = false): IHintD
id: nodeElement ? nodeElement.getAttribute("data-node-id") : protyle.block.parentID,
beforeLen: Math.floor((Math.max(protyle.element.clientWidth / 2, 320) - 58) / 28.8),
rootID: protyle.block.rootID,
+ isSquareBrackets: ["[[", "【【"].includes(protyle.hint.splitChar)
}, (response) => {
const dataList: IHintData[] = [];
if (response.data.newDoc) {
diff --git a/kernel/api/search.go b/kernel/api/search.go
index d9806e8a0..1f7294029 100644
--- a/kernel/api/search.go
+++ b/kernel/api/search.go
@@ -191,11 +191,16 @@ func searchRefBlock(c *gin.Context) {
return
}
+ isSquareBrackets := false
+ if isSquareBracketsArg := arg["isSquareBrackets"]; nil != isSquareBracketsArg {
+ isSquareBrackets = isSquareBracketsArg.(bool)
+ }
+
rootID := arg["rootID"].(string)
id := arg["id"].(string)
keyword := arg["k"].(string)
beforeLen := int(arg["beforeLen"].(float64))
- blocks, newDoc := model.SearchRefBlock(id, rootID, keyword, beforeLen)
+ blocks, newDoc := model.SearchRefBlock(id, rootID, keyword, beforeLen, isSquareBrackets)
ret.Data = map[string]interface{}{
"blocks": blocks,
"newDoc": newDoc,
diff --git a/kernel/model/search.go b/kernel/model/search.go
index 54beed227..827813dc2 100644
--- a/kernel/model/search.go
+++ b/kernel/model/search.go
@@ -121,12 +121,17 @@ func searchEmbedBlock(embedBlockID, stmt string, excludeIDs []string, headingMod
return
}
-func SearchRefBlock(id, rootID, keyword string, beforeLen int) (ret []*Block, newDoc bool) {
+func SearchRefBlock(id, rootID, keyword string, beforeLen int, isSquareBrackets bool) (ret []*Block, newDoc bool) {
cachedTrees := map[string]*parse.Tree{}
+ onlyDoc := false
+ if isSquareBrackets {
+ onlyDoc = Conf.Editor.OnlySearchForDoc
+ }
+
if "" == keyword {
// 查询为空时默认的块引排序规则按最近使用优先 https://github.com/siyuan-note/siyuan/issues/3218
- refs := sql.QueryRefsRecent(Conf.Editor.OnlySearchForDoc)
+ refs := sql.QueryRefsRecent(onlyDoc)
for _, ref := range refs {
tree := cachedTrees[ref.DefBlockRootID]
if nil == tree {
@@ -158,7 +163,7 @@ func SearchRefBlock(id, rootID, keyword string, beforeLen int) (ret []*Block, ne
return
}
- ret = fullTextSearchRefBlock(keyword, beforeLen)
+ ret = fullTextSearchRefBlock(keyword, beforeLen, onlyDoc)
tmp := ret[:0]
for _, b := range ret {
tree := cachedTrees[b.RootID]
@@ -646,7 +651,7 @@ func removeLimitClause(stmt string) string {
return stmt
}
-func fullTextSearchRefBlock(keyword string, beforeLen int) (ret []*Block) {
+func fullTextSearchRefBlock(keyword string, beforeLen int, onlyDoc bool) (ret []*Block) {
keyword = gulu.Str.RemoveInvisible(keyword)
if ast.IsNodeIDPattern(keyword) {
@@ -669,7 +674,7 @@ func fullTextSearchRefBlock(keyword string, beforeLen int) (ret []*Block) {
"snippet(" + table + ", 11, '" + search.SearchMarkLeft + "', '" + search.SearchMarkRight + "', '...', 64) AS content, " +
"fcontent, markdown, length, type, subtype, ial, sort, created, updated"
stmt := "SELECT " + projections + " FROM " + table + " WHERE " + table + " MATCH '" + columnFilter() + ":(" + quotedKeyword + ")' AND type"
- if Conf.Editor.OnlySearchForDoc {
+ if onlyDoc {
stmt += " = 'd'"
} else {
stmt += " IN " + Conf.Search.TypeFilter()