瀏覽代碼

:art: fix https://github.com/siyuan-note/siyuan/issues/5073

Vanessa 3 年之前
父節點
當前提交
4169b566e8

+ 1 - 0
app/appearance/langs/en_US.json

@@ -1,4 +1,5 @@
 {
 {
+  "pasteEscaped": "Paste escaped text",
   "resetRepoTip": "Resetting the data repository will completely delete the key and all snapshots, are you sure you want to reset?",
   "resetRepoTip": "Resetting the data repository will completely delete the key and all snapshots, are you sure you want to reset?",
   "resetRepo": "Reset data repo",
   "resetRepo": "Reset data repo",
   "createSnapshot": "Create snapshot",
   "createSnapshot": "Create snapshot",

+ 1 - 0
app/appearance/langs/fr_FR.json

@@ -1,4 +1,5 @@
 {
 {
+  "pasteEscaped": "Coller le texte échappé",
   "resetRepoTip": "La réinitialisation du référentiel de données supprimera complètement la clé et tous les instantanés, êtes-vous sûr de vouloir réinitialiser ?",
   "resetRepoTip": "La réinitialisation du référentiel de données supprimera complètement la clé et tous les instantanés, êtes-vous sûr de vouloir réinitialiser ?",
   "resetRepo": "Réinitialiser le référentiel de données",
   "resetRepo": "Réinitialiser le référentiel de données",
   "createSnapshot": "Créer un instantané",
   "createSnapshot": "Créer un instantané",

+ 1 - 0
app/appearance/langs/zh_CHT.json

@@ -1,4 +1,5 @@
 {
 {
+  "pasteEscaped": "粘貼轉義文本",
   "resetRepoTip": "重置數據倉庫會徹底刪除密鑰和所有快照,確定進行重置嗎?",
   "resetRepoTip": "重置數據倉庫會徹底刪除密鑰和所有快照,確定進行重置嗎?",
   "resetRepo": "重置數據倉庫",
   "resetRepo": "重置數據倉庫",
   "createSnapshot": "創建快照",
   "createSnapshot": "創建快照",

+ 1 - 0
app/appearance/langs/zh_CN.json

@@ -1,4 +1,5 @@
 {
 {
+  "pasteEscaped": "粘贴转义文本",
   "resetRepoTip": "重置数据仓库会彻底删除密钥和所有快照,确定进行重置吗?",
   "resetRepoTip": "重置数据仓库会彻底删除密钥和所有快照,确定进行重置吗?",
   "resetRepo": "重置数据仓库",
   "resetRepo": "重置数据仓库",
   "createSnapshot": "创建快照",
   "createSnapshot": "创建快照",

+ 14 - 0
app/src/menus/protyle.ts

@@ -296,6 +296,20 @@ export const contentMenu = (protyle: IProtyle, nodeElement: Element) => {
         }
         }
     }).element);
     }).element);
     /// #endif
     /// #endif
+    window.siyuan.menus.menu.append(new MenuItem({
+        label: window.siyuan.languages.pasteEscaped,
+        async click() {
+            try {
+                // * _ [ ] ! \ ` < > & ~ { } ( ) = # $ ^ |
+                let clipText = await navigator.clipboard.readText();
+                clipText = clipText.replace(/\*/g, "\\*").replace(/\_/g, "\\_").replace(/\[/g, "\\[").replace(/\]/g, "\\]").replace(/\!/g, "\\!").replace(/\\/g, "\\").replace(/\`/g, "\\`").replace(/\</g, "\\<").replace(/\>/g, "\\>").
+                replace(/\&/g, "\\&").replace(/\~/g, "\\~").replace(/\{/g, "\\{").replace(/\}/g, "\\}").replace(/\(/g, "\\(").replace(/\)/g, "\\)").replace(/\=/g, "\\=").replace(/\#/g, "\\#").replace(/\$/g, "\\$").replace(/\^/g, "\\^").replace(/\|/g, "\\|")
+                pasteText(protyle, clipText, nodeElement);
+            } catch (e) {
+                console.log(e);
+            }
+        }
+    }).element);
     window.siyuan.menus.menu.append(new MenuItem({
     window.siyuan.menus.menu.append(new MenuItem({
         label: window.siyuan.languages.selectAll,
         label: window.siyuan.languages.selectAll,
         accelerator: "⌘A",
         accelerator: "⌘A",