Skip to content

Instantly share code, notes, and snippets.

@kirjavascript
Last active November 16, 2022 19:56
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kirjavascript/8d43cc6b44d08ef919572f9156259de9 to your computer and use it in GitHub Desktop.
Save kirjavascript/8d43cc6b44d08ef919572f9156259de9 to your computer and use it in GitHub Desktop.
stackblitz-vim
(()=>{var Vr=Object.defineProperty;var Fr=(w,s,h)=>s in w?Vr(w,s,{enumerable:!0,configurable:!0,writable:!0,value:h}):w[s]=h;var J=(w,s,h)=>(Fr(w,typeof s!="symbol"?s+"":s,h),h);var{KeyCode:ve,Range:xe,Position:Fe,Selection:nt,SelectionDirection:it}=monaco,Ve=window.monaco.editor,Wr={Bottom:4},Ur={readOnly:65,cursorWidth:20,fontInfo:32},$r=/[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/;function jr(w){return/\w/.test(w)||w>"\x80"&&(w.toUpperCase()!=w.toLowerCase()||$r.test(w))}function We(w,s){if(!(this instanceof We))return new We(w,s);this.line=w,this.ch=s}function Jr(w,s,h){w.dispatch(s,h)}function Re(w){return function(){}}var Wt,Ut;String.prototype.normalize?(Wt=function(w){return w.normalize("NFD").toLowerCase()},Ut=function(w){return w.normalize("NFD")}):(Wt=function(w){return w.toLowerCase()},Ut=function(w){return w});var jt=function(w,s){this.pos=this.start=0,this.string=w,this.tabSize=s||8,this.lastColumnPos=this.lastColumnValue=0,this.lineStart=0};jt.prototype={eol:function(){return this.pos>=this.string.length},sol:function(){return this.pos==this.lineStart},peek:function(){return this.string.charAt(this.pos)||void 0},next:function(){if(this.pos<this.string.length)return this.string.charAt(this.pos++)},eat:function(w){var s=this.string.charAt(this.pos);if(typeof w=="string")var h=s==w;else var h=s&&(w.test?w.test(s):w(s));if(h)return++this.pos,s},eatWhile:function(w){for(var s=this.pos;this.eat(w););return this.pos>s},eatSpace:function(){for(var w=this.pos;/[\s\u00a0]/.test(this.string.charAt(this.pos));)++this.pos;return this.pos>w},skipToEnd:function(){this.pos=this.string.length},skipTo:function(w){var s=this.string.indexOf(w,this.pos);if(s>-1)return this.pos=s,!0},backUp:function(w){this.pos-=w},column:function(){throw"not implemented"},indentation:function(){throw"not implemented"},match:function(w,s,h){if(typeof w=="string"){var d=function(T){return h?T.toLowerCase():T},g=this.string.substr(this.pos,w.length);if(d(g)==d(w))return s!==!1&&(this.pos+=w.length),!0}else{var S=this.string.slice(this.pos).match(w);return S&&S.index>0?null:(S&&s!==!1&&(this.pos+=S[0].length),S)}},current:function(){return this.string.slice(this.start,this.pos)},hideFirstChars:function(w,s){this.lineStart+=w;try{return s()}finally{this.lineStart-=w}}};function oe(w){return new We(w.lineNumber-1,w.column-1)}function U(w){return new Fe(w.line+1,w.ch+1)}var ot=class{constructor(s,h,d,g){this.cm=s,this.id=h,this.lineNumber=d+1,this.column=g+1,s.marks[this.id]=this}clear(){delete this.cm.marks[this.id]}find(){return oe(this)}};function $t(w,s=!1){let h=!0,d=ve[w.keyCode];w.key&&(d=w.key,h=!1);let g=d,S=s;switch(w.keyCode){case ve.Shift:case ve.Meta:case ve.Alt:case ve.Ctrl:return g;case ve.Escape:S=!0,g="Esc";break;case ve.Space:S=!0;break}return d.startsWith("Key")||d.startsWith("KEY_")?g=d[d.length-1].toLowerCase():d.startsWith("Digit")?g=d.slice(5,6):d.startsWith("Numpad")?g=d.slice(6,7):d.endsWith("Arrow")?(S=!0,g=d.substring(0,d.length-5)):(d.startsWith("US_")||d.startsWith("Bracket")||!g)&&(g=w.browserEvent.key),!S&&!w.altKey&&!w.ctrlKey&&!w.metaKey?g=w.key||w.browserEvent.key:(w.altKey&&(g=`Alt-${g}`),w.ctrlKey&&(g=`Ctrl-${g}`),w.metaKey&&(g=`Meta-${g}`),w.shiftKey&&(g=`Shift-${g}`)),g.length===1&&h&&(g=`'${g}'`),g}var ae=class{constructor(s){this.editor=s,this.state={keyMap:"vim"},this.marks={},this.$uid=0,this.disposables=[],this.listeners={},this.curOp={},this.attached=!1,this.statusBar=null,this.options={},this.addLocalListeners(),this.ctxInsert=this.editor.createContextKey("insertMode",!0)}attach(){ae.keyMap.vim.attach(this)}addLocalListeners(){this.disposables.push(this.editor.onDidChangeCursorPosition(this.handleCursorChange),this.editor.onDidChangeModelContent(this.handleChange),this.editor.onKeyDown(this.handleKeyDown))}handleKeyDown=s=>{if(s.browserEvent.defaultPrevented&s.keyCode!==ve.Escape||!this.attached)return;let h=$t(s);if(this.replaceMode&&this.handleReplaceMode(h,s),!h)return;let d=this.state.keyMap;if(ae.keyMap[d]&&ae.keyMap[d].call){let g=ae.keyMap[d].call(h,this);if(g){s.preventDefault(),s.stopPropagation();try{g()}catch(S){console.error(S)}}}};handleReplaceMode(s,h){let d=!1,g=s,S=this.editor.getPosition(),T=new xe(S.lineNumber,S.column,S.lineNumber,S.column+1),P=!0;if(s.startsWith("'"))g=s[1];else if(g==="Enter")g=`
`;else if(g==="Backspace"){let B=this.replaceStack.pop();if(!B)return;d=!0,g=B,T=new xe(S.lineNumber,S.column,S.lineNumber,S.column-1)}else return;h.preventDefault(),h.stopPropagation(),this.replaceStack||(this.replaceStack=[]),d||this.replaceStack.push(this.editor.getModel().getValueInRange(T)),this.editor.executeEdits("vim",[{text:g,range:T,forceMoveMarkers:P}]),d&&this.editor.setPosition(T.getStartPosition())}handleCursorChange=s=>{let{position:h,source:d}=s,{editor:g}=this,S=g.getSelection();if(!this.ctxInsert.get()&&s.source==="mouse"&&S.isEmpty()){let T=g.getModel().getLineMaxColumn(h.lineNumber);if(s.position.column===T){g.setPosition(new Fe(s.position.lineNumber,T-1));return}}this.dispatch("cursorActivity",this,s)};handleChange=s=>{let{changes:h}=s,d={text:h.reduce((S,T)=>(S.push(T.text),S),[]),origin:"+input"},g=this.curOp=this.curOp||{};g.changeHandlers||(g.changeHandlers=this.listeners.change&&this.listeners.change.slice()),!this.virtualSelectionMode()&&(g.lastChange?g.lastChange.next=g.lastChange=d:g.lastChange=g.change=d,this.dispatch("change",this,d))};setOption(s,h){this.state[s]=h,s==="theme"&&Ve.setTheme(h)}getConfiguration(){let{editor:s}=this,h=Ur;return typeof s.getConfiguration=="function"?s.getConfiguration():("EditorOption"in Ve&&(h=Ve.EditorOption),{readOnly:s.getOption(h.readOnly),viewInfo:{cursorWidth:s.getOption(h.cursorWidth)},fontInfo:s.getOption(h.fontInfo)})}getOption(s){return s==="readOnly"?this.getConfiguration().readOnly:s==="firstLineNumber"?this.firstLine()+1:s==="indentWithTabs"?!this.editor.getModel().getOptions().insertSpaces:typeof this.editor.getConfiguration=="function"?this.editor.getRawConfiguration()[s]:this.editor.getRawOptions()[s]}dispatch(s,...h){let d=this.listeners[s];!d||d.forEach(g=>g(...h))}on(s,h){this.listeners[s]||(this.listeners[s]=[]),this.listeners[s].push(h)}off(s,h){let d=this.listeners[s];!d||(this.listeners[s]=d.filter(g=>g!==h))}firstLine(){return 0}lastLine(){return this.lineCount()-1}lineCount(){return this.editor.getModel().getLineCount()}defaultTextHeight(){return 1}getLine(s){if(s<0)return"";let d=this.editor.getModel().getLineCount();return s+1>d&&(s=d-1),this.editor.getModel().getLineContent(s+1)}getAnchorForSelection(s){return s.isEmpty()?s.getPosition():s.getDirection()===it.LTR?s.getStartPosition():s.getEndPosition()}getHeadForSelection(s){return s.isEmpty()?s.getPosition():s.getDirection()===it.LTR?s.getEndPosition():s.getStartPosition()}getCursor(s=null){if(!s)return oe(this.editor.getPosition());let h=this.editor.getSelection(),d;return h.isEmpty()?d=h.getPosition():s==="anchor"?d=this.getAnchorForSelection(h):d=this.getHeadForSelection(h),oe(d)}getRange(s,h){let d=U(s),g=U(h);return this.editor.getModel().getValueInRange(xe.fromPositions(d,g))}getSelection(){var s=[],h=this.editor;return h.getSelections().map(function(d){s.push(h.getModel().getValueInRange(d))}),s.join(`
`)}replaceRange(s,h,d){let g=U(h),S=d?U(d):g;this.editor.executeEdits("vim",[{text:s,range:xe.fromPositions(g,S)}]),this.pushUndoStop()}pushUndoStop(){this.editor.pushUndoStop()}setCursor(s,h){let d=s;typeof s!="object"&&(d={},d.line=s,d.ch=h);let g=this.editor.getModel().validatePosition(U(d));this.editor.setPosition(U(d)),this.editor.revealPosition(g)}somethingSelected(){return!this.editor.getSelection().isEmpty()}operation(s,h){return s()}listSelections(){let s=this.editor.getSelections();return!s.length||this.inVirtualSelectionMode?[{anchor:this.getCursor("anchor"),head:this.getCursor("head")}]:s.map(h=>{let d=h.getPosition(),g=h.getStartPosition(),S=h.getEndPosition();return{anchor:this.clipPos(oe(this.getAnchorForSelection(h))),head:this.clipPos(oe(this.getHeadForSelection(h)))}})}focus(){this.editor.focus()}setSelections(s,h){let d=!!this.editor.getSelections().length,g=s.map((P,B)=>{let{anchor:V,head:$}=P;return d?nt.fromPositions(U(V),U($)):nt.fromPositions(U($),U(V))});if(h&&g[h]&&g.push(g.splice(h,1)[0]),!g.length)return;let S=g[0],T;S.getDirection()===it.LTR?T=S.getEndPosition():T=S.getStartPosition(),this.editor.setSelections(g),this.editor.revealPosition(T)}setSelection(s,h){let d=xe.fromPositions(U(s),U(h));this.editor.setSelection(d)}getSelections(){let{editor:s}=this;return s.getSelections().map(h=>s.getModel().getValueInRange(h))}replaceSelections(s){let{editor:h}=this;h.getSelections().forEach((d,g)=>{h.executeEdits("vim",[{range:d,text:s[g],forceMoveMarkers:!1}])})}toggleOverwrite(s){s?(this.enterVimMode(),this.replaceMode=!0):(this.leaveVimMode(),this.replaceMode=!1,this.replaceStack=[])}charCoords(s,h){return{top:s.line,left:s.ch}}coordsChar(s,h){}clipPos(s){let h=this.editor.getModel().validatePosition(U(s));return oe(h)}setBookmark(s,h){let d=new ot(this,this.$uid++,s.line,s.ch);return(!h||!h.insertLeft)&&(d.$insertRight=!0),this.marks[d.id]=d,d}getScrollInfo(){let{editor:s}=this,[h]=s.getVisibleRanges();return{left:0,top:h.startLineNumber-1,height:s.getModel().getLineCount(),clientHeight:h.endLineNumber-h.startLineNumber+1}}triggerEditorAction(s){this.editor.trigger("vim",s)}dispose(){this.dispatch("dispose"),this.removeOverlay(),ae.keyMap.vim&&ae.keyMap.vim.detach(this),this.disposables.forEach(s=>s.dispose())}getInputField(){}getWrapperElement(){}enterVimMode(s=!0){this.ctxInsert.set(!1);let h=this.getConfiguration();this.initialCursorWidth=h.viewInfo.cursorWidth||0,this.editor.updateOptions({cursorWidth:h.fontInfo.typicalFullwidthCharacterWidth,cursorBlinking:"solid"})}leaveVimMode(){this.ctxInsert.set(!0),this.editor.updateOptions({cursorWidth:this.initialCursorWidth||0,cursorBlinking:"blink"})}virtualSelectionMode(){return this.inVirtualSelectionMode}markText(){return{clear:function(){},find:function(){}}}getUserVisibleLines(){let s=this.editor.getVisibleRanges();if(!s.length)return{top:0,bottom:0};let h={top:1/0,bottom:0};return s.reduce((d,g)=>(g.startLineNumber<d.top&&(d.top=g.startLineNumber),g.endLineNumber>d.bottom&&(d.bottom=g.endLineNumber),d),h),h.top-=1,h.bottom-=1,h}findPosV(s,h,d){let{editor:g}=this,S=h,T=d,P=U(s);if(d==="page"){let B=g.getLayoutInfo().height,V=this.getConfiguration().fontInfo.lineHeight;S=S*Math.floor(B/V),T="line"}return T==="line"&&(P.lineNumber+=S),oe(P)}findMatchingBracket(s){let h=U(s),d=this.editor.getModel(),g;return d.bracketPairs?g=d.bracketPairs.matchBracket(h):g=d.matchBracket?.(h),!g||g.length!==2?{to:null}:{to:oe(g[1].getStartPosition())}}findFirstNonWhiteSpaceCharacter(s){return this.editor.getModel().getLineFirstNonWhitespaceColumn(s+1)-1}scrollTo(s,h){!s&&!h||s||(h<0&&(h=this.editor.getPosition().lineNumber-h),this.editor.setScrollTop(this.editor.getTopForLineNumber(h+1)))}moveCurrentLineTo(s){let{editor:h}=this,d=h.getPosition(),g=xe.fromPositions(d,d);switch(s){case"top":h.revealRangeAtTop(g);return;case"center":h.revealRangeInCenter(g);return;case"bottom":h._revealRange?.(g,Wr.Bottom);return}}getSearchCursor(s,h){let d=!1,g=!1;s instanceof RegExp&&!s.global&&(d=!s.ignoreCase,s=s.source,g=!0),h.ch==null&&(h.ch=Number.MAX_VALUE);let S=U(h),T=this,{editor:P}=this,B=null,V=P.getModel(),$=V.findMatches(s,!1,g,d)||[];return{getMatches(){return $},findNext(){return this.find(!1)},findPrevious(){return this.find(!0)},jumpTo(Z){if(!$||!$.length)return!1;var Y=$[Z];return B=Y.range,T.highlightRanges([B],"currentFindMatch"),T.highlightRanges($.map(F=>F.range).filter(F=>!F.equalsRange(B))),B},find(Z){if(!$||!$.length)return!1;let Y;if(Z){let F=B?B.getStartPosition():S;if(Y=V.findPreviousMatch(s,F,g,d),!Y||!Y.range.getStartPosition().isBeforeOrEqual(F))return!1}else{let F=B?V.getPositionAt(V.getOffsetAt(B.getStartPosition())+1):S;if(Y=V.findNextMatch(s,F,g,d),!Y||!F.isBeforeOrEqual(Y.range.getStartPosition()))return!1}return B=Y.range,T.highlightRanges([B],"currentFindMatch"),T.highlightRanges($.map(F=>F.range).filter(F=>!F.equalsRange(B))),B},from(){return B&&oe(B.getStartPosition())},to(){return B&&oe(B.getEndPosition())},replace(Z){B&&(P.executeEdits("vim",[{range:B,text:Z,forceMoveMarkers:!0}]),B.setEndPosition(P.getPosition()),P.setPosition(B.getStartPosition()))}}}highlightRanges(s,h="findMatch"){let d=`decoration${h}`;return this[d]=this.editor.deltaDecorations(this[d]||[],s.map(g=>({range:g,options:{stickiness:Ve.TrackedRangeStickiness.NeverGrowsWhenTypingAtEdges,zIndex:13,className:h,showIfCollapsed:!0}}))),this[d]}addOverlay({query:s},h,d){let g=!1,S=!1;s&&s instanceof RegExp&&!s.global&&(S=!0,g=!s.ignoreCase,s=s.source);let T=this.editor.getModel().findNextMatch(s,this.editor.getPosition(),S,g);!T||!T.range||this.highlightRanges([T.range])}removeOverlay(){["currentFindMatch","findMatch"].forEach(s=>{this.editor.deltaDecorations(this[`decoration${s}`]||[],[])})}scrollIntoView(s){!s||this.editor.revealPosition(U(s))}moveH(s,h){if(h!=="char")return;let d=this.editor.getPosition();this.editor.setPosition(new Fe(d.lineNumber,d.column+s))}scanForBracket(s,h,d,g){let{bracketRegex:S}=g,T=U(s),P=this.editor.getModel(),B=(h===-1?P.findPreviousMatch:P.findNextMatch).bind(P),V=[],$=0;for(;;){if($>10)return;let Z=B(S.source,T,!0,!0,null,!0),Y=Z.matches[0];if(Z===void 0)return;let F=ae.matchingBrackets[Y];if(F&&F.charAt(1)===">"==h>0)V.push(Y);else if(V.length===0){let Be=Z.range.getStartPosition();return{pos:oe(Be)}}else V.pop();T=P.getPositionAt(P.getOffsetAt(Z.range.getStartPosition())+h),$+=1}}indexFromPos(s){return this.editor.getModel().getOffsetAt(U(s))}posFromIndex(s){return oe(this.editor.getModel().getPositionAt(s))}indentLine(s,h=!0){let{editor:d}=this,g;d._getViewModel?g=d._getViewModel().cursorConfig:g=d._getCursors().context.config;let S=new Fe(s+1,1),T=nt.fromPositions(S,S);h?d.getAction("editor.action.indentLines").run():d.getAction("editor.action.outdentLines").run()}setStatusBar(s){this.statusBar=s}openDialog(s,h,d){if(!!this.statusBar)return this.statusBar.setSec(s,h,d)}openNotification(s){!this.statusBar||this.statusBar.showNotification(s)}smartIndent(){this.editor.getAction("editor.action.formatSelection").run()}moveCursorTo(s){let h=this.editor.getPosition();s==="start"?h.column=1:s==="end"&&(h.column=this.editor.getModel().getLineMaxColumn(h.lineNumber)),this.editor.setPosition(h)}execCommand(s){switch(s){case"goLineLeft":this.moveCursorTo("start");break;case"goLineRight":this.moveCursorTo("end");break;case"indentAuto":this.smartIndent();break}}},H=ae;J(H,"Pos",We),J(H,"signal",Jr),J(H,"on",Re("on")),J(H,"off",Re("off")),J(H,"addClass",Re("addClass")),J(H,"rmClass",Re("rmClass")),J(H,"defineOption",Re("defineOption")),J(H,"keyMap",{default:function(s){return function(h){return!0}}}),J(H,"matchingBrackets",{"(":")>",")":"(<","[":"]>","]":"[<","{":"}>","}":"{<","<":">>",">":"<<"}),J(H,"isWordChar",jr),J(H,"keyName",$t),J(H,"StringStream",jt),J(H,"e_stop",function(s){return s.stopPropagation?s.stopPropagation():s.cancelBubble=!0,ae.e_preventDefault(s),!1}),J(H,"e_preventDefault",function(s){return s.preventDefault?(s.preventDefault(),s.browserEvent&&s.browserEvent.preventDefault()):s.returnValue=!1,!1}),J(H,"commands",{redo:function(s){s.editor.getModel().redo()},undo:function(s){s.editor.getModel().undo()},newlineAndIndent:function(s){s.triggerEditorAction("editor.action.insertLineAfter")}}),J(H,"lookupKey",function s(h,d,g){typeof d=="string"&&(d=ae.keyMap[d]);let S=typeof d=="function"?d(h):d[h];if(S===!1)return"nothing";if(S==="...")return"multi";if(S!=null&&g(S))return"handled";if(d.fallthrough){if(!Array.isArray(d.fallthrough))return s(h,d.fallthrough,g);for(var T=0;T<d.fallthrough.length;T++){var P=s(h,d.fallthrough[T],g);if(P)return P}}}),J(H,"defineExtension",function(s,h){ae.prototype[s]=h});var b=H;var m=b.Pos;function Qr(w,s){var h=w.state.vim;if(!h||h.insertMode)return s.head;var d=h.sel.head;if(!d)return s.head;if(!(h.visualBlock&&s.head.line!=d.line))return s.from()==s.anchor&&!s.empty()&&s.head.line==d.line&&s.head.ch!=d.ch?new m(s.head.line,s.head.ch-1):s.head}var X=[{keys:"<Left>",type:"keyToKey",toKeys:"h"},{keys:"<Right>",type:"keyToKey",toKeys:"l"},{keys:"<Up>",type:"keyToKey",toKeys:"k"},{keys:"<Down>",type:"keyToKey",toKeys:"j"},{keys:"g<Up>",type:"keyToKey",toKeys:"gk"},{keys:"g<Down>",type:"keyToKey",toKeys:"gj"},{keys:"<Space>",type:"keyToKey",toKeys:"l"},{keys:"<BS>",type:"keyToKey",toKeys:"h",context:"normal"},{keys:"<Del>",type:"keyToKey",toKeys:"x",context:"normal"},{keys:"<C-Space>",type:"keyToKey",toKeys:"W"},{keys:"<C-BS>",type:"keyToKey",toKeys:"B",context:"normal"},{keys:"<S-Space>",type:"keyToKey",toKeys:"w"},{keys:"<S-BS>",type:"keyToKey",toKeys:"b",context:"normal"},{keys:"<C-n>",type:"keyToKey",toKeys:"j"},{keys:"<C-p>",type:"keyToKey",toKeys:"k"},{keys:"<C-[>",type:"keyToKey",toKeys:"<Esc>"},{keys:"<C-c>",type:"keyToKey",toKeys:"<Esc>"},{keys:"<C-[>",type:"keyToKey",toKeys:"<Esc>",context:"insert"},{keys:"<C-c>",type:"keyToKey",toKeys:"<Esc>",context:"insert"},{keys:"s",type:"keyToKey",toKeys:"cl",context:"normal"},{keys:"s",type:"keyToKey",toKeys:"c",context:"visual"},{keys:"S",type:"keyToKey",toKeys:"cc",context:"normal"},{keys:"S",type:"keyToKey",toKeys:"VdO",context:"visual"},{keys:"<Home>",type:"keyToKey",toKeys:"0"},{keys:"<End>",type:"keyToKey",toKeys:"$"},{keys:"<PageUp>",type:"keyToKey",toKeys:"<C-b>"},{keys:"<PageDown>",type:"keyToKey",toKeys:"<C-f>"},{keys:"<CR>",type:"keyToKey",toKeys:"j^",context:"normal"},{keys:"<Ins>",type:"keyToKey",toKeys:"i",context:"normal"},{keys:"<Ins>",type:"action",action:"toggleOverwrite",context:"insert"},{keys:"H",type:"motion",motion:"moveToTopLine",motionArgs:{linewise:!0,toJumplist:!0}},{keys:"M",type:"motion",motion:"moveToMiddleLine",motionArgs:{linewise:!0,toJumplist:!0}},{keys:"L",type:"motion",motion:"moveToBottomLine",motionArgs:{linewise:!0,toJumplist:!0}},{keys:"h",type:"motion",motion:"moveByCharacters",motionArgs:{forward:!1}},{keys:"l",type:"motion",motion:"moveByCharacters",motionArgs:{forward:!0}},{keys:"j",type:"motion",motion:"moveByLines",motionArgs:{forward:!0,linewise:!0}},{keys:"k",type:"motion",motion:"moveByLines",motionArgs:{forward:!1,linewise:!0}},{keys:"gj",type:"motion",motion:"moveByDisplayLines",motionArgs:{forward:!0}},{keys:"gk",type:"motion",motion:"moveByDisplayLines",motionArgs:{forward:!1}},{keys:"w",type:"motion",motion:"moveByWords",motionArgs:{forward:!0,wordEnd:!1}},{keys:"W",type:"motion",motion:"moveByWords",motionArgs:{forward:!0,wordEnd:!1,bigWord:!0}},{keys:"e",type:"motion",motion:"moveByWords",motionArgs:{forward:!0,wordEnd:!0,inclusive:!0}},{keys:"E",type:"motion",motion:"moveByWords",motionArgs:{forward:!0,wordEnd:!0,bigWord:!0,inclusive:!0}},{keys:"b",type:"motion",motion:"moveByWords",motionArgs:{forward:!1,wordEnd:!1}},{keys:"B",type:"motion",motion:"moveByWords",motionArgs:{forward:!1,wordEnd:!1,bigWord:!0}},{keys:"ge",type:"motion",motion:"moveByWords",motionArgs:{forward:!1,wordEnd:!0,inclusive:!0}},{keys:"gE",type:"motion",motion:"moveByWords",motionArgs:{forward:!1,wordEnd:!0,bigWord:!0,inclusive:!0}},{keys:"{",type:"motion",motion:"moveByParagraph",motionArgs:{forward:!1,toJumplist:!0}},{keys:"}",type:"motion",motion:"moveByParagraph",motionArgs:{forward:!0,toJumplist:!0}},{keys:"(",type:"motion",motion:"moveBySentence",motionArgs:{forward:!1}},{keys:")",type:"motion",motion:"moveBySentence",motionArgs:{forward:!0}},{keys:"<C-f>",type:"motion",motion:"moveByPage",motionArgs:{forward:!0}},{keys:"<C-b>",type:"motion",motion:"moveByPage",motionArgs:{forward:!1}},{keys:"<C-d>",type:"motion",motion:"moveByScroll",motionArgs:{forward:!0,explicitRepeat:!0}},{keys:"<C-u>",type:"motion",motion:"moveByScroll",motionArgs:{forward:!1,explicitRepeat:!0}},{keys:"gg",type:"motion",motion:"moveToLineOrEdgeOfDocument",motionArgs:{forward:!1,explicitRepeat:!0,linewise:!0,toJumplist:!0}},{keys:"G",type:"motion",motion:"moveToLineOrEdgeOfDocument",motionArgs:{forward:!0,explicitRepeat:!0,linewise:!0,toJumplist:!0}},{keys:"g$",type:"motion",motion:"moveToEndOfDisplayLine"},{keys:"g^",type:"motion",motion:"moveToStartOfDisplayLine"},{keys:"g0",type:"motion",motion:"moveToStartOfDisplayLine"},{keys:"0",type:"motion",motion:"moveToStartOfLine"},{keys:"^",type:"motion",motion:"moveToFirstNonWhiteSpaceCharacter"},{keys:"+",type:"motion",motion:"moveByLines",motionArgs:{forward:!0,toFirstChar:!0}},{keys:"-",type:"motion",motion:"moveByLines",motionArgs:{forward:!1,toFirstChar:!0}},{keys:"_",type:"motion",motion:"moveByLines",motionArgs:{forward:!0,toFirstChar:!0,repeatOffset:-1}},{keys:"$",type:"motion",motion:"moveToEol",motionArgs:{inclusive:!0}},{keys:"%",type:"motion",motion:"moveToMatchedSymbol",motionArgs:{inclusive:!0,toJumplist:!0}},{keys:"f<character>",type:"motion",motion:"moveToCharacter",motionArgs:{forward:!0,inclusive:!0}},{keys:"F<character>",type:"motion",motion:"moveToCharacter",motionArgs:{forward:!1}},{keys:"t<character>",type:"motion",motion:"moveTillCharacter",motionArgs:{forward:!0,inclusive:!0}},{keys:"T<character>",type:"motion",motion:"moveTillCharacter",motionArgs:{forward:!1}},{keys:";",type:"motion",motion:"repeatLastCharacterSearch",motionArgs:{forward:!0}},{keys:",",type:"motion",motion:"repeatLastCharacterSearch",motionArgs:{forward:!1}},{keys:"'<character>",type:"motion",motion:"goToMark",motionArgs:{toJumplist:!0,linewise:!0}},{keys:"`<character>",type:"motion",motion:"goToMark",motionArgs:{toJumplist:!0}},{keys:"]`",type:"motion",motion:"jumpToMark",motionArgs:{forward:!0}},{keys:"[`",type:"motion",motion:"jumpToMark",motionArgs:{forward:!1}},{keys:"]'",type:"motion",motion:"jumpToMark",motionArgs:{forward:!0,linewise:!0}},{keys:"['",type:"motion",motion:"jumpToMark",motionArgs:{forward:!1,linewise:!0}},{keys:"]p",type:"action",action:"paste",isEdit:!0,actionArgs:{after:!0,isEdit:!0,matchIndent:!0}},{keys:"[p",type:"action",action:"paste",isEdit:!0,actionArgs:{after:!1,isEdit:!0,matchIndent:!0}},{keys:"]<character>",type:"motion",motion:"moveToSymbol",motionArgs:{forward:!0,toJumplist:!0}},{keys:"[<character>",type:"motion",motion:"moveToSymbol",motionArgs:{forward:!1,toJumplist:!0}},{keys:"|",type:"motion",motion:"moveToColumn"},{keys:"o",type:"motion",motion:"moveToOtherHighlightedEnd",context:"visual"},{keys:"O",type:"motion",motion:"moveToOtherHighlightedEnd",motionArgs:{sameLine:!0},context:"visual"},{keys:"d",type:"operator",operator:"delete"},{keys:"y",type:"operator",operator:"yank"},{keys:"c",type:"operator",operator:"change"},{keys:"=",type:"operator",operator:"indentAuto"},{keys:">",type:"operator",operator:"indent",operatorArgs:{indentRight:!0}},{keys:"<",type:"operator",operator:"indent",operatorArgs:{indentRight:!1}},{keys:"g~",type:"operator",operator:"changeCase"},{keys:"gu",type:"operator",operator:"changeCase",operatorArgs:{toLower:!0},isEdit:!0},{keys:"gU",type:"operator",operator:"changeCase",operatorArgs:{toLower:!1},isEdit:!0},{keys:"n",type:"motion",motion:"findNext",motionArgs:{forward:!0,toJumplist:!0}},{keys:"N",type:"motion",motion:"findNext",motionArgs:{forward:!1,toJumplist:!0}},{keys:"gn",type:"motion",motion:"findAndSelectNextInclusive",motionArgs:{forward:!0}},{keys:"gN",type:"motion",motion:"findAndSelectNextInclusive",motionArgs:{forward:!1}},{keys:"x",type:"operatorMotion",operator:"delete",motion:"moveByCharacters",motionArgs:{forward:!0},operatorMotionArgs:{visualLine:!1}},{keys:"X",type:"operatorMotion",operator:"delete",motion:"moveByCharacters",motionArgs:{forward:!1},operatorMotionArgs:{visualLine:!0}},{keys:"D",type:"operatorMotion",operator:"delete",motion:"moveToEol",motionArgs:{inclusive:!0},context:"normal"},{keys:"D",type:"operator",operator:"delete",operatorArgs:{linewise:!0},context:"visual"},{keys:"Y",type:"operatorMotion",operator:"yank",motion:"expandToLine",motionArgs:{linewise:!0},context:"normal"},{keys:"Y",type:"operator",operator:"yank",operatorArgs:{linewise:!0},context:"visual"},{keys:"C",type:"operatorMotion",operator:"change",motion:"moveToEol",motionArgs:{inclusive:!0},context:"normal"},{keys:"C",type:"operator",operator:"change",operatorArgs:{linewise:!0},context:"visual"},{keys:"~",type:"operatorMotion",operator:"changeCase",motion:"moveByCharacters",motionArgs:{forward:!0},operatorArgs:{shouldMoveCursor:!0},context:"normal"},{keys:"~",type:"operator",operator:"changeCase",context:"visual"},{keys:"<C-u>",type:"operatorMotion",operator:"delete",motion:"moveToStartOfLine",context:"insert"},{keys:"<C-w>",type:"operatorMotion",operator:"delete",motion:"moveByWords",motionArgs:{forward:!1,wordEnd:!1},context:"insert"},{keys:"<C-w>",type:"idle",context:"normal"},{keys:"<C-i>",type:"action",action:"jumpListWalk",actionArgs:{forward:!0}},{keys:"<C-o>",type:"action",action:"jumpListWalk",actionArgs:{forward:!1}},{keys:"<C-e>",type:"action",action:"scroll",actionArgs:{forward:!0,linewise:!0}},{keys:"<C-y>",type:"action",action:"scroll",actionArgs:{forward:!1,linewise:!0}},{keys:"a",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"charAfter"},context:"normal"},{keys:"A",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"eol"},context:"normal"},{keys:"A",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"endOfSelectedArea"},context:"visual"},{keys:"i",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"inplace"},context:"normal"},{keys:"gi",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"lastEdit"},context:"normal"},{keys:"I",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"firstNonBlank"},context:"normal"},{keys:"gI",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"bol"},context:"normal"},{keys:"I",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"startOfSelectedArea"},context:"visual"},{keys:"o",type:"action",action:"newLineAndEnterInsertMode",isEdit:!0,interlaceInsertRepeat:!0,actionArgs:{after:!0},context:"normal"},{keys:"O",type:"action",action:"newLineAndEnterInsertMode",isEdit:!0,interlaceInsertRepeat:!0,actionArgs:{after:!1},context:"normal"},{keys:"v",type:"action",action:"toggleVisualMode"},{keys:"V",type:"action",action:"toggleVisualMode",actionArgs:{linewise:!0}},{keys:"<C-v>",type:"action",action:"toggleVisualMode",actionArgs:{blockwise:!0}},{keys:"<C-q>",type:"action",action:"toggleVisualMode",actionArgs:{blockwise:!0}},{keys:"gv",type:"action",action:"reselectLastSelection"},{keys:"J",type:"action",action:"joinLines",isEdit:!0},{keys:"gJ",type:"action",action:"joinLines",actionArgs:{keepSpaces:!0},isEdit:!0},{keys:"p",type:"action",action:"paste",isEdit:!0,actionArgs:{after:!0,isEdit:!0}},{keys:"P",type:"action",action:"paste",isEdit:!0,actionArgs:{after:!1,isEdit:!0}},{keys:"r<character>",type:"action",action:"replace",isEdit:!0},{keys:"@<character>",type:"action",action:"replayMacro"},{keys:"q<character>",type:"action",action:"enterMacroRecordMode"},{keys:"R",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{replace:!0},context:"normal"},{keys:"R",type:"operator",operator:"change",operatorArgs:{linewise:!0,fullLine:!0},context:"visual",exitVisualBlock:!0},{keys:"u",type:"action",action:"undo",context:"normal"},{keys:"u",type:"operator",operator:"changeCase",operatorArgs:{toLower:!0},context:"visual",isEdit:!0},{keys:"U",type:"operator",operator:"changeCase",operatorArgs:{toLower:!1},context:"visual",isEdit:!0},{keys:"<C-r>",type:"action",action:"redo"},{keys:"m<character>",type:"action",action:"setMark"},{keys:'"<character>',type:"action",action:"setRegister"},{keys:"zz",type:"action",action:"scrollToCursor",actionArgs:{position:"center"}},{keys:"z.",type:"action",action:"scrollToCursor",actionArgs:{position:"center"},motion:"moveToFirstNonWhiteSpaceCharacter"},{keys:"zt",type:"action",action:"scrollToCursor",actionArgs:{position:"top"}},{keys:"z<CR>",type:"action",action:"scrollToCursor",actionArgs:{position:"top"},motion:"moveToFirstNonWhiteSpaceCharacter"},{keys:"z-",type:"action",action:"scrollToCursor",actionArgs:{position:"bottom"}},{keys:"zb",type:"action",action:"scrollToCursor",actionArgs:{position:"bottom"},motion:"moveToFirstNonWhiteSpaceCharacter"},{keys:".",type:"action",action:"repeatLastEdit"},{keys:"<C-a>",type:"action",action:"incrementNumberToken",isEdit:!0,actionArgs:{increase:!0,backtrack:!1}},{keys:"<C-x>",type:"action",action:"incrementNumberToken",isEdit:!0,actionArgs:{increase:!1,backtrack:!1}},{keys:"<C-t>",type:"action",action:"indent",actionArgs:{indentRight:!0},context:"insert"},{keys:"<C-d>",type:"action",action:"indent",actionArgs:{indentRight:!1},context:"insert"},{keys:"a<character>",type:"motion",motion:"textObjectManipulation"},{keys:"i<character>",type:"motion",motion:"textObjectManipulation",motionArgs:{textObjectInner:!0}},{keys:"/",type:"search",searchArgs:{forward:!0,querySrc:"prompt",toJumplist:!0}},{keys:"?",type:"search",searchArgs:{forward:!1,querySrc:"prompt",toJumplist:!0}},{keys:"*",type:"search",searchArgs:{forward:!0,querySrc:"wordUnderCursor",wholeWordOnly:!0,toJumplist:!0}},{keys:"#",type:"search",searchArgs:{forward:!1,querySrc:"wordUnderCursor",wholeWordOnly:!0,toJumplist:!0}},{keys:"g*",type:"search",searchArgs:{forward:!0,querySrc:"wordUnderCursor",toJumplist:!0}},{keys:"g#",type:"search",searchArgs:{forward:!1,querySrc:"wordUnderCursor",toJumplist:!0}},{keys:":",type:"ex"}],Jt=X.length,Qt=[{name:"colorscheme",shortName:"colo"},{name:"map"},{name:"imap",shortName:"im"},{name:"nmap",shortName:"nm"},{name:"vmap",shortName:"vm"},{name:"unmap"},{name:"write",shortName:"w"},{name:"undo",shortName:"u"},{name:"redo",shortName:"red"},{name:"set",shortName:"se"},{name:"setlocal",shortName:"setl"},{name:"setglobal",shortName:"setg"},{name:"sort",shortName:"sor"},{name:"substitute",shortName:"s",possiblyAsync:!0},{name:"nohlsearch",shortName:"noh"},{name:"yank",shortName:"y"},{name:"delmarks",shortName:"delm"},{name:"registers",shortName:"reg",excludeFromCommandHistory:!0},{name:"vglobal",shortName:"v"},{name:"global",shortName:"g"}],zr=function(){function w(e){e.setOption("disableInput",!0),e.setOption("showCursorWhenSelecting",!1),b.signal(e,"vim-mode-change",{mode:"normal"}),e.on("cursorActivity",_t),Pe(e),e.enterVimMode()}function s(e){e.setOption("disableInput",!1),e.off("cursorActivity",_t),e.state.vim=null,He&&clearTimeout(He),e.leaveVimMode()}function h(e,t){e.attached=!1,this==b.keyMap.vim&&(e.options.$customCursor=null),(!t||t.attach!=d)&&s(e)}function d(e,t){this==b.keyMap.vim&&(e.attached=!0,e.curOp&&(e.curOp.selectionChanged=!0),e.options.$customCursor=Qr),(!t||t.attach!=d)&&w(e)}b.defineOption("vimMode",!1,function(e,t,r){t&&e.getOption("keyMap")!="vim"?e.setOption("keyMap","vim"):!t&&r!=b.Init&&/^vim/.test(e.getOption("keyMap"))&&e.setOption("keyMap","default")});function g(e,t){if(!!t){if(this[e])return this[e];var r=P(e);if(!r)return!1;var n=Me.findKey(t,r);return typeof n=="function"&&b.signal(t,"vim-keypress",r),n}}var S={Shift:"S",Ctrl:"C",Alt:"A",Cmd:"D",Mod:"A",CapsLock:""},T={Enter:"CR",Backspace:"BS",Delete:"Del",Insert:"Ins"};function P(e){if(e.charAt(0)=="'")return e.charAt(1);if(e==="AltGraph")return!1;var t=e.split(/-(?!$)/),r=t[t.length-1];if(t.length==1&&t[0].length==1)return!1;if(t.length==2&&t[0]=="Shift"&&r.length==1)return!1;for(var n=!1,i=0;i<t.length;i++){var o=t[i];o in S?t[i]=S[o]:n=!0,o in T&&(t[i]=T[o])}return n?(be(r)&&(t[t.length-1]=r.toLowerCase()),"<"+t.join("-")+">"):!1}var B=/[\d]/,V=[b.isWordChar,function(e){return e&&!b.isWordChar(e)&&!/\s/.test(e)}],$=[function(e){return/\S/.test(e)}];function Z(e,t){for(var r=[],n=e;n<e+t;n++)r.push(String.fromCharCode(n));return r}var Y=Z(65,26),F=Z(97,26),Be=Z(48,10),zt=[].concat(Y,F,Be,["<",">"]),st=[].concat(Y,F,Be,["-",'"',".",":","_","/"]),Ue;try{Ue=new RegExp("^[\\p{Lu}]$","u")}catch{Ue=/^[A-Z]$/}function $e(e,t){return t>=e.firstLine()&&t<=e.lastLine()}function je(e){return/^[a-z]$/.test(e)}function Xr(e){return"()[]{}".indexOf(e)!=-1}function Gt(e){return B.test(e)}function be(e){return Ue.test(e)}function ye(e){return/^\s*$/.test(e)}function lt(e){return".?!".indexOf(e)!=-1}function Je(e,t){for(var r=0;r<t.length;r++)if(t[r]==e)return!0;return!1}var he={};function Oe(e,t,r,n,i){if(t===void 0&&!i)throw Error("defaultValue is required unless callback is provided");if(r||(r="string"),he[e]={type:r,defaultValue:t,callback:i},n)for(var o=0;o<n.length;o++)he[n[o]]=he[e];t&&Qe(e,t)}function Qe(e,t,r,n){var i=he[e];n=n||{};var o=n.scope;if(!i)return new Error("Unknown option: "+e);if(i.type=="boolean"){if(t&&t!==!0)return new Error("Invalid argument: "+e+"="+t);t!==!1&&(t=!0)}i.callback?(o!=="local"&&i.callback(t,void 0),o!=="global"&&r&&i.callback(t,r)):(o!=="local"&&(i.value=i.type=="boolean"?!!t:t),o!=="global"&&r&&(r.state.vim.options[e]={value:t}))}function Ce(e,t,r){var n=he[e];r=r||{};var i=r.scope;if(!n)return new Error("Unknown option: "+e);if(n.callback){var o=t&&n.callback(void 0,t);return i!=="global"&&o!==void 0?o:i!=="local"?n.callback():void 0}else{var o=i!=="global"&&t&&t.state.vim.options[e];return(o||i!=="local"&&n||{}).value}}Oe("filetype",void 0,"string",["ft"],function(e,t){if(t!==void 0)if(e===void 0){var r=t.getOption("mode");return r=="null"?"":r}else{var r=e==""?"null":e;t.setOption("mode",r)}});var Xt=function(){var e=100,t=-1,r=0,n=0,i=new Array(e);function o(l,f,c){var v=t%e,y=i[v];function p(M){var k=++t%e,L=i[k];L&&L.clear(),i[k]=l.setBookmark(M)}if(y){var C=y.find();C&&!ne(C,f)&&p(f)}else p(f);p(c),r=t,n=t-e+1,n<0&&(n=0)}function a(l,f){t+=f,t>r?t=r:t<n&&(t=n);var c=i[(e+t)%e];if(c&&!c.find()){var v=f>0?1:-1,y,p=l.getCursor();do if(t+=v,c=i[(e+t)%e],c&&(y=c.find())&&!ne(p,y))break;while(t<r&&t>n)}return c}function u(l,f){var c=t,v=a(l,f);return t=c,v&&v.find()}return{cachedCursor:void 0,add:o,find:u,move:a}},ut=function(e){return e?{changes:e.changes,expectCursorActivityForChange:e.expectCursorActivityForChange}:{changes:[],expectCursorActivityForChange:!1}};function ft(){this.latestRegister=void 0,this.isPlaying=!1,this.isRecording=!1,this.replaySearchQueries=[],this.onRecordingDone=void 0,this.lastInsertModeChanges=ut()}ft.prototype={exitMacroRecordMode:function(){var e=x.macroModeState;e.onRecordingDone&&e.onRecordingDone(),e.onRecordingDone=void 0,e.isRecording=!1},enterMacroRecordMode:function(e,t){var r=x.registerController.getRegister(t);r&&(r.clear(),this.latestRegister=t,e.openDialog&&(this.onRecordingDone=e.openDialog(document.createTextNode("(recording)["+t+"]"),null,{bottom:!0})),this.isRecording=!0)}};function Pe(e){return e.state.vim||(e.state.vim={inputState:new Ke,lastEditInputState:void 0,lastEditActionCommand:void 0,lastHPos:-1,lastHSPos:-1,lastMotion:null,marks:{},insertMode:!1,insertModeRepeat:void 0,visualMode:!1,visualLine:!1,visualBlock:!1,lastSelection:null,lastPastedText:null,sel:{},options:{}}),e.state.vim}var x;function ct(){x={searchQuery:null,searchIsReversed:!1,lastSubstituteReplacePart:void 0,jumpList:Xt(),macroModeState:new ft,lastCharacterSearch:{increment:0,forward:!0,selectedCharacter:""},registerController:new ht({}),searchHistoryController:new ze,exCommandHistoryController:new ze};for(var e in he){var t=he[e];t.value=t.defaultValue}}var Le,Me={buildKeyMap:function(){},getRegisterController:function(){return x.registerController},resetVimGlobalState_:ct,getVimGlobalState_:function(){return x},maybeInitVimState_:Pe,suppressErrorLogging:!1,InsertModeKey:tt,map:function(e,t,r){ce.map(e,t,r)},unmap:function(e,t){return ce.unmap(e,t)},noremap:function(e,t,r){function n(y){return y?[y]:["normal","insert","visual"]}for(var i=n(r),o=X.length,a=Jt,u=o-a;u<o&&i.length;u++){var l=X[u];if(l.keys==t&&(!r||!l.context||l.context===r)&&l.type.substr(0,2)!=="ex"&&l.type.substr(0,3)!=="key"){var f={};for(var c in l)f[c]=l[c];f.keys=e,r&&!f.context&&(f.context=r),this._mapCommand(f);var v=n(l.context);i=i.filter(function(y){return v.indexOf(y)===-1})}}},mapclear:function(e){var t=X.length,r=Jt,n=X.slice(0,t-r);if(X=X.slice(t-r),e)for(var i=n.length-1;i>=0;i--){var o=n[i];if(e!==o.context)if(o.context)this._mapCommand(o);else{var a=["normal","insert","visual"];for(var u in a)if(a[u]!==e){var l={};for(var f in o)l[f]=o[f];l.context=a[u],this._mapCommand(l)}}}},setOption:Qe,getOption:Ce,defineOption:Oe,defineEx:function(e,t,r){if(!t)t=e;else if(e.indexOf(t)!==0)throw new Error('(Vim.defineEx) "'+t+'" is not a prefix of "'+e+'", command not registered');Kt[e]=r,ce.commandMap_[t]={name:e,shortName:t,type:"api"}},handleKey:function(e,t,r){var n=this.findKey(e,t,r);if(typeof n=="function")return n()},findKey:function(e,t,r){var n=Pe(e);function i(){var c=x.macroModeState;if(c.isRecording){if(t=="q")return c.exitMacroRecordMode(),te(e),!0;r!="mapping"&&Nr(c,t)}}function o(){if(t=="<Esc>"){if(n.visualMode)le(e);else if(n.insertMode)Te(e);else return;return te(e),!0}}function a(c){for(var v;c;)v=/<\w+-.+?>|<\w+>|./.exec(c),t=v[0],c=c.substring(v.index+t.length),Me.handleKey(e,t,"mapping")}function u(){if(o())return!0;for(var c=n.inputState.keyBuffer=n.inputState.keyBuffer+t,v=t.length==1,y=ge.matchCommand(c,X,n.inputState,"insert");c.length>1&&y.type!="full";){var c=n.inputState.keyBuffer=c.slice(1),p=ge.matchCommand(c,X,n.inputState,"insert");p.type!="none"&&(y=p)}if(y.type=="none")return te(e),!1;if(y.type=="partial")return Le&&window.clearTimeout(Le),Le=window.setTimeout(function(){n.insertMode&&n.inputState.keyBuffer&&te(e)},Ce("insertModeEscKeysTimeout")),!v;if(Le&&window.clearTimeout(Le),v){for(var C=e.listSelections(),M=0;M<C.length;M++){var k=C[M].head;e.replaceRange("",q(k,0,-(c.length-1)),k,"+input")}x.macroModeState.lastInsertModeChanges.changes.pop()}return te(e),y.command}function l(){if(i()||o())return!0;var c=n.inputState.keyBuffer=n.inputState.keyBuffer+t;if(/^[1-9]\d*$/.test(c))return!0;var C=/^(\d*)(.*)$/.exec(c);if(!C)return te(e),!1;var v=n.visualMode?"visual":"normal",y=C[2]||C[1];n.inputState.operatorShortcut&&n.inputState.operatorShortcut.slice(-1)==y&&(y=n.inputState.operatorShortcut);var p=ge.matchCommand(y,X,n.inputState,v);if(p.type=="none")return te(e),!1;if(p.type=="partial")return!0;n.inputState.keyBuffer="";var C=/^(\d*)(.*)$/.exec(c);return C[1]&&C[1]!="0"&&n.inputState.pushRepeatDigit(C[1]),p.command}var f;return n.insertMode?f=u():f=l(),f===!1?!n.insertMode&&t.length===1?function(){return!0}:void 0:f===!0?function(){return!0}:function(){return e.operation(function(){e.curOp.isVimOp=!0;try{f.type=="keyToKey"?a(f.toKeys):ge.processCommand(e,n,f)}catch(c){throw e.state.vim=void 0,Pe(e),Me.suppressErrorLogging||console.log(c),c}return!0})}},handleEx:function(e,t){ce.processCommand(e,t)},defineMotion:Zt,defineAction:er,defineOperator:qt,mapCommand:Pr,_mapCommand:Nt,defineRegister:Yt,exitVisualMode:le,exitInsertMode:Te};function Ke(){this.prefixRepeat=[],this.motionRepeat=[],this.operator=null,this.operatorArgs=null,this.motion=null,this.motionArgs=null,this.keyBuffer=[],this.registerName=null}Ke.prototype.pushRepeatDigit=function(e){this.operator?this.motionRepeat=this.motionRepeat.concat(e):this.prefixRepeat=this.prefixRepeat.concat(e)},Ke.prototype.getRepeat=function(){var e=0;return(this.prefixRepeat.length>0||this.motionRepeat.length>0)&&(e=1,this.prefixRepeat.length>0&&(e*=parseInt(this.prefixRepeat.join(""),10)),this.motionRepeat.length>0&&(e*=parseInt(this.motionRepeat.join(""),10))),e};function te(e,t){e.state.vim.inputState=new Ke,b.signal(e,"vim-command-done",t)}function se(e,t,r){this.clear(),this.keyBuffer=[e||""],this.insertModeChanges=[],this.searchQueries=[],this.linewise=!!t,this.blockwise=!!r}se.prototype={setText:function(e,t,r){this.keyBuffer=[e||""],this.linewise=!!t,this.blockwise=!!r},pushText:function(e,t){t&&(this.linewise||this.keyBuffer.push(`
`),this.linewise=!0),this.keyBuffer.push(e)},pushInsertModeChanges:function(e){this.insertModeChanges.push(ut(e))},pushSearchQuery:function(e){this.searchQueries.push(e)},clear:function(){this.keyBuffer=[],this.insertModeChanges=[],this.searchQueries=[],this.linewise=!1},toString:function(){return this.keyBuffer.join("")}};function Yt(e,t){var r=x.registerController.registers;if(!e||e.length!=1)throw Error("Register name must be 1 character");if(r[e])throw Error("Register already defined "+e);r[e]=t,st.push(e)}function ht(e){this.registers=e,this.unnamedRegister=e['"']=new se,e["."]=new se,e[":"]=new se,e["/"]=new se}ht.prototype={pushText:function(e,t,r,n,i){if(e!=="_"){n&&r.charAt(r.length-1)!==`
`&&(r+=`
`);var o=this.isValidRegister(e)?this.getRegister(e):null;if(!o){switch(t){case"yank":this.registers[0]=new se(r,n,i);break;case"delete":case"change":r.indexOf(`
`)==-1?this.registers["-"]=new se(r,n):(this.shiftNumericRegisters_(),this.registers[1]=new se(r,n));break}this.unnamedRegister.setText(r,n,i);return}var a=be(e);a?o.pushText(r,n):o.setText(r,n,i),this.unnamedRegister.setText(o.toString(),n)}},getRegister:function(e){return this.isValidRegister(e)?(e=e.toLowerCase(),this.registers[e]||(this.registers[e]=new se),this.registers[e]):this.unnamedRegister},isValidRegister:function(e){return e&&Je(e,st)},shiftNumericRegisters_:function(){for(var e=9;e>=2;e--)this.registers[e]=this.getRegister(""+(e-1))}};function ze(){this.historyBuffer=[],this.iterator=0,this.initialPrefix=null}ze.prototype={nextMatch:function(e,t){var r=this.historyBuffer,n=t?-1:1;this.initialPrefix===null&&(this.initialPrefix=e);for(var i=this.iterator+n;t?i>=0:i<r.length;i+=n)for(var o=r[i],a=0;a<=o.length;a++)if(this.initialPrefix==o.substring(0,a))return this.iterator=i,o;if(i>=r.length)return this.iterator=r.length,this.initialPrefix;if(i<0)return e},pushInput:function(e){var t=this.historyBuffer.indexOf(e);t>-1&&this.historyBuffer.splice(t,1),e.length&&this.historyBuffer.push(e)},reset:function(){this.initialPrefix=null,this.iterator=this.historyBuffer.length}};var ge={matchCommand:function(e,t,r,n){var i=tr(e,t,n,r);if(!i.full&&!i.partial)return{type:"none"};if(!i.full&&i.partial)return{type:"partial"};for(var o,a=0;a<i.full.length;a++){var u=i.full[a];o||(o=u)}if(o.keys.slice(-11)=="<character>"){var l=nr(e);if(!l)return{type:"none"};r.selectedCharacter=l}return{type:"full",command:o}},processCommand:function(e,t,r){switch(t.inputState.repeatOverride=r.repeatOverride,r.type){case"motion":this.processMotion(e,t,r);break;case"operator":this.processOperator(e,t,r);break;case"operatorMotion":this.processOperatorMotion(e,t,r);break;case"action":this.processAction(e,t,r);break;case"search":this.processSearch(e,t,r);break;case"ex":case"keyToEx":this.processEx(e,t,r);break;default:break}},processMotion:function(e,t,r){t.inputState.motion=r.motion,t.inputState.motionArgs=Ne(r.motionArgs),this.evalInput(e,t)},processOperator:function(e,t,r){var n=t.inputState;if(n.operator)if(n.operator==r.operator){n.motion="expandToLine",n.motionArgs={linewise:!0},this.evalInput(e,t);return}else te(e);n.operator=r.operator,n.operatorArgs=Ne(r.operatorArgs),r.keys.length>1&&(n.operatorShortcut=r.keys),r.exitVisualBlock&&(t.visualBlock=!1,Se(e)),t.visualMode&&this.evalInput(e,t)},processOperatorMotion:function(e,t,r){var n=t.visualMode,i=Ne(r.operatorMotionArgs);i&&n&&i.visualLine&&(t.visualLine=!0),this.processOperator(e,t,r),n||this.processMotion(e,t,r)},processAction:function(e,t,r){var n=t.inputState,i=n.getRepeat(),o=!!i,a=Ne(r.actionArgs)||{};n.selectedCharacter&&(a.selectedCharacter=n.selectedCharacter),r.operator&&this.processOperator(e,t,r),r.motion&&this.processMotion(e,t,r),(r.motion||r.operator)&&this.evalInput(e,t),a.repeat=i||1,a.repeatIsExplicit=o,a.registerName=n.registerName,te(e),t.lastMotion=null,r.isEdit&&this.recordLastEdit(t,n,r),Ge[r.action](e,a,t)},processSearch:function(e,t,r){if(!e.getSearchCursor)return;var n=r.searchArgs.forward,i=r.searchArgs.wholeWordOnly;fe(e).setReversed(!n);var o=n?"/":"?",a=fe(e).getQuery(),u=e.getScrollInfo();function l(k,L,I){x.searchHistoryController.pushInput(k),x.searchHistoryController.reset();try{Ae(e,k,L,I)}catch{K(e,"Invalid regex: "+k),te(e);return}ge.processMotion(e,t,{type:"motion",motion:"findNext",motionArgs:{forward:!0,toJumplist:r.searchArgs.toJumplist}})}function f(k){e.scrollTo(u.left,u.top),l(k,!0,!0);var L=x.macroModeState;L.isRecording&&_r(L,k)}function c(k,L,I){var A=b.keyName(k),E,j;A=="Up"||A=="Down"?(E=A=="Up",j=k.target?k.target.selectionEnd:0,L=x.searchHistoryController.nextMatch(L,E)||"",I(L),j&&k.target&&(k.target.selectionEnd=k.target.selectionStart=Math.min(j,k.target.value.length))):A!="Left"&&A!="Right"&&A!="Ctrl"&&A!="Alt"&&A!="Shift"&&x.searchHistoryController.reset();var D;try{D=Ae(e,L,!0,!0)}catch{}D?e.scrollIntoView(Et(e,!n,D),30):(qe(e),e.scrollTo(u.left,u.top))}function v(k,L,I){var A=b.keyName(k);A=="Esc"||A=="Ctrl-C"||A=="Ctrl-["||A=="Backspace"&&L==""?(x.searchHistoryController.pushInput(L),x.searchHistoryController.reset(),Ae(e,a),qe(e),e.scrollTo(u.left,u.top),b.e_stop(k),te(e),I(),e.focus()):A=="Up"||A=="Down"?b.e_stop(k):A=="Ctrl-U"&&(b.e_stop(k),I(""))}switch(r.searchArgs.querySrc){case"prompt":var y=x.macroModeState;if(y.isPlaying){var M=y.replaySearchQueries.shift();l(M,!0,!1)}else _e(e,{onClose:f,prefix:o,desc:"(JavaScript regexp)",onKeyUp:c,onKeyDown:v});break;case"wordUnderCursor":var p=De(e,!1,!0,!1,!0),C=!0;if(p||(p=De(e,!1,!0,!1,!1),C=!1),!p)return;var M=e.getLine(p.start.line).substring(p.start.ch,p.end.ch);C&&i?M="\\b"+M+"\\b":M=ir(M),x.jumpList.cachedCursor=e.getCursor(),e.setCursor(p.start),l(M,!0,!1);break}},processEx:function(e,t,r){function n(o){x.exCommandHistoryController.pushInput(o),x.exCommandHistoryController.reset(),ce.processCommand(e,o)}function i(o,a,u){var l=b.keyName(o),f,c;(l=="Esc"||l=="Ctrl-C"||l=="Ctrl-["||l=="Backspace"&&a=="")&&(x.exCommandHistoryController.pushInput(a),x.exCommandHistoryController.reset(),b.e_stop(o),te(e),u(),e.focus()),l=="Up"||l=="Down"?(b.e_stop(o),f=l=="Up",c=o.target?o.target.selectionEnd:0,a=x.exCommandHistoryController.nextMatch(a,f)||"",u(a),c&&o.target&&(o.target.selectionEnd=o.target.selectionStart=Math.min(c,o.target.value.length))):l=="Ctrl-U"?(b.e_stop(o),u("")):l!="Left"&&l!="Right"&&l!="Ctrl"&&l!="Alt"&&l!="Shift"&&x.exCommandHistoryController.reset()}r.type=="keyToEx"?ce.processCommand(e,r.exArgs.input):t.visualMode?_e(e,{onClose:n,prefix:":",value:"'<,'>",onKeyDown:i,selectValueOnOpen:!1}):_e(e,{onClose:n,prefix:":",onKeyDown:i})},evalInput:function(e,t){var r=t.inputState,n=r.motion,i=r.motionArgs||{},o=r.operator,a=r.operatorArgs||{},u=r.registerName,l=t.sel,f=N(t.visualMode?re(e,l.head):e.getCursor("head")),c=N(t.visualMode?re(e,l.anchor):e.getCursor("anchor")),v=N(f),y=N(c),p,C,M;if(o&&this.recordLastEdit(t,r),r.repeatOverride!==void 0?M=r.repeatOverride:M=r.getRepeat(),M>0&&i.explicitRepeat?i.repeatIsExplicit=!0:(i.noRepeat||!i.explicitRepeat&&M===0)&&(M=1,i.repeatIsExplicit=!1),r.selectedCharacter&&(i.selectedCharacter=a.selectedCharacter=r.selectedCharacter),i.repeat=M,te(e),n){var k=de[n](e,f,i,t,r);if(t.lastMotion=de[n],!k)return;if(i.toJumplist){var L=x.jumpList,I=L.cachedCursor;I?(mt(e,I,k),delete L.cachedCursor):mt(e,f,k)}k instanceof Array?(C=k[0],p=k[1]):p=k,p||(p=N(f)),t.visualMode?(t.visualBlock&&p.ch===1/0||(p=re(e,p)),C&&(C=re(e,C)),C=C||y,l.anchor=C,l.head=p,Se(e),pe(e,t,"<",_(C,p)?C:p),pe(e,t,">",_(C,p)?p:C)):o||(p=re(e,p),e.setCursor(p.line,p.ch))}if(o){if(a.lastSel){C=y;var A=a.lastSel,E=Math.abs(A.head.line-A.anchor.line),j=Math.abs(A.head.ch-A.anchor.ch);A.visualLine?p=new m(y.line+E,y.ch):A.visualBlock?p=new m(y.line+E,y.ch+j):A.head.line==A.anchor.line?p=new m(y.line,y.ch+j):p=new m(y.line+E,y.ch),t.visualMode=!0,t.visualLine=A.visualLine,t.visualBlock=A.visualBlock,l=t.sel={anchor:C,head:p},Se(e)}else t.visualMode&&(a.lastSel={anchor:N(l.anchor),head:N(l.head),visualBlock:t.visualBlock,visualLine:t.visualLine});var D,Q,O,R,z;if(t.visualMode){if(D=ie(l.head,l.anchor),Q=ke(l.head,l.anchor),O=t.visualLine||a.linewise,R=t.visualBlock?"block":O?"line":"char",z=Ye(e,{anchor:D,head:Q},R),O){var ee=z.ranges;if(R=="block")for(var G=0;G<ee.length;G++)ee[G].head.ch=W(e,ee[G].head.line);else R=="line"&&(ee[0].head=new m(ee[0].head.line+1,0))}}else{if(D=N(C||y),Q=N(p||v),_(Q,D)){var we=D;D=Q,Q=we}O=i.linewise||a.linewise,O?cr(e,D,Q):i.forward&&fr(e,D,Q),R="char";var Ie=!i.inclusive||O;z=Ye(e,{anchor:D,head:Q},R,Ie)}e.setSelections(z.ranges,z.primary),t.lastMotion=null,a.repeat=M,a.registerName=u,a.linewise=O;var rt=pt[o](e,a,z.ranges,y,p);t.visualMode&&le(e,rt!=null),rt&&e.setCursor(rt)}},recordLastEdit:function(e,t,r){var n=x.macroModeState;n.isPlaying||(e.lastEditInputState=t,e.lastEditActionCommand=r,n.lastInsertModeChanges.changes=[],n.lastInsertModeChanges.expectCursorActivityForChange=!1,n.lastInsertModeChanges.visualBlock=e.visualBlock?e.sel.head.line-e.sel.anchor.line:0)}},de={moveToTopLine:function(e,t,r){var n=et(e).top+r.repeat-1;return new m(n,ue(e.getLine(n)))},moveToMiddleLine:function(e){var t=et(e),r=Math.floor((t.top+t.bottom)*.5);return new m(r,ue(e.getLine(r)))},moveToBottomLine:function(e,t,r){var n=et(e).bottom-r.repeat+1;return new m(n,ue(e.getLine(n)))},expandToLine:function(e,t,r){var n=t;return new m(n.line+r.repeat-1,1/0)},findNext:function(e,t,r){var n=fe(e),i=n.getQuery();if(!!i){var o=!r.forward;return o=n.isReversed()?!o:o,Rt(e,i),Et(e,o,i,r.repeat)}},findAndSelectNextInclusive:function(e,t,r,n,i){var o=fe(e),a=o.getQuery();if(!!a){var u=!r.forward;u=o.isReversed()?!u:u;var l=Er(e,u,a,r.repeat,n);if(!!l){if(i.operator)return l;var f=l[0],c=new m(l[1].line,l[1].ch-1);if(n.visualMode){(n.visualLine||n.visualBlock)&&(n.visualLine=!1,n.visualBlock=!1,b.signal(e,"vim-mode-change",{mode:"visual",subMode:""}));var v=n.sel.anchor;if(v)return o.isReversed()?r.forward?[v,f]:[v,c]:r.forward?[v,c]:[v,f]}else n.visualMode=!0,n.visualLine=!1,n.visualBlock=!1,b.signal(e,"vim-mode-change",{mode:"visual",subMode:""});return u?[c,f]:[f,c]}}},goToMark:function(e,t,r,n){var i=Bt(e,n,r.selectedCharacter);return i?r.linewise?{line:i.line,ch:ue(e.getLine(i.line))}:i:null},moveToOtherHighlightedEnd:function(e,t,r,n){if(n.visualBlock&&r.sameLine){var i=n.sel;return[re(e,new m(i.anchor.line,i.head.ch)),re(e,new m(i.head.line,i.anchor.ch))]}else return[n.sel.head,n.sel.anchor]},jumpToMark:function(e,t,r,n){for(var i=t,o=0;o<r.repeat;o++){var a=i;for(var u in n.marks)if(!!je(u)){var l=n.marks[u].find(),f=r.forward?_(l,a):_(a,l);if(!f&&!(r.linewise&&l.line==a.line)){var c=ne(a,i),v=r.forward?vt(a,l,i):vt(i,l,a);(c||v)&&(i=l)}}}return r.linewise&&(i=new m(i.line,ue(e.getLine(i.line)))),i},moveByCharacters:function(e,t,r){var n=t,i=r.repeat,o=r.forward?n.ch+i:n.ch-i;return new m(n.line,o)},moveByLines:function(e,t,r,n){var i=t,o=i.ch;switch(n.lastMotion){case this.moveByLines:case this.moveByDisplayLines:case this.moveByScroll:case this.moveToColumn:case this.moveToEol:o=n.lastHPos;break;default:n.lastHPos=o}var a=r.repeat+(r.repeatOffset||0),u=r.forward?i.line+a:i.line-a,l=e.firstLine(),f=e.lastLine(),c=e.findPosV(i,r.forward?a:-a,"line",n.lastHSPos),v=r.forward?c.line>u:c.line<u;return v&&(u=c.line,o=c.ch),u<l&&i.line==l?this.moveToStartOfLine(e,t,r,n):u>f&&i.line==f?St(e,t,r,n,!0):(r.toFirstChar&&(o=ue(e.getLine(u)),n.lastHPos=o),n.lastHSPos=e.charCoords(new m(u,o),"div").left,new m(u,o))},moveByDisplayLines:function(e,t,r,n){var i=t;switch(n.lastMotion){case this.moveByDisplayLines:case this.moveByScroll:case this.moveByLines:case this.moveToColumn:case this.moveToEol:break;default:n.lastHSPos=e.charCoords(i,"div").left}var o=r.repeat,a=e.findPosV(i,r.forward?o:-o,"line",n.lastHSPos);if(a.hitSide)if(r.forward)var u=e.charCoords(a,"div"),l={top:u.top+8,left:n.lastHSPos},a=e.coordsChar(l,"div");else{var f=e.charCoords(new m(e.firstLine(),0),"div");f.left=n.lastHSPos,a=e.coordsChar(f,"div")}return n.lastHPos=a.ch,a},moveByPage:function(e,t,r){var n=t,i=r.repeat;return e.findPosV(n,r.forward?i:-i,"page")},moveByParagraph:function(e,t,r){var n=r.forward?1:-1;return xt(e,t,r.repeat,n)},moveBySentence:function(e,t,r){var n=r.forward?1:-1;return kr(e,t,r.repeat,n)},moveByScroll:function(e,t,r,n){var i=e.getScrollInfo(),u=null,o=r.repeat;o||(o=i.clientHeight/(2*e.defaultTextHeight()));var a=e.charCoords(t,"local");r.repeat=o;var u=de.moveByDisplayLines(e,t,r,n);if(!u)return null;var l=e.charCoords(u,"local");return e.scrollTo(null,i.top+l.top-a.top),u},moveByWords:function(e,t,r){return vr(e,t,r.repeat,!!r.forward,!!r.wordEnd,!!r.bigWord)},moveTillCharacter:function(e,t,r){var n=r.repeat,i=Ze(e,n,r.forward,r.selectedCharacter),o=r.forward?-1:1;return wt(o,r),i?(i.ch+=o,i):null},moveToCharacter:function(e,t,r){var n=r.repeat;return wt(0,r),Ze(e,n,r.forward,r.selectedCharacter)||t},moveToSymbol:function(e,t,r){var n=r.repeat;return pr(e,n,r.forward,r.selectedCharacter)||t},moveToColumn:function(e,t,r,n){var i=r.repeat;return n.lastHPos=i-1,n.lastHSPos=e.charCoords(t,"div").left,yr(e,i)},moveToEol:function(e,t,r,n){return St(e,t,r,n,!1)},moveToFirstNonWhiteSpaceCharacter:function(e,t){var r=t;return new m(r.line,ue(e.getLine(r.line)))},moveToMatchedSymbol:function(e,t){var r=t,n=r.line,i=r.ch,o=e.getLine(n);if(i<o.length){var a=i==="<"||i===">"?/[(){}[\]<>]/:/[(){}[\]]/,u=e.findMatchingBracket(new m(n,i),{bracketRegex:a});return u.to}else return r},moveToStartOfLine:function(e,t){return new m(t.line,0)},moveToLineOrEdgeOfDocument:function(e,t,r){var n=r.forward?e.lastLine():e.firstLine();return r.repeatIsExplicit&&(n=r.repeat-e.getOption("firstLineNumber")),new m(n,ue(e.getLine(n)))},moveToStartOfDisplayLine:function(e){return e.execCommand("goLineLeft"),e.getCursor()},moveToEndOfDisplayLine:function(e){e.execCommand("goLineRight");var t=e.getCursor();return t.sticky=="before"&&t.ch--,t},textObjectManipulation:function(e,t,r,n){var i={"(":")",")":"(","{":"}","}":"{","[":"]","]":"[","<":">",">":"<"},o={"'":!0,'"':!0,"`":!0},a=r.selectedCharacter;a=="b"?a="(":a=="B"&&(a="{");var u=!r.textObjectInner,l;if(i[a])l=mr(e,t,a,u);else if(o[a])l=wr(e,t,a,u);else if(a==="W")l=De(e,u,!0,!0);else if(a==="w")l=De(e,u,!0,!1);else if(a==="p")if(l=xt(e,t,r.repeat,0,u),r.linewise=!0,n.visualMode)n.visualLine||(n.visualLine=!0);else{var f=n.inputState.operatorArgs;f&&(f.linewise=!0),l.end.line--}else if(a==="t")l=hr(e,t,u);else return null;return e.state.vim.visualMode?lr(e,l.start,l.end):[l.start,l.end]},repeatLastCharacterSearch:function(e,t,r){var n=x.lastCharacterSearch,i=r.repeat,o=r.forward===n.forward,a=(n.increment?1:0)*(o?-1:1);e.moveH(-a,"char"),r.inclusive=!!o;var u=Ze(e,i,o,n.selectedCharacter);return u?(u.ch+=a,u):(e.moveH(a,"char"),t)}};function Zt(e,t){de[e]=t}function dt(e,t){for(var r=[],n=0;n<t;n++)r.push(e);return r}var pt={change:function(e,t,r){var n,i,o=e.state.vim,a=r[0].anchor,u=r[0].head;if(o.visualMode)if(t.fullLine)u.ch=Number.MAX_VALUE,u.line--,e.setSelection(a,u),i=e.getSelection(),e.replaceSelections(""),n=a;else{i=e.getSelection();var y=dt("",r.length);e.replaceSelections(y),n=ie(r[0].head,r[0].anchor)}else{i=e.getRange(a,u);var l=o.lastEditInputState||{};if(l.motion=="moveByWords"&&!ye(i)){var f=/\s+$/.exec(i);f&&l.motionArgs&&l.motionArgs.forward&&(u=q(u,0,-f[0].length),i=i.slice(0,-f[0].length))}var c=new m(a.line-1,Number.MAX_VALUE),v=e.firstLine()==e.lastLine();u.line>e.lastLine()&&t.linewise&&!v?e.replaceRange("",c,u):e.replaceRange("",a,u),t.linewise&&(v||(e.setCursor(c),b.commands.newlineAndIndent(e)),a.ch=Number.MAX_VALUE),n=a}x.registerController.pushText(t.registerName,"change",i,t.linewise,r.length>1),Ge.enterInsertMode(e,{head:n},e.state.vim)},delete:function(e,t,r){e.pushUndoStop();var n,i,o=e.state.vim;if(o.visualBlock){i=e.getSelection();var l=dt("",r.length);e.replaceSelections(l),n=ie(r[0].head,r[0].anchor)}else{var a=r[0].anchor,u=r[0].head;t.linewise&&u.line!=e.firstLine()&&a.line==e.lastLine()&&a.line==u.line-1&&(a.line==e.firstLine()?a.ch=0:a=new m(a.line-1,W(e,a.line-1))),i=e.getRange(a,u),e.replaceRange("",a,u),n=a,t.linewise&&(n=de.moveToFirstNonWhiteSpaceCharacter(e,a))}return x.registerController.pushText(t.registerName,"delete",i,t.linewise,o.visualBlock),re(e,n)},indent:function(e,t,r){var n=e.state.vim,i=r[0].anchor.line,o=n.visualBlock?r[r.length-1].anchor.line:r[0].head.line,a=n.visualMode?t.repeat:1;t.linewise&&o--,e.pushUndoStop();for(var u=i;u<=o;u++)for(var l=0;l<a;l++)e.indentLine(u,t.indentRight);return e.pushUndoStop(),de.moveToFirstNonWhiteSpaceCharacter(e,r[0].anchor)},indentAuto:function(e,t,r){return e.execCommand("indentAuto"),de.moveToFirstNonWhiteSpaceCharacter(e,r[0].anchor)},changeCase:function(e,t,r,n,i){for(var o=e.getSelections(),a=[],u=t.toLower,l=0;l<o.length;l++){var f=o[l],c="";if(u===!0)c=f.toLowerCase();else if(u===!1)c=f.toUpperCase();else for(var v=0;v<f.length;v++){var y=f.charAt(v);c+=be(y)?y.toLowerCase():y.toUpperCase()}a.push(c)}return e.replaceSelections(a),t.shouldMoveCursor?i:!e.state.vim.visualMode&&t.linewise&&r[0].anchor.line+1==r[0].head.line?de.moveToFirstNonWhiteSpaceCharacter(e,n):t.linewise?n:ie(r[0].anchor,r[0].head)},yank:function(e,t,r,n){var i=e.state.vim,o=e.getSelection(),a=i.visualMode?ie(i.sel.anchor,i.sel.head,r[0].head,r[0].anchor):n;return x.registerController.pushText(t.registerName,"yank",o,t.linewise,i.visualBlock),a}};function qt(e,t){pt[e]=t}var Ge={jumpListWalk:function(e,t,r){if(!r.visualMode){var n=t.repeat,i=t.forward,o=x.jumpList,a=o.move(e,i?n:-n),u=a?a.find():void 0;u=u||e.getCursor(),e.setCursor(u)}},scroll:function(e,t,r){if(!r.visualMode){var n=t.repeat||1,i=e.defaultTextHeight(),o=e.getScrollInfo().top,a=i*n,u=t.forward?o+a:o-a,l=N(e.getCursor()),f=e.charCoords(l,"local");if(t.forward)u>f.top?(l.line+=(u-f.top)/i,l.line=Math.ceil(l.line),e.setCursor(l),f=e.charCoords(l,"local"),e.scrollTo(null,f.top)):e.scrollTo(null,u);else{var c=u+e.getScrollInfo().clientHeight;c<f.bottom?(l.line-=(f.bottom-c)/i,l.line=Math.floor(l.line),e.setCursor(l),f=e.charCoords(l,"local"),e.scrollTo(null,f.bottom-e.getScrollInfo().clientHeight)):e.scrollTo(null,u)}}},scrollToCursor:function(e,t){var r=e.getCursor().line,n=e.charCoords(new m(r,0),"local"),i=e.getScrollInfo().clientHeight,o=n.top,a=n.bottom-o;switch(t.position){case"center":o=o-i/2+a;break;case"bottom":o=o-i+a;break}e.moveCurrentLineTo(o)},replayMacro:function(e,t,r){var n=t.selectedCharacter,i=t.repeat,o=x.macroModeState;for(n=="@"?n=o.latestRegister:o.latestRegister=n;i--;)Kr(e,r,o,n)},enterMacroRecordMode:function(e,t){var r=x.macroModeState,n=t.selectedCharacter;x.registerController.isValidRegister(n)&&r.enterMacroRecordMode(e,n)},toggleOverwrite:function(e){e.state.overwrite?(e.toggleOverwrite(!1),e.setOption("keyMap","vim-insert"),b.signal(e,"vim-mode-change",{mode:"insert"})):(e.toggleOverwrite(!0),e.setOption("keyMap","vim-replace"),b.signal(e,"vim-mode-change",{mode:"replace"}))},enterInsertMode:function(e,t,r){if(!e.getOption("readOnly")){r.insertMode=!0,r.insertModeRepeat=t&&t.repeat||1;var n=t?t.insertAt:null,i=r.sel,o=t.head||e.getCursor("head"),a=e.listSelections().length;if(n=="eol")o=new m(o.line,W(e,o.line));else if(n=="bol")o=new m(o.line,0);else if(n=="charAfter")o=q(o,0,1);else if(n=="firstNonBlank")o=de.moveToFirstNonWhiteSpaceCharacter(e,o);else if(n=="startOfSelectedArea"){if(!r.visualMode)return;r.visualBlock?(o=new m(Math.min(i.head.line,i.anchor.line),Math.min(i.head.ch,i.anchor.ch)),a=Math.abs(i.head.line-i.anchor.line)+1):i.head.line<i.anchor.line?o=i.head:o=new m(i.anchor.line,0)}else if(n=="endOfSelectedArea"){if(!r.visualMode)return;r.visualBlock?(o=new m(Math.min(i.head.line,i.anchor.line),Math.max(i.head.ch,i.anchor.ch)+1),a=Math.abs(i.head.line-i.anchor.line)+1):i.head.line>=i.anchor.line?o=q(i.head,0,1):o=new m(i.anchor.line,0)}else if(n=="inplace"){if(r.visualMode)return}else n=="lastEdit"&&(o=Ot(e)||o);e.setOption("disableInput",!1),t&&t.replace?(e.toggleOverwrite(!0),e.setOption("keyMap","vim-replace"),b.signal(e,"vim-mode-change",{mode:"replace"})):(e.toggleOverwrite(!1),e.setOption("keyMap","vim-insert"),b.signal(e,"vim-mode-change",{mode:"insert"})),x.macroModeState.isPlaying||(e.on("change",Dt),b.on(e.getInputField(),"keydown",Ht)),r.visualMode&&le(e),Ct(e,o,a)}},toggleVisualMode:function(e,t,r){var n=t.repeat,i=e.getCursor(),o;r.visualMode?r.visualLine^t.linewise||r.visualBlock^t.blockwise?(r.visualLine=!!t.linewise,r.visualBlock=!!t.blockwise,b.signal(e,"vim-mode-change",{mode:"visual",subMode:r.visualLine?"linewise":r.visualBlock?"blockwise":""}),Se(e)):le(e):(r.visualMode=!0,r.visualLine=!!t.linewise,r.visualBlock=!!t.blockwise,o=re(e,new m(i.line,i.ch+n-1)),r.sel={anchor:i,head:o},b.signal(e,"vim-mode-change",{mode:"visual",subMode:r.visualLine?"linewise":r.visualBlock?"blockwise":""}),Se(e),pe(e,r,"<",ie(i,o)),pe(e,r,">",ke(i,o)))},reselectLastSelection:function(e,t,r){var n=r.lastSelection;if(r.visualMode&&kt(e,r),n){var i=n.anchorMark.find(),o=n.headMark.find();if(!i||!o)return;r.sel={anchor:i,head:o},r.visualMode=!0,r.visualLine=n.visualLine,r.visualBlock=n.visualBlock,Se(e),pe(e,r,"<",ie(i,o)),pe(e,r,">",ke(i,o)),b.signal(e,"vim-mode-change",{mode:"visual",subMode:r.visualLine?"linewise":r.visualBlock?"blockwise":""})}},joinLines:function(e,t,r){var n,i;if(r.visualMode){if(n=e.getCursor("anchor"),i=e.getCursor("head"),_(i,n)){var o=i;i=n,n=o}i.ch=W(e,i.line)-1}else{var a=Math.max(t.repeat,2);n=e.getCursor(),i=re(e,new m(n.line+a-1,1/0))}for(var u=0,l=n.line;l<i.line;l++){u=W(e,n.line);var o=new m(n.line+1,W(e,n.line+1)),f=e.getRange(n,o);f=t.keepSpaces?f.replace(/\n\r?/g,""):f.replace(/\n\s*/g," "),e.replaceRange(f,n,o)}var c=new m(n.line,u);r.visualMode&&le(e,!1),e.setCursor(c)},newLineAndEnterInsertMode:function(e,t,r){if(!e.getOption("readOnly")){r.insertMode=!0;var n=N(e.getCursor());if(n.line===e.firstLine()&&!t.after)e.replaceRange(`
`,new m(e.firstLine(),0)),e.setCursor(e.firstLine(),0);else{n.line=t.after?n.line:n.line-1,n.ch=W(e,n.line),e.setCursor(n);var i=b.commands.newlineAndIndentContinueComment||b.commands.newlineAndIndent;i(e)}this.enterInsertMode(e,{repeat:t.repeat},r)}},paste:function(e,t,r){var n=N(e.getCursor()),i=x.registerController.getRegister(t.registerName),o=i.toString();if(!!o){if(t.matchIndent){var a=e.getOption("tabSize"),u=function(G){var we=G.split(" ").length-1,Ie=G.split(" ").length-1;return we*a+Ie*1},l=e.getLine(e.getCursor().line),f=u(l.match(/^\s*/)[0]),c=o.replace(/\n$/,""),v=o!==c,y=u(o.match(/^\s*/)[0]),o=c.replace(/^\s*/gm,function(G){var we=f+(u(G)-y);if(we<0)return"";if(e.getOption("indentWithTabs")){var Ie=Math.floor(we/a);return Array(Ie+1).join(" ")}else return Array(we+1).join(" ")});o+=v?`
`:""}if(t.repeat>1)var o=Array(t.repeat+1).join(o);var p=i.linewise,C=i.blockwise;if(C){o=o.split(`
`),p&&o.pop();for(var M=0;M<o.length;M++)o[M]=o[M]==""?" ":o[M];n.ch+=t.after?1:0,n.ch=Math.min(W(e,n.line),n.ch)}else p?r.visualMode?o=r.visualLine?o.slice(0,-1):`
`+o.slice(0,o.length-1)+`
`:t.after?(o=`
`+o.slice(0,o.length-1),n.ch=W(e,n.line)):n.ch=0:n.ch+=t.after?1:0;var k,L;if(r.visualMode){r.lastPastedText=o;var I,A=sr(e,r),E=A[0],j=A[1],D=e.getSelection(),Q=e.listSelections(),O=new Array(Q.length).join("1").split("1");r.lastSelection&&(I=r.lastSelection.headMark.find()),x.registerController.unnamedRegister.setText(D),C?(e.replaceSelections(O),j=new m(E.line+o.length-1,E.ch),e.setCursor(E),yt(e,j),e.replaceSelections(o),k=E):r.visualBlock?(e.replaceSelections(O),e.setCursor(E),e.replaceRange(o,E,E),k=E):(e.replaceRange(o,E,j),k=e.posFromIndex(e.indexFromPos(E)+o.length-1)),I&&(r.lastSelection.headMark=e.setBookmark(I)),p&&(k.ch=0)}else if(C){e.setCursor(n);for(var M=0;M<o.length;M++){var R=n.line+M;R>e.lastLine()&&e.replaceRange(`
`,new m(R,0));var z=W(e,R);z<n.ch&&or(e,R,n.ch)}e.setCursor(n),yt(e,new m(n.line+o.length-1,n.ch)),e.replaceSelections(o),k=n}else e.replaceRange(o,n),p&&t.after?k=new m(n.line+1,ue(e.getLine(n.line+1))):p&&!t.after?k=new m(n.line,ue(e.getLine(n.line))):!p&&t.after?(L=e.indexFromPos(n),k=e.posFromIndex(L+o.length-1)):(L=e.indexFromPos(n),k=e.posFromIndex(L+o.length));r.visualMode&&le(e,!1),e.setCursor(k)}},undo:function(e,t){e.operation(function(){gt(e,b.commands.undo,t.repeat)(),e.setCursor(e.getCursor("anchor"))})},redo:function(e,t){gt(e,b.commands.redo,t.repeat)()},setRegister:function(e,t,r){r.inputState.registerName=t.selectedCharacter},setMark:function(e,t,r){var n=t.selectedCharacter;pe(e,r,n,e.getCursor())},replace:function(e,t,r){var n=t.selectedCharacter,i=e.getCursor(),o,a,u=e.listSelections();if(r.visualMode)i=e.getCursor("start"),a=e.getCursor("end");else{var l=e.getLine(i.line);o=i.ch+t.repeat,o>l.length&&(o=l.length),a=new m(i.line,o)}if(n==`
`)r.visualMode||e.replaceRange("",i,a),(b.commands.newlineAndIndentContinueComment||b.commands.newlineAndIndent)(e);else{var f=e.getRange(i,a);if(f=f.replace(/[^\n]/g,n),r.visualBlock){var c=new Array(e.getOption("tabSize")+1).join(" ");f=e.getSelection(),f=f.replace(/\t/g,c).replace(/[^\n]/g,n).split(`
`),e.replaceSelections(f)}else e.replaceRange(f,i,a);r.visualMode?(i=_(u[0].anchor,u[0].head)?u[0].anchor:u[0].head,e.setCursor(i),le(e,!1)):e.setCursor(q(a,0,-1))}},incrementNumberToken:function(e,t){for(var r=e.getCursor(),n=e.getLine(r.line),i=/(-?)(?:(0x)([\da-f]+)|(0b|0|)(\d+))/gi,o,a,u,l;(o=i.exec(n))!==null&&(a=o.index,u=a+o[0].length,!(r.ch<u)););if(!(!t.backtrack&&u<=r.ch)){if(o){var f=o[2]||o[4],c=o[3]||o[5],v=t.increase?1:-1,y={"0b":2,0:8,"":10,"0x":16}[f.toLowerCase()],p=parseInt(o[1]+c,y)+v*t.repeat;l=p.toString(y);var C=f?new Array(c.length-l.length+1+o[1].length).join("0"):"";l.charAt(0)==="-"?l="-"+f+C+l.substr(1):l=f+C+l;var M=new m(r.line,a),k=new m(r.line,u);e.replaceRange(l,M,k)}else return;e.setCursor(new m(r.line,a+l.length-1))}},repeatLastEdit:function(e,t,r){var n=r.lastEditInputState;if(!!n){var i=t.repeat;i&&t.repeatIsExplicit?r.lastEditInputState.repeatOverride=i:i=r.lastEditInputState.repeatOverride||i,Vt(e,r,i,!1)}},indent:function(e,t){e.indentLine(e.getCursor().line,t.indentRight)},exitInsertMode:Te};function er(e,t){Ge[e]=t}function re(e,t){var r=e.state.vim,n=r.insertMode||r.visualMode,i=Math.min(Math.max(e.firstLine(),t.line),e.lastLine()),o=W(e,i)-1+!!n,a=Math.min(Math.max(0,t.ch),o);return new m(i,a)}function Ne(e){var t={};for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r]);return t}function q(e,t,r){return typeof t=="object"&&(r=t.ch,t=t.line),new m(e.line+t,e.ch+r)}function tr(e,t,r,n){for(var i,o=[],a=[],u=0;u<t.length;u++){var l=t[u];r=="insert"&&l.context!="insert"||l.context&&l.context!=r||n.operator&&l.type=="action"||!(i=rr(e,l.keys))||(i=="partial"&&o.push(l),i=="full"&&a.push(l))}return{partial:o.length&&o,full:a.length&&a}}function rr(e,t){if(t.slice(-11)=="<character>"){var r=t.length-11,n=e.slice(0,r),i=t.slice(0,r);return n==i&&e.length>r?"full":i.indexOf(n)==0?"partial":!1}else return e==t?"full":t.indexOf(e)==0?"partial":!1}function nr(e){var t=/^.*(<[^>]+>)$/.exec(e),r=t?t[1]:e.slice(-1);if(r.length>1)switch(r){case"<CR>":r=`
`;break;case"<Space>":r=" ";break;default:r="";break}return r}function gt(e,t,r){return function(){for(var n=0;n<r;n++)t(e)}}function N(e){return new m(e.line,e.ch)}function ne(e,t){return e.ch==t.ch&&e.line==t.line}function _(e,t){return e.line<t.line||e.line==t.line&&e.ch<t.ch}function ie(e,t){return arguments.length>2&&(t=ie.apply(void 0,Array.prototype.slice.call(arguments,1))),_(e,t)?e:t}function ke(e,t){return arguments.length>2&&(t=ke.apply(void 0,Array.prototype.slice.call(arguments,1))),_(e,t)?t:e}function vt(e,t,r){var n=_(e,t),i=_(t,r);return n&&i}function W(e,t){return e.getLine(t).length}function Xe(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")}function ir(e){return e.replace(/([.?*+$\[\]\/\\(){}|\-])/g,"\\$1")}function or(e,t,r){var n=W(e,t),i=new Array(r-n+1).join(" ");e.setCursor(new m(t,n)),e.replaceRange(i,e.getCursor())}function yt(e,t){var r=[],n=e.listSelections(),i=N(e.clipPos(t)),o=!ne(t,i),a=e.getCursor("head"),u=ar(n,a),l=ne(n[u].head,n[u].anchor),f=n.length-1,c=f-u>u?f:0,v=n[c].anchor,y=Math.min(v.line,i.line),p=Math.max(v.line,i.line),C=v.ch,M=i.ch,k=n[c].head.ch-C,L=M-C;k>0&&L<=0?(C++,o||M--):k<0&&L>=0?(C--,l||M++):k<0&&L==-1&&(C--,M++);for(var I=y;I<=p;I++){var A={anchor:new m(I,C),head:new m(I,M)};r.push(A)}return e.setSelections(r),t.ch=M,v.ch=C,v}function Ct(e,t,r){for(var n=[],i=0;i<r;i++){var o=q(t,i,0);n.push({anchor:o,head:o})}e.setSelections(n,0)}function ar(e,t,r){for(var n=0;n<e.length;n++){var i=r!="head"&&ne(e[n].anchor,t),o=r!="anchor"&&ne(e[n].head,t);if(i||o)return n}return-1}function sr(e,t){var r=t.lastSelection,n=function(){var o=e.listSelections(),a=o[0],u=o[o.length-1],l=_(a.anchor,a.head)?a.anchor:a.head,f=_(u.anchor,u.head)?u.head:u.anchor;return[l,f]},i=function(){var o=e.getCursor(),a=e.getCursor(),u=r.visualBlock;if(u){var l=u.width,f=u.height;a=new m(o.line+f,o.ch+l);for(var c=[],v=o.line;v<a.line;v++){var y=new m(v,o.ch),p=new m(v,a.ch),C={anchor:y,head:p};c.push(C)}e.setSelections(c)}else{var M=r.anchorMark.find(),k=r.headMark.find(),L=k.line-M.line,I=k.ch-M.ch;a={line:a.line+L,ch:L?a.ch:I+a.ch},r.visualLine&&(o=new m(o.line,0),a=new m(a.line,W(e,a.line))),e.setSelection(o,a)}return[o,a]};return t.visualMode?n():i()}function kt(e,t){var r=t.sel.anchor,n=t.sel.head;t.lastPastedText&&(n=e.posFromIndex(e.indexFromPos(r)+t.lastPastedText.length),t.lastPastedText=null),t.lastSelection={anchorMark:e.setBookmark(r),headMark:e.setBookmark(n),anchor:N(r),head:N(n),visualMode:t.visualMode,visualLine:t.visualLine,visualBlock:t.visualBlock}}function lr(e,t,r){var n=e.state.vim.sel,i=n.head,o=n.anchor,a;return _(r,t)&&(a=r,r=t,t=a),_(i,o)?(i=ie(t,i),o=ke(o,r)):(o=ie(t,o),i=ke(i,r),i=q(i,0,-1),i.ch==-1&&i.line!=e.firstLine()&&(i=new m(i.line-1,W(e,i.line-1)))),[o,i]}function Se(e,t,i){var n=e.state.vim;t=t||n.sel;var i=i||n.visualLine?"line":n.visualBlock?"block":"char",o=Ye(e,t,i);e.setSelections(o.ranges,o.primary)}function Ye(e,t,r,n){var i=N(t.head),o=N(t.anchor);if(r=="char"){var a=!n&&!_(t.head,t.anchor)?1:0,u=_(t.head,t.anchor)?1:0;return i=q(t.head,0,a),o=q(t.anchor,0,u),{ranges:[{anchor:o,head:i}],primary:0}}else if(r=="line"){if(_(t.head,t.anchor))i.ch=0,o.ch=W(e,o.line);else{o.ch=0;var l=e.lastLine();i.line>l&&(i.line=l),i.ch=W(e,i.line)}return{ranges:[{anchor:o,head:i}],primary:0}}else if(r=="block"){var f=Math.min(o.line,i.line),c=o.ch,v=Math.max(o.line,i.line),y=i.ch;c<y?y+=1:c+=1;for(var p=v-f+1,C=i.line==f?0:p-1,M=[],k=0;k<p;k++)M.push({anchor:new m(f+k,c),head:new m(f+k,y)});return{ranges:M,primary:C}}}function ur(e){var t=e.getCursor("head");return e.getSelection().length==1&&(t=ie(t,e.getCursor("anchor"))),t}function le(e,t){var r=e.state.vim;t!==!1&&e.setCursor(re(e,r.sel.head)),kt(e,r),r.visualMode=!1,r.visualLine=!1,r.visualBlock=!1,r.insertMode||b.signal(e,"vim-mode-change",{mode:"normal"})}function fr(e,t,r){var n=e.getRange(t,r);if(/\n\s*$/.test(n)){var i=n.split(`
`);i.pop();for(var o,o=i.pop();i.length>0&&o&&ye(o);o=i.pop())r.line--,r.ch=0;o?(r.line--,r.ch=W(e,r.line)):r.ch=0}}function cr(e,t,r){t.ch=0,r.ch=0,r.line++}function ue(e){if(!e)return 0;var t=e.search(/\S/);return t==-1?e.length:t}function De(e,t,r,n,i){for(var o=ur(e),a=e.getLine(o.line),u=o.ch,l=i?V[0]:$[0];!l(a.charAt(u));)if(u++,u>=a.length)return null;n?l=$[0]:(l=V[0],l(a.charAt(u))||(l=V[1]));for(var f=u,c=u;l(a.charAt(f))&&f<a.length;)f++;for(;l(a.charAt(c))&&c>=0;)c--;if(c++,t){for(var v=f;/\s/.test(a.charAt(f))&&f<a.length;)f++;if(v==f){for(var y=c;/\s/.test(a.charAt(c-1))&&c>0;)c--;c||(c=y)}}return{start:new m(o.line,c),end:new m(o.line,f)}}function hr(e,t,r){var n=t;if(!b.findMatchingTag||!b.findEnclosingTag)return{start:n,end:n};var i=b.findMatchingTag(e,t)||b.findEnclosingTag(e,t);return!i||!i.open||!i.close?{start:n,end:n}:r?{start:i.open.from,end:i.close.to}:{start:i.open.to,end:i.close.from}}function mt(e,t,r){ne(t,r)||x.jumpList.add(e,t,r)}function wt(e,t){x.lastCharacterSearch.increment=e,x.lastCharacterSearch.forward=t.forward,x.lastCharacterSearch.selectedCharacter=t.selectedCharacter}var dr={"(":"bracket",")":"bracket","{":"bracket","}":"bracket","[":"section","]":"section","*":"comment","/":"comment",m:"method",M:"method","#":"preprocess"},Mt={bracket:{isComplete:function(e){if(e.nextCh===e.symb){if(e.depth++,e.depth>=1)return!0}else e.nextCh===e.reverseSymb&&e.depth--;return!1}},section:{init:function(e){e.curMoveThrough=!0,e.symb=(e.forward?"]":"[")===e.symb?"{":"}"},isComplete:function(e){return e.index===0&&e.nextCh===e.symb}},comment:{isComplete:function(e){var t=e.lastCh==="*"&&e.nextCh==="/";return e.lastCh=e.nextCh,t}},method:{init:function(e){e.symb=e.symb==="m"?"{":"}",e.reverseSymb=e.symb==="{"?"}":"{"},isComplete:function(e){return e.nextCh===e.symb}},preprocess:{init:function(e){e.index=0},isComplete:function(e){if(e.nextCh==="#"){var t=e.lineText.match(/^#(\w+)/)[1];if(t==="endif"){if(e.forward&&e.depth===0)return!0;e.depth++}else if(t==="if"){if(!e.forward&&e.depth===0)return!0;e.depth--}if(t==="else"&&e.depth===0)return!0}return!1}}};function pr(e,t,r,n){var i=N(e.getCursor()),o=r?1:-1,a=r?e.lineCount():-1,u=i.ch,l=i.line,f=e.getLine(l),c={lineText:f,nextCh:f.charAt(u),lastCh:null,index:u,symb:n,reverseSymb:(r?{")":"(","}":"{"}:{"(":")","{":"}"})[n],forward:r,depth:0,curMoveThrough:!1},v=dr[n];if(!v)return i;var y=Mt[v].init,p=Mt[v].isComplete;for(y&&y(c);l!==a&&t;){if(c.index+=o,c.nextCh=c.lineText.charAt(c.index),!c.nextCh){if(l+=o,c.lineText=e.getLine(l)||"",o>0)c.index=0;else{var C=c.lineText.length;c.index=C>0?C-1:0}c.nextCh=c.lineText.charAt(c.index)}p(c)&&(i.line=l,i.ch=c.index,t--)}return c.nextCh||c.curMoveThrough?new m(l,c.index):i}function gr(e,t,r,n,i){var o=t.line,a=t.ch,u=e.getLine(o),l=r?1:-1,f=n?$:V;if(i&&u==""){if(o+=l,u=e.getLine(o),!$e(e,o))return null;a=r?0:u.length}for(;;){if(i&&u=="")return{from:0,to:0,line:o};for(var c=l>0?u.length:-1,v=c,y=c;a!=c;){for(var p=!1,C=0;C<f.length&&!p;++C)if(f[C](u.charAt(a))){for(v=a;a!=c&&f[C](u.charAt(a));)a+=l;if(y=a,p=v!=y,v==t.ch&&o==t.line&&y==v+l)continue;return{from:Math.min(v,y+1),to:Math.max(v,y),line:o}}p||(a+=l)}if(o+=l,!$e(e,o))return null;u=e.getLine(o),a=l>0?0:u.length}}function vr(e,t,r,n,i,o){var a=N(t),u=[];(n&&!i||!n&&i)&&r++;for(var l=!(n&&i),f=0;f<r;f++){var c=gr(e,t,n,o,l);if(!c){var v=W(e,e.lastLine());u.push(n?{line:e.lastLine(),from:v,to:v}:{line:0,from:0,to:0});break}u.push(c),t=new m(c.line,n?c.to-1:c.from)}var y=u.length!=r,p=u[0],C=u.pop();return n&&!i?(!y&&(p.from!=a.ch||p.line!=a.line)&&(C=u.pop()),new m(C.line,C.from)):n&&i?new m(C.line,C.to-1):!n&&i?(!y&&(p.to!=a.ch||p.line!=a.line)&&(C=u.pop()),new m(C.line,C.to)):new m(C.line,C.from)}function St(e,t,r,n,i){var o=t,a=new m(o.line+r.repeat-1,1/0),u=e.clipPos(a);return u.ch--,i||(n.lastHPos=1/0,n.lastHSPos=e.charCoords(u,"div").left),a}function Ze(e,t,r,n){for(var i=e.getCursor(),o=i.ch,a,u=0;u<t;u++){var l=e.getLine(i.line);if(a=Cr(o,l,n,r,!0),a==-1)return null;o=a}return new m(e.getCursor().line,a)}function yr(e,t){var r=e.getCursor().line;return re(e,new m(r,t-1))}function pe(e,t,r,n){!Je(r,zt)||(t.marks[r]&&t.marks[r].clear(),t.marks[r]=e.setBookmark(n))}function Cr(e,t,r,n,i){var o;return n?(o=t.indexOf(r,e+1),o!=-1&&!i&&(o-=1)):(o=t.lastIndexOf(r,e-1),o!=-1&&!i&&(o+=1)),o}function xt(e,t,r,n,i){var o=t.line,a=e.firstLine(),u=e.lastLine(),l,f,c=o;function v(k){return!e.getLine(k)}function y(k,L,I){return I?v(k)!=v(k+L):!v(k)&&v(k+L)}if(n){for(;a<=c&&c<=u&&r>0;)y(c,n)&&r--,c+=n;return new m(c,0)}var p=e.state.vim;if(p.visualLine&&y(o,1,!0)){var C=p.sel.anchor;y(C.line,-1,!0)&&(!i||C.line!=o)&&(o+=1)}var M=v(o);for(c=o;c<=u&&r;c++)y(c,1,!0)&&(!i||v(c)!=M)&&r--;for(f=new m(c,0),c>u&&!M?M=!0:i=!1,c=o;c>a&&!((!i||v(c)==M||c==o)&&y(c,-1,!0));c--);return l=new m(c,0),{start:l,end:f}}function kr(e,t,r,n){function i(l,f){if(f.pos+f.dir<0||f.pos+f.dir>=f.line.length){if(f.ln+=f.dir,!$e(l,f.ln)){f.line=null,f.ln=null,f.pos=null;return}f.line=l.getLine(f.ln),f.pos=f.dir>0?0:f.line.length-1}else f.pos+=f.dir}function o(l,f,c,v){var k=l.getLine(f),y=k==="",p={line:k,ln:f,pos:c,dir:v},C={ln:p.ln,pos:p.pos},M=p.line==="";for(i(l,p);p.line!==null;){if(C.ln=p.ln,C.pos=p.pos,p.line===""&&!M)return{ln:p.ln,pos:p.pos};if(y&&p.line!==""&&!ye(p.line[p.pos]))return{ln:p.ln,pos:p.pos};lt(p.line[p.pos])&&!y&&(p.pos===p.line.length-1||ye(p.line[p.pos+1]))&&(y=!0),i(l,p)}var k=l.getLine(C.ln);C.pos=0;for(var L=k.length-1;L>=0;--L)if(!ye(k[L])){C.pos=L;break}return C}function a(l,f,c,v){var M=l.getLine(f),y={line:M,ln:f,pos:c,dir:v},p={ln:y.ln,pos:null},C=y.line==="";for(i(l,y);y.line!==null;){if(y.line===""&&!C)return p.pos!==null?p:{ln:y.ln,pos:y.pos};if(lt(y.line[y.pos])&&p.pos!==null&&!(y.ln===p.ln&&y.pos+1===p.pos))return p;y.line!==""&&!ye(y.line[y.pos])&&(C=!1,p={ln:y.ln,pos:y.pos}),i(l,y)}var M=l.getLine(p.ln);p.pos=0;for(var k=0;k<M.length;++k)if(!ye(M[k])){p.pos=k;break}return p}for(var u={ln:t.line,pos:t.ch};r>0;)n<0?u=a(e,u.ln,u.pos,n):u=o(e,u.ln,u.pos,n),r--;return new m(u.ln,u.pos)}function mr(e,t,r,n){var i=t,o,a,u={"(":/[()]/,")":/[()]/,"[":/[[\]]/,"]":/[[\]]/,"{":/[{}]/,"}":/[{}]/,"<":/[<>]/,">":/[<>]/}[r],l={"(":"(",")":"(","[":"[","]":"[","{":"{","}":"{","<":"<",">":"<"}[r],f=e.getLine(i.line).charAt(i.ch),c=f===l?1:0;if(o=e.scanForBracket(new m(i.line,i.ch+c),-1,void 0,{bracketRegex:u}),a=e.scanForBracket(new m(i.line,i.ch+c),1,void 0,{bracketRegex:u}),!o||!a)return{start:i,end:i};if(o=o.pos,a=a.pos,o.line==a.line&&o.ch>a.ch||o.line>a.line){var v=o;o=a,a=v}return n?a.ch+=1:o.ch+=1,{start:o,end:a}}function wr(e,t,r,n){var i=N(t),o=e.getLine(i.line),a=o.split(""),u,l,f,c,v=a.indexOf(r);if(i.ch<v?i.ch=v:v<i.ch&&a[i.ch]==r&&(l=i.ch,--i.ch),a[i.ch]==r&&!l)u=i.ch+1;else for(f=i.ch;f>-1&&!u;f--)a[f]==r&&(u=f+1);if(u&&!l)for(f=u,c=a.length;f<c&&!l;f++)a[f]==r&&(l=f);return!u||!l?{start:i,end:i}:(n&&(--u,++l),{start:new m(i.line,u),end:new m(i.line,l)})}Oe("pcre",!0,"boolean");function bt(){}bt.prototype={getQuery:function(){return x.query},setQuery:function(e){x.query=e},getOverlay:function(){return this.searchOverlay},setOverlay:function(e){this.searchOverlay=e},isReversed:function(){return x.isReversed},setReversed:function(e){x.isReversed=e},getScrollbarAnnotate:function(){return this.annotate},setScrollbarAnnotate:function(e){this.annotate=e}};function fe(e){var t=e.state.vim;return t.searchState_||(t.searchState_=new bt)}function Mr(e){return Lt(e,"/")}function Sr(e){return At(e,"/")}function Lt(e,t){var r=At(e,t)||[];if(!r.length)return[];var n=[];if(r[0]===0){for(var i=0;i<r.length;i++)typeof r[i]=="number"&&n.push(e.substring(r[i]+1,r[i+1]));return n}}function At(e,t){t||(t="/");for(var r=!1,n=[],i=0;i<e.length;i++){var o=e.charAt(i);!r&&o==t&&n.push(i),r=!r&&o=="\\"}return n}function xr(e){for(var t="|(){",r="}",n=!1,i=[],o=-1;o<e.length;o++){var a=e.charAt(o)||"",u=e.charAt(o+1)||"",l=u&&t.indexOf(u)!=-1;n?((a!=="\\"||!l)&&i.push(a),n=!1):a==="\\"?(n=!0,u&&r.indexOf(u)!=-1&&(l=!0),(!l||u==="\\")&&i.push(a)):(i.push(a),l&&u!=="\\"&&i.push("\\"))}return i.join("")}var Tt={"\\n":`
`,"\\r":"\r","\\t":" "};function br(e){for(var t=!1,r=[],n=-1;n<e.length;n++){var i=e.charAt(n)||"",o=e.charAt(n+1)||"";Tt[i+o]?(r.push(Tt[i+o]),n++):t?(r.push(i),t=!1):i==="\\"?(t=!0,Gt(o)||o==="$"?r.push("$"):o!=="/"&&o!=="\\"&&r.push("\\")):(i==="$"&&r.push("$"),r.push(i),o==="/"&&r.push("\\"))}return r.join("")}var It={"\\/":"/","\\\\":"\\","\\n":`
`,"\\r":"\r","\\t":" ","\\&":"&"};function Lr(e){for(var t=new b.StringStream(e),r=[];!t.eol();){for(;t.peek()&&t.peek()!="\\";)r.push(t.next());var n=!1;for(var i in It)if(t.match(i,!0)){n=!0,r.push(It[i]);break}n||r.push(t.next())}return r.join("")}function Ar(e,t,r){var n=x.registerController.getRegister("/");if(n.setText(e),e instanceof RegExp)return e;var i=Sr(e),o,a;if(!i.length)o=e;else{o=e.substring(0,i[0]);var u=e.substring(i[0]);a=u.indexOf("i")!=-1}if(!o)return null;Ce("pcre")||(o=xr(o)),r&&(t=/^[^A-Z]*$/.test(o));var l=new RegExp(o,t||a?"im":"m");return l}function me(e){typeof e=="string"&&(e=document.createElement(e));for(var t,r=1;r<arguments.length;r++)if(!!(t=arguments[r]))if(typeof t!="object"&&(t=document.createTextNode(t)),t.nodeType)e.appendChild(t);else for(var n in t)!Object.prototype.hasOwnProperty.call(t,n)||(n[0]==="$"?e.style[n.slice(1)]=t[n]:e.setAttribute(n,t[n]));return e}function K(e,t){var r=me("pre",{$color:"red",class:"cm-vim-message"},t);e.openNotification?e.openNotification(r,{bottom:!0,duration:5e3}):alert(r.innerText)}function Tr(e,t){return me(document.createDocumentFragment(),me("span",{$fontFamily:"monospace",$whiteSpace:"pre"},e,me("input",{type:"text",autocorrect:"off",autocapitalize:"off",spellcheck:"false"})),t&&me("span",{$color:"#888"},t))}function _e(e,t){var r=Tr(t.prefix,t.desc);if(e.openDialog)e.openDialog(r,t.onClose,{onKeyDown:t.onKeyDown,onKeyUp:t.onKeyUp,bottom:!0,selectValueOnOpen:!1,value:t.value});else{var n="";typeof t.prefix!="string"&&t.prefix&&(n+=t.prefix.textContent),t.desc&&(n+=" "+t.desc),t.onClose(prompt(n,""))}}function Ir(e,t){if(e instanceof RegExp&&t instanceof RegExp){for(var r=["global","multiline","ignoreCase","source"],n=0;n<r.length;n++){var i=r[n];if(e[i]!==t[i])return!1}return!0}return!1}function Ae(e,t,r,n){if(!!t){var i=fe(e),o=Ar(t,!!r,!!n);if(!!o)return Rt(e,o),Ir(o,i.getQuery())||i.setQuery(o),o}}function Rr(e){if(e.source.charAt(0)=="^")var t=!0;return{token:function(r){if(t&&!r.sol()){r.skipToEnd();return}var n=r.match(e,!1);if(n)return n[0].length==0?(r.next(),"searching"):!r.sol()&&(r.backUp(1),!e.exec(r.next()+n[0]))?(r.next(),null):(r.match(e),"searching");for(;!r.eol()&&(r.next(),!r.match(e,!1)););},query:e}}var He=0;function Rt(e,t){clearTimeout(He),He=setTimeout(function(){if(!!e.state.vim){var r=fe(e),n=r.getOverlay();(!n||t!=n.query)&&(n&&e.removeOverlay(n),n=Rr(t),e.addOverlay(n),e.showMatchesOnScrollbar&&(r.getScrollbarAnnotate()&&r.getScrollbarAnnotate().clear(),r.setScrollbarAnnotate(e.showMatchesOnScrollbar(t))),r.setOverlay(n))}},50)}function Et(e,t,r,n){return n===void 0&&(n=1),e.operation(function(){for(var i=e.getCursor(),o=e.getSearchCursor(r,i),a=0;a<n;a++){var u=o.find(t);if(a==0&&u&&ne(o.from(),i)){var l=t?o.from():o.to();u=o.find(t),u&&!u[0]&&ne(o.from(),l)&&e.getLine(l.line).length==l.ch&&(u=o.find(t))}if(!u&&(o=e.getSearchCursor(r,t?new m(e.lastLine()):new m(e.firstLine(),0)),!o.find(t)))return}return o.from()})}function Er(e,t,r,n,i){return n===void 0&&(n=1),e.operation(function(){var o=e.getCursor(),a=e.getSearchCursor(r,o),u=a.find(!t);!i.visualMode&&u&&ne(a.from(),o)&&a.find(!t);for(var l=0;l<n;l++)if(u=a.find(t),!u&&(a=e.getSearchCursor(r,t?new m(e.lastLine()):new m(e.firstLine(),0)),!a.find(t)))return;return[a.from(),a.to()]})}function qe(e){var t=fe(e);e.removeOverlay(fe(e).getOverlay()),t.setOverlay(null),t.getScrollbarAnnotate()&&(t.getScrollbarAnnotate().clear(),t.setScrollbarAnnotate(null))}function Br(e,t,r){return typeof e!="number"&&(e=e.line),t instanceof Array?Je(e,t):typeof r=="number"?e>=t&&e<=r:e==t}function et(e){var t=e.getScrollInfo(),r=6,n=10,i=e.coordsChar({left:0,top:r+t.top},"local"),o=t.clientHeight-n+t.top,a=e.coordsChar({left:0,top:o},"local");return{top:i.line,bottom:a.line}}function Bt(e,t,r){if(r=="'"||r=="`")return x.jumpList.find(e,-1)||new m(0,0);if(r==".")return Ot(e);var n=t.marks[r];return n&&n.find()}function Ot(e){for(var t=e.doc.history.done,r=t.length;r--;)if(t[r].changes)return N(t[r].changes[0].to)}var Pt=function(){this.buildCommandMap_()};Pt.prototype={processCommand:function(e,t,r){var n=this;e.operation(function(){e.curOp.isVimOp=!0,n._processCommand(e,t,r)})},_processCommand:function(e,t,r){var n=e.state.vim,i=x.registerController.getRegister(":"),o=i.toString();n.visualMode&&le(e);var a=new b.StringStream(t);i.setText(t);var u=r||{};u.input=t;try{this.parseInput_(e,a,u)}catch(v){throw K(e,v.toString()),v}var l,f;if(!u.commandName)u.line!==void 0&&(f="move");else if(l=this.matchCommand_(u.commandName),l){if(f=l.name,l.excludeFromCommandHistory&&i.setText(o),this.parseCommandArgs_(a,u,l),l.type=="exToKey"){for(var c=0;c<l.toKeys.length;c++)Me.handleKey(e,l.toKeys[c],"mapping");return}else if(l.type=="exToEx"){this.processCommand(e,l.toInput);return}}if(!f){K(e,'Not an editor command ":'+t+'"');return}try{Kt[f](e,u),(!l||!l.possiblyAsync)&&u.callback&&u.callback()}catch(v){throw K(e,v.toString()),v}},parseInput_:function(e,t,r){t.eatWhile(":"),t.eat("%")?(r.line=e.firstLine(),r.lineEnd=e.lastLine()):(r.line=this.parseLineSpec_(e,t),r.line!==void 0&&t.eat(",")&&(r.lineEnd=this.parseLineSpec_(e,t)));var n=t.match(/^(\w+|!!|@@|[!#&*<=>@~])/);return n?r.commandName=n[1]:r.commandName=t.match(/.*/)[0],r},parseLineSpec_:function(e,t){var r=t.match(/^(\d+)/);if(r)return parseInt(r[1],10)-1;switch(t.next()){case".":return this.parseLineSpecOffset_(t,e.getCursor().line);case"$":return this.parseLineSpecOffset_(t,e.lastLine());case"'":var n=t.next(),i=Bt(e,e.state.vim,n);if(!i)throw new Error("Mark not set");return this.parseLineSpecOffset_(t,i.line);case"-":case"+":return t.backUp(1),this.parseLineSpecOffset_(t,e.getCursor().line);default:t.backUp(1);return}},parseLineSpecOffset_:function(e,t){var r=e.match(/^([+-])?(\d+)/);if(r){var n=parseInt(r[2],10);r[1]=="-"?t-=n:t+=n}return t},parseCommandArgs_:function(e,t,r){if(!e.eol()){t.argString=e.match(/.*/)[0];var n=r.argDelimiter||/\s+/,i=Xe(t.argString).split(n);i.length&&i[0]&&(t.args=i)}},matchCommand_:function(e){for(var t=e.length;t>0;t--){var r=e.substring(0,t);if(this.commandMap_[r]){var n=this.commandMap_[r];if(n.name.indexOf(e)===0)return n}}return null},buildCommandMap_:function(){this.commandMap_={};for(var e=0;e<Qt.length;e++){var t=Qt[e],r=t.shortName||t.name;this.commandMap_[r]=t}},map:function(e,t,r){if(e!=":"&&e.charAt(0)==":"){if(r)throw Error("Mode not supported for ex mappings");var n=e.substring(1);t!=":"&&t.charAt(0)==":"?this.commandMap_[n]={name:n,type:"exToEx",toInput:t.substring(1),user:!0}:this.commandMap_[n]={name:n,type:"exToKey",toKeys:t,user:!0}}else if(t!=":"&&t.charAt(0)==":"){var i={keys:e,type:"keyToEx",exArgs:{input:t.substring(1)}};r&&(i.context=r),X.unshift(i)}else{var i={keys:e,type:"keyToKey",toKeys:t};r&&(i.context=r),X.unshift(i)}},unmap:function(e,t){if(e!=":"&&e.charAt(0)==":"){if(t)throw Error("Mode not supported for ex mappings");var r=e.substring(1);if(this.commandMap_[r]&&this.commandMap_[r].user)return delete this.commandMap_[r],!0}else for(var n=e,i=0;i<X.length;i++)if(n==X[i].keys&&X[i].context===t)return X.splice(i,1),!0}};var Kt={colorscheme:function(e,t){if(!t.args||t.args.length<1){K(e,e.getOption("theme"));return}e.setOption("theme",t.args[0])},map:function(e,t,r){var n=t.args;if(!n||n.length<2){e&&K(e,"Invalid mapping: "+t.input);return}ce.map(n[0],n[1],r)},imap:function(e,t){this.map(e,t,"insert")},nmap:function(e,t){this.map(e,t,"normal")},vmap:function(e,t){this.map(e,t,"visual")},unmap:function(e,t,r){var n=t.args;(!n||n.length<1||!ce.unmap(n[0],r))&&e&&K(e,"No such mapping: "+t.input)},move:function(e,t){ge.processCommand(e,e.state.vim,{type:"motion",motion:"moveToLineOrEdgeOfDocument",motionArgs:{forward:!1,explicitRepeat:!0,linewise:!0},repeatOverride:t.line+1})},set:function(e,t){var r=t.args,n=t.setCfg||{};if(!r||r.length<1){e&&K(e,"Invalid mapping: "+t.input);return}var i=r[0].split("="),o=i[0],a=i[1],u=!1;if(o.charAt(o.length-1)=="?"){if(a)throw Error("Trailing characters: "+t.argString);o=o.substring(0,o.length-1),u=!0}a===void 0&&o.substring(0,2)=="no"&&(o=o.substring(2),a=!1);var l=he[o]&&he[o].type=="boolean";if(l&&a==null&&(a=!0),!l&&a===void 0||u){var f=Ce(o,e,n);f instanceof Error?K(e,f.message):f===!0||f===!1?K(e," "+(f?"":"no")+o):K(e," "+o+"="+f)}else{var c=Qe(o,a,e,n);c instanceof Error&&K(e,c.message)}},setlocal:function(e,t){t.setCfg={scope:"local"},this.set(e,t)},setglobal:function(e,t){t.setCfg={scope:"global"},this.set(e,t)},registers:function(e,t){var r=t.args,n=x.registerController.registers,i=`----------Registers----------
`;if(r){var o;r=r.join("");for(var u=0;u<r.length;u++)if(o=r.charAt(u),!!x.registerController.isValidRegister(o)){var l=n[o]||new se;i+='"'+o+" "+l.toString()+`
`}}else for(var o in n){var a=n[o].toString();a.length&&(i+='"'+o+" "+a+`
`)}K(e,i)},sort:function(e,t){var r,n,i,o,a;function u(){if(t.argString){var O=new b.StringStream(t.argString);if(O.eat("!")&&(r=!0),O.eol())return;if(!O.eatSpace())return"Invalid arguments";var R=O.match(/([dinuox]+)?\s*(\/.+\/)?\s*/);if(!R&&!O.eol())return"Invalid arguments";if(R[1]){n=R[1].indexOf("i")!=-1,i=R[1].indexOf("u")!=-1;var z=R[1].indexOf("d")!=-1||R[1].indexOf("n")!=-1&&1,ee=R[1].indexOf("x")!=-1&&1,G=R[1].indexOf("o")!=-1&&1;if(z+ee+G>1)return"Invalid arguments";o=z&&"decimal"||ee&&"hex"||G&&"octal"}R[2]&&(a=new RegExp(R[2].substr(1,R[2].length-2),n?"i":""))}}var l=u();if(l){K(e,l+": "+t.argString);return}var f=t.line||e.firstLine(),c=t.lineEnd||t.line||e.lastLine();if(f==c)return;var v=new m(f,0),y=new m(c,W(e,c)),p=e.getRange(v,y).split(`
`),C=a||(o=="decimal"?/(-?)([\d]+)/:o=="hex"?/(-?)(?:0x)?([0-9a-f]+)/i:o=="octal"?/([0-7]+)/:null),M=o=="decimal"?10:o=="hex"?16:o=="octal"?8:null,k=[],L=[];if(o||a)for(var I=0;I<p.length;I++){var A=a?p[I].match(a):null;A&&A[0]!=""?k.push(A):!a&&C.exec(p[I])?k.push(p[I]):L.push(p[I])}else L=p;function E(O,R){if(r){var z;z=O,O=R,R=z}n&&(O=O.toLowerCase(),R=R.toLowerCase());var ee=o&&C.exec(O),G=o&&C.exec(R);return ee?(ee=parseInt((ee[1]+ee[2]).toLowerCase(),M),G=parseInt((G[1]+G[2]).toLowerCase(),M),ee-G):O<R?-1:1}function j(O,R){if(r){var z;z=O,O=R,R=z}return n&&(O[0]=O[0].toLowerCase(),R[0]=R[0].toLowerCase()),O[0]<R[0]?-1:1}if(k.sort(a?j:E),a)for(var I=0;I<k.length;I++)k[I]=k[I].input;else o||L.sort(E);if(p=r?k.concat(L):L.concat(k),i){var D=p,Q;p=[];for(var I=0;I<D.length;I++)D[I]!=Q&&p.push(D[I]),Q=D[I]}e.replaceRange(p.join(`
`),v,y)},vglobal:function(e,t){this.global(e,t)},global:function(e,t){var r=t.argString;if(!r){K(e,"Regular Expression missing from global");return}var n=t.commandName[0]==="v",i=t.line!==void 0?t.line:e.firstLine(),o=t.lineEnd||t.line||e.lastLine(),a=Mr(r),u=r,l;if(a.length&&(u=a[0],l=a.slice(1,a.length).join("/")),u)try{Ae(e,u,!0,!0)}catch{K(e,"Invalid regex: "+u);return}for(var f=fe(e).getQuery(),c=[],v=i;v<=o;v++){var y=e.getLineHandle(v),p=f.test(y.text);p!==n&&c.push(l?y:y.text)}if(!l){K(e,c.join(`
`));return}var C=0,M=function(){if(C<c.length){var k=c[C++],L=e.getLineNumber(k);if(L==null){M();return}var I=L+1+l;ce.processCommand(e,I,{callback:M})}};M()},substitute:function(e,t){if(!e.getSearchCursor)throw new Error("Search feature not available. Requires searchcursor.js or any other getSearchCursor implementation.");var r=t.argString,n=r?Lt(r,r[0]):[],i,o="",a,u,l,f=!1,c=!1;if(n.length)i=n[0],Ce("pcre")&&i!==""&&(i=new RegExp(i).source),o=n[1],o!==void 0&&(Ce("pcre")?o=Lr(o.replace(/([^\\])&/g,"$1$$&")):o=br(o),x.lastSubstituteReplacePart=o),a=n[2]?n[2].split(" "):[];else if(r&&r.length){K(e,"Substitutions should be of the form :s/pattern/replace/");return}if(a&&(u=a[0],l=parseInt(a[1]),u&&(u.indexOf("c")!=-1&&(f=!0),u.indexOf("g")!=-1&&(c=!0),Ce("pcre")?i=i+"/"+u:i=i.replace(/\//g,"\\/")+"/"+u)),i)try{Ae(e,i,!0,!0)}catch{K(e,"Invalid regex: "+i);return}if(o=o||x.lastSubstituteReplacePart,o===void 0){K(e,"No previous substitute regular expression");return}var v=fe(e),y=v.getQuery(),p=t.line!==void 0?t.line:e.getCursor().line,C=t.lineEnd||p;p==e.firstLine()&&C==e.lastLine()&&(C=1/0),l&&(p=C,C=p+l-1);var M=re(e,new m(p,0)),k=e.getSearchCursor(y,M);e.pushUndoStop(),Or(e,f,c,p,C,k,y,o,t.callback)},redo:b.commands.redo,undo:b.commands.undo,write:function(e){b.commands.save?b.commands.save(e):e.save&&e.save()},nohlsearch:function(e){qe(e)},yank:function(e){var t=N(e.getCursor()),r=t.line,n=e.getLine(r);x.registerController.pushText("0","yank",n,!0,!0)},delmarks:function(e,t){if(!t.argString||!Xe(t.argString)){K(e,"Argument required");return}for(var r=e.state.vim,n=new b.StringStream(Xe(t.argString));!n.eol();){n.eatSpace();var i=n.pos;if(!n.match(/[a-zA-Z]/,!1)){K(e,"Invalid argument: "+t.argString.substring(i));return}var o=n.next();if(n.match("-",!0)){if(!n.match(/[a-zA-Z]/,!1)){K(e,"Invalid argument: "+t.argString.substring(i));return}var a=o,u=n.next();if(je(a)&&je(u)||be(a)&&be(u)){var l=a.charCodeAt(0),f=u.charCodeAt(0);if(l>=f){K(e,"Invalid argument: "+t.argString.substring(i));return}for(var c=0;c<=f-l;c++){var v=String.fromCharCode(l+c);delete r.marks[v]}}else{K(e,"Invalid argument: "+a+"-");return}}else delete r.marks[o]}}},ce=new Pt;function Or(e,t,r,n,i,o,a,u,l){e.state.vim.exMode=!0;var f=!1,c,v,y;function p(){e.operation(function(){for(;!f;)C(),k();L()})}function C(){var A=e.getRange(o.from(),o.to()),E=A.replace(a,u),j=o.to().line;o.replace(E),v=o.to().line,i+=v-j,y=v<j}function M(){var A=c&&N(o.to()),E=o.findNext();return E&&!E[0]&&A&&ne(o.from(),A)&&(E=o.findNext()),E}function k(){for(;M()&&Br(o.from(),n,i);)if(!(!r&&o.from().line==v&&!y)){e.scrollIntoView(o.from(),30),e.setSelection(o.from(),o.to()),c=o.from(),f=!1;return}f=!0}function L(A){if(A&&A(),e.focus(),c){e.setCursor(c);var E=e.state.vim;E.exMode=!1,E.lastHPos=E.lastHSPos=c.ch}l&&l()}function I(A,E,j){b.e_stop(A);var D=b.keyName(A);switch(D){case"Y":C(),k();break;case"N":k();break;case"A":var Q=l;l=void 0,e.operation(p),l=Q;break;case"L":C();case"Q":case"Esc":case"Ctrl-C":case"Ctrl-[":L(j);break}return f&&L(j),!0}if(k(),f){K(e,"No matches for "+a.source);return}if(!t){p(),l&&l();return}_e(e,{prefix:me("span","replace with ",me("strong",u)," (y/n/a/q/l)"),onKeyDown:I})}b.keyMap.vim={attach:d,detach:h,call:g};function Te(e){var t=e.state.vim,r=x.macroModeState,n=x.registerController.getRegister("."),i=r.isPlaying,o=r.lastInsertModeChanges;i||(e.off("change",Dt),b.off(e.getInputField(),"keydown",Ht)),!i&&t.insertModeRepeat>1&&(Vt(e,t,t.insertModeRepeat-1,!0),t.lastEditInputState.repeatOverride=t.insertModeRepeat),delete t.insertModeRepeat,t.insertMode=!1,e.setCursor(e.getCursor().line,e.getCursor().ch-1),e.setOption("keyMap","vim"),e.setOption("disableInput",!0),e.toggleOverwrite(!1),n.setText(o.changes.join("")),b.signal(e,"vim-mode-change",{mode:"normal"}),r.isRecording&&Dr(r),e.enterVimMode()}function Nt(e){X.unshift(e)}function Pr(e,t,r,n,i){var o={keys:e,type:t};o[t]=r,o[t+"Args"]=n;for(var a in i)o[a]=i[a];Nt(o)}Oe("insertModeEscKeysTimeout",200,"number"),b.keyMap["vim-insert"]={fallthrough:["default"],attach:d,detach:h,call:g},b.keyMap["vim-replace"]={Backspace:"goCharLeft",fallthrough:["vim-insert"],attach:d,detach:h,call:g};function Kr(e,t,r,n){var i=x.registerController.getRegister(n);if(n==":"){i.keyBuffer[0]&&ce.processCommand(e,i.keyBuffer[0]),r.isPlaying=!1;return}var o=i.keyBuffer,a=0;r.isPlaying=!0,r.replaySearchQueries=i.searchQueries.slice(0);for(var u=0;u<o.length;u++)for(var l=o[u],f,c;l;)if(f=/<\w+-.+?>|<\w+>|./.exec(l),c=f[0],l=l.substring(f.index+c.length),Me.handleKey(e,c,"macro"),t.insertMode){var v=i.insertModeChanges[a++].changes;x.macroModeState.lastInsertModeChanges.changes=v,Ft(e,v,1),Te(e)}r.isPlaying=!1}function Nr(e,t){if(!e.isPlaying){var r=e.latestRegister,n=x.registerController.getRegister(r);n&&n.pushText(t)}}function Dr(e){if(!e.isPlaying){var t=e.latestRegister,r=x.registerController.getRegister(t);r&&r.pushInsertModeChanges&&r.pushInsertModeChanges(e.lastInsertModeChanges)}}function _r(e,t){if(!e.isPlaying){var r=e.latestRegister,n=x.registerController.getRegister(r);n&&n.pushSearchQuery&&n.pushSearchQuery(t)}}function Dt(e,t){var r=x.macroModeState,n=r.lastInsertModeChanges;if(!r.isPlaying)for(;t;){if(n.expectCursorActivityForChange=!0,n.ignoreCount>1)n.ignoreCount--;else if(t.origin=="+input"||t.origin=="paste"||t.origin===void 0){var i=e.listSelections().length;i>1&&(n.ignoreCount=i);var o=t.text.join(`
`);n.maybeReset&&(n.changes=[],n.maybeReset=!1),o&&(e.state.overwrite&&!/\n/.test(o)?n.changes.push([o]):n.changes.push(o))}t=t.next}}function _t(e){var t=e.state.vim;if(t.insertMode){var r=x.macroModeState;if(r.isPlaying)return;var n=r.lastInsertModeChanges;n.expectCursorActivityForChange?n.expectCursorActivityForChange=!1:n.maybeReset=!0}else e.curOp.isVimOp||Hr(e,t)}function Hr(e,t){var r=e.getCursor("anchor"),n=e.getCursor("head");if(t.visualMode&&!e.somethingSelected()?le(e,!1):!t.visualMode&&!t.insertMode&&e.somethingSelected()&&(t.visualMode=!0,t.visualLine=!1,b.signal(e,"vim-mode-change",{mode:"visual"})),t.visualMode){var i=_(n,r)?0:-1,o=_(n,r)?-1:0;n=q(n,0,i),r=q(r,0,o),t.sel={anchor:r,head:n},pe(e,t,"<",ie(n,r)),pe(e,t,">",ke(n,r))}else t.insertMode||(t.lastHPos=e.getCursor().ch)}function tt(e){this.keyName=e}function Ht(e){var t=x.macroModeState,r=t.lastInsertModeChanges,n=b.keyName(e);if(!n)return;function i(){return r.maybeReset&&(r.changes=[],r.maybeReset=!1),r.changes.push(new tt(n)),!0}(n.indexOf("Delete")!=-1||n.indexOf("Backspace")!=-1)&&b.lookupKey(n,"vim-insert",i)}function Vt(e,t,r,n){var i=x.macroModeState;i.isPlaying=!0;var o=!!t.lastEditActionCommand,a=t.inputState;function u(){o?ge.processAction(e,t,t.lastEditActionCommand):ge.evalInput(e,t)}function l(c){if(i.lastInsertModeChanges.changes.length>0){c=t.lastEditActionCommand?c:1;var v=i.lastInsertModeChanges;Ft(e,v.changes,c)}}if(t.inputState=t.lastEditInputState,o&&t.lastEditActionCommand.interlaceInsertRepeat)for(var f=0;f<r;f++)u(),l(1);else n||u(),l(r);t.inputState=a,t.insertMode&&!n&&Te(e),i.isPlaying=!1}function Ft(e,t,r){function n(v){return typeof v=="string"?b.commands[v](e):v(e),!0}var i=e.getCursor("head"),o=x.macroModeState.lastInsertModeChanges.visualBlock;o&&(Ct(e,i,o+1),r=e.listSelections().length,e.setCursor(i));for(var a=0;a<r;a++){o&&e.setCursor(q(i,a,0));for(var u=0;u<t.length;u++){var l=t[u];if(l instanceof tt)b.lookupKey(l.keyName,"vim-insert",n);else if(typeof l=="string")window.cm=e,e.replaceSelections(l);else{var f=e.getCursor(),c=q(f,0,l[0].length);e.replaceRange(l[0],f,c),e.setCursor(c)}}}o&&e.setCursor(q(i,0,1))}return ct(),Me};b.Vim=zr();var at=b;var Ee=class{constructor(s,h,d=null){this.node=s,this.modeInfoNode=document.createElement("span"),this.secInfoNode=document.createElement("span"),this.notifNode=document.createElement("span"),this.notifNode.className="vim-notification",this.keyInfoNode=document.createElement("span"),this.keyInfoNode.setAttribute("style","float: right"),this.node.appendChild(this.modeInfoNode),this.node.appendChild(this.secInfoNode),this.node.appendChild(this.notifNode),this.node.appendChild(this.keyInfoNode),this.toggleVisibility(!1),this.editor=h,this.sanitizer=d}setMode(s){if(s.mode==="visual"){s.subMode==="linewise"?this.setText("--VISUAL LINE--"):s.subMode==="blockwise"?this.setText("--VISUAL BLOCK--"):this.setText("--VISUAL--");return}this.setText(`--${s.mode.toUpperCase()}--`)}setKeyBuffer(s){this.keyInfoNode.textContent=s}setSec(s,h,d){if(this.notifNode.textContent="",s===void 0)return this.closeInput;this.setInnerHtml_(this.secInfoNode,s);let g=this.secInfoNode.querySelector("input");return g&&(g.focus(),this.input={callback:h,options:d,node:g},d&&(d.selectValueOnOpen&&g.select(),d.value&&(g.value=d.value)),this.addInputListeners()),this.closeInput}setText(s){this.modeInfoNode.textContent=s}toggleVisibility(s){s?this.node.style.display="block":this.node.style.display="none",this.input&&this.removeInputListeners(),clearInterval(this.notifTimeout)}closeInput=()=>{this.removeInputListeners(),this.input=null,this.setSec(""),this.editor&&this.editor.focus()};clear=()=>{this.setInnerHtml_(this.node,"")};inputKeyUp=s=>{let{options:h}=this.input;h&&h.onKeyUp&&h.onKeyUp(s,s.target.value,this.closeInput)};inputKeyInput=s=>{let{options:h}=this.input;h&&h.onKeyInput&&h.onKeyUp(s,s.target.value,this.closeInput)};inputBlur=()=>{let{options:s}=this.input;s.closeOnBlur&&this.closeInput()};inputKeyDown=s=>{let{options:h,callback:d}=this.input;h&&h.onKeyDown&&h.onKeyDown(s,s.target.value,this.closeInput)||((s.keyCode===27||h&&h.closeOnEnter!==!1&&s.keyCode==13)&&(this.input.node.blur(),s.stopPropagation(),this.closeInput()),s.keyCode===13&&d&&(s.stopPropagation(),s.preventDefault(),d(s.target.value)))};addInputListeners(){let{node:s}=this.input;s.addEventListener("keyup",this.inputKeyUp),s.addEventListener("keydown",this.inputKeyDown),s.addEventListener("input",this.inputKeyInput),s.addEventListener("blur",this.inputBlur)}removeInputListeners(){if(!this.input||!this.input.node)return;let{node:s}=this.input;s.removeEventListener("keyup",this.inputKeyUp),s.removeEventListener("keydown",this.inputKeyDown),s.removeEventListener("input",this.inputKeyInput),s.removeEventListener("blur",this.inputBlur)}showNotification(s){let h=document.createElement("span");this.setInnerHtml_(h,s),this.notifNode.textContent=h.textContent,this.notifTimeout=setTimeout(()=>{this.notifNode.textContent=""},5e3)}setInnerHtml_(s,h){for(;s.childNodes.length;)s.removeChild(s.childNodes[0]);!h||(this.sanitizer?s.appendChild(this.sanitizer(h)):s.appendChild(h))}};function Gr(w,s=null,h=Ee,d=null){let g=new at(w);if(!s)return g.attach(),g;let S=new h(s,w,d),T="";return g.on("vim-mode-change",P=>{S.setMode(P)}),g.on("vim-keypress",P=>{P===":"?T="":T+=P,S.setKeyBuffer(T)}),g.on("vim-command-done",()=>{T="",S.setKeyBuffer(T)}),g.on("dispose",function(){S.toggleVisibility(!1),S.closeInput(),S.clear()}),S.toggleVisibility(!0),g.setStatusBar(S),g.attach(),g}at.Vim.defineEx("write","w",()=>{document.querySelector("[class*='MenuBar-StartGroup']>button").click()});window.monaco.editor.onDidCreateEditor(w=>{let s=document.body.appendChild(document.createElement("div")),h=Gr(w,s);document.querySelector("main").style.height="calc(100vh - 15px)",(()=>{Object.assign(s.style,{display:"block",position:"absolute",left:0,bottom:0,zIndex:1e4,backgroundColor:"#212328"})})(),w.onDidDispose(()=>{h.dispose(),s.remove()})});var an=document.querySelector("[class*='Editor'] [class*='FileName'] span").textContent;Array.from(document.querySelectorAll("[class*='Tab-closeButton']"),w=>w.click());})();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment