Add codemirror option to show trailing space (#7493)

* codemirror edit/trailingspace addon (default off)

* refactor as codemirror-trailingspace plugin

* copy cm-trailingspace styles from cm demo
This commit is contained in:
Tavin Cole 2023-05-27 18:28:27 +02:00 committed by GitHub
parent bc3a7d9826
commit 4e7a6ffc22
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 83 additions and 0 deletions

View File

@ -0,0 +1,4 @@
title: $:/language/codemirror/
showTrailingSpace/hint: Show trailing space
showTrailingSpace/info: Trailing space on each line will be decorated as per theme CSS.

View File

@ -0,0 +1,3 @@
title: $:/config/codemirror/showTrailingSpace
type: bool
text: true

View File

@ -0,0 +1,5 @@
.cm-trailingspace {
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAACCAYAAAB/qH1jAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3QUXCToH00Y1UgAAACFJREFUCNdjPMDBUc/AwNDAAAFMTAwMDA0OP34wQgX/AQBYgwYEx4f9lQAAAABJRU5ErkJggg==);
background-position: bottom left;
background-repeat: repeat-x;
}

View File

@ -0,0 +1,27 @@
// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
(function(mod) {
if (typeof exports == "object" && typeof module == "object") // CommonJS
mod(require("../../lib/codemirror"));
else if (typeof define == "function" && define.amd) // AMD
define(["../../lib/codemirror"], mod);
else // Plain browser env
mod(CodeMirror);
})(function(CodeMirror) {
CodeMirror.defineOption("showTrailingSpace", false, function(cm, val, prev) {
if (prev == CodeMirror.Init) prev = false;
if (prev && !val)
cm.removeOverlay("trailingspace");
else if (!prev && val)
cm.addOverlay({
token: function(stream) {
for (var l = stream.string.length, i = l; i && /\s/.test(stream.string.charAt(i - 1)); --i) {}
if (i > stream.pos) { stream.pos = i; return null; }
stream.pos = l;
return "trailingspace";
},
name: "trailingspace"
});
});
});

View File

@ -0,0 +1,19 @@
{
"tiddlers": [
{
"file": "addon/edit/trailingspace.css",
"fields": {
"type": "text/css",
"title": "$:/plugins/tiddlywiki/codemirror/addon/edit/trailingspace.css",
"tags": "[[$:/tags/Stylesheet]]"
}
},{
"file": "addon/edit/trailingspace.js",
"fields": {
"type": "application/javascript",
"title": "$:/plugins/tiddlywiki/codemirror/addon/edit/trailingspace.js",
"module-type": "codemirror"
}
}
]
}

View File

@ -0,0 +1,7 @@
{
"title": "$:/plugins/tiddlywiki/codemirror-trailingspace",
"name": "CodeMirror Show Trailing Space",
"description": "Show trailing space in CodeMirror",
"parent-plugin": "$:/plugins/tiddlywiki/codemirror",
"list": "readme"
}

View File

@ -0,0 +1,7 @@
title: $:/plugins/tiddlywiki/codemirror-trailingspace/readme
This plugin contains the [[trailingspace|https://codemirror.net/5/doc/manual.html#addon_trailingspace]]
addon for CodeMirror, and provides a default style (red squiggles).
First install the [[CodeMirror plugin|$:/plugins/tiddlywiki/codemirror]].

View File

@ -0,0 +1,11 @@
title: $:/core/ui/ControlPanel/Settings/codemirror/showTrailingSpace
tags: $:/tags/ControlPanel/Settings/CodeMirror
caption: {{$:/language/codemirror/showTrailingSpace/hint}}
\define lingo-base() $:/language/codemirror/showTrailingSpace/
<<lingo hint>>
<$checkbox tiddler="$:/config/codemirror/showTrailingSpace" field="text" checked="true" unchecked="false" default="true">
<$link to="$:/config/codemirror/showTrailingSpace"><<lingo info>></$link>
</$checkbox>