Merge remote-tracking branch 'origin/dev' into dev

This commit is contained in:
Vanessa 2025-01-14 21:49:50 +08:00
commit bddb5bd706
15 changed files with 71 additions and 70 deletions

View file

@ -831,7 +831,7 @@
"turnInto": "تحويل إلى",
"split": "تقسيم",
"underline": "خط سفلي",
"inline-math": "رياضيات داخل السطر",
"inline-math": "صيغة مضمنة",
"moveToUp": "تحريك للأعلى",
"moveToDown": "تحريك للأسفل",
"moveToLeft": "تحريك لليسار",

View file

@ -831,7 +831,7 @@
"turnInto": "Umwandeln in",
"split": "Teilen",
"underline": "Unterstreichen",
"inline-math": "Inline-Mathematik",
"inline-math": "Inline-Formel",
"moveToUp": "Nach oben bewegen",
"moveToDown": "Nach unten bewegen",
"moveToLeft": "Nach links bewegen",

View file

@ -831,7 +831,7 @@
"turnInto": "Turn into",
"split": "Split",
"underline": "Underline",
"inline-math": "Inline Math",
"inline-math": "Inline Formula",
"moveToUp": "Move Up",
"moveToDown": "Move Down",
"moveToLeft": "Move Left",

View file

@ -831,7 +831,7 @@
"turnInto": "Convertir en",
"split": "Dividir",
"underline": "Subrayar",
"inline-math": "Matemáticas en línea",
"inline-math": "Fórmula en línea",
"moveToUp": "Desplazar arriba",
"moveToDown": "Desplazar abajo",
"moveToLeft": "Mover a la izquierda",

View file

@ -831,7 +831,7 @@
"turnInto": "Convertir en",
"split": "Divisé",
"underline": "Souligner",
"inline-math": "Inline Math",
"inline-math": "Formule en ligne",
"moveToUp": "vers le Haut",
"moveToDown": "vers le bas",
"moveToLeft": "vers la Gauche",

View file

@ -831,7 +831,7 @@
"turnInto": "הפוך ל",
"split": "חלק",
"underline": "קו תחתון",
"inline-math": "מתמטיקה פנימית",
"inline-math": "נוסחה מקוונת",
"moveToUp": "העבר למעלה",
"moveToDown": "העבר למטה",
"moveToLeft": "העבר שמאלה",

View file

@ -831,7 +831,7 @@
"turnInto": "Trasforma in",
"split": "Dividi",
"underline": "Sottolinea",
"inline-math": "Matematica in linea",
"inline-math": "Formula in linea",
"moveToUp": "Sposta Su",
"moveToDown": "Sposta Giù",
"moveToLeft": "Sposta a Sinistra",

View file

@ -831,7 +831,7 @@
"turnInto": "Zmień w",
"split": "Podziel",
"underline": "Podkreślenie",
"inline-math": "Matematyka w linii",
"inline-math": "Formuła w linii",
"moveToUp": "Przenieś w górę",
"moveToDown": "Przenieś w dół",
"moveToLeft": "Przenieś w lewo",

View file

@ -831,7 +831,7 @@
"turnInto": "Преобразовать в",
"split": "Разделить",
"underline": "Подчеркнуть",
"inline-math": "Встроенная математика",
"inline-math": "Встроенная формула",
"moveToUp": "Переместить вверх",
"moveToDown": "Переместить вниз",
"moveToLeft": "Переместить налево",

View file

@ -831,7 +831,7 @@
"turnInto": "轉換為",
"split": "並排顯示",
"underline": "底線",
"inline-math": "行內數學公式",
"inline-math": "行內公式",
"moveToUp": "向上移",
"moveToDown": "向下移",
"moveToLeft": "向左移",

View file

@ -31,47 +31,47 @@ const getHotkeyOrMarker = (hotkey: string, marker: string) => {
export const hintSlash = (key: string, protyle: IProtyle) => {
const allList: IHintData[] = [{
filter: [window.siyuan.languages.template, "moban", "muban", "mb", "template", "模板"],
filter: [window.siyuan.languages.template, "template", "模板", "moban", "muban", "mb"],
id: "template",
value: Constants.ZWSP,
html: `<div class="b3-list-item__first"><svg class="b3-list-item__graphic"><use xlink:href="#iconMarkdown"></use></svg><span class="b3-list-item__text">${window.siyuan.languages.template}</span></div>`,
}, {
filter: [window.siyuan.languages.widget, "gj", "guajian", "widget", "挂件"],
filter: [window.siyuan.languages.widget, "widget", "挂件", "guajian", "gj"],
id: "widget",
value: Constants.ZWSP + 1,
html: `<div class="b3-list-item__first"><svg class="b3-list-item__graphic"><use xlink:href="#iconBoth"></use></svg><span class="b3-list-item__text">${window.siyuan.languages.widget}</span></div>`,
}, {
filter: [window.siyuan.languages.assets, "zy", "ziyuan", "assets", "资源"],
filter: [window.siyuan.languages.assets, "assets", "资源", "ziyuan", "zy"],
id: "assets",
value: Constants.ZWSP + 2,
html: `<div class="b3-list-item__first"><svg class="b3-list-item__graphic"><use xlink:href="#iconImage"></use></svg><span class="b3-list-item__text">${window.siyuan.languages.assets}</span></div>`,
}, {
filter: [window.siyuan.languages.ref, "yinyong", "kyy", "kuaiyinyong", "block reference", "块引用"],
filter: [window.siyuan.languages.ref, "block reference", "块引用", "kuaiyinyong", "kyy"],
id: "ref",
value: "((",
html: `<div class="b3-list-item__first"><svg class="b3-list-item__graphic"><use xlink:href="#iconRef"></use></svg><span class="b3-list-item__text">${window.siyuan.languages.ref}</span><span class="b3-list-item__meta">((</span></div>`,
}, {
filter: [window.siyuan.languages.blockEmbed, "qianrukuai", "qrk", "embed block", "嵌入块"],
filter: [window.siyuan.languages.blockEmbed, "embed block", "嵌入块", "qianrukuai", "qrk"],
id: "blockEmbed",
value: "{{",
html: `<div class="b3-list-item__first"><svg class="b3-list-item__graphic"><use xlink:href="#iconSQL"></use></svg><span class="b3-list-item__text">${window.siyuan.languages.blockEmbed}</span><span class="b3-list-item__meta">{{</span></div>`,
}, {
filter: [window.siyuan.languages.aiWriting, "aibianxie", "aibx", "rgzn", "人工智能"],
filter: [window.siyuan.languages.aiWriting, "ai writing", "ai编写", "aibianxie", "aibx", "人工智能", "rengongzhineng", "rgzn"],
id: "aiWriting",
value: Constants.ZWSP + 5,
html: `<div class="b3-list-item__first"><svg class="b3-list-item__graphic"><use xlink:href="#iconSparkles"></use></svg><span class="b3-list-item__text">${window.siyuan.languages.aiWriting}</span></div>`,
}, {
filter: [window.siyuan.languages.database, "shujuku", "sjk", "database", "view", "db", "数据库", "视图"],
filter: [window.siyuan.languages.database, "database", "db", "数据库", "shujuku", "sjk", "视图", "view"],
id: "database",
value: '<div data-type="NodeAttributeView" data-av-type="table"></div>',
html: `<div class="b3-list-item__first"><svg class="b3-list-item__graphic"><use xlink:href="#iconDatabase"></use></svg><span class="b3-list-item__text">${window.siyuan.languages.database}</span></div>`,
}, {
filter: [window.siyuan.languages.newFileRef, "xinjianwendangbingyinyong", "xjwdbyy", "new doc", "新建文档并引用"],
filter: [window.siyuan.languages.newFileRef,"create new doc with reference", "新建文档并引用", "xinjianwendangbingyinyong", "xjwdbyy"],
id: "newFileRef",
value: Constants.ZWSP + 4,
html: `<div class="b3-list-item__first"><svg class="b3-list-item__graphic"><use xlink:href="#iconFile"></use></svg><span class="b3-list-item__text">${window.siyuan.languages.newFileRef}</span></div>`,
}, {
filter: [window.siyuan.languages.newSubDocRef, "xinjianziwendangbingyinyong", "xjzwdbyy", "sub doc", "新建子文档并引用"],
filter: [window.siyuan.languages.newSubDocRef, "create sub doc with reference", "新建子文档并引用", "xinjianziwendangbingyinyong", "xjzwdbyy"],
id: "newSubDocRef",
value: Constants.ZWSP + 6,
html: `<div class="b3-list-item__first"><svg class="b3-list-item__graphic"><use xlink:href="#iconFile"></use></svg><span class="b3-list-item__text">${window.siyuan.languages.newSubDocRef}</span></div>`,
@ -80,72 +80,72 @@ export const hintSlash = (key: string, protyle: IProtyle) => {
id: "separator_1",
html: "separator",
}, {
filter: [window.siyuan.languages.heading1, "yijibiaoti", "yjbt", "h1", "heading1", "一级标题"],
filter: [window.siyuan.languages.heading1, "heading1", "h1", "一级标题", "yijibiaoti", "yjbt"],
id: "heading1",
value: "# " + Lute.Caret,
html: `<div class="b3-list-item__first"><svg class="b3-list-item__graphic"><use xlink:href="#iconH1"></use></svg><span class="b3-list-item__text">${window.siyuan.languages.heading1}</span>${getHotkeyOrMarker(window.siyuan.config.keymap.editor.heading.heading1.custom, "# ")}</div>`,
}, {
filter: [window.siyuan.languages.heading2, "erjibiaoti", "ejbt", "h2", "heading2", "二级标题"],
filter: [window.siyuan.languages.heading2, "heading2", "h2", "二级标题", "erjibiaoti", "ejbt"],
id: "heading2",
value: "## " + Lute.Caret,
html: `<div class="b3-list-item__first"><svg class="b3-list-item__graphic"><use xlink:href="#iconH2"></use></svg><span class="b3-list-item__text">${window.siyuan.languages.heading2}</span>${getHotkeyOrMarker(window.siyuan.config.keymap.editor.heading.heading2.custom, "## ")}</div>`,
}, {
filter: [window.siyuan.languages.heading3, "sanjibiaoti", "sjbt", "h3", "heading3", "三级标题"],
filter: [window.siyuan.languages.heading3, "heading3", "h3", "三级标题", "sanjibiaoti", "sjbt"],
id: "heading3",
value: "### " + Lute.Caret,
html: `<div class="b3-list-item__first"><svg class="b3-list-item__graphic"><use xlink:href="#iconH3"></use></svg><span class="b3-list-item__text">${window.siyuan.languages.heading3}</span>${getHotkeyOrMarker(window.siyuan.config.keymap.editor.heading.heading3.custom, "### ")}</div>`,
}, {
filter: [window.siyuan.languages.heading4, "sijibiaoti", "sjbt", "h4", "heading4", "四级标题"],
filter: [window.siyuan.languages.heading4, "heading4", "h4", "四级标题", "sijibiaoti", "sjbt"],
id: "heading4",
value: "#### " + Lute.Caret,
html: `<div class="b3-list-item__first"><svg class="b3-list-item__graphic"><use xlink:href="#iconH4"></use></svg><span class="b3-list-item__text">${window.siyuan.languages.heading4}</span>${getHotkeyOrMarker(window.siyuan.config.keymap.editor.heading.heading4.custom, "#### ")}</div>`,
}, {
filter: [window.siyuan.languages.heading5, "wujibiaoti", "wjbt", "h5", "heading5", "五级标题"],
filter: [window.siyuan.languages.heading5, "heading5", "h5", "五级标题", "wujibiaoti", "wjbt"],
id: "heading5",
value: "##### " + Lute.Caret,
html: `<div class="b3-list-item__first"><svg class="b3-list-item__graphic"><use xlink:href="#iconH5"></use></svg><span class="b3-list-item__text">${window.siyuan.languages.heading5}</span>${getHotkeyOrMarker(window.siyuan.config.keymap.editor.heading.heading5.custom, "##### ")}</div>`,
}, {
filter: [window.siyuan.languages.heading6, "liujibiaoti", "ljbt", "h6", "heading6", "六级标题"],
filter: [window.siyuan.languages.heading6, "heading6", "h6", "六级标题", "liujibiaoti", "ljbt"],
id: "heading6",
value: "###### " + Lute.Caret,
html: `<div class="b3-list-item__first"><svg class="b3-list-item__graphic"><use xlink:href="#iconH6"></use></svg><span class="b3-list-item__text">${window.siyuan.languages.heading6}</span>${getHotkeyOrMarker(window.siyuan.config.keymap.editor.heading.heading6.custom, "###### ")}</div>`,
}, {
filter: [window.siyuan.languages.list, "wuxuliebiao", "wxlb", "unordered list", "无序列表"],
filter: [window.siyuan.languages.list, "unordered list", "无序列表", "wuxvliebiao", "wuxuliebiao", "wxlb"],
id: "list",
value: "* " + Lute.Caret,
html: `<div class="b3-list-item__first"><svg class="b3-list-item__graphic"><use xlink:href="#iconList"></use></svg><span class="b3-list-item__text">${window.siyuan.languages.list}</span>${getHotkeyOrMarker(window.siyuan.config.keymap.editor.insert.list.custom, "* ")}</div>`,
}, {
filter: [window.siyuan.languages["ordered-list"], "youxuliebiao", "yxlb", "ordered list", "有序列表"],
filter: [window.siyuan.languages["ordered-list"], "order list", "ordered list", "有序列表", "youxvliebiao", "youxuliebiao", "yxlb"],
id: "orderedList",
value: "1. " + Lute.Caret,
html: `<div class="b3-list-item__first"><svg class="b3-list-item__graphic"><use xlink:href="#iconOrderedList"></use></svg><span class="b3-list-item__text">${window.siyuan.languages["ordered-list"]}</span>${getHotkeyOrMarker(window.siyuan.config.keymap.editor.insert["ordered-list"].custom, "1. ")}</div>`,
}, {
filter: [window.siyuan.languages.check, "renwuliebiao", "rwlb", "todo", "task list", "任务列表"],
filter: [window.siyuan.languages.check, "task list", "todo list", "任务列表", "renwuliebiao", "rwlb"],
id: "check",
value: "* [ ] " + Lute.Caret,
html: `<div class="b3-list-item__first"><svg class="b3-list-item__graphic"><use xlink:href="#iconCheck"></use></svg><span class="b3-list-item__text">${window.siyuan.languages.check}</span>${getHotkeyOrMarker(window.siyuan.config.keymap.editor.insert.check.custom, "[]")}</div>`,
}, {
filter: [window.siyuan.languages.quote, "yinshu", "ys", "bq", "blockquote", "引述"],
filter: [window.siyuan.languages.quote, "blockquote", "bq", "引述", "yinshu", "ys"],
id: "quote",
value: "> " + Lute.Caret,
html: `<div class="b3-list-item__first"><svg class="b3-list-item__graphic"><use xlink:href="#iconQuote"></use></svg><span class="b3-list-item__text">${window.siyuan.languages.quote}</span>${getHotkeyOrMarker(window.siyuan.config.keymap.editor.insert.quote.custom, ">")}</div>`,
}, {
filter: [window.siyuan.languages.code, "daimakuai", "dmk", "code block", "代码块"],
filter: [window.siyuan.languages.code, "code block", "代码块", "daimakuai", "dmk"],
id: "code",
value: "```",
html: `<div class="b3-list-item__first"><svg class="b3-list-item__graphic"><use xlink:href="#iconCode"></use></svg><span class="b3-list-item__text">${window.siyuan.languages.code}</span>${getHotkeyOrMarker(window.siyuan.config.keymap.editor.insert.code.custom, "```" + window.siyuan.languages.enterKey)}</div>`,
}, {
filter: [window.siyuan.languages.table, "biaoge", "bg", "table", "表格"],
filter: [window.siyuan.languages.table, "table", "表格", "biaoge", "bg"],
id: "table",
value: `| ${Lute.Caret} | | |\n| --- | --- | --- |\n| | | |\n| | | |`,
html: `<div class="b3-list-item__first"><svg class="b3-list-item__graphic"><use xlink:href="#iconTable"></use></svg><span class="b3-list-item__text">${window.siyuan.languages.table}</span><span class="b3-menu__accelerator">${updateHotkeyTip((window.siyuan.config.keymap.editor.insert.table.custom))}</span></div>`,
}, {
filter: [window.siyuan.languages.line, "fengexian", "fgx", "divider", "thematic", "break", "分隔线", "分割线"],
filter: [window.siyuan.languages.line, "thematic break", "divider", "分隔线", "分割线", "fengexian", "fgx"],
id: "line",
value: "---",
html: `<div class="b3-list-item__first"><svg class="b3-list-item__graphic"><use xlink:href="#iconLine"></use></svg><span class="b3-list-item__text">${window.siyuan.languages.line}</span><span class="b3-list-item__meta">---</span></div>`,
}, {
filter: [window.siyuan.languages.math, "shuxuegongshikuai", "sxgsk", "math block", "数学公式块"],
filter: [window.siyuan.languages.math, "formulas block", "math block", "数学公式块", "shuxuegongshikuai", "sxgsk"],
id: "math",
value: "$$",
html: `<div class="b3-list-item__first"><svg class="b3-list-item__graphic"><use xlink:href="#iconMath"></use></svg><span class="b3-list-item__text">${window.siyuan.languages.math}</span><span class="b3-list-item__meta">$$</span></div>`,
@ -159,62 +159,62 @@ export const hintSlash = (key: string, protyle: IProtyle) => {
id: "separator_2",
html: "separator",
}, {
filter: [window.siyuan.languages.emoji, "biaoqing", "bq", "emoji", "表情"],
filter: [window.siyuan.languages.emoji, "emoji", "表情", "biaoqing", "bq"],
id: "emoji",
value: "emoji",
html: `<div class="b3-list-item__first"><svg class="b3-list-item__graphic"><use xlink:href="#iconEmoji"></use></svg><span class="b3-list-item__text">${window.siyuan.languages.emoji}</span><span class="b3-list-item__meta">:</span></div>`,
}, {
filter: [window.siyuan.languages.link, "lianjie", "lj", "link", "a", "链接"],
filter: [window.siyuan.languages.link, "link", "a", "链接", "lianjie", "lj"],
id: "link",
value: "a",
html: `<div class="b3-list-item__first"><svg class="b3-list-item__graphic"><use xlink:href="#iconLink"></use></svg><span class="b3-list-item__text">${window.siyuan.languages.link}</span><span class="b3-menu__accelerator">${updateHotkeyTip((window.siyuan.config.keymap.editor.insert.link.custom))}</span></div>`,
}, {
filter: [window.siyuan.languages.bold, "cuti", "ct", "bold", "strong", "粗体"],
filter: [window.siyuan.languages.bold, "bold", "strong", "粗体", "cuti", "ct", "加粗", "jiacu", "jc"],
id: "bold",
value: "strong",
html: `<div class="b3-list-item__first"><svg class="b3-list-item__graphic"><use xlink:href="#iconBold"></use></svg><span class="b3-list-item__text">${window.siyuan.languages.bold}</span><span class="b3-menu__accelerator">${updateHotkeyTip((window.siyuan.config.keymap.editor.insert.bold.custom))}</span></div>`,
}, {
filter: [window.siyuan.languages.italic, "xieti", "xt", "italic", "em", "斜体"],
filter: [window.siyuan.languages.italic, "italic", "em", "斜体", "xieti", "xt"],
id: "italic",
value: "em",
html: `<div class="b3-list-item__first"><svg class="b3-list-item__graphic"><use xlink:href="#iconItalic"></use></svg><span class="b3-list-item__text">${window.siyuan.languages.italic}</span><span class="b3-menu__accelerator">${updateHotkeyTip((window.siyuan.config.keymap.editor.insert.italic.custom))}</span></div>`,
}, {
filter: [window.siyuan.languages.underline, "xiahuaxian", "xhx", "underline", "下划线"],
filter: [window.siyuan.languages.underline, "underline", "下划线", "xiahuaxian", "xhx"],
id: "underline",
value: "u",
html: `<div class="b3-list-item__first"><svg class="b3-list-item__graphic"><use xlink:href="#iconUnderline"></use></svg><span class="b3-list-item__text">${window.siyuan.languages.underline}</span><span class="b3-menu__accelerator">${updateHotkeyTip((window.siyuan.config.keymap.editor.insert.underline.custom))}</span></div>`,
}, {
filter: [window.siyuan.languages.strike, "shanchuxian", "scx", "strike", "del", "删除线"],
filter: [window.siyuan.languages.strike, "strike", "delete", "删除线", "shanchuxian", "scx"],
id: "strike",
value: "s",
html: `<div class="b3-list-item__first"><svg class="b3-list-item__graphic"><use xlink:href="#iconStrike"></use></svg><span class="b3-list-item__text">${window.siyuan.languages.strike}</span><span class="b3-menu__accelerator">${updateHotkeyTip((window.siyuan.config.keymap.editor.insert.strike.custom))}</span></div>`,
}, {
filter: [window.siyuan.languages.mark, "biaoji", "bj", "mark", "标记"],
filter: [window.siyuan.languages.mark, "mark", "标记", "biaoji", "bj", "高亮", "gaoliang", "gl"],
id: "mark",
value: "mark",
html: `<div class="b3-list-item__first"><svg class="b3-list-item__graphic"><use xlink:href="#iconMark"></use></svg><span class="b3-list-item__text">${window.siyuan.languages.mark}</span><span class="b3-menu__accelerator">${updateHotkeyTip((window.siyuan.config.keymap.editor.insert.mark.custom))}</span></div>`,
}, {
filter: [window.siyuan.languages.sup, "shangbiao", "sb", "superscript", "上标"],
filter: [window.siyuan.languages.sup, "superscript", "上标", "shangbiao", "sb"],
id: "sup",
value: "sup",
html: `<div class="b3-list-item__first"><svg class="b3-list-item__graphic"><use xlink:href="#iconSup"></use></svg><span class="b3-list-item__text">${window.siyuan.languages.sup}</span><span class="b3-menu__accelerator">${updateHotkeyTip((window.siyuan.config.keymap.editor.insert.sup.custom))}</span></div>`,
}, {
filter: [window.siyuan.languages.sub, "xiaobiao", "xb", "subscript", "下标"],
filter: [window.siyuan.languages.sub, "subscript", "下标", "xiaobiao", "xb"],
id: "sub",
value: "sub",
html: `<div class="b3-list-item__first"><svg class="b3-list-item__graphic"><use xlink:href="#iconSub"></use></svg><span class="b3-list-item__text">${window.siyuan.languages.sub}</span><span class="b3-menu__accelerator">${updateHotkeyTip((window.siyuan.config.keymap.editor.insert.sub.custom))}</span></div>`,
}, {
filter: [window.siyuan.languages.tag, "biaoqian", "bq", "tag", "标签"],
filter: [window.siyuan.languages.tag, "tags", "标签", "biaoqian", "bq"],
id: "tag",
value: "tag",
html: `<div class="b3-list-item__first"><svg class="b3-list-item__graphic"><use xlink:href="#iconTags"></use></svg><span class="b3-list-item__text">${window.siyuan.languages.tag}</span><span class="b3-menu__accelerator">${updateHotkeyTip((window.siyuan.config.keymap.editor.insert.tag.custom))}</span></div>`,
}, {
filter: [window.siyuan.languages["inline-code"], "hangjidaima", "hjdm", "inline code", "行级代码"],
filter: [window.siyuan.languages["inline-code"], "inline code", "行级代码", "hangjidaima", "hjdm"],
id: "inlineCode",
value: "code",
html: `<div class="b3-list-item__first"><svg class="b3-list-item__graphic"><use xlink:href="#iconInlineCode"></use></svg><span class="b3-list-item__text">${window.siyuan.languages["inline-code"]}</span><span class="b3-menu__accelerator">${updateHotkeyTip((window.siyuan.config.keymap.editor.insert["inline-code"].custom))}</span></div>`,
}, {
filter: [window.siyuan.languages["inline-math"], "hangjigongshi", "hjgs", "hangjishuxvegongshi", "hjsxgs", "inline math", "行级公式", "行级数学公式"],
filter: [window.siyuan.languages["inline-math"], "inline formulas", "inline math", "行级公式", "hangjigongshi", "hjgs", "行级数学公式", "hangjishuxvegongshi", "hangjishuxuegongshi", "hjsxgs"],
id: "inlineMath",
value: "inline-math",
html: `<div class="b3-list-item__first"><svg class="b3-list-item__graphic"><use xlink:href="#iconMath"></use></svg><span class="b3-list-item__text">${window.siyuan.languages["inline-math"]}</span><span class="b3-menu__accelerator">${updateHotkeyTip((window.siyuan.config.keymap.editor.insert["inline-math"].custom))}</span></div>`,
@ -223,28 +223,28 @@ export const hintSlash = (key: string, protyle: IProtyle) => {
id: "separator_3",
html: "separator",
}, {
filter: [window.siyuan.languages.insertAsset, "charutupianhuowenjian", "crtphwj", "upload", "sc", "上传"],
filter: [window.siyuan.languages.insertAsset, "insert image or file", "upload", "插入图片或文件", "charutupianhuowenjian", "crtphwj", "上传", "sc"],
id: "insertAsset",
value: Constants.ZWSP + 3,
html: `<div class="b3-list-item__first"><svg class="b3-list-item__graphic"><use xlink:href="#iconDownload"></use></svg><span class="b3-list-item__text">${window.siyuan.languages.insertAsset}</span>
<input class="b3-form__upload" type="file" ${protyle.options.upload.accept ? 'multiple="' + protyle.options.upload.accept + '"' : ""}></div>`,
}, {
filter: [window.siyuan.languages.insertIframeURL, "charuiframelianjie", "criframelj", "iframe"],
filter: [window.siyuan.languages.insertIframeURL, "insert iframe link", "插入 iframe 链接", "charuiframelianjie", "criframelj"],
id: "insertIframeURL",
value: '<iframe sandbox="allow-forms allow-presentation allow-same-origin allow-scripts allow-modals allow-popups" src="" border="0" frameborder="no" framespacing="0" allowfullscreen="true"></iframe>',
html: `<div class="b3-list-item__first"><svg class="b3-list-item__graphic"><use xlink:href="#iconLanguage"></use></svg><span class="b3-list-item__text">${window.siyuan.languages.insertIframeURL}</span></div>`,
}, {
filter: [window.siyuan.languages.insertImgURL, "charutupianlianjie", "crtptp", "img", "image", "图片"],
filter: [window.siyuan.languages.insertImgURL, "insert image link", "image", "img", "插入图片链接", "charutupianlianjie", "crtplj"],
id: "insertImgURL",
value: "![]()",
html: `<div class="b3-list-item__first"><svg class="b3-list-item__graphic"><use xlink:href="#iconImage"></use></svg><span class="b3-list-item__text">${window.siyuan.languages.insertImgURL}</span></div>`,
}, {
filter: [window.siyuan.languages.insertVideoURL, "charushipinlianjie", "crsplj", "video", "视频"],
filter: [window.siyuan.languages.insertVideoURL, "insert video link", "插入视频链接", "charushipinlianjie", "crsplj"],
id: "insertVideoURL",
value: '<video controls="controls" src=""></video>',
html: `<div class="b3-list-item__first"><svg class="b3-list-item__graphic"><use xlink:href="#iconVideo"></use></svg><span class="b3-list-item__text">${window.siyuan.languages.insertVideoURL}</span></div>`,
}, {
filter: [window.siyuan.languages.insertAudioURL, "charuyinpinlianjie", "cryplj", "audio", "音频"],
filter: [window.siyuan.languages.insertAudioURL, "insert audio link", "插入音频链接", "charuyinpinlianjie", "cryplj"],
id: "insertAudioURL",
value: '<audio controls="controls" src=""></audio>',
html: `<div class="b3-list-item__first"><svg class="b3-list-item__graphic"><use xlink:href="#iconRecord"></use></svg><span class="b3-list-item__text">${window.siyuan.languages.insertAudioURL}</span></div>`,
@ -253,37 +253,37 @@ export const hintSlash = (key: string, protyle: IProtyle) => {
id: "separator_4",
html: "separator",
}, {
filter: [window.siyuan.languages.staff, "wuxianpu", "wxp", "staff", "五线谱"],
filter: [window.siyuan.languages.staff, "staff", "五线谱", "wuxianpu", "wxp"],
id: "staff",
value: "```abc\n```",
html: `<div class="b3-list-item__first"><span class="b3-list-item__text">ABC</span><span class="b3-list-item__meta">${window.siyuan.languages.staff}</span></div>`,
}, {
filter: [window.siyuan.languages.chart, "tubiao", "tb", "chart", "图表"],
filter: [window.siyuan.languages.chart, "chart", "图表", "tubiao", "tb"],
id: "chart",
value: "```echarts\n```",
html: `<div class="b3-list-item__first"><span class="b3-list-item__text">Chart</span><span class="b3-list-item__meta">${window.siyuan.languages.chart}</span></div>`,
}, {
filter: ["流程图", "liuchengtu", "lct", "flowchart"],
filter: ["flowchart", "flow chart", "流程图", "liuchengtu", "lct"],
id: "flowChart",
value: "```flowchart\n```",
html: '<div class="b3-list-item__first"><span class="b3-list-item__text">FlowChart</span><span class="b3-list-item__meta">Flow Chart</span></div>',
}, {
filter: ["状态图", "zhuangtaitu", "ztt", "graphviz"],
filter: ["graphviz", "状态图", "zhuangtaitu", "ztt"],
id: "graph",
value: "```graphviz\n```",
html: '<div class="b3-list-item__first"><span class="b3-list-item__text">Graphviz</span><span class="b3-list-item__meta">Graph</span></div>',
}, {
filter: ["图表", "tubiao", "tb", "diagram", "mermaid"],
filter: ["mermaid", "diagram", "图表", "tubiao", "tb"],
id: "mermaid",
value: "```mermaid\n```",
html: '<div class="b3-list-item__first"><span class="b3-list-item__text">Mermaid</span><span class="b3-list-item__meta">Mermaid</span></div>',
}, {
filter: [window.siyuan.languages.mindmap, "naotu", "nt"],
filter: [window.siyuan.languages.mindmap, "mindmap", "脑图", "naotu", "nt"],
id: "mindmap",
value: "```mindmap\n```",
html: `<div class="b3-list-item__first"><span class="b3-list-item__text">Mind map</span><span class="b3-list-item__meta">${window.siyuan.languages.mindmap}</span></div>`,
}, {
filter: ["建模语言", "jianmoyuyan", "jmyy", "PlantUML"],
filter: ["plantuml", "建模语言", "jianmoyuyan", "jmyy"],
id: "UML",
value: "```plantuml\n```",
html: '<div class="b3-list-item__first"><span class="b3-list-item__text">PlantUML</span><span class="b3-list-item__meta">UML</span></div>',
@ -292,27 +292,27 @@ export const hintSlash = (key: string, protyle: IProtyle) => {
id: "separator_5",
html: "separator",
}, {
filter: [window.siyuan.languages.infoStyle, "xinxiyangshi", "xxys"],
filter: [window.siyuan.languages.infoStyle, "info style", "信息样式", "xinxiyangshi", "xxys"],
id: "infoStyle",
value: `style${Constants.ZWSP}color: var(--b3-card-info-color);background-color: var(--b3-card-info-background);`,
html: `<div class="b3-list-item__first"><div style="color: var(--b3-card-info-color);background-color: var(--b3-card-info-background);" class="color__square color__square--list">A</div><span class="b3-list-item__text">${window.siyuan.languages.infoStyle}</span></div>`,
}, {
filter: [window.siyuan.languages.successStyle, "chenggongyangshi", "cgys"],
filter: [window.siyuan.languages.successStyle, "success style", "成功样式", "chenggongyangshi", "cgys"],
id: "successStyle",
value: `style${Constants.ZWSP}color: var(--b3-card-success-color);background-color: var(--b3-card-success-background);`,
html: `<div class="b3-list-item__first"><div style="color: var(--b3-card-success-color);background-color: var(--b3-card-success-background);" class="color__square color__square--list">A</div><span class="b3-list-item__text">${window.siyuan.languages.successStyle}</span></div>`,
}, {
filter: [window.siyuan.languages.warningStyle, "jinggaoyangshi", "jgys"],
filter: [window.siyuan.languages.warningStyle, "warning style", "警告样式", "jinggaoyangshi", "jgys"],
id: "warningStyle",
value: `style${Constants.ZWSP}color: var(--b3-card-warning-color);background-color: var(--b3-card-warning-background);`,
html: `<div class="b3-list-item__first"><div style="color: var(--b3-card-warning-color);background-color: var(--b3-card-warning-background);" class="color__square color__square--list">A</div><span class="b3-list-item__text">${window.siyuan.languages.warningStyle}</span></div>`,
}, {
filter: [window.siyuan.languages.errorStyle, "cuowuyangshi", "cwys"],
filter: [window.siyuan.languages.errorStyle, "error style", "错误样式", "cuowuyangshi", "cwys"],
id: "errorStyle",
value: `style${Constants.ZWSP}color: var(--b3-card-error-color);background-color: var(--b3-card-error-background);`,
html: `<div class="b3-list-item__first"><div style="color: var(--b3-card-error-color);background-color: var(--b3-card-error-background);" class="color__square color__square--list">A</div><span class="b3-list-item__text">${window.siyuan.languages.errorStyle}</span></div>`,
}, {
filter: [window.siyuan.languages.clearFontStyle, "qingchuyangshi", "qcys"],
filter: [window.siyuan.languages.clearFontStyle, "clear style", "清除样式", "qingchuyangshi", "qcys"],
id: "clearFontStyle",
value: `style${Constants.ZWSP}`,
html: `<div class="b3-list-item__first"><div class="color__square color__square--list">A</div><span class="b3-list-item__text">${window.siyuan.languages.clearFontStyle}</span></div>`,

View file

@ -93,7 +93,7 @@ func statTree(tree *parse.Tree) (ret *util.BlockStatResult) {
blockCount := 0
var databaseBlockNodes []*ast.Node
ast.Walk(tree.Root, func(n *ast.Node, entering bool) ast.WalkStatus {
if !entering {
if !entering || tree.Root == n {
return ast.WalkContinue
}

View file

@ -154,8 +154,9 @@ func refreshRefCount(rootID, blockID string) {
isDoc := bt.ID == bt.RootID
var rootRefIDs []string
var refCount, rootRefCount int
refIDs := sql.QueryRefIDsByDefID(bt.ID, isDoc)
var refIDs []string
if isDoc {
refIDs = sql.QueryRefIDsByDefID(bt.ID, isDoc)
rootRefIDs = refIDs
} else {
rootRefIDs = sql.QueryRefIDsByDefID(bt.RootID, true)
@ -169,7 +170,7 @@ func refreshRefCount(rootID, blockID string) {
defIDs = append(defIDs, bt.ID)
}
util.PushSetDefRefCount(rootID, blockID, refIDs, rootRefIDs, defIDs, refCount, rootRefCount)
util.PushSetDefRefCount(rootID, blockID, defIDs, refCount, rootRefCount)
}
// refreshDynamicRefText 用于刷新块引用的动态锚文本。

View file

@ -141,7 +141,7 @@ func QueryRootChildrenRefCount(defRootID string) (ret map[string]int) {
func QueryRootBlockRefCount() (ret map[string]int) {
ret = map[string]int{}
rows, err := query("SELECT def_block_root_id, COUNT(*) AS ref_cnt FROM refs GROUP BY def_block_root_id")
rows, err := query("SELECT def_block_root_id, COUNT(DISTINCT block_id) AS ref_cnt FROM refs GROUP BY def_block_root_id")
if err != nil {
logging.LogErrorf("sql query failed: %s", err)
return
@ -362,9 +362,9 @@ func QueryRefIDsByDefID(defID string, containChildren bool) (refIDs []string) {
var rows *sql.Rows
var err error
if containChildren {
rows, err = query("SELECT block_id FROM refs WHERE def_block_root_id = ?", defID)
rows, err = query("SELECT DISTINCT block_id FROM refs WHERE def_block_root_id = ?", defID)
} else {
rows, err = query("SELECT block_id FROM refs WHERE def_block_id = ?", defID)
rows, err = query("SELECT DISTINCT block_id FROM refs WHERE def_block_id = ?", defID)
}
if err != nil {
logging.LogErrorf("sql query failed: %s", err)

View file

@ -271,8 +271,8 @@ func PushSetRefDynamicText(rootID, blockID, defBlockID, refText string) {
BroadcastByType("main", "setRefDynamicText", 0, "", map[string]interface{}{"rootID": rootID, "blockID": blockID, "defBlockID": defBlockID, "refText": refText})
}
func PushSetDefRefCount(rootID, blockID string, refIDs, rootRefIDs, defIDs []string, refCount, rootRefCount int) {
BroadcastByType("main", "setDefRefCount", 0, "", map[string]interface{}{"rootID": rootID, "blockID": blockID, "refCount": refCount, "rootRefCount": rootRefCount, "refIDs": refIDs, "rootRefIDs": rootRefIDs, "defIDs": defIDs})
func PushSetDefRefCount(rootID, blockID string, defIDs []string, refCount, rootRefCount int) {
BroadcastByType("main", "setDefRefCount", 0, "", map[string]interface{}{"rootID": rootID, "blockID": blockID, "refCount": refCount, "rootRefCount": rootRefCount, "defIDs": defIDs})
}
func PushProtyleLoading(rootID, msg string) {