Files
my-vault/.obsidian/plugins/cm-chs-patch/main.js
T

2 lines
40 KiB
JavaScript
Raw Normal View History

let e=require(`obsidian`),t=require(`@codemirror/state`),n=require(`@codemirror/view`);var r=/[\u4e00-\u9fff]/,i=new RegExp(r,`g`),a=e=>r.test(e),o={".":`。`,",":``,":":``,";":``,"?":``,"\\":`、`,'"':`“`,"<":`《`,">":`》`,"[":`「`,"]":`」`,"(":``,")":``};function s({vim:e,CodeMirror:t,cut:n}){let r=e.getVimGlobalState_(),i=t.Pos;var s=[t.isWordChar,function(e){return e&&!t.isWordChar(e)&&!/\s/.test(e)}],c=[function(e){return/\S/.test(e)}];function l(e,t){r.lastCharacterSearch.increment=e,r.lastCharacterSearch.forward=t.forward,r.lastCharacterSearch.selectedCharacter=t.selectedCharacter}function u(e,t,n,r,i){var a;return r?(a=t.indexOf(n,e+1),a!=-1&&!i&&--a):(a=t.lastIndexOf(n,e-1),a!=-1&&!i&&(a+=1)),a}function d(e){return new i(e.line,e.ch)}function f(e,t){return t>=e.firstLine()&&t<=e.lastLine()}function p(e,t){return e.getLine(t).length}function m(e,t,n,r,a,o){var s=d(t),c=[];(r&&!a||!r&&a)&&n++;for(var l=!(r&&a),u=0;u<n;u++){var f=g(e,t,r,o,l);if(!f){var m=p(e,e.lastLine());c.push(r?{line:e.lastLine(),from:m,to:m}:{line:0,from:0,to:0});break}c.push(f),t=new i(f.line,r?f.to-1:f.from)}var h=c.length!=n,_=c[0],v=c.pop();return r&&!a?(!h&&(_.from!=s.ch||_.line!=s.line)&&(v=c.pop()),new i(v.line,v.from)):r&&a?new i(v.line,v.to-1):!r&&a?(!h&&(_.to!=s.ch||_.line!=s.line)&&(v=c.pop()),new i(v.line,v.to)):new i(v.line,v.from)}function h(e,t,n,r){let a=e.getCursor(),o=a.ch,s;for(let i=0;i<t;i++){let t=e.getLine(a.line);if(s=u(o,t,r,n,!0),s=_(r,o,t,n,s),s==-1)return null;o=s}return new i(e.getCursor().line,s)}function g(e,t,r,i,o){var l=t.line,u=t.ch,d=e.getLine(l),p=r?1:-1,m=i?c:s;if(o&&d==``){if(l+=p,d=e.getLine(l),!f(e,l))return null;u=r?0:d.length}for(;;){if(o&&d==``)return{from:0,to:0,line:l};for(var h=p>0?d.length:-1,g=h,_=h;u!=h;){var y=!1;let e=Math.max(u-6,0),i=Math.min(u+6,d.length);if(a(d.slice(e,i))){let e=n(d);for(let n=0;n<m.length&&!y;++n){let i=d.charAt(u),a;if(!m[n](i)&&(i===``||(a=v(e,u),!m[n](a.text))))continue;for(g=u;u!=h&&(a=v(e,u),m[n](a.text));){if(r){u=a.end,u=Math.min(u,h);break}a=v(e,Math.max(--u,0)),m[n](a.text)&&(u=a.begin-1,u=Math.max(u,h));break}if(_=u,y=g!=_,!y)continue;let o=r?Math.min(g+p,h):Math.max(g+p,h);if(!(g==t.ch&&l==t.line&&_==o))return{from:Math.min(g,_+1),to:Math.max(g,_),line:l}}}for(var b=0;b<m.length&&!y;++b)if(m[b](d.charAt(u))){for(g=u;u!=h&&m[b](d.charAt(u));)u+=p;if(_=u,y=g!=_,g==t.ch&&l==t.line&&_==g+p)continue;return{from:Math.min(g,_+1),to:Math.max(g,_),line:l}}y||(u+=p)}if(l+=p,!f(e,l))return null;d=e.getLine(l),u=p>0?0:d.length}}function _(e,t,n,r,i){if(e.length==1&&o[e]!=null){let a=o[e],s=u(t,n,a,r,!0);return s==-1?i:i==-1?s:r?Math.min(i,s):Math.max(i,s)}return i}function v(e,t){let n=0,r=0;for(var i=0;i<e.length;i++){var a=e[i];if(r=n+a.length,t>=n&&t<r)break;n+=a.length}return{index:i,text:a,begin:n,end:r}}return{moveToCharacter:h,recordLastCharacterSearch:l,moveToWord:m}}var c=class extends e.Component{constructor(e){super(),this.plugin=e,this.utils=s({CodeMirror:window.CodeMirror,vim:this.vim,cut:e.cut.bind(e)})}get vim(){return window.CodeMirrorAdapter?.Vim}get enabled(){return this.plugin.settings.useJieba||window.Intl?.Segmenter}onload(){this.vim&&(this.enabled&&this.plugin.settings.moveByChineseWords&&this.enableMoveByChineseWords(this.vim),this.enabled&&this.plugin.settings.moveTillChinesePunctuation&&this.enableMoveTillChinesePunctuation(this.vim))}enableMoveByChineseWords(e){e.defineMotion(`moveByWords`,(e,t,n)=>this.utils.moveToWord(e,t,n.repeat,!!n.forward,!!n.wordEnd,!!n.bigWord))}enableMoveTillChinesePunctuation(e){let{recordLastCharacterSearch:t,moveToCharacter:n}=this.utils;e.defineMotion(`moveToCharacter`,(e,r,i)=>{let a=i.repeat;return t(0,i),n(e,a,i.forward,i.selectedCharacter)||r}),e.defineMotion(`moveTillCharacter`,(e,r,i)=>{let a=i.repeat,o=n(e,a,i.forward,i.selectedCharacter),s=i.forward?-1:1;return t(s,i),o?(o.ch+=s,o):null}),e.defineMotion(`repeatLastCharacterSearch`,(t,r,i)=>{let a=e.getVimGlobalState_().lastCharacterSearch,o=i.repeat,s=i.forward===a.forward,c=!!a.increment*(s?-1:1);t.moveH(-c,`char`),i.inclusive=!!s;l
2026-01-05 13:03:55 +08:00
/* nosourcemap */