From 63415967af14d5a410d747b9e3a4d677ad1f0420 Mon Sep 17 00:00:00 2001 From: Ke Wang Date: Sat, 4 Sep 2021 14:10:38 +0800 Subject: [PATCH] Add hint preview, fix hint logic --- .github/workflows/tiddlywiki-plugin-build.yml | 3 +- README.md | 16 ++-- README_en.md | 14 +++- build.json | 28 ++++++- build.py | 60 +++++++++----- media/hint-preview.jpg | Bin 0 -> 110014 bytes src/ControlPanel.tw5 | 27 +++++++ src/clickable-link.js | 3 +- src/style.css | 18 ++++- src/tw5-autohint.js | 73 +++++++++++++----- src/tw5-mode.js | 22 ++++-- 11 files changed, 203 insertions(+), 61 deletions(-) create mode 100644 media/hint-preview.jpg create mode 100644 src/ControlPanel.tw5 diff --git a/.github/workflows/tiddlywiki-plugin-build.yml b/.github/workflows/tiddlywiki-plugin-build.yml index 3fb4ba2..a923336 100644 --- a/.github/workflows/tiddlywiki-plugin-build.yml +++ b/.github/workflows/tiddlywiki-plugin-build.yml @@ -45,10 +45,9 @@ jobs: - name: Upload to Release uses: svenstaro/upload-release-action@v2 - if: startsWith(github.ref, 'refs/tags/') with: repo_token: ${{ secrets.GITHUB_TOKEN }} file: dist/* tag: ${{ github.ref }} overwrite: true - file_glob: true \ No newline at end of file + file_glob: true diff --git a/README.md b/README.md index 980d658..cb02183 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ Adds Syntax Highlighting for TiddlyWiki5 tiddlers (`text/vnd.tiddlywiki`) to the CodeMirror, along with some other useful editor addon (wikilink hint, macro hint, etc.). Now is under development. -为 TiddlyWiki 的 CodeMirror 编辑器添加 TiddlyWiki5(`text/vnd.tiddlywiki`)语法高亮,同时还有其他有用的编辑器插件(如 Wiki 链接自动提示、宏提示等),以及可以打开的链接。现在正在开发中。 +为 TiddlyWiki 的 CodeMirror 编辑器添加 TiddlyWiki5(`text/vnd.tiddlywiki`)语法高亮,同时还有其他有用的编辑器扩展(如 Wiki 链接自动提示、宏提示等),以及可以打开的链接。现在正在开发中。 [> English Readme <](https://github.com/Gk0Wk/CodeMirror-Mode-TiddlyWiki5/blob/main/README_en.md) @@ -10,7 +10,7 @@ Adds Syntax Highlighting for TiddlyWiki5 tiddlers (`text/vnd.tiddlywiki`) to the ## 插件说明 -增加 [CodeMirror](http://codemirror.net) 对 TiddlyWiki5 语法高亮的支持,所有 MIME 类型留空或者为`text/vnd.tiddlywiki`的 tiddler 都会有高亮。同时支持像`VSCode`那样在打字时实时进行代码补全提示(目前仅实现了 WikiLink 补全),且**不需要**用`Ctrl+Space`激活。 +增加 [CodeMirror](http://codemirror.net) 对 TiddlyWiki5 语法高亮的支持,所有 MIME 类型留空或者为`text/vnd.tiddlywiki`的 tiddler 都会有高亮。同时支持像`VSCode`那样在打字时实时进行代码补全提示+预览(目前仅实现了 WikiLink 补全),且**不需要**用Ctrl+Space激活。 插件还在开发中,如有任何建议或者 bug 请直接提 Issue。 @@ -43,10 +43,14 @@ TiddlyWiki: 注意:这些主题有些是我自己装的,如感兴趣换主题,请阅读 TiddlyWiki 的 CodeMirror 的 README。
-WikiLink自动补全提示 +WikiLink实时补全提示+预览 ![wikilink-hint](media/wikilink-hint.gif) +在预览打开的情况下: + +![hint-preview](media/hint-preview.jpg) +
@@ -54,8 +58,8 @@ TiddlyWiki: ![wikilink-hint](media/clickable-link.gif) -- 对于 macOS 用户,`cmd` + `鼠标左键` 可以打开 tiddler 或者外部 url。 -- 对于非 macOS 用户,`ctrl` + `鼠标左键` 可以打开 tiddler 或者外部 url。 +- 对于 macOS 用户,cmd + 鼠标左键 可以打开 tiddler 或者外部 url。 +- 对于非 macOS 用户,ctrl + 鼠标左键 可以打开 tiddler 或者外部 url。
@@ -74,6 +78,8 @@ TiddlyWiki: - [x] 代码块内的语法高亮与缩进。 - [x] LaTeX 公式高亮与缩进。 - [x] 自动补全内部链接的 tiddler 名称。 +- [x] 可点击的URL与WikiLink。 +- [x] 补全提示的预览框。 - [ ] 其他代码提示。 - [ ] 代码错误检查。 - [ ] 鼠标悬在 LaTeX 代码上方能够进行公式预览。 diff --git a/README_en.md b/README_en.md index 1ccb36c..dd97561 100644 --- a/README_en.md +++ b/README_en.md @@ -8,7 +8,7 @@ Adds Syntax Highlighting for TiddlyWiki5 tiddlers (`text/vnd.tiddlywiki`) to the ## Plugin description -Add [CodeMirror](http://codemirror.net) support for TiddlyWiki5 syntax highlighting, all tiddlers with MIME type left blank or `text/vnd.tiddlywiki` will be highlighted. Also supports real-time code completion hints like `VSCode` while typing (currently only WikiLink completion is implemented) and **no need** to activate with `Ctrl+Space`. +Add [CodeMirror](http://codemirror.net) support for TiddlyWiki5 syntax highlighting, all tiddlers with MIME type left blank or `text/vnd.tiddlywiki` will be highlighted. Also supports real-time code completion hints + preview like `VSCode` while typing (currently only WikiLink completion is implemented) and **no need** to activate with Ctrl+Space. Plugin is still under development, if you have any suggestions or bugs, please directly mention Issues. @@ -41,10 +41,14 @@ TiddlyWiki: Note: Some of these themes are installed by myself, if you are interested in changing the theme, please read TiddlyWiki's CodeMirror's README.
-WikiLink Auto Hint +WikiLink Realtime Hint+Preview ![wikilink-hint](media/wikilink-hint.gif) +With hint-preview opened: + +![hint-preview](media/hint-preview.jpg) +
@@ -52,8 +56,8 @@ Note: Some of these themes are installed by myself, if you are interested in cha ![wikilink-hint](media/clickable-link.gif) -- For macOS users,`cmd` + `LeftClick` to open tiddler or external url. -- For other users,`ctrl` + `LeftClick` to open tiddler or external url. +- For macOS users,cmd + LeftClick to open tiddler or external url. +- For other users,ctrl + LeftClick to open tiddler or external url.
@@ -72,6 +76,8 @@ This plugin is also based on [TW5-CodeMirror-Plus](https://github.com/adithya-ba - [x] Syntax highlighting and indentation within code blocks. - [x] LaTeX formula highlighting and indentation. - [x] WikiLink AutoHint. +- [x] Clickable URLs and WikiLinks. +- [x] Preview for hint. - [ ] Other code hints. - [ ] Code error checking. - [ ] Mouse hovering over LaTeX code enables formula preview. diff --git a/build.json b/build.json index 6eb8e4d..d7da939 100644 --- a/build.json +++ b/build.json @@ -1,12 +1,12 @@ { "plugin.info": { - "version": "0.0.5", + "version": "0.0.6", "type": "application/json", "title": "$:/plugins/Gk0Wk/codemirror-mode-tiddlywiki5", "plugin-type": "plugin", "parent-plugin": "$:/plugins/tiddlywiki/codemirror", "name": "CodeMirror Mode TiddlyWiki5", - "list": "readme", + "list": "readme ControlPanel", "description": "TiddlyWiki5 highlighting mode for CodeMirror", "dependents": ["$:/plugins/tiddlywiki/codemirror-autocomplete"] }, @@ -60,6 +60,30 @@ "title": "$:/plugins/tiddlywiki/codemirror/addon/other/clickable-link.js", "module-type": "codemirror" } + }, + { + "src": "ControlPanel.tw5", + "fields": { + "title": "$:/plugins/Gk0Wk/codemirror-mode-tiddlywiki5/ControlPanel" + } + }, + { + "text": "true", + "fields": { + "title": "$:/plugins/Gk0Wk/codemirror-mode-tiddlywiki5/config/hint-preview" + } + }, + { + "text": "true", + "fields": { + "title": "$:/plugins/Gk0Wk/codemirror-mode-tiddlywiki5/config/clickable-link" + } + }, + { + "text": "true", + "fields": { + "title": "$:/plugins/Gk0Wk/codemirror-mode-tiddlywiki5/config/realtime-hint" + } } ] } diff --git a/build.py b/build.py index 558da63..68cc728 100644 --- a/build.py +++ b/build.py @@ -25,8 +25,9 @@ def gen_plugin_name(build_info): :return: Output name of plugin :rtype: str """ - return re.sub('[^A-Za-z0-9_]', '', build_info[PLUGIN_INFO_KEY] - ['name']) + '-' + build_info[PLUGIN_INFO_KEY]['version'] + return re.sub('[^A-Za-z0-9_-]+', '-', + build_info[PLUGIN_INFO_KEY]['title'].split( + '/')[-1]) + '-' + build_info[PLUGIN_INFO_KEY]['version'] def minify_source_code(build_info): @@ -38,6 +39,8 @@ def minify_source_code(build_info): :rtype: string of updated build.json """ for tiddler in build_info['tiddlers']: + if 'src' not in tiddler: + continue snamepath, type_ = os.path.splitext(tiddler['src']) spath, sname = os.path.split(snamepath) type_ = type_.lower() @@ -72,12 +75,15 @@ def build_json_plugin(build_info): tiddlers = {} for tiddler_ in build_info['tiddlers']: tiddler = tiddler_['fields'] - file_path = os.path.join(SRC_DIR, tiddler_['src']) - if os.path.exists(file_path) and os.path.isfile(file_path): - with open(file_path, 'r') as ffp: - tiddler['text'] = ffp.read() + if 'src' in tiddler_: + file_path = os.path.join(SRC_DIR, tiddler_['src']) + if os.path.exists(file_path) and os.path.isfile(file_path): + with open(file_path, 'r') as ffp: + tiddler['text'] = ffp.read() + else: + tiddler['text'] = '' else: - tiddler['text'] = '' + tiddler['text'] = tiddler_['text'] if 'text' in tiddler_ else '' tiddlers[tiddler['title']] = tiddler plugin = build_info[PLUGIN_INFO_KEY] plugin['text'] = json.dumps({'tiddlers': tiddlers}) @@ -93,28 +99,42 @@ def build_node_plugin(build_info): :param build_info: JSON object of build.json :type build_info: object """ - os.makedirs(os.path.join(DIST_DIR, 'node'), exist_ok=True) - with open(os.path.join(DIST_DIR, 'node', PLUGIN_INFO_KEY), 'w') as ffp: + NODE_DIST = os.path.join( + DIST_DIR, 'node', + re.sub( + '[^A-Za-z0-9_-]+', + '-', + build_info[PLUGIN_INFO_KEY]['title'].split('/')[-2], + ), build_info[PLUGIN_INFO_KEY]['title'].split('/')[-1]) + + os.makedirs(NODE_DIST, exist_ok=True) + with open(os.path.join(NODE_DIST, 'plugin.info'), 'w') as ffp: ffp.write(json.dumps(build_info[PLUGIN_INFO_KEY], indent=4)) for tiddler in build_info['tiddlers']: - src_path = os.path.join(SRC_DIR, tiddler['src']) - if not os.path.exists(src_path) or not os.path.isfile(src_path): - continue sub_dist_path = tiddler['dist'] if 'dist' in tiddler else tiddler[ 'fields']['title'].split('/', 4)[-1] - dist_path = os.path.join(DIST_DIR, 'node', sub_dist_path) + dist_path = os.path.join(NODE_DIST, sub_dist_path) os.makedirs(os.path.split(dist_path)[0], exist_ok=True) - shutil.copyfile(src_path, dist_path) - del tiddler['src'] + + if 'src' in tiddler: + src_path = os.path.join(SRC_DIR, tiddler['src']) + if not os.path.exists(src_path) or not os.path.isfile(src_path): + with open(dist_path, 'w') as ffp: + ffp.write('') + shutil.copyfile(src_path, dist_path) + del tiddler['src'] + else: + with open(dist_path, 'w') as ffp: + ffp.write(tiddler['text'] if 'text' in tiddler else '') + if 'text' in tiddler: + del tiddler['text'] + if 'dist' in tiddler: del tiddler['dist'] tiddler['file'] = sub_dist_path - with open(os.path.join(DIST_DIR, 'node', 'tiddlywiki.files'), 'w') as ffp: + with open(os.path.join(NODE_DIST, 'tiddlywiki.files'), 'w') as ffp: ffp.write(json.dumps({'tiddlers': build_info['tiddlers']}, indent=4)) - shutil.make_archive(os.path.join( - DIST_DIR, - gen_plugin_name(build_info), - ), + shutil.make_archive(os.path.join(DIST_DIR, gen_plugin_name(build_info)), format="zip", root_dir=os.path.join(DIST_DIR, 'node')) shutil.rmtree(os.path.join(DIST_DIR, 'node')) diff --git a/media/hint-preview.jpg b/media/hint-preview.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7c58e0cb001532ba172ca54029e495e08e2e3260 GIT binary patch literal 110014 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 TVcaka2lr2x%>qshzi0j%peZHE literal 0 HcmV?d00001 diff --git a/src/ControlPanel.tw5 b/src/ControlPanel.tw5 new file mode 100644 index 0000000..fba98d5 --- /dev/null +++ b/src/ControlPanel.tw5 @@ -0,0 +1,27 @@ +!! Realtime-hint when typing | 实时代码补全 + +Real-time code completion hints like VSCode while typing (currently only ~WikiLink completion is implemented) and no need to activate with Ctrl+Space. + +无需Ctrl+Space,像VSCode一样,在输入时实时进行补全提示(现只支持~WikiLink)。 + +: <$checkbox tiddler="$:/plugins/Gk0Wk/codemirror-mode-tiddlywiki5/config/realtime-hint" field="text" checked="true" unchecked="false" default="true"> <$reveal type="match" state="$:/plugins/Gk0Wk/codemirror-mode-tiddlywiki5/config/realtime-hint" text="true">Realtime-hint is on | 实时代码补全已开启<$reveal type="nomatch" state="$:/plugins/Gk0Wk/codemirror-mode-tiddlywiki5/config/realtime-hint" text="true">Realtime-hint is off | 实时代码补全已关闭 + +--- + +!! Clickable links | 可点击的链接 + +Whethere ~WikiLinks and URLs are clickable. + +~WikiLinks和URL是否可以点击。 + +: <$checkbox tiddler="$:/plugins/Gk0Wk/codemirror-mode-tiddlywiki5/config/clickable-link" field="text" checked="true" unchecked="false" default="true"> <$reveal type="match" state="$:/plugins/Gk0Wk/codemirror-mode-tiddlywiki5/config/clickable-link" text="true">Clickable links is on | 可点击链接已开启<$reveal type="nomatch" state="$:/plugins/Gk0Wk/codemirror-mode-tiddlywiki5/config/clickable-link" text="true">Clickable links is off | 可点击链接已关闭 + +--- + +!! Hint preview | 补全时预览 + +When auto-completion is performed, a small document/preview box pops up to the right of the completion box based on the selected suggestion entry. + +自动补全时,根据所选建议条目,在补全框右侧弹出小的文档/预览框。 + +: <$checkbox tiddler="$:/plugins/Gk0Wk/codemirror-mode-tiddlywiki5/config/hint-preview" field="text" checked="true" unchecked="false" default="true"> <$reveal type="match" state="$:/plugins/Gk0Wk/codemirror-mode-tiddlywiki5/config/hint-preview" text="true">Hint preview is on | 补全时预览已开启<$reveal type="nomatch" state="$:/plugins/Gk0Wk/codemirror-mode-tiddlywiki5/config/hint-preview" text="true">Hint preview is off | 补全时预览已关闭 diff --git a/src/clickable-link.js b/src/clickable-link.js index e77737d..51691bb 100644 --- a/src/clickable-link.js +++ b/src/clickable-link.js @@ -12,9 +12,10 @@ var functionKey = /macintosh|mac os x/i.test(navigator.userAgent) ? 'metaKey' : 'ctrlKey'; // 有新的editor实例创建,就Hook一下 CodeMirror.defineInitHook(function(editor) { - // 当光标移动(输入、删除、光标移动)时进行补全 editor.on("mousedown", function(cm, event) { if (event[functionKey]) { + if ($tw.wiki.getTiddlerText('$:/plugins/Gk0Wk/codemirror-mode-tiddlywiki5/config/clickable-link').toLowerCase() !== "true") + return; if (event.target.classList.contains("cm-externallink")) { window.open(event.target.innerText); } else if (event.target.classList.contains("cm-internallink")) { diff --git a/src/style.css b/src/style.css index 2fb112c..8452d51 100644 --- a/src/style.css +++ b/src/style.css @@ -3,6 +3,17 @@ z-index: 800 !important; } +.CodeMirror-hint { + width: 400px !important; +} + +.CodeMirror-hints-append { + max-height: 20em !important; + width: 300px !important; + color: black; + resize: both; +} + span.cm-underlined { text-decoration-line: underline; } @@ -64,10 +75,15 @@ span.cm-h6 { } span.cm-link { - font-weight: 600; cursor: pointer; } +span.cm-internallink, +span.cm-externallink { + cursor: pointer; + font-weight: 800; +} + span.cm-internallink { text-decoration: none; } diff --git a/src/tw5-autohint.js b/src/tw5-autohint.js index 1fbef50..4135156 100644 --- a/src/tw5-autohint.js +++ b/src/tw5-autohint.js @@ -9,9 +9,14 @@ })(function(CodeMirror) { "use strict"; + var renderAppend = function(domNode, selectedText, selectedNode) { + domNode.innerHTML = $tw.wiki.renderTiddler("text/html", selectedText); + }; + var hintOptions = { // 如果补全建议中只有一个,不会自动补全,否则体验会非常糟糕 - completeSingle: false + completeSingle: false, + closeOnPick: true }; // 有新的editor实例创建,就Hook一下,达到实时提示的效果 CodeMirror.defineInitHook(function(editor) { @@ -19,12 +24,24 @@ editor.on("change", function(cm, event) { if (cm.state.completeActive && typeof cm.showHint !== 'function') return; - if ( - event.origin === "+input" && - event.text[0].trim() === "" && - event.text[1] === "" - ) + if ($tw.wiki.getTiddlerText('$:/plugins/Gk0Wk/codemirror-mode-tiddlywiki5/config/realtime-hint').toLowerCase() !== "true") return; + if (event.origin === "+input") { + if (cm.doc.modeOption === "text/vnd.tiddlywiki") { + if (/[;,]$/.test(event.text[0])) + return; + } else { + if (/[;,{}()[\]]$/.test(event.text[0])) + return; + } + if (event.text[0].trim() === "") { + if (event.text[1]) { + if (event.text[1].trim() === "") + return; + } else + return; + } + } if (event.origin === "+delete") { if (event.removed[0] === "") return; @@ -62,18 +79,38 @@ } if (pointer == 0) return null; var curWord = pointer !== end && curLine.slice(pointer, end); - if (curLine.charAt(pointer) == '$') { - return { - list: $tw.wiki.filterTiddlers(`[all[tiddlers]search:title:literal[${curWord}]!prefix[$:/state]]`), - from: CodeMirror.Pos(cur.line, pointer), - to: CodeMirror.Pos(cur.line, end) - }; - } else { - return { - list: $tw.wiki.filterTiddlers(`[all[tiddlers]!is[system]!is[shadow]search:title:literal[${curWord}]!prefix[$:/state]]`), - from: CodeMirror.Pos(cur.line, pointer), - to: CodeMirror.Pos(cur.line, end) - }; + + // Hool to event + var result = { + from: CodeMirror.Pos(cur.line, pointer), + to: CodeMirror.Pos(cur.line, end) + }; + result.list = (curLine.charAt(pointer) == '$') ? + $tw.wiki.filterTiddlers(`[all[tiddlers]search:title:literal[${curWord}]!prefix[$:/state]]`) : + $tw.wiki.filterTiddlers(`[all[tiddlers]!is[system]!is[shadow]search:title:literal[${curWord}]!prefix[$:/state]]`); + + if ($tw.wiki.getTiddlerText('$:/plugins/Gk0Wk/codemirror-mode-tiddlywiki5/config/hint-preview').toLowerCase() === "true") { + CodeMirror.on(result, 'select', function(text, domNode) { + var appendId = domNode.parentNode.id + "-hint-append"; + var hintsAppend = domNode.ownerDocument.getElementById(appendId); + var shouldCreate = !hintsAppend; + if (shouldCreate) { + hintsAppend = domNode.ownerDocument.createElement("div"); + hintsAppend.id = appendId; + hintsAppend.className = "CodeMirror-hints CodeMirror-hints-append " + editor.options.theme; + hintsAppend.style.left = domNode.parentNode.offsetLeft + domNode.parentNode.offsetWidth + "px"; + hintsAppend.style.top = domNode.parentNode.offsetTop + "px"; + } + renderAppend(hintsAppend, text, domNode); + if (shouldCreate) { + CodeMirror.on(result, 'close', function() { + domNode.ownerDocument.body.removeChild(hintsAppend); + }); + domNode.ownerDocument.body.appendChild(hintsAppend); + } + }); } + + return result; }); }); diff --git a/src/tw5-mode.js b/src/tw5-mode.js index 48afcec..c0694ce 100644 --- a/src/tw5-mode.js +++ b/src/tw5-mode.js @@ -269,15 +269,21 @@ // 包含 function twTranslclude(stream, state) { - var maybeEnd = false, - ch; - while (ch = stream.next()) { - if (ch == "}" && maybeEnd) { - state.tokenize = tokenBase; - break; + state.tokenize = function(stream_, state_) { + var ch; + while (ch = stream_.next()) { + if (ch === "}" && stream_.peek() === "}") { + stream_.backUp(1); + state_.tokenize = function(stream__, state__) { + stream__.match("}}"); + state__.tokenize = tokenBase; + return "builtin"; + }; + break; + } } - maybeEnd = (ch == "}"); - } + return "builtin internallink"; + }; return "builtin"; }