From 20454da599c97791fca1d86c6a565aab209e4065 Mon Sep 17 00:00:00 2001 From: xiejianglei Date: Wed, 10 Jan 2024 01:07:40 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E5=A2=9E=E5=8A=A0latex=E5=8D=95=E8=A1=8C?= =?UTF-8?q?=E5=85=AC=E5=BC=8F=E5=88=B7=E5=92=8C=E5=A4=9A=E8=A1=8C=E5=85=AC?= =?UTF-8?q?=E5=BC=8F=E5=88=B7=E5=8A=9F=E8=83=BD,=E5=8F=AF=E4=BB=A5?= =?UTF-8?q?=E8=BD=AC=E4=B8=BA=E6=88=96=E5=8F=96=E6=B6=88latex=E5=85=AC?= =?UTF-8?q?=E5=BC=8F=20=E5=8F=AF=E4=BB=A5=E5=AF=B9latex=E6=96=87=E6=9C=AC?= =?UTF-8?q?=E4=B8=8E=E5=85=AC=E5=BC=8F=E5=AE=9E=E6=97=B6=E6=95=88=E6=9E=9C?= =?UTF-8?q?=E8=BF=9B=E8=A1=8C=E8=BD=AC=E6=8D=A2.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.js | 557 +++++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 386 insertions(+), 171 deletions(-) diff --git a/main.js b/main.js index 6a8a8ff..493625b 100644 --- a/main.js +++ b/main.js @@ -6,11 +6,12 @@ var obsidian = require('obsidian'); 使用声明 ZH增强编辑插件借鉴多款社区插件开发而成,蚕子水平有限,代码或有缺陷,不能保证任何操作均会正常,请在使用之前备份库笔记,谢谢配合。 开发:蚕子 QQ:312815311 更新时间:2023-10-31 +pull request: xjl456852 更新时间:2024-01-10 功能:增加单行和多行公式刷功能 ***************************************************************************** */ -const 当前版本 = '0.6.4'; -const 功能更新 = '当前版本\n- 增加「标签双链互转 Ctrl+Alt+Shift+3」功能\n- 增加按ESC键关闭格式刷功能 \n- 优化功能菜单项及说明文档 \n- 补充修复外来文本功能 \n- 修正插件功能的说明文字(感谢 disjuno) \n- 增加一、二级标题格式刷功能 \n- 去除插入制表符「Tab」功能 \n- 优化「列表转图示」功能 \n- 增加「获取当前字符数」功能 \n- 增加「插入有效空行」功能 \n- 增加「空格转为空行」功能 \n- 状态栏显示Markdown及Html语法格式刷 \n- 状态栏显示实用功能菜单 \n- 增加「获取搜索结果(列表)」功能 \n- ...'; +const 当前版本 = '0.6.4.1'; +const 功能更新 = '当前版本\n- 增加 单行公式刷和多行公式刷 功能\n「标签转为内链 Ctrl+Alt+Shift+3」功能\n- 增加按ESC键关闭格式刷功能 \n- 优化功能菜单项及说明文档 \n- 补充修复外来文本功能 \n- 修正插件功能的说明文字(感谢 disjuno) \n- 增加一、二级标题格式刷功能 \n- 去除插入制表符「Tab」功能 \n- 优化「列表转图示」功能 \n- 增加「获取当前字符数」功能 \n- 增加「插入有效空行」功能 \n- 增加「空格转为空行」功能 \n- 状态栏显示Markdown及Html语法格式刷 \n- 状态栏显示实用功能菜单 \n- 增加「获取搜索结果(列表)」功能 \n- ...'; const 宣传页面 = '查看 Github 页面,联系蚕子'; const 上标图标 =''; const 下标图标 = ''; @@ -74,6 +75,8 @@ var isbt2Txt = false; var isText = false; var isGLS = false; var isCTS = false; +var isSLatex = false; +var isMLatex = false; var isXTS = false; var isSCS = false; var isXHS = false; @@ -124,11 +127,16 @@ class MyPlugin extends obsidian.Plugin { hotkeys: [{ modifiers: ["Alt","Shift"], key: "3" } ] }); this.addCommand({ - id: 'tag-link-text', - name: '标签双链互转', - callback: () => this.标签双链互转(), + id: 'tag2link-text', + name: '标签转为内链', + callback: () => this.标签转为内链(), hotkeys: [{ modifiers: ["Mod","Alt","Shift"], key: "3" } ] }); + this.addCommand({ + id: 'link2tag-text', + name: '内链转为标签', + callback: () => this.内链转为标签() + }); /**/ this.addCommand({ @@ -304,6 +312,18 @@ class MyPlugin extends obsidian.Plugin { new obsidian.Notice("已关闭格式刷!"); } }); + this.addCommand({ + id: 'single-latex-format', + name: '$单行公式$格式刷', + callback: () => this.单行公式刷(), + hotkeys: [{ modifiers: ["Alt","Shift"], key: "P" } ] + }); + this.addCommand({ + id: 'multiple-latex-format', + name: '$多行公式$格式刷', + callback: () => this.多行公式刷(), + hotkeys: [{ modifiers: ["Alt","Shift"], key: "L" } ] + }); this.addCommand({ id: 'cuti-format', name: '**粗体**格式刷', @@ -798,29 +818,6 @@ class MyPlugin extends obsidian.Plugin { hotkeys: [{ modifiers: ["Mod","Shift","Alt"], key: "D" } ] }); - this.addCommand({ - id: 'promote-lines-level', - name: '调高所有标题级别', - callback: () => this.调高所有标题级别() - }); - this.addCommand({ - id: 'Down-lines-level', - name: '调低所有标题级别', - callback: () => this.调低所有标题级别() - }); - /* - this.addCommand({ - id: 'promote-texts-level', - name: '调高所选标题级别', - callback: () => this.调高所选标题级别() - }); - this.addCommand({ - id: 'Down-texts-level', - name: '调低所选标题级别', - callback: () => this.调低所选标题级别() - }); - */ - this.addCommand({ id: 'modify-link-showname', name: '修改内部链接的显示名称', @@ -893,12 +890,12 @@ class MyPlugin extends obsidian.Plugin { }); this.addCommand({ id: 'add-twoSpace', - name: '全文行首缩进/取消缩进', + name: '全文缩进', callback: () => this.全文首行缩进() }); this.addCommand({ id: 'this-twoSpace', - name: '当前行缩进/取消缩进两字符', + name: '当前行缩进', callback: () => this.当前行缩进() }); this.addCommand({ @@ -981,6 +978,10 @@ class MyPlugin extends obsidian.Plugin { this.转换高亮2(); }else if(isGLS3){ this.转换高亮3(); + }else if(isSLatex){ + this.转换公式(); + }else if(isMLatex){ + this.转换公式1(); }else if(isCTS){ this.转换粗体(); }else if(isXTS){ @@ -1006,7 +1007,7 @@ class MyPlugin extends obsidian.Plugin { //}; } - }else if(isText||isCTxt ||isBgC ||isCTS || isGLS || isGLS1 ||isGLS2 ||isGLS3 ||isSB || isSCS || isXB || isXHS || isXTS || isTHS ||isTCS||isWKS || isbt2Txt || isbt1Txt){ + }else if(isText||isCTxt ||isBgC ||isCTS || isSLatex || isMLatex || isGLS || isGLS1 ||isGLS2 ||isGLS3 ||isSB || isSCS || isXB || isXHS || isXTS || isTHS ||isTCS||isWKS || isbt2Txt || isbt1Txt){ this.关闭格式刷(); newNotice = new obsidian.Notice("已关闭格式刷!"); } @@ -1034,7 +1035,7 @@ class MyPlugin extends obsidian.Plugin { isShift =true; } if(e.key == "Esc" || e.key == "Escape"){ - if(isText||isCTxt ||isBgC ||isCTS || isGLS || isGLS1 ||isGLS2 ||isGLS3 ||isSB || isSCS || isXB || isXHS || isXTS || isTHS ||isTCS||isWKS || isbt2Txt || isbt1Txt){ + if(isText||isCTxt ||isBgC ||isCTS || isSLatex || isMLatex || isGLS || isGLS1 ||isGLS2 ||isGLS3 ||isSB || isSCS || isXB || isXHS || isXTS || isTHS ||isTCS||isWKS || isbt2Txt || isbt1Txt){ this.关闭格式刷(); newNotice = new obsidian.Notice("已关闭格式刷!"); } @@ -1193,16 +1194,7 @@ class MyPlugin extends obsidian.Plugin { item.setIcon("double-up-arrow-glyph"); item.onClick(() =>this.折叠同级标题()); }); - menu.addItem((item) => { - item.setTitle("提升多个标题等级"); - item.setIcon("double-up-arrow-glyph"); - item.onClick(() =>this.调高所有标题级别()); - }); - menu.addItem((item) => { - item.setTitle("下调多个标题等级"); - item.setIcon("double-down-arrow-glyph"); - item.onClick(() =>this.调低所有标题级别()); - }); + menu.addItem((item) => { item.setTitle("嵌入当前网址"); item.setIcon("link"); @@ -1296,7 +1288,7 @@ class MyPlugin extends obsidian.Plugin { if(当前模式.state.mode == "preview"){ this.app.commands.executeCommandById("markdown:toggle-preview"); }; - if(isCTxt ||isBgC ||isCTS || isGLS ||isGLS1 ||isGLS2 ||isGLS3 || isSB || isSCS || isXB || isXHS || isXTS|| isTHS ||isTCS||isWKS){ + if(isCTxt ||isBgC ||isCTS || isSLatex || isMLatex || isGLS ||isGLS1 ||isGLS2 ||isGLS3 || isSB || isSCS || isXB || isXHS || isXTS|| isTHS ||isTCS||isWKS){ this.关闭格式刷(); new obsidian.Notice("已关闭格式刷!"); } @@ -1357,7 +1349,18 @@ class MyPlugin extends obsidian.Plugin { new obsidian.Notice("二级标题格式刷 已打开!") }); }); - + menu.addItem((item) => { + item.setTitle("$单行公式刷$"); + item.setIcon("普通格式刷"); + item.setSection("format"); + item.onClick(() =>this.单行公式刷()); + }); + menu.addItem((item) => { + item.setTitle("$$多行公式刷$$"); + item.setIcon("普通格式刷"); + item.setSection("format"); + item.onClick(() =>this.多行公式刷()); + }); menu.addItem((item) => { item.setTitle("**粗体**"); item.setIcon("普通格式刷"); @@ -1543,8 +1546,8 @@ class MyPlugin extends obsidian.Plugin { } async loadSettings() { - console.log('加载了配置'); - console.log(this.app.customCss.themes); + console.log('增强编辑 已完成加载,有问题请联系蚕子(qq:312815311)'); + //console.log(this.app.customCss.themes); this.settings = Object.assign({}, DEFAULT_SETTINGS, await this.loadData()); } @@ -1682,7 +1685,7 @@ class MyPlugin extends obsidian.Plugin { }else{ return; } - console.log('表达式 '+表达式); + //console.log('表达式 '+表达式); //逐行判断是否符合指定表达式 for (var i=1;i<=末行行号;i++){ var 新行号; @@ -1720,7 +1723,7 @@ class MyPlugin extends obsidian.Plugin { }else{ 表达式 = 所选文本; } - console.log('表达式 '+表达式); + //console.log('表达式 '+表达式); 选至文首 = 编辑模式.getRange({line:0,ch:0},当前光标); var 以前字数 = 选至文首.length; var 返回位置 = 0; @@ -1805,6 +1808,8 @@ class MyPlugin extends obsidian.Plugin { isGLS1 =false; ///*==多彩高亮==* isGLS2 =false; ///**==多彩高亮==** isGLS3 =false; ///***==多彩高亮==*** + isSLatex = false; //单行公式$ + isMLatex = false; //多行公式$$ isCTS =false; //**粗体** isXTS = false; //*斜体* isSCS = false; //~~删除线~~ @@ -1905,20 +1910,35 @@ class MyPlugin extends obsidian.Plugin { this.替换所选文本 (所选文本); }; - 标签双链互转() { + 标签转为内链() { this.获取编辑器信息 (); if(所选文本 == ""){ return; }; - let tagReg = /(^|\s*)#([^#\s\/]+)(\s|[^\/]|\r*\n|$)/g; - let linkReg = /\[\[([^\[\]]+)\]\]/g; + let tagReg = /(?<=(^|\s?))#([^#\s\/]+)(?=(\s|[^\/]|\r*\n|$))/g; if (tagReg.test(所选文本)) { 所选文本 = 所选文本.replace(tagReg, "[[$2]]"); - }else if(linkReg.test(所选文本)){ + this.替换所选文本 (所选文本); + }else{ + return + } + + }; + + 内链转为标签() { + this.获取编辑器信息 (); + if(所选文本 == ""){ + return; + }; + + let linkReg = / ?\[\[([^\[\]]+)\]\] ?/g; + if(linkReg.test(所选文本)){ 所选文本 = 所选文本.replace(linkReg, " #$1 "); - } - this.替换所选文本 (所选文本); + this.替换所选文本 (所选文本); + }else{ + return + } }; 切换模式() { @@ -2023,7 +2043,7 @@ class MyPlugin extends obsidian.Plugin { for (const file of this.app.vault.getMarkdownFiles()) { if(file.name != 当前文件名){ fileNameAry.push(file.basename); - console.log(file.name) + //console.log(file.name) } }; fileNameAry.sort().reverse(); @@ -2087,6 +2107,34 @@ class MyPlugin extends obsidian.Plugin { } }; + 单行公式刷() { + this.获取编辑器信息 (); + if(所选文本 == ""){ + if(isSLatex){ + isSLatex = false; + this.关闭格式刷(); + new obsidian.Notice("已关闭单行公式刷!"); + }else{ + this.关闭格式刷(); + isSLatex = true; + newNotice = new obsidian.Notice("$单行公式刷$ 已打开!",0); + }; + }; + }; + 多行公式刷() { + this.获取编辑器信息 (); + if(所选文本 == ""){ + if(isMLatex){ + isMLatex = false; + this.关闭格式刷(); + new obsidian.Notice("已多行公式刷!"); + }else{ + this.关闭格式刷(); + isMLatex = true; + newNotice = new obsidian.Notice("$$多行公式刷$$ 已打开!\n首尾不要选中标点。",0); + }; + }; + }; 粗体格式刷() { this.获取编辑器信息 (); if(所选文本 == ""){ @@ -2134,6 +2182,61 @@ class MyPlugin extends obsidian.Plugin { } } }; + 转换公式() { + this.获取编辑器信息 (); + if(所选文本 == ""){ + if(isSLatex){ + isSLatex = false; + newNotice.hide(); + new obsidian.Notice("已关闭单行公式刷!"); + } + 笔记全文.replaceRange("****", 当前光标, 当前光标); + 编辑模式.exec("goRight"); + 编辑模式.exec("goRight"); + }else{ + var link = /.*(\$)([^\$]*)(\$).*/g; //是否包含公式符号 + var link1 = /^[^\$](\$)[^\$]*$/; //是否只包含一侧的$ + if (link1.test(所选文本)){ + return; //new obsidian.Notice("只有一侧出现==符号"); + }else if (link.test(所选文本)){ + 所选文本 = 所选文本.replace(/(\$)/g,""); //new obsidian.Notice("成对出现$符号"); + this.替换所选文本 (所选文本); + }else{ + + 所选文本 = 所选文本.replace(/^([\t\s]*)([^\t\s])/mg,"$1$$$2").replace(/([^\t\s])([\t\s]*)$/mg,"$1$$$2"); + 所选文本 = 所选文本.replace(/^\$\$$/mg,""); + + this.替换所选文本 (所选文本); + 编辑模式.exec("goRight"); + } + } + }; + 转换公式1() { + this.获取编辑器信息 (); + if(所选文本 == ""){ + if(isMLatex){ + isMLatex = false; + newNotice.hide(); + new obsidian.Notice("已关闭多行公式刷!"); + } + 笔记全文.replaceRange("****", 当前光标, 当前光标); + 编辑模式.exec("goRight"); + 编辑模式.exec("goRight"); + }else{ + var link = /.*(\$\$)([^\$]*)(\$\$).*/g; //是否包含公式符号 + var link1 = /^[^\$](\$\$)[^\$]*$/; //是否只包含一侧的$$ + if (link1.test(所选文本)){ + return; //new obsidian.Notice("只有一侧出现==符号"); + }else if (link.test(所选文本)){ + 所选文本 = 所选文本.replace(/(\$\$\n|\n\$\$)/g,""); //new obsidian.Notice("成对出现$$符号"); + this.替换所选文本 (所选文本); + }else{ + 所选文本 = 所选文本.replace(/^([\t\s]*)([^\t\s])/g,"$1$$$$\n$2").replace(/([^\t\s])([\t\s]*)$/g,"$1\n$$$$$2"); + this.替换所选文本 (所选文本); + 编辑模式.exec("goRight"); + } + } + }; 高亮格式刷() { this.获取编辑器信息 (); @@ -2971,7 +3074,7 @@ class MyPlugin extends obsidian.Plugin { 新文本 = 当前行文本.replace(/^(\>*(\[[!\w]+\])?\s*)#+\s/,"$1"); }else{ //列表、引用,先转为普通文本,再转为标题 新文本 = 当前行文本.replace(/^\s*(#*|\>|\-|\d+\.)\s*/m,""); - console.log(新文本); + //console.log(新文本); 新文本 = _str+" "+新文本; } //笔记全文.replaceRange(新文本, {line:当前行号,ch:0}, {line:当前行号,ch:当前行文本.length}); @@ -2981,28 +3084,167 @@ class MyPlugin extends obsidian.Plugin { 调节标题级别(增加) { this.获取编辑器信息 (); - let 新文本 = ""; - let 位置 = 选至行首.length; - if(增加){ - if(/^##+\s/.test(当前行文本)){ - 新文本 = 当前行文本.replace(/(^\s*)##/,"$1#"); - 位置-- + if(所选文本 == ""){ + let 新文本 = ""; + let 位置 = 选至行首.length; + if(增加){ + if(/^#+ /.test(当前行文本)){ + this.app.commands.executeCommandById('editor:unfold-all'); + let _str = 当前行文本.replace(/^(#{2,6}) .*$/,"$1"); //获取前面的多个#号 + //new obsidian.Notice("当前为标题行 "+_str); + // 如果 前缀# >= 2 个,替换掉首个#符号,即提升一级 + let 新标题 = 当前行文本.replace(/^#/,"") + 笔记全文.replaceRange(新标题,{line:当前行号,ch:0},{line:当前行号,ch:当前行文本.length}); + var 末行行号 = 编辑模式.lastLine(); + //console.log(当前行号+" "+末行行号); + let 临时行文本 + for (var i = 当前行号+1; i <= 末行行号; i++) { + 临时行文本 = 编辑模式.getLine(i); + if(/^#+ /.test(临时行文本)){ + //console.log(i+" "+临时行文本); + // 临时行文本包含当前标题的 前缀# 符号组,代表下级标题 + if(eval("/^"+_str+"(?=#)/").test(临时行文本)){ + let 提升标题 = 临时行文本.replace(/^#/,"") + 笔记全文.replaceRange(提升标题,{line:i,ch:0},{line:i,ch:临时行文本.length}); + }else{ + break + } + } + } + } }else{ - return; + if(/^#+ /.test(当前行文本)){ + this.app.commands.executeCommandById('editor:unfold-all'); + let _str = 当前行文本.replace(/^(#{1,5}) .*$/,"$1"); //获取前面的多个#号 + //new obsidian.Notice("当前为标题行 "+_str); + // 如果 前缀# >= 2 个,替换掉首个#符号,即提升一级 + let 新标题 = 当前行文本.replace(/^/,"#") + 笔记全文.replaceRange(新标题,{line:当前行号,ch:0},{line:当前行号,ch:当前行文本.length}); + var 末行行号 = 编辑模式.lastLine(); + //console.log(当前行号+" "+末行行号); + let 临时行文本 + for (var i = 当前行号+1; i <= 末行行号; i++) { + 临时行文本 = 编辑模式.getLine(i); + if(/^#{1,5} /.test(临时行文本)){ + //console.log(i+" "+临时行文本); + // 临时行文本包含当前标题的 前缀# 符号组,代表下级标题 + if(eval("/^"+_str+"(?=#)/").test(临时行文本)){ + let 提升标题 = 临时行文本.replace(/^/,"#") + 笔记全文.replaceRange(提升标题,{line:i,ch:0},{line:i,ch:临时行文本.length}); + }else{ + break + } + } + } + } } + //笔记全文.replaceRange(新文本, {line:当前行号,ch:0}, {line:当前行号,ch:当前行文本.length}); + 编辑模式.setLine(当前行号,新文本); + 编辑模式.setCursor({line:当前行号,ch:位置}); }else{ - if(/^#{1,5}\s/.test(当前行文本)){ - 新文本 = 当前行文本.replace(/(^[‌‌‌‌‌‌ ]*)#/,"$1##"); - 位置++ + if(增加){ + if (!所选文本) return; + 所选文本 = 所选文本.replace(/(?<=^#+)# /mg," "); + this.替换所选文本 (所选文本); }else{ - return; + if (!所选文本) return; + 所选文本 = 所选文本.replace(/(?<=^#*)# /mg,"## "); + this.替换所选文本 (所选文本); } } - //笔记全文.replaceRange(新文本, {line:当前行号,ch:0}, {line:当前行号,ch:当前行文本.length}); - 编辑模式.setLine(当前行号,新文本); - 编辑模式.setCursor({line:当前行号,ch:位置}); }; + /* + 调高多个标题级别() { + this.获取编辑器信息 (); + if (!笔记全文) return; + if(/^#+ /.test(当前行文本)){ + this.app.commands.executeCommandById('editor:unfold-all'); + let _str = 当前行文本.replace(/^(#{2,6}) .*$/,"$1"); //获取前面的多个#号 + //new obsidian.Notice("当前为标题行 "+_str); + // 如果 前缀# >= 2 个,替换掉首个#符号,即提升一级 + let 新标题 = 当前行文本.replace(/^#/,"") + 笔记全文.replaceRange(新标题,{line:当前行号,ch:0},{line:当前行号,ch:当前行文本.length}); + var 末行行号 = 编辑模式.lastLine(); + //console.log(当前行号+" "+末行行号); + let 临时行文本 + for (var i = 当前行号+1; i <= 末行行号; i++) { + 临时行文本 = 编辑模式.getLine(i); + if(/^#+ /.test(临时行文本)){ + //console.log(i+" "+临时行文本); + // 临时行文本包含当前标题的 前缀# 符号组,代表下级标题 + if(eval("/^"+_str+"(?=#)/").test(临时行文本)){ + let 提升标题 = 临时行文本.replace(/^#/,"") + 笔记全文.replaceRange(提升标题,{line:i,ch:0},{line:i,ch:临时行文本.length}); + }else{ + break + } + } + } + } + }; + + 调低多个标题级别() { + this.获取编辑器信息 (); + if (!笔记全文) return; + if(/^#+ /.test(当前行文本)){ + this.app.commands.executeCommandById('editor:unfold-all'); + let _str = 当前行文本.replace(/^(#{1,5}) .*$/,"$1"); //获取前面的多个#号 + //new obsidian.Notice("当前为标题行 "+_str); + // 如果 前缀# >= 2 个,替换掉首个#符号,即提升一级 + let 新标题 = 当前行文本.replace(/^/,"#") + 笔记全文.replaceRange(新标题,{line:当前行号,ch:0},{line:当前行号,ch:当前行文本.length}); + var 末行行号 = 编辑模式.lastLine(); + //console.log(当前行号+" "+末行行号); + let 临时行文本 + for (var i = 当前行号+1; i <= 末行行号; i++) { + 临时行文本 = 编辑模式.getLine(i); + if(/^#{1,5} /.test(临时行文本)){ + //console.log(i+" "+临时行文本); + // 临时行文本包含当前标题的 前缀# 符号组,代表下级标题 + if(eval("/^"+_str+"(?=#)/").test(临时行文本)){ + let 提升标题 = 临时行文本.replace(/^/,"#") + 笔记全文.replaceRange(提升标题,{line:i,ch:0},{line:i,ch:临时行文本.length}); + }else{ + break + } + } + } + } + }; + + 调高所有标题级别() { + this.获取编辑器信息 (); + if (!笔记正文) return; + 笔记正文 = 笔记正文.replace(/(?<=^#+)# /mg," "); + this.替换笔记正文 (笔记正文); + }; + + 调低所有标题级别() { + this.获取编辑器信息 (); + if (!笔记正文) return; + 笔记正文 = 笔记正文.replace(/(?<=^#*)# /mg,"## "); + this.替换笔记正文 (笔记正文); + }; + */ + + /* + 以下修改所选范围的标题行级别,代码失败,不能很好的获取到选区的首行和末行,处理后无法恢复选区范围 + 调高所选标题级别() { + this.获取编辑器信息 (); + if (!所选文本) return; + 所选文本 = 所选文本.replace(/(?<=^#+)# /mg," "); + this.替换所选文本 (所选文本); + }; + + 调低所有标题级别() { + this.获取编辑器信息 (); + if (!所选文本) return; + 所选文本 = 所选文本.replace(/(?<=^#*)# /mg,"## "); + this.替换所选文本 (所选文本); + }; + */ + 彩字格式刷(_color){ this.关闭格式刷(); isCTxt = true; @@ -3212,7 +3454,7 @@ class MyPlugin extends obsidian.Plugin { this.获取编辑器信息 (); let reg = /^[\t\s]*\d+(?=\.\s[^\s])/mg; if(当前行文本.match(reg)==null){ - console.log("当前不是列表"); + //console.log("当前不是列表"); let reg1 =/^(.*\[\[)[^\[]+$/; let reg2 = /^[^\]]+(\]\].*)$/; @@ -3277,11 +3519,11 @@ class MyPlugin extends obsidian.Plugin { 所选文本 = 所选文本.replace(/\n/g,"↫"); if(所选文本.includes(">[!")){ //new obsidian.Notice("需要去除>符号"); - 所选文本 = 所选文本.replace(/↫?>\[![^↫]+(?=↫)/m,""); + 所选文本 = 所选文本.replace(/↫?\>\[![^↫]+(?=↫)/m,""); 所选文本 = 所选文本.replace(/↫\>/g,"\n"); }else{ //new obsidian.Notice("需要补充>符号"); - 所选文本 = 所选文本.replace(/^(.*)$/m,">[!note]↫$1"); + 所选文本 = 所选文本.replace(/^(.+)$/m,">[!note]↫$1"); 所选文本 = 所选文本.replace(/↫/g,"\n>"); } this.替换所选文本 (所选文本); @@ -3358,7 +3600,7 @@ class MyPlugin extends obsidian.Plugin { //navigator.clipboard.writeText(所选文本); //this.app.workspace.activeLeaf.replaceSelection(所选文本); this.app.vault.adapter.rename(当前文件路径, 所选文本+".md"); //强行重命名,不能全局更新 - console.log(当前文件路径+"\n"+所选文本); + new obsidian.Notice(当前文件路径+"\n"+所选文本); }; 获取相对路径 () { @@ -3424,7 +3666,7 @@ class MyPlugin extends obsidian.Plugin { clipText = clipText.replace(/(?<=\|)(?=\|)/g," "); new obsidian.Notice("剪贴板数据已转为MD语法表格!"); }else if(htmlReg.test(tmpText)){ - console.log('获取到富文本'); + new obsidian.Notice('获取到富文本'); }else/* if(codeReg.test(tmpText))*/{ clipText = "```\n"+clipText+"\n```\n" new obsidian.Notice("剪贴板数据已转为代码块格式!"); @@ -3786,37 +4028,6 @@ class MyPlugin extends obsidian.Plugin { } } }; - - 调高所有标题级别() { - this.获取编辑器信息 (); - if (!笔记正文) return; - 笔记正文 = 笔记正文.replace(/(?<=^#+)# /mg," "); - this.替换笔记正文 (笔记正文); - }; - - 调低所有标题级别() { - this.获取编辑器信息 (); - if (!笔记正文) return; - 笔记正文 = 笔记正文.replace(/(?<=^#*)# /mg,"## "); - this.替换笔记正文 (笔记正文); - }; - - /* - 以下修改所选范围的标题行级别,代码失败,不能很好的获取到选区的首行和末行,处理后无法恢复选区范围 - 调高所选标题级别() { - this.获取编辑器信息 (); - if (!所选文本) return; - 所选文本 = 所选文本.replace(/(?<=^#+)# /mg," "); - this.替换所选文本 (所选文本); - }; - - 调低所有标题级别() { - this.获取编辑器信息 (); - if (!所选文本) return; - 所选文本 = 所选文本.replace(/(?<=^#*)# /mg,"## "); - this.替换所选文本 (所选文本); - }; - */ //火冷添加 @@ -3968,7 +4179,7 @@ class MyPlugin extends obsidian.Plugin { //new obsidian.Notice(笔记正文); if(isIndent){ 笔记正文 = 笔记正文.replace(/^[‌‌‌‌ ]+/mg,""); - 笔记正文 = 笔记正文.replace(/^(?!(\s*\d+\.\s|\s*\-\.\s|[\n\s\>#]+|```|\-\-\-|\|[^\|]|\*\*\*))/mg,"‌‌‌‌  "); + 笔记正文 = 笔记正文.replace(/^(?!(\s*\d+\.\s|[a-zA-Z一-龟]+:|\s*\-\.?\s|[\n\s\>#]+|```|\-\-\-|\|[^\|]|\*\*\*))/mg,"‌‌‌‌  "); isIndent = false; }else{ 笔记正文 = 笔记正文.replace(/^[‌‌‌‌ ]+/mg,""); @@ -4358,47 +4569,51 @@ class editSettingsTab extends obsidian.PluginSettingTab { cls: 'recent-files-donation', }); var mdText = document.createDocumentFragment(); - mdText.appendText('转换标题语法「待设置」:指定或取消当前行文本为N级标题;'); + mdText.appendText('转换标题语法「待设置」:指定或取消当前行文本为N级标题'); mdText.appendChild(document.createElement('br')); - mdText.appendText('修改内部链接的显示名称「待设置」:从内部链接里路径中提取名称做为 [[|名称]] 显示。感谢火冷(85399416)增强相关功能;'); + mdText.appendText('修改内部链接的显示名称「待设置」:从内部链接里路径中提取名称做为 [[|名称]] 显示,感谢火冷(85399416)增强相关功能'); mdText.appendChild(document.createElement('br')); - mdText.appendText('调高标题级别「待设置」:将当前标题级别调高一级(最高为一级);'); + mdText.appendText('调高标题级别「待设置」:将当前行标题(及子标题)或所选范围的标题级别调高。建议:空(1977878681)'); mdText.appendChild(document.createElement('br')); - mdText.appendText('调低标题级别「待设置」:将当前标题级别调低一级(最低为六级);'); + mdText.appendText('调低标题级别「待设置」:将当前行标题(及子标题)或所选范围的标题级别调低。建议:空(1977878681)'); mdText.appendChild(document.createElement('br')); - mdText.appendText('调高所有标题级别「待设置」:将所有标题的级别调高一级(最高为一级)。建议:空 QQ:1977878681;'); + //mdText.appendText('调高所有标题级别「待设置」:将所有标题的级别调高一级(最高为一级)。'); + //mdText.appendChild(document.createElement('br')); + //mdText.appendText('调低所有标题级别「待设置」:将所有标题的级别调低一级(最低为六级)。建议:空 QQ:1977878681'); + //mdText.appendChild(document.createElement('br')); + mdText.appendText('转换标签语法「Alt+Shift+3」:将选文转为或去除 #标签 效果'); mdText.appendChild(document.createElement('br')); - mdText.appendText('调低所有标题级别「待设置」:将所有标题的级别调低一级(最低为六级)。建议:空 QQ:1977878681;'); + mdText.appendText('标签转为链接「Ctrl+Alt+Shift+3」:将 [[笔记名]] 与 #笔记名 效果互转'); mdText.appendChild(document.createElement('br')); - mdText.appendText('转换标签语法「Alt+Shift+3」:将选文转为或去除 #标签 效果;'); + mdText.appendText('转换粗体语法「Alt+C」:将选文转为或去除 **粗体** 效果'); mdText.appendChild(document.createElement('br')); - mdText.appendText('标签双链互转「Ctrl+Alt+Shift+3」:将 [[笔记名]] 与 #笔记名 效果互转;'); + mdText.appendText('转换单行公式语法「Alt+Shift+P」:将选文转为或去除 $公式$ 效果'); mdText.appendChild(document.createElement('br')); - mdText.appendText('转换粗体语法「Alt+C」:将选文转为或去除 **粗体** 效果;'); + mdText.appendText('转换多行公式语法「Alt+Shift+L」:将选文转为或去除 $$公式$$ 效果'); mdText.appendChild(document.createElement('br')); - mdText.appendText('转换斜体语法「Alt+X」:将选文转为或去除 *斜体* 效果;'); + mdText.appendText('转换斜体语法「Alt+X」:将选文转为或去除 *斜体* 效果'); mdText.appendChild(document.createElement('br')); - //mdText.appendText('转换行内代码「Alt+D」:将选文转为或去除 `行内代码` 效果;'); + //mdText.appendText('转换行内代码「Alt+D」:将选文转为或去除 `行内代码` 效果'); //mdText.appendChild(document.createElement('br')); - mdText.appendText('转换删除线「Alt+S」:将选文转为或去除 ~~删除线~~ 效果;'); + mdText.appendText('转换删除线「Alt+S」:将选文转为或去除 ~~删除线~~ 效果'); mdText.appendChild(document.createElement('br')); - mdText.appendText('转换下划线「Alt+H」:将选文转为或去除 下划线 效果;'); + mdText.appendText('转换下划线「Alt+H」:将选文转为或去除 下划线 效果'); mdText.appendChild(document.createElement('br')); - mdText.appendText('转换代码块「待设置」:将选文转为或去除 ```代码块``` 效果;'); + mdText.appendText('转换代码块「待设置」:将选文转为或去除 ```代码块``` 效果'); mdText.appendChild(document.createElement('br')); - mdText.appendText('转换上标语法「待设置」:将选文转为或去除 上标 效果;'); + mdText.appendText('转换上标语法「待设置」:将选文转为或去除 上标 效果'); mdText.appendChild(document.createElement('br')); - mdText.appendText('转换下标语法「待设置」:将选文转为或去除 下标 效果;'); + mdText.appendText('转换下标语法「待设置」:将选文转为或去除 下标 效果'); mdText.appendChild(document.createElement('br')); - mdText.appendText('[[]]转为[]()语法「待设置」:将划选文本中的[[内部链接]]语法转为[超](链接)语法;'); + mdText.appendText('[[]]转为[]()语法「待设置」:将划选文本中的[[内部链接]]语法转为[超](链接)语法'); mdText.appendChild(document.createElement('br')); - mdText.appendText('[]()转为[[]]语法「待设置」:将划选文本中的[超](链接)语法转为[[内部链接]]语法;'); + mdText.appendText('[]()转为[[]]语法「待设置」:将划选文本中的[超](链接)语法转为[[内部链接]]语法'); mdText.appendChild(document.createElement('br')); - mdText.appendText('去除超链接语法「待设置」:将划选文本中的[]()超链接样式恢复为普通文本,即只保留[]内的内容;'); + mdText.appendText('去除超链接语法「待设置」:将划选文本中的[]()超链接样式恢复为普通文本,即只保留[]内的内容'); mdText.appendChild(document.createElement('br')); - mdText.appendText('转换无语法文本「Ctrl+Alt+Z」:鼠标点击或划选文本的语法部分,可去除相应的MarkDown语法字符;'); + mdText.appendText('转换无语法文本「Ctrl+Alt+Z」:鼠标点击或划选文本的语法部分,可去除相应的MarkDown语法字符'); mdText.appendChild(document.createElement('br')); - mdText.appendText('获取无语法文本「Ctrl+Alt+C」:去除划选文本中的所有MarkDown语法字符,并写入剪贴板;'); + mdText.appendText('获取无语法文本「Ctrl+Alt+C」:去除划选文本中的所有MarkDown语法字符,并写入剪贴板'); mdText.appendChild(document.createElement('br')); div1.appendChild(mdText); @@ -4574,33 +4789,33 @@ class editSettingsTab extends obsidian.PluginSettingTab { cls: 'recent-files-donation', }); var charText = document.createDocumentFragment(); - charText.appendText('修复外来文本「待设置」:对 PDF 或 OCR 识别的大段文本进行修复(断行、标点)。感谢 zhl111 建议;'); + charText.appendText('修复外来文本「待设置」:对 PDF 或 OCR 识别的大段文本进行修复(断行、标点),感谢 zhl111 建议'); charText.appendChild(document.createElement('br')); - charText.appendText('修复错误标点「待设置」:将笔记中的汉字中间的英文标点修复为中文标点。感谢叶茜彬(7424863)参与;'); + charText.appendText('修复错误标点「待设置」:将笔记中的汉字中间的英文标点修复为中文标点,感谢叶茜彬(7424863)参与'); charText.appendChild(document.createElement('br')); - charText.appendText('修复错误语法「待设置」:修复错误的MD语法,如1。列表、【】()链接、[[]]()回链等;'); + charText.appendText('修复错误语法「待设置」:修复错误的MD语法,如1。列表、【】()链接、[[]]()回链等'); charText.appendChild(document.createElement('br')); - charText.appendText('转换路径语法「待设置」:将 c:\\windows 与 [](file:///c:\/windows) 路径语法相互转换;'); + charText.appendText('转换路径语法「待设置」:将 c:\\windows 与 [](file:///c:\/windows) 路径语法相互转换'); charText.appendChild(document.createElement('br')); - charText.appendText('简体转为繁体「待设置」:将笔记中的简体汉字转换为繁体汉字;'); + charText.appendText('简体转为繁体「待设置」:将笔记中的简体汉字转换为繁体汉字'); charText.appendChild(document.createElement('br')); - charText.appendText('繁体转为简体「待设置」:将笔记中的繁体汉字转换为简体汉字;'); + charText.appendText('繁体转为简体「待设置」:将笔记中的繁体汉字转换为简体汉字'); charText.appendChild(document.createElement('br')); - charText.appendText('列表转为图示「待设置」:选中列表文本,转换为相应层级的MerMaid语法图示,支持修改列表后更新图示;'); + charText.appendText('列表转为图示「待设置」:选中列表文本,转换为相应层级的MerMaid语法图示,支持修改列表后更新图示'); charText.appendChild(document.createElement('br')); - charText.appendText('转换待办状态「待设置」:转换选文行首的待办状态,顺序为 -[ x-!?><+] 效果;'); + charText.appendText('转换待办状态「待设置」:转换选文行首的待办状态,顺序为 -[ x-!?><+] 效果'); charText.appendChild(document.createElement('br')); - charText.appendText('转换callout语法「待设置」:转换选文为callout语法样式,即行首补加>[!note]及>符号;'); + charText.appendText('转换callout语法「待设置」:转换选文为callout语法样式,即行首补加>[!note]及>符号'); charText.appendChild(document.createElement('br')); - charText.appendText('转换填空「待设置」:将选文转为或去除 {{c1::选文}} 效果;'); + charText.appendText('转换填空「待设置」:将选文转为或去除 {{c1::选文}} 效果'); //charText.appendChild(document.createElement('br')); - //charText.appendText('【选文】「待设置」:在选文两端添加或去除 【】符号;'); + //charText.appendText('【选文】「待设置」:在选文两端添加或去除 【】符号'); //charText.appendChild(document.createElement('br')); - //charText.appendText('(选文)「待设置」:在选文两端添加或去除 ()符号;'); + //charText.appendText('(选文)「待设置」:在选文两端添加或去除 ()符号'); //charText.appendChild(document.createElement('br')); - //charText.appendText('「选文」「待设置」:在选文两端添加或去除 「」符号;'); + //charText.appendText('「选文」「待设置」:在选文两端添加或去除 「」符号'); //charText.appendChild(document.createElement('br')); - //charText.appendText('《选文》「待设置」:在选文两端添加或去除 《》符号;'); + //charText.appendText('《选文》「待设置」:在选文两端添加或去除 《》符号'); div3.appendChild(charText); new obsidian.Setting(containerEl) @@ -4610,29 +4825,29 @@ class editSettingsTab extends obsidian.PluginSettingTab { cls: 'recent-files-donation', }); var toolText = document.createDocumentFragment(); - toolText.appendText('计算所选结果「F9」:计算所选的四则运算式的结果,并写入剪贴板以备粘贴;'); + toolText.appendText('计算所选结果「F9」:计算所选的四则运算式的结果,并写入剪贴板以备粘贴'); toolText.appendChild(document.createElement('br')); - toolText.appendText('修复意外断行「待设置」:修复笔记中的意外断行(删除结尾不是句式标点的换行符);'); + toolText.appendText('修复意外断行「待设置」:修复笔记中的意外断行(删除结尾不是句式标点的换行符)'); toolText.appendChild(document.createElement('br')); - toolText.appendText('搜索当前文本「待设置」:通过搜索面板在当前文档中搜索划选内容;'); + toolText.appendText('搜索当前文本「待设置」:通过搜索面板在当前文档中搜索划选内容'); toolText.appendChild(document.createElement('br')); - toolText.appendText('选择当前整段「待设置」:选择光标所在的当前整段文本;'); + toolText.appendText('选择当前整段「待设置」:选择光标所在的当前整段文本'); toolText.appendChild(document.createElement('br')); - toolText.appendText('选择当前整句「待设置」:选择光标所在的当前整句(中文)文本;'); + toolText.appendText('选择当前整句「待设置」:选择光标所在的当前整句(中文)文本'); toolText.appendChild(document.createElement('br')); - toolText.appendText('选择当前语法「Alt+Shift+K」:选择光标所处的MrakDown语法文本(如加粗、高亮、删除、链接等效果);'); + toolText.appendText('选择当前语法「Alt+Shift+K」:选择光标所处的MrakDown语法文本(如加粗、高亮、删除、链接等效果)'); toolText.appendChild(document.createElement('br')); - toolText.appendText('获取标注文本「待设置」:获取标题、高亮、注释及前缀(#标注\批注\反思)等文本内容;'); + toolText.appendText('获取标注文本「待设置」:获取标题、高亮、注释及前缀(#标注\批注\反思)等文本内容'); toolText.appendChild(document.createElement('br')); - toolText.appendText('获取当前字符数「待设置」:计算页面中可见字符(汉字、字母、数字、标点)和不可见字符(空格等)个数;'); + toolText.appendText('获取当前字符数「待设置」:计算页面中可见字符(汉字、字母、数字、标点)和不可见字符(空格等)个数'); toolText.appendChild(document.createElement('br')); - toolText.appendText('自动设置标题「待设置」:将选文中的单行文本(末尾非标点或数字)转为标题;'); + toolText.appendText('自动设置标题「待设置」:将选文中的单行文本(末尾非标点或数字)转为标题'); toolText.appendChild(document.createElement('br')); - toolText.appendText('指定当前文件名「待设置」:划选文字后指定为当前笔记的文件名;'); + toolText.appendText('指定当前文件名「待设置」:划选文字后指定为当前笔记的文件名'); toolText.appendChild(document.createElement('br')); - toolText.appendText('嵌入当前网址页面「待设置」:在行末插入iframe代码来嵌入所选网址页面;'); + toolText.appendText('嵌入当前网址页面「待设置」:在行末插入iframe代码来嵌入所选网址页面'); toolText.appendChild(document.createElement('br')); - toolText.appendText('获取相对路径「待设置」:获取当前笔记在库目录内的相对路径;'); + toolText.appendText('获取相对路径「待设置」:获取当前笔记在库目录内的相对路径'); toolText.appendChild(document.createElement('br')); div4.appendChild(toolText); @@ -4644,39 +4859,39 @@ class editSettingsTab extends obsidian.PluginSettingTab { cls: 'recent-files-donation', }); var lineText = document.createDocumentFragment(); - lineText.appendText('折叠同级标题「Ctrl+Shift+Alt+D」:判断当前行的标题层级,将正文中同级标题一次性折叠起来;'); + lineText.appendText('折叠同级标题「Ctrl+Shift+Alt+D」:判断当前行的标题层级,将正文中同级标题一次性折叠起来'); lineText.appendChild(document.createElement('br')); - lineText.appendText('折叠某级别标题「待设置」:将正文中某一层级的标题一次性折叠起来。感谢火冷(85399416)增强相关功能;'); + lineText.appendText('折叠某级别标题「待设置」:将正文中某一层级的标题一次性折叠起来,感谢火冷(85399416)增强相关功能'); lineText.appendChild(document.createElement('br')); - lineText.appendText('删除当前段落「Ctrl+D」:删除当前段落;若在[[]]内会先删除链接内容、在有序列表项内会自动调小后面序号;'); + lineText.appendText('删除当前段落「Ctrl+D」:删除当前段落;若在[[]]内会先删除链接内容、在有序列表项内会自动调小后面序号'); lineText.appendChild(document.createElement('br')); - lineText.appendText('插入有效空行「Ctrl+Shift+Alt+Enter」:插入带有全角空格的空白行,保证渲染时占据一行;'); + lineText.appendText('插入有效空行「Ctrl+Shift+Alt+Enter」:插入带有全角空格的空白行,保证渲染时占据一行'); lineText.appendChild(document.createElement('br')); - lineText.appendText('空格转为空行「待设置」:将两个汉字中间的空格或制表符转为空白行;'); + lineText.appendText('空格转为空行「待设置」:将两个汉字中间的空格或制表符转为空白行'); lineText.appendChild(document.createElement('br')); - lineText.appendText('批量插入空行「Ctrl+Shift+L」:在划选的文本行或全文中间批量插入空白行;'); + lineText.appendText('批量插入空行「Ctrl+Shift+L」:在划选的文本行或全文中间批量插入空白行'); lineText.appendChild(document.createElement('br')); - lineText.appendText('批量去除空行「Ctrl+Alt+L」:批量去除划选文本或全文中的空白行;'); + lineText.appendText('批量去除空行「Ctrl+Alt+L」:批量去除划选文本或全文中的空白行'); lineText.appendChild(document.createElement('br')); - lineText.appendText('上方插入空行「待设置」:在当前文本行的上行插入空白行;'); + lineText.appendText('上方插入空行「待设置」:在当前文本行的上行插入空白行'); lineText.appendChild(document.createElement('br')); - lineText.appendText('下方插入空行「待设置」:在当前文本行的下行插入空白行;'); + lineText.appendText('下方插入空行「待设置」:在当前文本行的下行插入空白行'); lineText.appendChild(document.createElement('br')); - lineText.appendText('全文首行缩进「待设置」:在全文的每个行首添加两个全角空格,产生缩进效果;'); + lineText.appendText('全文缩进「待设置」:在全文的每个行首添加两个全角空格,产生缩进效果'); lineText.appendChild(document.createElement('br')); - lineText.appendText('当前行缩进「待设置」:在当前行文本的行首添加两个全角空格,产生缩进效果;'); + lineText.appendText('当前行缩进「待设置」:在当前行文本的行首添加两个全角空格,产生缩进效果'); lineText.appendChild(document.createElement('br')); - lineText.appendText('行首添加空格「待设置」:在每行文本的行首添加两个空格;'); + lineText.appendText('行首添加空格「待设置」:在每行文本的行首添加两个空格'); lineText.appendChild(document.createElement('br')); - lineText.appendText('去除行首空格「待设置」:批量去除每行文本的行首空格字符;'); + lineText.appendText('去除行首空格「待设置」:批量去除每行文本的行首空格字符'); lineText.appendChild(document.createElement('br')); - lineText.appendText('末尾追加空格「待设置」:在每行文本的末尾追加两个空格;'); + lineText.appendText('末尾追加空格「待设置」:在每行文本的末尾追加两个空格'); lineText.appendChild(document.createElement('br')); - lineText.appendText('去除末尾空格「待设置」:批量去除每行文本的末尾空格字符;'); + lineText.appendText('去除末尾空格「待设置」:批量去除每行文本的末尾空格字符'); lineText.appendChild(document.createElement('br')); - lineText.appendText('添加间隔空格「待设置」:在正文的汉字与字母之间批量添加空格,如 china 中国;'); + lineText.appendText('添加间隔空格「待设置」:在正文的汉字与字母之间批量添加空格,如 china 中国'); lineText.appendChild(document.createElement('br')); - lineText.appendText('去除所有空格「待设置」:去除正文中所有的全、半角空格。'); + lineText.appendText('去除所有空格「待设置」:去除正文中所有的全、半角空格'); lineText.appendChild(document.createElement('br')); div5.appendChild(lineText); From 9ceabd34bbadbccc7cea72d166821b90b5a0bcf8 Mon Sep 17 00:00:00 2001 From: xiejianglei Date: Wed, 10 Jan 2024 01:48:43 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=8F=90=E7=A4=BA?= =?UTF-8?q?=E5=92=8C=E6=8D=A2=E8=A1=8C=E7=AC=A6=E7=9A=84=E5=85=BC=E5=AE=B9?= =?UTF-8?q?=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/main.js b/main.js index 493625b..ce850bf 100644 --- a/main.js +++ b/main.js @@ -2131,7 +2131,7 @@ class MyPlugin extends obsidian.Plugin { }else{ this.关闭格式刷(); isMLatex = true; - newNotice = new obsidian.Notice("$$多行公式刷$$ 已打开!\n首尾不要选中标点。",0); + newNotice = new obsidian.Notice("$$多行公式刷$$ 已打开!",0); }; }; }; @@ -2228,7 +2228,7 @@ class MyPlugin extends obsidian.Plugin { if (link1.test(所选文本)){ return; //new obsidian.Notice("只有一侧出现==符号"); }else if (link.test(所选文本)){ - 所选文本 = 所选文本.replace(/(\$\$\n|\n\$\$)/g,""); //new obsidian.Notice("成对出现$$符号"); + 所选文本 = 所选文本.replace(/(\$\$\n?|\n?\$\$)/g,""); //new obsidian.Notice("成对出现$$符号"); this.替换所选文本 (所选文本); }else{ 所选文本 = 所选文本.replace(/^([\t\s]*)([^\t\s])/g,"$1$$$$\n$2").replace(/([^\t\s])([\t\s]*)$/g,"$1\n$$$$$2");