ace.define("ace/keyboard/vim",["require","exports","module","ace/range","ace/lib/event_emitter","ace/lib/dom","ace/lib/oop","ace/lib/keys","ace/lib/event","ace/search","ace/lib/useragent","ace/search_highlight","ace/commands/multi_select_commands","ace/mode/text","ace/multi_select"],function(g,l,q){'use strict';function t(){var d="";function a(p){if(typeof p!="object")return p+"";if("line"in p){return p.line+":"+p.ch;}if("anchor"in p){return a(p.anchor)+"->"+a(p.head);}if(Array.isArray(p))return"["+p.map(function(x){return a(x);})+"]";return JSON.stringify(p);}for(var i=0;i0){p.row+=r;p.column+=p.row==e.row?f:0;continue;}if(!a&&j<=0){p.row=s.row;p.column=s.column;if(j===0)p.bias=1;}}};var b=function(a,i,r,d){this.cm=a;this.id=i;this.row=r;this.column=d;a.marks[this.id]=this;};b.prototype.clear=function(){delete this.cm.marks[this.id]};b.prototype.find=function(){return H(this)};this.setBookmark=function(a,p1){var d=new b(this,this.$uid++,a.line,a.ch);if(!p1||!p1.insertLeft)d.$insertRight=true;this.marks[d.id]=d;return d;};this.moveH=function(i,a){if(a=='char'){var s=this.ace.selection;s.clearSelection();s.moveCursorBy(0,i);}};this.findPosV=function(s,a,d,e){if(d=='page'){var r=this.ace.renderer;var f=r.layerConfig;a=a*Math.floor(f.height/f.lineHeight);d='line';}if(d=='line'){var h=this.ace.session.documentToScreenPosition(s.line,s.ch);if(e!=null)h.column=e;h.row+=a;h.row=Math.min(Math.max(0,h.row),this.ace.session.getScreenLength()-1);var p=this.ace.session.screenToDocumentPosition(h.row,h.column);return H(p);}else{debugger;}};this.charCoords=function(p,m){if(m=='div'||!m){var s=this.ace.session.documentToScreenPosition(p.line,p.ch);return{left:s.column,top:s.row};}if(m=='local'){var r=this.ace.renderer;var s=this.ace.session.documentToScreenPosition(p.line,p.ch);var a=r.layerConfig.lineHeight;var d=r.layerConfig.characterWidth;var e=a*s.row;return{left:s.column*d,top:e,bottom:e+a};}};this.coordsChar=function(p,m){var r=this.ace.renderer;if(m=='local'){var a=Math.max(0,Math.floor(p.top/r.lineHeight));var d=Math.max(0,Math.floor(p.left/r.characterWidth));var e=r.session.screenToDocumentPosition(a,d);return H(e);}else if(m=='div'){throw"not implemented";}};this.getSearchCursor=function(a,p,d){var e=false;var i=false;if(a instanceof RegExp&&!a.global){e=!a.ignoreCase;a=a.source;i=true;}var s=new S();if(p.ch==undefined)p.ch=Number.MAX_VALUE;var f={row:p.line,column:p.ch};var h=this;var j=null;return{findNext:function(){return this.find(false)},findPrevious:function(){return this.find(true)},find:function(k){s.setOptions({needle:a,caseSensitive:e,wrap:false,backwards:k,regExp:i,start:j||f});var r=s.find(h.ace.session);if(r&&r.isEmpty()){if(h.getLine(r.start.row).length==r.start.column){s.$options.start=r;r=s.find(h.ace.session);}}j=r;return j;},from:function(){return j&&H(j.start)},to:function(){return j&&H(j.end)},replace:function(k){if(j){j.end=h.ace.session.doc.replace(j,k);}}};};this.scrollTo=function(x,y){var r=this.ace.renderer;var a=r.layerConfig;var m=a.maxHeight;m-=(r.$size.scrollerHeight-r.lineHeight)*r.$scrollPastEnd;if(y!=null)this.ace.session.setScrollTop(Math.max(0,Math.min(y,m)));if(x!=null)this.ace.session.setScrollLeft(Math.max(0,Math.min(x,a.width)));};this.scrollInfo=function(){return 0;};this.scrollIntoView=function(p,m){if(p){var r=this.ace.renderer;var v={"top":0,"bottom":m};r.scrollCursorIntoView(G(p),(r.lineHeight*2)/r.$size.scrollerHeight,v);}};this.getLine=function(r){return this.ace.session.getLine(r)};this.getRange=function(s,e){return this.ace.session.getTextRange(new R(s.line,s.ch,e.line,e.ch));};this.replaceRange=function(a,s,e){if(!e)e=s;return this.ace.session.replace(new R(s.line,s.ch,e.line,e.ch),a);};this.replaceSelections=function(p){var s=this.ace.selection;if(this.ace.inVirtualSelectionMode){this.ace.session.replace(s.getRange(),p[0]||"");return;}s.inVirtualSelectionMode=true;var r=s.rangeList.ranges;if(!r.length)r=[this.ace.multiSelect.getRange()];for(var i=r.length;i--;)this.ace.session.replace(r[i],p[i]||"");s.inVirtualSelectionMode=false;};this.getSelection=function(){return this.ace.getSelectedText();};this.getSelections=function(){return this.listSelections().map(function(x){return this.getRange(x.anchor,x.head);},this);};this.getInputField=function(){return this.ace.textInput.getElement();};this.getWrapperElement=function(){return this.ace.containter;};var c={indentWithTabs:"useSoftTabs",indentUnit:"tabSize",tabSize:"tabSize",firstLineNumber:"firstLineNumber",readOnly:"readOnly"};this.setOption=function(n,v){this.state[n]=v;switch(n){case'indentWithTabs':n=c[n];v=!v;break;default:n=c[n];}if(n)this.ace.setOption(n,v);};this.getOption=function(n,v){var a=c[n];if(a)v=this.ace.getOption(a);switch(n){case'indentWithTabs':n=c[n];return!v;}return a?v:this.state[n];};this.toggleOverwrite=function(o){this.state.overwrite=o;return this.ace.setOverwrite(o);};this.addOverlay=function(o){if(!this.$searchHighlight||!this.$searchHighlight.session){var h=new C(null,"ace_highlight-marker","text");var m=this.ace.session.addDynamicMarker(h);h.id=m.id;h.session=this.ace.session;h.destroy=function(o){h.session.off("change",h.updateOnChange);h.session.off("changeEditor",h.destroy);h.session.removeMarker(h.id);h.session=null;};h.updateOnChange=function(d){var a=d.start.row;if(a==d.end.row)h.cache[a]=undefined;else h.cache.splice(a,h.cache.length);};h.session.on("changeEditor",h.destroy);h.session.on("change",h.updateOnChange);}var r=new RegExp(o.query.source,"gmi");this.$searchHighlight=o.highlight=h;this.$searchHighlight.setRegexp(r);this.ace.renderer.updateBackMarkers();};this.removeOverlay=function(o){if(this.$searchHighlight&&this.$searchHighlight.session){this.$searchHighlight.destroy();}};this.getScrollInfo=function(){var r=this.ace.renderer;var a=r.layerConfig;return{left:r.scrollLeft,top:r.scrollTop,height:a.maxHeight,width:a.width,clientHeight:a.height,clientWidth:a.width};};this.getValue=function(){return this.ace.getValue();};this.setValue=function(v){return this.ace.setValue(v);};this.getTokenTypeAt=function(p){var a=this.ace.session.getTokenAt(p.line,p.ch);return a&&/comment|string/.test(a.type)?"string":"";};this.findMatchingBracket=function(p){var m=this.ace.session.findMatchingBracket(G(p));return{to:m&&H(m)};};this.indentLine=function(a,m){if(m===true)this.ace.session.indentRows(a,a,"\t");else if(m===false)this.ace.session.outdentRows(new R(a,0,a,0));};this.indexFromPos=function(p){return this.ace.session.doc.positionToIndex(G(p));};this.posFromIndex=function(i){return H(this.ace.session.doc.indexToPosition(i));};this.focus=function(i){return this.ace.focus();};this.blur=function(i){return this.ace.blur();};this.defaultTextHeight=function(i){return this.ace.renderer.layerConfig.lineHeight;};this.scanForBracket=function(p,d,_,p1){var r=p1.bracketRegex.source;if(d==1){var m=this.ace.session.$findClosingBracket(r.slice(1,2),G(p),/paren|text/);}else{var m=this.ace.session.$findOpeningBracket(r.slice(-2,-1),{row:p.line,column:p.ch+1},/paren|text/);}return m&&{pos:H(m)};};this.refresh=function(){return this.ace.resize(true);};this.getMode=function(){return{name:this.getOption("mode")};}}).call(F.prototype);function G(c){return{row:c.line,column:c.ch};}function H(a){return new P(a.row,a.column);}var I=F.StringStream=function(s,a){this.pos=this.start=0;this.string=s;this.tabSize=a||8;this.lastColumnPos=this.lastColumnValue=0;this.lineStart=0;};I.prototype={eol:function(){return this.pos>=this.string.length;},sol:function(){return this.pos==this.lineStart;},peek:function(){return this.string.charAt(this.pos)||undefined;},next:function(){if(this.poss;},eatSpace:function(){var s=this.pos;while(/[\s\u00a0]/.test(this.string.charAt(this.pos)))++this.pos;return this.pos>s;},skipToEnd:function(){this.pos=this.string.length;},skipTo:function(c){var f=this.string.indexOf(c,this.pos);if(f>-1){this.pos=f;return true;}},backUp:function(n){this.pos-=n;},column:function(){throw"not implemented";},indentation:function(){throw"not implemented";},match:function(p,c,a){if(typeof p=="string"){var b=function(d){return a?d.toLowerCase():d;};var s=this.string.substr(this.pos,p.length);if(b(s)==b(p)){if(c!==false)this.pos+=p.length;return true;}}else{var m=this.string.slice(this.pos).match(p);if(m&&m.index>0)return null;if(m&&c!==false)this.pos+=m[0].length;return m;}},current:function(){return this.string.slice(this.start,this.pos);},hideFirstChars:function(n,i){this.lineStart+=n;try{return i();}finally{this.lineStart-=n;}}};F.defineExtension=function(n,f){F.prototype[n]=f;};u.importCssString(".normal-mode .ace_cursor{ border: 1px solid red; background-color: red; opacity: 0.5;}.normal-mode .ace_hidden-cursors .ace_cursor{ background-color: transparent;}.ace_dialog { position: absolute; left: 0; right: 0; background: white; z-index: 15; padding: .1em .8em; overflow: hidden; color: #333;}.ace_dialog-top { border-bottom: 1px solid #eee; top: 0;}.ace_dialog-bottom { border-top: 1px solid #eee; bottom: 0;}.ace_dialog input { border: none; outline: none; background: transparent; width: 20em; color: inherit; font-family: monospace;}","vimMode");(function(){function d(a,b,e){var w=a.ace.container;var L2;L2=w.appendChild(document.createElement("div"));if(e)L2.className="ace_dialog ace_dialog-bottom";else L2.className="ace_dialog ace_dialog-top";if(typeof b=="string"){L2.innerHTML=b;}else{L2.appendChild(b);}return L2;}function c(a,n){if(a.state.currentNotificationClose)a.state.currentNotificationClose();a.state.currentNotificationClose=n;}F.defineExtension("openDialog",function(a,b,p1){if(this.virtualSelectionMode())return;if(!p1)p1={};c(this,null);var L2=d(this,a,p1.bottom);var f=false,m=this;function h(n){if(typeof n=='string'){i.value=n;}else{if(f)return;f=true;L2.parentNode.removeChild(L2);m.focus();if(p1.onClose)p1.onClose(L2);}}var i=L2.getElementsByTagName("input")[0],j;if(i){if(p1.value){i.value=p1.value;if(p1.select!==false)i.select();}if(p1.onInput)F.on(i,"input",function(e){p1.onInput(e,i.value,h);});if(p1.onKeyUp)F.on(i,"keyup",function(e){p1.onKeyUp(e,i.value,h);});F.on(i,"keydown",function(e){if(p1&&p1.onKeyDown&&p1.onKeyDown(e,i.value,h)){return;}if(e.keyCode==27||(p1.closeOnEnter!==false&&e.keyCode==13)){i.blur();F.e_stop(e);h();}if(e.keyCode==13)b(i.value);});if(p1.closeOnBlur!==false)F.on(i,"blur",h);i.focus();}else if(j=L2.getElementsByTagName("button")[0]){F.on(j,"click",function(){h();m.focus();});if(p1.closeOnBlur!==false)F.on(j,"blur",h);j.focus();}return h;});F.defineExtension("openNotification",function(a,p1){if(this.virtualSelectionMode())return;c(this,i);var L2=d(this,a,p1&&p1.bottom);var b=false,f;var h=p1&&typeof p1.duration!=="undefined"?p1.duration:5000;function i(){if(b)return;b=true;clearTimeout(f);L2.parentNode.removeChild(L2);}F.on(L2,'click',function(e){F.e_preventDefault(e);i();});if(h)f=setTimeout(i,h);return i;});})();var J=[{keys:'',type:'keyToKey',toKeys:'h'},{keys:'',type:'keyToKey',toKeys:'l'},{keys:'',type:'keyToKey',toKeys:'k'},{keys:'',type:'keyToKey',toKeys:'j'},{keys:'',type:'keyToKey',toKeys:'l'},{keys:'',type:'keyToKey',toKeys:'h',context:'normal'},{keys:'',type:'keyToKey',toKeys:'W'},{keys:'',type:'keyToKey',toKeys:'B',context:'normal'},{keys:'',type:'keyToKey',toKeys:'w'},{keys:'',type:'keyToKey',toKeys:'b',context:'normal'},{keys:'',type:'keyToKey',toKeys:'j'},{keys:'',type:'keyToKey',toKeys:'k'},{keys:'',type:'keyToKey',toKeys:''},{keys:'',type:'keyToKey',toKeys:''},{keys:'',type:'keyToKey',toKeys:'',context:'insert'},{keys:'',type:'keyToKey',toKeys:'',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:'',type:'keyToKey',toKeys:'0'},{keys:'',type:'keyToKey',toKeys:'$'},{keys:'',type:'keyToKey',toKeys:''},{keys:'',type:'keyToKey',toKeys:''},{keys:'',type:'keyToKey',toKeys:'j^',context:'normal'},{keys:'H',type:'motion',motion:'moveToTopLine',motionArgs:{linewise:true,toJumplist:true}},{keys:'M',type:'motion',motion:'moveToMiddleLine',motionArgs:{linewise:true,toJumplist:true}},{keys:'L',type:'motion',motion:'moveToBottomLine',motionArgs:{linewise:true,toJumplist:true}},{keys:'h',type:'motion',motion:'moveByCharacters',motionArgs:{forward:false}},{keys:'l',type:'motion',motion:'moveByCharacters',motionArgs:{forward:true}},{keys:'j',type:'motion',motion:'moveByLines',motionArgs:{forward:true,linewise:true}},{keys:'k',type:'motion',motion:'moveByLines',motionArgs:{forward:false,linewise:true}},{keys:'gj',type:'motion',motion:'moveByDisplayLines',motionArgs:{forward:true}},{keys:'gk',type:'motion',motion:'moveByDisplayLines',motionArgs:{forward:false}},{keys:'w',type:'motion',motion:'moveByWords',motionArgs:{forward:true,wordEnd:false}},{keys:'W',type:'motion',motion:'moveByWords',motionArgs:{forward:true,wordEnd:false,bigWord:true}},{keys:'e',type:'motion',motion:'moveByWords',motionArgs:{forward:true,wordEnd:true,inclusive:true}},{keys:'E',type:'motion',motion:'moveByWords',motionArgs:{forward:true,wordEnd:true,bigWord:true,inclusive:true}},{keys:'b',type:'motion',motion:'moveByWords',motionArgs:{forward:false,wordEnd:false}},{keys:'B',type:'motion',motion:'moveByWords',motionArgs:{forward:false,wordEnd:false,bigWord:true}},{keys:'ge',type:'motion',motion:'moveByWords',motionArgs:{forward:false,wordEnd:true,inclusive:true}},{keys:'gE',type:'motion',motion:'moveByWords',motionArgs:{forward:false,wordEnd:true,bigWord:true,inclusive:true}},{keys:'{',type:'motion',motion:'moveByParagraph',motionArgs:{forward:false,toJumplist:true}},{keys:'}',type:'motion',motion:'moveByParagraph',motionArgs:{forward:true,toJumplist:true}},{keys:'',type:'motion',motion:'moveByPage',motionArgs:{forward:true}},{keys:'',type:'motion',motion:'moveByPage',motionArgs:{forward:false}},{keys:'',type:'motion',motion:'moveByScroll',motionArgs:{forward:true,explicitRepeat:true}},{keys:'',type:'motion',motion:'moveByScroll',motionArgs:{forward:false,explicitRepeat:true}},{keys:'gg',type:'motion',motion:'moveToLineOrEdgeOfDocument',motionArgs:{forward:false,explicitRepeat:true,linewise:true,toJumplist:true}},{keys:'G',type:'motion',motion:'moveToLineOrEdgeOfDocument',motionArgs:{forward:true,explicitRepeat:true,linewise:true,toJumplist:true}},{keys:'0',type:'motion',motion:'moveToStartOfLine'},{keys:'^',type:'motion',motion:'moveToFirstNonWhiteSpaceCharacter'},{keys:'+',type:'motion',motion:'moveByLines',motionArgs:{forward:true,toFirstChar:true}},{keys:'-',type:'motion',motion:'moveByLines',motionArgs:{forward:false,toFirstChar:true}},{keys:'_',type:'motion',motion:'moveByLines',motionArgs:{forward:true,toFirstChar:true,repeatOffset:-1}},{keys:'$',type:'motion',motion:'moveToEol',motionArgs:{inclusive:true}},{keys:'%',type:'motion',motion:'moveToMatchedSymbol',motionArgs:{inclusive:true,toJumplist:true}},{keys:'f',type:'motion',motion:'moveToCharacter',motionArgs:{forward:true,inclusive:true}},{keys:'F',type:'motion',motion:'moveToCharacter',motionArgs:{forward:false}},{keys:'t',type:'motion',motion:'moveTillCharacter',motionArgs:{forward:true,inclusive:true}},{keys:'T',type:'motion',motion:'moveTillCharacter',motionArgs:{forward:false}},{keys:';',type:'motion',motion:'repeatLastCharacterSearch',motionArgs:{forward:true}},{keys:',',type:'motion',motion:'repeatLastCharacterSearch',motionArgs:{forward:false}},{keys:'\'',type:'motion',motion:'goToMark',motionArgs:{toJumplist:true,linewise:true}},{keys:'`',type:'motion',motion:'goToMark',motionArgs:{toJumplist:true}},{keys:']`',type:'motion',motion:'jumpToMark',motionArgs:{forward:true}},{keys:'[`',type:'motion',motion:'jumpToMark',motionArgs:{forward:false}},{keys:']\'',type:'motion',motion:'jumpToMark',motionArgs:{forward:true,linewise:true}},{keys:'[\'',type:'motion',motion:'jumpToMark',motionArgs:{forward:false,linewise:true}},{keys:']p',type:'action',action:'paste',isEdit:true,actionArgs:{after:true,isEdit:true,matchIndent:true}},{keys:'[p',type:'action',action:'paste',isEdit:true,actionArgs:{after:false,isEdit:true,matchIndent:true}},{keys:']',type:'motion',motion:'moveToSymbol',motionArgs:{forward:true,toJumplist:true}},{keys:'[',type:'motion',motion:'moveToSymbol',motionArgs:{forward:false,toJumplist:true}},{keys:'|',type:'motion',motion:'moveToColumn'},{keys:'o',type:'motion',motion:'moveToOtherHighlightedEnd',context:'visual'},{keys:'O',type:'motion',motion:'moveToOtherHighlightedEnd',motionArgs:{sameLine:true},context:'visual'},{keys:'d',type:'operator',operator:'delete'},{keys:'y',type:'operator',operator:'yank'},{keys:'c',type:'operator',operator:'change'},{keys:'>',type:'operator',operator:'indent',operatorArgs:{indentRight:true}},{keys:'<',type:'operator',operator:'indent',operatorArgs:{indentRight:false}},{keys:'g~',type:'operator',operator:'changeCase'},{keys:'gu',type:'operator',operator:'changeCase',operatorArgs:{toLower:true},isEdit:true},{keys:'gU',type:'operator',operator:'changeCase',operatorArgs:{toLower:false},isEdit:true},{keys:'n',type:'motion',motion:'findNext',motionArgs:{forward:true,toJumplist:true}},{keys:'N',type:'motion',motion:'findNext',motionArgs:{forward:false,toJumplist:true}},{keys:'x',type:'operatorMotion',operator:'delete',motion:'moveByCharacters',motionArgs:{forward:true},operatorMotionArgs:{visualLine:false}},{keys:'X',type:'operatorMotion',operator:'delete',motion:'moveByCharacters',motionArgs:{forward:false},operatorMotionArgs:{visualLine:true}},{keys:'D',type:'operatorMotion',operator:'delete',motion:'moveToEol',motionArgs:{inclusive:true},context:'normal'},{keys:'D',type:'operator',operator:'delete',operatorArgs:{linewise:true},context:'visual'},{keys:'Y',type:'operatorMotion',operator:'yank',motion:'moveToEol',motionArgs:{inclusive:true},context:'normal'},{keys:'Y',type:'operator',operator:'yank',operatorArgs:{linewise:true},context:'visual'},{keys:'C',type:'operatorMotion',operator:'change',motion:'moveToEol',motionArgs:{inclusive:true},context:'normal'},{keys:'C',type:'operator',operator:'change',operatorArgs:{linewise:true},context:'visual'},{keys:'~',type:'operatorMotion',operator:'changeCase',motion:'moveByCharacters',motionArgs:{forward:true},operatorArgs:{shouldMoveCursor:true},context:'normal'},{keys:'~',type:'operator',operator:'changeCase',context:'visual'},{keys:'',type:'operatorMotion',operator:'delete',motion:'moveByWords',motionArgs:{forward:false,wordEnd:false},context:'insert'},{keys:'',type:'action',action:'jumpListWalk',actionArgs:{forward:true}},{keys:'',type:'action',action:'jumpListWalk',actionArgs:{forward:false}},{keys:'',type:'action',action:'scroll',actionArgs:{forward:true,linewise:true}},{keys:'',type:'action',action:'scroll',actionArgs:{forward:false,linewise:true}},{keys:'a',type:'action',action:'enterInsertMode',isEdit:true,actionArgs:{insertAt:'charAfter'},context:'normal'},{keys:'A',type:'action',action:'enterInsertMode',isEdit:true,actionArgs:{insertAt:'eol'},context:'normal'},{keys:'A',type:'action',action:'enterInsertMode',isEdit:true,actionArgs:{insertAt:'endOfSelectedArea'},context:'visual'},{keys:'i',type:'action',action:'enterInsertMode',isEdit:true,actionArgs:{insertAt:'inplace'},context:'normal'},{keys:'I',type:'action',action:'enterInsertMode',isEdit:true,actionArgs:{insertAt:'firstNonBlank'},context:'normal'},{keys:'I',type:'action',action:'enterInsertMode',isEdit:true,actionArgs:{insertAt:'startOfSelectedArea'},context:'visual'},{keys:'o',type:'action',action:'newLineAndEnterInsertMode',isEdit:true,interlaceInsertRepeat:true,actionArgs:{after:true},context:'normal'},{keys:'O',type:'action',action:'newLineAndEnterInsertMode',isEdit:true,interlaceInsertRepeat:true,actionArgs:{after:false},context:'normal'},{keys:'v',type:'action',action:'toggleVisualMode'},{keys:'V',type:'action',action:'toggleVisualMode',actionArgs:{linewise:true}},{keys:'',type:'action',action:'toggleVisualMode',actionArgs:{blockwise:true}},{keys:'',type:'action',action:'toggleVisualMode',actionArgs:{blockwise:true}},{keys:'gv',type:'action',action:'reselectLastSelection'},{keys:'J',type:'action',action:'joinLines',isEdit:true},{keys:'p',type:'action',action:'paste',isEdit:true,actionArgs:{after:true,isEdit:true}},{keys:'P',type:'action',action:'paste',isEdit:true,actionArgs:{after:false,isEdit:true}},{keys:'r',type:'action',action:'replace',isEdit:true},{keys:'@',type:'action',action:'replayMacro'},{keys:'q',type:'action',action:'enterMacroRecordMode'},{keys:'R',type:'action',action:'enterInsertMode',isEdit:true,actionArgs:{replace:true}},{keys:'u',type:'action',action:'undo',context:'normal'},{keys:'u',type:'operator',operator:'changeCase',operatorArgs:{toLower:true},context:'visual',isEdit:true},{keys:'U',type:'operator',operator:'changeCase',operatorArgs:{toLower:false},context:'visual',isEdit:true},{keys:'',type:'action',action:'redo'},{keys:'m',type:'action',action:'setMark'},{keys:'"',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',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:'',type:'action',action:'incrementNumberToken',isEdit:true,actionArgs:{increase:true,backtrack:false}},{keys:'',type:'action',action:'incrementNumberToken',isEdit:true,actionArgs:{increase:false,backtrack:false}},{keys:'a',type:'motion',motion:'textObjectManipulation'},{keys:'i',type:'motion',motion:'textObjectManipulation',motionArgs:{textObjectInner:true}},{keys:'/',type:'search',searchArgs:{forward:true,querySrc:'prompt',toJumplist:true}},{keys:'?',type:'search',searchArgs:{forward:false,querySrc:'prompt',toJumplist:true}},{keys:'*',type:'search',searchArgs:{forward:true,querySrc:'wordUnderCursor',wholeWordOnly:true,toJumplist:true}},{keys:'#',type:'search',searchArgs:{forward:false,querySrc:'wordUnderCursor',wholeWordOnly:true,toJumplist:true}},{keys:'g*',type:'search',searchArgs:{forward:true,querySrc:'wordUnderCursor',toJumplist:true}},{keys:'g#',type:'search',searchArgs:{forward:false,querySrc:'wordUnderCursor',toJumplist:true}},{keys:':',type:'ex'}];var L=[{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:'set',shortName:'se'},{name:'setlocal',shortName:'setl'},{name:'setglobal',shortName:'setg'},{name:'sort',shortName:'sor'},{name:'substitute',shortName:'s',possiblyAsync:true},{name:'nohlsearch',shortName:'noh'},{name:'delmarks',shortName:'delm'},{name:'registers',shortName:'reg',excludeFromCommandHistory:true},{name:'global',shortName:'g'}];var P=F.Pos;var V=function(){return B1;};function M(c){c.setOption('disableInput',true);c.setOption('showCursorWhenSelecting',false);F.signal(c,"vim-mode-change",{mode:"normal"});c.on('cursorActivity',q3);x1(c);F.on(c.getInputField(),'paste',Z(c));}function N(c){c.setOption('disableInput',false);c.off('cursorActivity',q3);F.off(c.getInputField(),'paste',Z(c));c.state.vim=null;}function O(c,n){if(this==F.keyMap.vim)F.rmClass(c.getWrapperElement(),"cm-fat-cursor");if(!n||n.attach!=Q)N(c,false);}function Q(c,p){if(this==F.keyMap.vim)F.addClass(c.getWrapperElement(),"cm-fat-cursor");if(!p||p.attach!=Q)M(c);}F.defineOption('vimMode',false,function(c,v,p){if(v&&c.getOption("keyMap")!="vim")c.setOption("keyMap","vim");else if(!v&&p!=F.Init&&/^vim/.test(c.getOption("keyMap")))c.setOption("keyMap","default");});function U(k,c){if(!c){return undefined;}var v=Y(k);if(!v){return false;}var a=F.Vim.findKey(c,v);if(typeof a=='function'){F.signal(c,'vim-keypress',v);}return a;}var W={'Shift':'S','Ctrl':'C','Alt':'A','Cmd':'D','Mod':'A'};var X={Enter:'CR',Backspace:'BS',Delete:'Del'};function Y(k){if(k.charAt(0)=='\''){return k.charAt(1);}var p=k.split(/-(?!$)/);var a=p[p.length-1];if(p.length==1&&p[0].length==1){return false;}else if(p.length==2&&p[0]=='Shift'&&a.length==1){return false;}var h=false;for(var i=0;i';}function Z(c){var v=c.state.vim;if(!v.onPasteFn){v.onPasteFn=function(){if(!v.insertMode){c.setCursor(S1(c.getCursor(),0,1));O1.enterInsertMode(c,{},v);}};}return v.onPasteFn;}var $=/[\d]/;var a1=[F.isWordChar,function(c){return c&&!F.isWordChar(c)&&!/\s/.test(c);}],b1=[function(c){return/\S/.test(c);}];function c1(s,a){var k=[];for(var i=s;i']);var h1=[].concat(d1,e1,f1,['-','"','.',':','/']);function i1(c,a){return a>=c.firstLine()&&a<=c.lastLine();}function j1(k){return(/^[a-z]$/).test(k);}function k1(k){return'()[]{}'.indexOf(k)!=-1;}function l1(k){return $.test(k);}function m1(k){return(/^[A-Z]$/).test(k);}function n1(k){return(/^\s*$/).test(k);}function o1(v,a){for(var i=0;ih){p=h;}else if(p0?1:-1;var n;var f=d.getCursor();do{p+=i;e=b[(s+p)%s];if(e&&(n=e.find())&&!Z1(f,n)){break;}}while(pa);}return e;}return{cachedCursor:undefined,add:c,move:m};};var v1=function(c){if(c){return{changes:c.changes,expectCursorActivityForChange:c.expectCursorActivityForChange};}return{changes:[],expectCursorActivityForChange:false};};function w1(){this.latestRegister=undefined;this.isPlaying=false;this.isRecording=false;this.replaySearchQueries=[];this.onRecordingDone=undefined;this.lastInsertModeChanges=v1();}w1.prototype={exitMacroRecordMode:function(){var m=y1.macroModeState;if(m.onRecordingDone){m.onRecordingDone();}m.onRecordingDone=undefined;m.isRecording=false;},enterMacroRecordMode:function(c,r){var a=y1.registerController.getRegister(r);if(a){a.clear();this.latestRegister=r;if(c.openDialog){this.onRecordingDone=c.openDialog('(recording)['+r+']',null,{bottom:true});}this.isRecording=true;}}};function x1(c){if(!c.state.vim){c.state.vim={inputState:new C1(),lastEditInputState:undefined,lastEditActionCommand:undefined,lastHPos:-1,lastHSPos:-1,lastMotion:null,marks:{},fakeCursor:null,insertMode:false,insertModeRepeat:undefined,visualMode:false,visualLine:false,visualBlock:false,lastSelection:null,lastPastedText:null,sel:{},options:{}};}return c.state.vim;}var y1;function z1(){y1={searchQuery:null,searchIsReversed:false,lastSubstituteReplacePart:undefined,jumpList:u1(),macroModeState:new w1,lastChararacterSearch:{increment:0,forward:true,selectedCharacter:''},registerController:new G1({}),searchHistoryController:new H1({}),exCommandHistoryController:new H1({})};for(var o in p1){var a=p1[o];a.value=a.defaultValue;}}var A1;var B1={buildKeyMap:function(){},getRegisterController:function(){return y1.registerController;},resetVimGlobalState_:z1,getVimGlobalState_:function(){return y1;},maybeInitVimState_:x1,suppressErrorLogging:false,InsertModeKey:t3,map:function(a,r,c){g3.map(a,r,c);},unmap:function(a,c){g3.unmap(a,c);},setOption:s1,getOption:t1,defineOption:q1,defineEx:function(n,p,f){if(!p){p=n;}else if(n.indexOf(p)!==0){throw new Error('(Vim.defineEx) "'+p+'" is not a prefix of "'+n+'", command not registered');}f3[n]=f;g3.commandMap_[p]={name:n,shortName:p,type:'api'};},handleKey:function(c,k,o){var a=this.findKey(c,k,o);if(typeof a==='function'){return a();}},findKey:function(c,k,o){var v=x1(c);function h(){var m=y1.macroModeState;if(m.isRecording){if(k=='q'){m.exitMacroRecordMode();D1(c);return true;}if(o!='mapping'){m3(m,k);}}}function a(){if(k==''){D1(c);if(v.visualMode){p2(c);}else if(v.insertMode){i3(c);}return true;}}function d(e){var m;while(e){m=(/<\w+-.+?>|<\w+>|./).exec(e);k=m[0];e=e.substring(m.index+k.length);F.Vim.handleKey(c,k,'mapping');}}function b(){if(a()){return true;}var e=v.inputState.keyBuffer=v.inputState.keyBuffer+k;var m=k.length==1;var n=I1.matchCommand(e,J,v.inputState,'insert');while(e.length>1&&n.type!='full'){var e=v.inputState.keyBuffer=e.slice(1);var p=I1.matchCommand(e,J,v.inputState,'insert');if(p.type!='none'){n=p;}}if(n.type=='none'){D1(c);return false;}else if(n.type=='partial'){if(A1){window.clearTimeout(A1);}A1=window.setTimeout(function(){if(v.insertMode&&v.inputState.keyBuffer){D1(c);}},t1('insertModeEscKeysTimeout'));return!m;}if(A1){window.clearTimeout(A1);}if(m){var s=c.listSelections();for(var i=0;i0||this.motionRepeat.length>0){r=1;if(this.prefixRepeat.length>0){r*=parseInt(this.prefixRepeat.join(''),10);}if(this.motionRepeat.length>0){r*=parseInt(this.motionRepeat.join(''),10);}}return r;};function D1(c,r){c.state.vim.inputState=new C1();F.signal(c,'vim-command-done',r);}function E1(a,b,c){this.clear();this.keyBuffer=[a||''];this.insertModeChanges=[];this.searchQueries=[];this.linewise=!!b;this.blockwise=!!c;}E1.prototype={setText:function(a,b,c){this.keyBuffer=[a||''];this.linewise=!!b;this.blockwise=!!c;},pushText:function(a,b){if(b){if(!this.linewise){this.keyBuffer.push('\n');}this.linewise=true;}this.keyBuffer.push(a);},pushInsertModeChanges:function(c){this.insertModeChanges.push(v1(c));},pushSearchQuery:function(a){this.searchQueries.push(a);},clear:function(){this.keyBuffer=[];this.insertModeChanges=[];this.searchQueries=[];this.linewise=false;},toString:function(){return this.keyBuffer.join('');}};function F1(n,r){var a=y1.registerController.registers[n];if(!n||n.length!=1){throw Error('Register name must be 1 character');}a[n]=r;h1.push(n);}function G1(r){this.registers=r;this.unnamedRegister=r['"']=new E1();r['.']=new E1();r[':']=new E1();r['/']=new E1();}G1.prototype={pushText:function(r,o,a,b,c){if(b&&a.charAt(0)=='\n'){a=a.slice(1)+'\n';}if(b&&a.charAt(a.length-1)!=='\n'){a+='\n';}var d=this.isValidRegister(r)?this.getRegister(r):null;if(!d){switch(o){case'yank':this.registers['0']=new E1(a,b,c);break;case'delete':case'change':if(a.indexOf('\n')==-1){this.registers['-']=new E1(a,b);}else{this.shiftNumericRegisters_();this.registers['1']=new E1(a,b);}break;}this.unnamedRegister.setText(a,b,c);return;}var e=m1(r);if(e){d.pushText(a,b);}else{d.setText(a,b,c);}this.unnamedRegister.setText(d.toString(),b);},getRegister:function(n){if(!this.isValidRegister(n)){return this.unnamedRegister;}n=n.toLowerCase();if(!this.registers[n]){this.registers[n]=new E1();}return this.registers[n];},isValidRegister:function(n){return n&&o1(n,h1);},shiftNumericRegisters_:function(){for(var i=9;i>=2;i--){this.registers[i]=this.getRegister(''+(i-1));}}};function H1(){this.historyBuffer=[];this.iterator;this.initialPrefix=null;}H1.prototype={nextMatch:function(a,b){var h=this.historyBuffer;var d=b?-1:1;if(this.initialPrefix===null)this.initialPrefix=a;for(var i=this.iterator+d;b?i>=0:i=h.length){this.iterator=h.length;return this.initialPrefix;}if(i<0)return a;},pushInput:function(i){var a=this.historyBuffer.indexOf(i);if(a>-1)this.historyBuffer.splice(a,1);if(i.length)this.historyBuffer.push(i);},reset:function(){this.initialPrefix=null;this.iterator=this.historyBuffer.length;}};var I1={matchCommand:function(k,a,b,c){var m=U1(k,a,c,b);if(!m.full&&!m.partial){return{type:'none'};}else if(!m.full&&m.partial){return{type:'partial'};}var d;for(var i=0;i'){var f=W1(k);if(//.test(f))return{type:'none'};b.selectedCharacter=f;}return{type:'full',command:d};},processCommand:function(c,v,a){v.inputState.repeatOverride=a.repeatOverride;switch(a.type){case'motion':this.processMotion(c,v,a);break;case'operator':this.processOperator(c,v,a);break;case'operatorMotion':this.processOperatorMotion(c,v,a);break;case'action':this.processAction(c,v,a);break;case'search':this.processSearch(c,v,a);break;case'ex':case'keyToEx':this.processEx(c,v,a);break;default:break;}},processMotion:function(c,v,a){v.inputState.motion=a.motion;v.inputState.motionArgs=R1(a.motionArgs);this.evalInput(c,v);},processOperator:function(c,v,a){var i=v.inputState;if(i.operator){if(i.operator==a.operator){i.motion='expandToLine';i.motionArgs={linewise:true};this.evalInput(c,v);return;}else{D1(c);}}i.operator=a.operator;i.operatorArgs=R1(a.operatorArgs);if(v.visualMode){this.evalInput(c,v);}},processOperatorMotion:function(c,v,a){var b=v.visualMode;var o=R1(a.operatorMotionArgs);if(o){if(b&&o.visualLine){v.visualLine=true;}}this.processOperator(c,v,a);if(!b){this.processMotion(c,v,a);}},processAction:function(c,v,a){var i=v.inputState;var r=i.getRepeat();var b=!!r;var d=R1(a.actionArgs)||{};if(i.selectedCharacter){d.selectedCharacter=i.selectedCharacter;}if(a.operator){this.processOperator(c,v,a);}if(a.motion){this.processMotion(c,v,a);}if(a.motion||a.operator){this.evalInput(c,v);}d.repeat=r||1;d.repeatIsExplicit=b;d.registerName=i.registerName;D1(c);v.lastMotion=null;if(a.isEdit){this.recordLastEdit(v,i,a);}O1[a.action](c,d,v);},processSearch:function(c,v,a){if(!c.getSearchCursor){return;}var f=a.searchArgs.forward;var w=a.searchArgs.wholeWordOnly;K2(c).setReversed(!f);var p=(f)?'/':'?';var o=K2(c).getQuery();var b=c.getScrollInfo();function h(k,s,x){y1.searchHistoryController.pushInput(k);y1.searchHistoryController.reset();try{Z2(c,k,s,x);}catch(e){U2(c,'Invalid regex: '+k);D1(c);return;}I1.processMotion(c,v,{type:'motion',motion:'findNext',motionArgs:{forward:true,toJumplist:a.searchArgs.toJumplist}});}function d(k){c.scrollTo(b.left,b.top);h(k,true,true);var m=y1.macroModeState;if(m.isRecording){o3(m,k);}}function i(e,k,s){var x=F.keyName(e),y;if(x=='Up'||x=='Down'){y=x=='Up'?true:false;k=y1.searchHistoryController.nextMatch(k,y)||'';s(k);}else{if(x!='Left'&&x!='Right'&&x!='Ctrl'&&x!='Alt'&&x!='Shift')y1.searchHistoryController.reset();}var _;try{_=Z2(c,k,true,true);}catch(e){}if(_){c.scrollIntoView(a3(c,!f,_),30);}else{b3(c);c.scrollTo(b.left,b.top);}}function j(e,k,s){var x=F.keyName(e);if(x=='Esc'||x=='Ctrl-C'||x=='Ctrl-['||(x=='Backspace'&&k=='')){y1.searchHistoryController.pushInput(k);y1.searchHistoryController.reset();Z2(c,o);b3(c);c.scrollTo(b.left,b.top);F.e_stop(e);D1(c);s();c.focus();}else if(x=='Ctrl-U'){F.e_stop(e);s('');}}switch(a.searchArgs.querySrc){case'prompt':var m=y1.macroModeState;if(m.isPlaying){var k=m.replaySearchQueries.shift();h(k,true,false);}else{X2(c,{onClose:d,prefix:p,desc:W2,onKeyUp:i,onKeyDown:j});}break;case'wordUnderCursor':var n=u2(c,false,true,false,true);var r=true;if(!n){n=u2(c,false,true,false,false);r=false;}if(!n){return;}var k=c.getLine(n.start.line).substring(n.start.ch,n.end.ch);if(r&&w){k='\\b'+k+'\\b';}else{k=e2(k);}y1.jumpList.cachedCursor=c.getCursor();c.setCursor(n.start);h(k,true,false);break;}},processEx:function(c,v,a){function o(i){y1.exCommandHistoryController.pushInput(i);y1.exCommandHistoryController.reset();g3.processCommand(c,i);}function b(e,i,d){var k=F.keyName(e),f;if(k=='Esc'||k=='Ctrl-C'||k=='Ctrl-['||(k=='Backspace'&&i=='')){y1.exCommandHistoryController.pushInput(i);y1.exCommandHistoryController.reset();F.e_stop(e);D1(c);d();c.focus();}if(k=='Up'||k=='Down'){f=k=='Up'?true:false;i=y1.exCommandHistoryController.nextMatch(i,f)||'';d(i);}else if(k=='Ctrl-U'){F.e_stop(e);d('');}else{if(k!='Left'&&k!='Right'&&k!='Ctrl'&&k!='Alt'&&k!='Shift')y1.exCommandHistoryController.reset();}}if(a.type=='keyToEx'){g3.processCommand(c,a.exArgs.input);}else{if(v.visualMode){X2(c,{onClose:o,prefix:':',value:'\'<,\'>',onKeyDown:b});}else{X2(c,{onClose:o,prefix:':',onKeyDown:b});}}},evalInput:function(c,v){var a=v.inputState;var m=a.motion;var b=a.motionArgs||{};var o=a.operator;var d=a.operatorArgs||{};var r=a.registerName;var s=v.sel;var e=Y1(v.visualMode?Q1(c,s.head):c.getCursor('head'));var f=Y1(v.visualMode?Q1(c,s.anchor):c.getCursor('anchor'));var h=Y1(e);var j=Y1(f);var n,k;var p;if(o){this.recordLastEdit(v,a);}if(a.repeatOverride!==undefined){p=a.repeatOverride;}else{p=a.getRepeat();}if(p>0&&b.explicitRepeat){b.repeatIsExplicit=true;}else if(b.noRepeat||(!b.explicitRepeat&&p===0)){p=1;b.repeatIsExplicit=false;}if(a.selectedCharacter){b.selectedCharacter=d.selectedCharacter=a.selectedCharacter;}b.repeat=p;D1(c);if(m){var w=J1[m](c,e,b,v);v.lastMotion=J1[m];if(!w){return;}if(b.toJumplist){if(!o&&c.ace.curOp!=null)c.ace.curOp.command.scrollIntoView="center-animate";var x=y1.jumpList;var y=x.cachedCursor;if(y){v2(c,y,w);delete x.cachedCursor;}else{v2(c,e,w);}}if(w instanceof Array){k=w[0];n=w[1];}else{n=w;}if(!n){n=Y1(e);}if(v.visualMode){if(!(v.visualBlock&&n.ch===Infinity)){n=Q1(c,n,v.visualBlock);}if(k){k=Q1(c,k,true);}k=k||j;s.anchor=k;s.head=n;m2(c);E2(c,v,'<',$1(k,n)?k:n);E2(c,v,'>',$1(k,n)?n:k);}else if(!o){n=Q1(c,n);c.setCursor(n.line,n.ch);}}if(o){if(d.lastSel){k=j;var _=d.lastSel;var r1=Math.abs(_.head.line-_.anchor.line);var r2=Math.abs(_.head.ch-_.anchor.ch);if(_.visualLine){n=P(j.line+r1,j.ch);}else if(_.visualBlock){n=P(j.line+r1,j.ch+r2);}else if(_.head.line==_.anchor.line){n=P(j.line,j.ch+r2);}else{n=P(j.line+r1,j.ch);}v.visualMode=true;v.visualLine=_.visualLine;v.visualBlock=_.visualBlock;s=v.sel={anchor:k,head:n};m2(c);}else if(v.visualMode){d.lastSel={anchor:Y1(s.anchor),head:Y1(s.head),visualBlock:v.visualBlock,visualLine:v.visualLine};}var F3,G3,H3,I3;var J3;if(v.visualMode){F3=_1(s.head,s.anchor);G3=a2(s.head,s.anchor);H3=v.visualLine||d.linewise;I3=v.visualBlock?'block':H3?'line':'char';J3=n2(c,{anchor:F3,head:G3},I3);if(H3){var K3=J3.ranges;if(I3=='block'){for(var i=0;id&&a.line==d)){return;}var i=c.ace.session.getFoldLine(b);if(i){if(m.forward){if(b>i.start.row)b=i.end.row+1;}else{b=i.start.row;}}if(m.toFirstChar){e=t2(c.getLine(b));v.lastHPos=e;}v.lastHSPos=c.charCoords(P(b,e),'div').left;return P(b,e);},moveByDisplayLines:function(c,h,m,v){var a=h;switch(v.lastMotion){case this.moveByDisplayLines:case this.moveByScroll:case this.moveByLines:case this.moveToColumn:case this.moveToEol:break;default:v.lastHSPos=c.charCoords(a,'div').left;}var r=m.repeat;var b=c.findPosV(a,(m.forward?r:-r),'line',v.lastHSPos);if(b.hitSide){if(m.forward){var d=c.charCoords(b,'div');var e={top:d.top+8,left:v.lastHSPos};var b=c.coordsChar(e,'div');}else{var f=c.charCoords(P(c.firstLine(),0),'div');f.left=v.lastHSPos;b=c.coordsChar(f,'div');}}v.lastHPos=b.ch;return b;},moveByPage:function(c,h,m){var a=h;var r=m.repeat;return c.findPosV(a,(m.forward?r:-r),'page');},moveByParagraph:function(c,h,m){var d=m.forward?1:-1;return G2(c,h,m.repeat,d);},moveByScroll:function(c,h,m,v){var s=c.getScrollInfo();var a=null;var r=m.repeat;if(!r){r=s.clientHeight/(2*c.defaultTextHeight());}var o=c.charCoords(h,'local');m.repeat=r;var a=J1.moveByDisplayLines(c,h,m,v);if(!a){return null;}var d=c.charCoords(a,'local');c.scrollTo(null,s.top+d.top-o.top);return a;},moveByWords:function(c,h,m){return B2(c,h,m.repeat,!!m.forward,!!m.wordEnd,!!m.bigWord);},moveTillCharacter:function(c,_,m){var r=m.repeat;var a=C2(c,r,m.forward,m.selectedCharacter);var i=m.forward?-1:1;w2(i,m);if(!a)return null;a.ch+=i;return a;},moveToCharacter:function(c,h,m){var r=m.repeat;w2(0,m);return C2(c,r,m.forward,m.selectedCharacter)||h;},moveToSymbol:function(c,h,m){var r=m.repeat;return z2(c,r,m.forward,m.selectedCharacter)||h;},moveToColumn:function(c,h,m,v){var r=m.repeat;v.lastHPos=r-1;v.lastHSPos=c.charCoords(h,'div').left;return D2(c,r);},moveToEol:function(c,h,m,v){var a=h;v.lastHPos=Infinity;var r=P(a.line+m.repeat-1,Infinity);var e=c.clipPos(r);e.ch--;v.lastHSPos=c.charCoords(e,'div').left;return r;},moveToFirstNonWhiteSpaceCharacter:function(c,h){var a=h;return P(a.line,t2(c.getLine(a.line)));},moveToMatchedSymbol:function(c,h){var a=h;var b=a.line;var d=a.ch;var e=c.getLine(b);var s;do{s=e.charAt(d++);if(s&&k1(s)){var f=c.getTokenTypeAt(P(b,d));if(f!=="string"&&f!=="comment"){break;}}}while(s);if(s){var m=c.findMatchingBracket(P(b,d));return m.to;}else{return a;}},moveToStartOfLine:function(_,h){return P(h.line,0);},moveToLineOrEdgeOfDocument:function(c,_,m){var a=m.forward?c.lastLine():c.firstLine();if(m.repeatIsExplicit){a=m.repeat-c.getOption('firstLineNumber');}return P(a,t2(c.getLine(a)));},textObjectManipulation:function(c,h,m,v){var a={'(':')',')':'(','{':'}','}':'{','[':']',']':'['};var s={'\'':true,'"':true};var b=m.selectedCharacter;if(b=='b'){b='(';}else if(b=='B'){b='{';}var i=!m.textObjectInner;var d;if(a[b]){d=H2(c,h,b,i);}else if(s[b]){d=I2(c,h,b,i);}else if(b==='W'){d=u2(c,i,true,true);}else if(b==='w'){d=u2(c,i,true,false);}else if(b==='p'){d=G2(c,h,m.repeat,0,i);m.linewise=true;if(v.visualMode){if(!v.visualLine){v.visualLine=true;}}else{var o=v.inputState.operatorArgs;if(o){o.linewise=true;}d.end.line--;}}else{return null;}if(!c.state.vim.visualMode){return[d.start,d.end];}else{return l2(c,d.start,d.end);}},repeatLastCharacterSearch:function(c,h,m){var a=y1.lastChararacterSearch;var r=m.repeat;var f=m.forward===a.forward;var i=(a.increment?1:0)*(f?-1:1);c.moveH(-i,'char');m.inclusive=f?true:false;var b=C2(c,r,f,a.selectedCharacter);if(!b){c.moveH(i,'char');return h;}b.ch+=i;return b;}};function K1(n,f){J1[n]=f;}function L1(v,a){var b=[];for(var i=0;ic.lastLine()&&a.linewise&&!w){c.replaceRange('',p,h);}else{c.replaceRange('',d,h);}if(a.linewise){if(!w){c.setCursor(p);F.commands.newlineAndIndent(c);}d.ch=Number.MAX_VALUE;}f=d;}else{b=c.getSelection();var i=L1('',r.length);c.replaceSelections(i);f=_1(r[0].head,r[0].anchor);}y1.registerController.pushText(a.registerName,'change',b,a.linewise,r.length>1);O1.enterInsertMode(c,{head:f},c.state.vim);},'delete':function(c,a,r){var f,b;var v=c.state.vim;if(!v.visualBlock){var d=r[0].anchor,h=r[0].head;if(a.linewise&&h.line!=c.firstLine()&&d.line==c.lastLine()&&d.line==h.line-1){if(d.line==c.firstLine()){d.ch=0;}else{d=P(d.line-1,c2(c,d.line-1));}}b=c.getRange(d,h);c.replaceRange('',d,h);f=d;if(a.linewise){f=J1.moveToFirstNonWhiteSpaceCharacter(c,d);}}else{b=c.getSelection();var e=L1('',r.length);c.replaceSelections(e);f=r[0].anchor;}y1.registerController.pushText(a.registerName,'delete',b,a.linewise,v.visualBlock);return Q1(c,f);},indent:function(c,a,r){var v=c.state.vim;var s=r[0].anchor.line;var e=v.visualBlock?r[r.length-1].anchor.line:r[0].head.line;var b=(v.visualMode)?a.repeat:1;if(a.linewise){e--;}for(var i=s;i<=e;i++){for(var j=0;jh.top){f.line+=(n-h.top)/b;f.line=Math.ceil(f.line);c.setCursor(f);h=c.charCoords(f,'local');c.scrollTo(null,h.top);}else{c.scrollTo(null,n);}}else{var i=n+c.getScrollInfo().clientHeight;if(i=s.anchor.line){h=S1(s.head,0,1);}else{h=P(s.anchor.line,0);}}else{h=P(Math.min(s.head.line,s.anchor.line),Math.max(s.head.ch+1,s.anchor.ch));b=Math.abs(s.head.line-s.anchor.line)+1;}}else if(i=='inplace'){if(v.visualMode){return;}}c.setOption('keyMap','vim-insert');c.setOption('disableInput',false);if(a&&a.replace){c.toggleOverwrite(true);c.setOption('keyMap','vim-replace');F.signal(c,"vim-mode-change",{mode:"replace"});}else{c.setOption('keyMap','vim-insert');F.signal(c,"vim-mode-change",{mode:"insert"});}if(!y1.macroModeState.isPlaying){c.on('change',p3);F.on(c.getInputField(),'keydown',u3);}if(v.visualMode){p2(c);}h2(c,h,b);},toggleVisualMode:function(c,a,v){var r=a.repeat;var b=c.getCursor();var h;if(!v.visualMode){v.visualMode=true;v.visualLine=!!a.linewise;v.visualBlock=!!a.blockwise;h=Q1(c,P(b.line,b.ch+r-1),true);v.sel={anchor:b,head:h};F.signal(c,"vim-mode-change",{mode:"visual",subMode:v.visualLine?"linewise":v.visualBlock?"blockwise":""});m2(c);E2(c,v,'<',_1(b,h));E2(c,v,'>',a2(b,h));}else if(v.visualLine^a.linewise||v.visualBlock^a.blockwise){v.visualLine=!!a.linewise;v.visualBlock=!!a.blockwise;F.signal(c,"vim-mode-change",{mode:"visual",subMode:v.visualLine?"linewise":v.visualBlock?"blockwise":""});m2(c);}else{p2(c);}},reselectLastSelection:function(c,_,v){var a=v.lastSelection;if(v.visualMode){k2(c,v);}if(a){var b=a.anchorMark.find();var h=a.headMark.find();if(!b||!h){return;}v.sel={anchor:b,head:h};v.visualMode=true;v.visualLine=a.visualLine;v.visualBlock=a.visualBlock;m2(c);E2(c,v,'<',_1(b,h));E2(c,v,'>',a2(b,h));F.signal(c,'vim-mode-change',{mode:'visual',subMode:v.visualLine?'linewise':v.visualBlock?'blockwise':''});}},joinLines:function(c,a,v){var b,d;if(v.visualMode){b=c.getCursor('anchor');d=c.getCursor('head');if($1(d,b)){var e=d;d=b;b=e;}d.ch=c2(c,d.line)-1;}else{var r=Math.max(a.repeat,2);b=c.getCursor();d=Q1(c,P(b.line+r-1,Infinity));}var f=0;for(var i=b.line;i1){var d=Array(a.repeat+1).join(d);}var n=r.linewise;var o=r.blockwise;if(n&&!o){if(v.visualMode){d=v.visualLine?d.slice(0,-1):'\n'+d.slice(0,d.length-1)+'\n';}else if(a.after){d='\n'+d.slice(0,d.length-1);b.ch=c2(c,b.line);}else{b.ch=0;}}else{if(o){d=d.split('\n');for(var i=0;ic.lastLine()){c.replaceRange('\n',P(H3,0));}var I3=c2(c,H3);if(I3f.length){d=f.length;}e=P(b.line,d);}if(r=='\n'){if(!v.visualMode)c.replaceRange('',b,e);(F.commands.newlineAndIndentContinueComment||F.commands.newlineAndIndent)(c);}else{var h=c.getRange(b,e);h=h.replace(/[^\n]/g,r);if(v.visualBlock){var i=new Array(c.getOption("tabSize")+1).join(' ');h=c.getSelection();h=h.replace(/\t/g,i).replace(/[^\n]/g,r).split('\n');c.replaceSelections(h);}else{c.replaceRange(h,b,e);}if(v.visualMode){b=$1(s[0].anchor,s[0].head)?s[0].anchor:s[0].head;c.setCursor(b);p2(c,false);}else{c.setCursor(S1(e,0,-1));}}},incrementNumberToken:function(c,a){var b=c.getCursor();var d=c.getLine(b.line);var r=/-?\d+/g;var m;var s;var e;var n;var f;while((m=r.exec(d))!==null){f=m[0];s=m.index;e=s+f.length;if(b.ch'){var a=m.length-11;var b=p.slice(0,a);var c=m.slice(0,a);return b==c&&p.length>a?'full':c.indexOf(b)==0?'partial':false;}else{return p==m?'full':m.indexOf(p)==0?'partial':false;}}function W1(k){var m=/^.*(<[\w\-]+>)$/.exec(k);var s=m?m[1]:k.slice(-1);if(s.length>1){switch(s){case'':s='\n';break;case'':s=' ';break;default:break;}}return s;}function X1(c,f,r){return function(){for(var i=0;i2){a=_1.apply(undefined,Array.prototype.slice.call(arguments,1));}return $1(c,a)?c:a;}function a2(c,a){if(arguments.length>2){a=a2.apply(undefined,Array.prototype.slice.call(arguments,1));}return $1(c,a)?a:c;}function b2(c,a,b){var d=$1(c,a);var e=$1(a,b);return d&&e;}function c2(c,a){return c.getLine(a).length;}function d2(s){if(s.trim){return s.trim();}return s.replace(/^\s+|\s+$/g,'');}function e2(s){return s.replace(/([.?*+$\[\]\/\\(){}|\-])/g,'\\$1');}function f2(c,a,b){var e=c2(c,a);var s=new Array(b-e+1).join(' ');c.setCursor(P(a,e));c.replaceRange(s,c.getCursor());}function g2(c,s){var a=[],r=c.listSelections();var h=Y1(c.clipPos(s));var i=!Z1(s,h);var b=c.getCursor('head');var p=i2(r,b);var w=Z1(r[p].head,r[p].anchor);var m=r.length-1;var d=m-p>p?m:0;var e=r[d].anchor;var f=Math.min(e.line,h.line);var j=Math.max(e.line,h.line);var k=e.ch,n=h.ch;var o=r[d].head.ch-k;var v=n-k;if(o>0&&v<=0){k++;if(!i){n--;}}else if(o<0&&v>=0){k--;if(!w){n++;}}else if(o<0&&v==-1){k--;n++;}for(var x=f;x<=j;x++){var y={anchor:new P(x,k),head:new P(x,n)};a.push(y);}p=h.line==j?a.length-1:0;c.setSelections(a);s.ch=n;e.ch=k;return e;}function h2(c,h,a){var s=[];for(var i=0;if){h.line=f;}h.ch=c2(c,h.line);}else{h.ch=0;a.ch=c2(c,a.line);}return{ranges:[{anchor:a,head:h}],primary:0};}else if(m=='block'){var j=Math.min(a.line,h.line),k=Math.min(a.ch,h.ch),n=Math.max(a.line,h.line),r=Math.max(a.ch,h.ch)+1;var o=n-j+1;var p=h.line==j?0:o-1;var v=[];for(var i=0;i0&&e&&n1(e);e=d.pop()){b.line--;b.ch=0;}if(e){b.line--;b.ch=c2(c,b.line);}else{b.ch=0;}}}function s2(_,c,a){c.ch=0;a.ch=0;a.line++;}function t2(a){if(!a){return 0;}var f=a.search(/\S/);return f==-1?a.length:f;}function u2(c,i,_,b,n){var a=o2(c);var d=c.getLine(a.line);var e=a.ch;var f=n?a1[0]:b1[0];while(!f(d.charAt(e))){e++;if(e>=d.length){return null;}}if(b){f=b1[0];}else{f=a1[0];if(!f(d.charAt(e))){f=a1[1];}}var h=e,s=e;while(f(d.charAt(h))&&h=0){s--;}s++;if(i){var w=h;while(/\s/.test(d.charAt(h))&&h0){s--;}if(!s){s=j;}}}return{start:P(a.line,s),end:P(a.line,h)};}function v2(c,o,n){if(!Z1(o,n)){y1.jumpList.add(c,o,n);}}function w2(i,a){y1.lastChararacterSearch.increment=i;y1.lastChararacterSearch.forward=a.forward;y1.lastChararacterSearch.selectedCharacter=a.selectedCharacter;}var x2={'(':'bracket',')':'bracket','{':'bracket','}':'bracket','[':'section',']':'section','*':'comment','/':'comment','m':'method','M':'method','#':'preprocess'};var y2={bracket:{isComplete:function(s){if(s.nextCh===s.symb){s.depth++;if(s.depth>=1)return true;}else if(s.nextCh===s.reverseSymb){s.depth--;}return false;}},section:{init:function(s){s.curMoveThrough=true;s.symb=(s.forward?']':'[')===s.symb?'{':'}';},isComplete:function(s){return s.index===0&&s.nextCh===s.symb;}},comment:{isComplete:function(s){var f=s.lastCh==='*'&&s.nextCh==='/';s.lastCh=s.nextCh;return f;}},method:{init:function(s){s.symb=(s.symb==='m'?'{':'}');s.reverseSymb=s.symb==='{'?'}':'{';},isComplete:function(s){if(s.nextCh===s.symb)return true;return false;}},preprocess:{init:function(s){s.index=0;},isComplete:function(s){if(s.nextCh==='#'){var a=s.lineText.match(/#(\w+)/)[1];if(a==='endif'){if(s.forward&&s.depth===0){return true;}s.depth++;}else if(a==='if'){if(!s.forward&&s.depth===0){return true;}s.depth--;}if(a==='else'&&s.depth===0)return true;}return false;}}};function z2(c,r,f,s){var a=Y1(c.getCursor());var i=f?1:-1;var e=f?c.lineCount():-1;var b=a.ch;var d=a.line;var h=c.getLine(d);var j={lineText:h,nextCh:h.charAt(b),lastCh:null,index:b,symb:s,reverseSymb:(f?{')':'(','}':'{'}:{'(':')','{':'}'})[s],forward:f,depth:0,curMoveThrough:false};var m=x2[s];if(!m)return a;var k=y2[m].init;var n=y2[m].isComplete;if(k){k(j);}while(d!==e&&r){j.index+=i;j.nextCh=j.lineText.charAt(j.index);if(!j.nextCh){d+=i;j.lineText=c.getLine(d)||'';if(i>0){j.index=0;}else{var o=j.lineText.length;j.index=(o>0)?(o-1):0;}j.nextCh=j.lineText.charAt(j.index);}if(n(j)){a.line=d;a.ch=j.index;r--;}}if(j.nextCh||j.curMoveThrough){return P(d,j.index);}return a;}function A2(c,a,f,b,e){var d=a.line;var p=a.ch;var h=c.getLine(d);var j=f?1:-1;var k=b?b1:a1;if(e&&h==''){d+=j;h=c.getLine(d);if(!i1(c,d)){return null;}p=(f)?0:h.length;}while(true){if(e&&h==''){return{from:0,to:0,line:d};}var s=(j>0)?h.length:-1;var w=s,m=s;while(p!=s){var n=false;for(var i=0;i0)?0:h.length;}throw new Error('The impossible happened.');}function B2(c,a,r,f,w,b){var d=Y1(a);var e=[];if(f&&!w||!f&&w){r++;}var h=!(f&&w);for(var i=0;i0?1:-1;var w=c.ace.session.getFoldLine(i);if(w){if(i+d>w.start.row&&i+d0?w.end.row:w.start.row)-i;}}if(d){while(m<=i&&i<=e&&r>0){n(i);if(k(i,d)){r--;}i+=d;}return new P(i,0);}var v=c.state.vim;if(v.visualLine&&k(b,1,true)){var o=v.sel.anchor;if(k(o.line,-1,true)){if(!a||o.line!=b){b+=1;}}}var p=j(b);for(i=b;i<=e&&r;i++){if(k(i,1,true)){if(!a||j(i)!=p){r--;}}}f=new P(i,0);if(i>e&&!p){p=true;}else{a=false;}for(i=b;i>m;i--){if(!a||j(i)==p||i==b){if(k(i,-1,true)){break;}}}s=new P(i,0);return{start:s,end:f};}function H2(c,h,s,i){var a=h,b,e;var d=({'(':/[()]/,')':/[()]/,'[':/[[\]]/,']':/[[\]]/,'{':/[{}]/,'}':/[{}]/})[s];var o=({'(':'(',')':'(','[':'[',']':'[','{':'{','}':'{'})[s];var f=c.getLine(a.line).charAt(a.ch);var j=f===o?1:0;b=c.scanForBracket(P(a.line,a.ch+j),-1,null,{'bracketRegex':d});e=c.scanForBracket(P(a.line,a.ch+j),1,null,{'bracketRegex':d});if(!b||!e){return{start:a,end:a};}b=b.pos;e=e.pos;if((b.line==e.line&&b.ch>e.ch)||(b.line>e.line)){var k=b;b=e;e=k;}if(i){e.ch+=1;}else{b.ch+=1;}return{start:b,end:e};}function I2(c,h,s,a){var b=Y1(h);var d=c.getLine(b.line);var e=d.split('');var f,j,i,k;var m=e.indexOf(s);if(b.ch-1&&!f;i--){if(e[i]==s){f=i+1;}}}if(f&&!j){for(i=f,k=e.length;i'+a+'',{bottom:true,duration:5000});}else{alert(a);}}function V2(p,d){var r='';if(p){r+=''+p+'';}r+=' '+'';if(d){r+='';r+=d;r+='';}return r;}var W2='(Javascript regexp)';function X2(c,p1){var s=(p1.prefix||'')+' '+(p1.desc||'');var p=V2(p1.prefix,p1.desc);L2(c,p,s,p1.onClose,p1);}function Y2(r,a){if(r instanceof RegExp&&a instanceof RegExp){var p=['global','multiline','ignoreCase','source'];for(var i=0;i=s&&p<=e);}else{return p==s;}}}function d3(c){var r=c.ace.renderer;return{top:r.getFirstFullyVisibleRow(),bottom:r.getLastFullyVisibleRow()}}var e3=function(){this.buildCommandMap_();};e3.prototype={processCommand:function(c,i,o){var a=this;c.operation(function(){c.curOp.isVimOp=true;a._processCommand(c,i,o);});},_processCommand:function(c,a,o){var v=c.state.vim;var b=y1.registerController.getRegister(':');var p=b.toString();if(v.visualMode){p2(c);}var d=new F.StringStream(a);b.setText(a);var f=o||{};f.input=a;try{this.parseInput_(c,d,f);}catch(e){U2(c,e);throw e;}var h;var j;if(!f.commandName){if(f.line!==undefined){j='move';}}else{h=this.matchCommand_(f.commandName);if(h){j=h.name;if(h.excludeFromCommandHistory){b.setText(p);}this.parseCommandArgs_(d,f,h);if(h.type=='exToKey'){for(var i=0;i0;i--){var p=c.substring(0,i);if(this.commandMap_[p]){var a=this.commandMap_[p];if(a.name.indexOf(c)===0){return a;}}}return null;},buildCommandMap_:function(){this.commandMap_={};for(var i=0;i';}}}else{var d;r=r.join('');for(var i=0;i';}}U2(c,b);},sort:function(c,p){var r,d,e,n;function f(){if(p.argString){var a=new F.StringStream(p.argString);if(a.eat('!')){r=true;}if(a.eol()){return;}if(!a.eatSpace()){return'Invalid arguments';}var b=a.match(/[a-z]+/);if(b){b=b[0];d=b.indexOf('i')!=-1;e=b.indexOf('u')!=-1;var r2=b.indexOf('d')!=-1&&1;var F3=b.indexOf('x')!=-1&&1;var G3=b.indexOf('o')!=-1&&1;if(r2+F3+G3>1){return'Invalid arguments';}n=r2&&'decimal'||F3&&'hex'||G3&&'octal';}if(a.match(/\/.*\//)){return'patterns not supported';}}}var h=f();if(h){U2(c,h+': '+p.argString);return;}var j=p.line||c.firstLine();var k=p.lineEnd||p.line||c.lastLine();if(j==k){return;}var m=P(j,0);var o=P(k,c2(c,k));var s=c.getRange(m,o).split('\n');var $=(n=='decimal')?/(-?)([\d]+)/:(n=='hex')?/(-?)(?:0x)?([0-9a-f]+)/i:(n=='octal')?/([0-7]+)/:null;var v=(n=='decimal')?10:(n=='hex')?16:(n=='octal')?8:null;var w=[],x=[];if(n){for(var i=0;i';}}if(!h){U2(c,k);return;}var o=0;var s=function(){if(o=i){U2(c,'Invalid argument: '+p.argString.substring(b));return;}for(var j=0;j<=i-h;j++){var m=String.fromCharCode(h+j);delete s.marks[m];}}else{U2(c,'Invalid argument: '+e+'-');return;}}else{delete s.marks[d];}}}};var g3=new e3();function h3(c,a,b,d,f,s,h,r,i){c.state.vim.exMode=true;var j=false;var k=s.from();function m(){c.operation(function(){while(!j){n();o();}p();});}function n(){var e=c.getRange(s.from(),s.to());var w=e.replace(h,r);s.replace(w);}function o(){while(s.findNext()&&c3(s.from(),d,f)){if(!b&&k&&s.from().line==k.line){continue;}c.scrollIntoView(s.from(),30);c.setSelection(s.from(),s.to());k=s.from();j=false;return;}j=true;}function p(e){if(e){e();}c.focus();if(k){c.setCursor(k);var w=c.state.vim;w.exMode=false;w.lastHPos=w.lastHSPos=k.ch;}if(i){i();}}function v(e,_,w){F.e_stop(e);var x=F.keyName(e);switch(x){case'Y':n();o();break;case'N':o();break;case'A':var y=i;i=undefined;c.operation(m);i=y;break;case'L':n();case'Q':case'Esc':case'Ctrl-C':case'Ctrl-[':p(w);break;}if(j){p(w);}return true;}o();if(j){U2(c,'No matches for '+h.source);return;}if(!a){m();if(i){i();}return;}X2(c,{prefix:'replace with '+r+' (y/n/a/q/l)',onKeyDown:v});}F.keyMap.vim={attach:Q,detach:O,call:U};function i3(c){var v=c.state.vim;var m=y1.macroModeState;var a=y1.registerController.getRegister('.');var b=m.isPlaying;var d=m.lastInsertModeChanges;var e=[];if(!b){var s=d.inVisualBlock?v.lastSelection.visualBlock.height:1;var f=d.changes;var e=[];var i=0;while(i1){v3(c,v,v.insertModeRepeat-1,true);v.lastEditInputState.repeatOverride=v.insertModeRepeat;}delete v.insertModeRepeat;v.insertMode=false;c.setCursor(c.getCursor().line,c.getCursor().ch-1);c.setOption('keyMap','vim');c.setOption('disableInput',true);d.overwrite=c.state.overwrite;c.toggleOverwrite(false);a.setText(d.changes.join(''));F.signal(c,"vim-mode-change",{mode:"normal"});if(m.isRecording){n3(m);}}function j3(c){J.unshift(c);}function k3(k,a,n,b,e){var c={keys:k,type:a};c[a]=n;c[a+"Args"]=b;for(var d in e)c[d]=e[d];j3(c);}q1('insertModeEscKeysTimeout',200,'number');F.keyMap['vim-insert']={'Ctrl-N':'autocomplete','Ctrl-P':'autocomplete','Enter':function(c){var f=F.commands.newlineAndIndentContinueComment||F.commands.newlineAndIndent;f(c);},fallthrough:['default'],attach:Q,detach:O,call:U};F.keyMap['vim-replace']={'Backspace':'goCharLeft',fallthrough:['vim-insert'],attach:Q,detach:O,call:U};function l3(c,v,m,r){var a=y1.registerController.getRegister(r);if(r==':'){if(a.keyBuffer[0]){g3.processCommand(c,a.keyBuffer[0]);}m.isPlaying=false;return;}var k=a.keyBuffer;var b=0;m.isPlaying=true;m.replaySearchQueries=a.searchQueries.slice(0);for(var i=0;i|<\w+>|./).exec(d);f=e[0];d=d.substring(e.index+f.length);F.Vim.handleKey(c,f,'macro');if(v.insertMode){var h=a.insertModeChanges[b++].changes;y1.macroModeState.lastInsertModeChanges.changes=h;w3(c,h,1);i3(c);}}}m.isPlaying=false;}function m3(m,k){if(m.isPlaying){return;}var r=m.latestRegister;var a=y1.registerController.getRegister(r);if(a){a.pushText(k);}}function n3(m){if(m.isPlaying){return;}var r=m.latestRegister;var a=y1.registerController.getRegister(r);if(a&&a.pushInsertModeChanges){a.pushInsertModeChanges(m.lastInsertModeChanges);}}function o3(m,a){if(m.isPlaying){return;}var r=m.latestRegister;var b=y1.registerController.getRegister(r);if(b&&b.pushSearchQuery){b.pushSearchQuery(a);}}function p3(_,c){var m=y1.macroModeState;var a=m.lastInsertModeChanges;if(!m.isPlaying){while(c){a.expectCursorActivityForChange=true;if(c.origin=='+input'||c.origin=='paste'||c.origin===undefined){var b=c.text.join('\n');if(a.maybeReset){a.changes=[];a.maybeReset=false;}a.changes.push(b);}c=c.next;}}}function q3(c){var v=c.state.vim;if(v.insertMode){var m=y1.macroModeState;if(m.isPlaying){return;}var a=m.lastInsertModeChanges;if(a.expectCursorActivityForChange){a.expectCursorActivityForChange=false;}else{a.maybeReset=true;}}else if(!c.curOp.isVimOp){s3(c,v);}if(v.visualMode){r3(c);}}function r3(c){var v=c.state.vim;var f=Q1(c,Y1(v.sel.head));var a=S1(f,0,1);if(v.fakeCursor){v.fakeCursor.clear();}v.fakeCursor=c.markText(f,a,{className:'cm-animate-fat-cursor'});}function s3(c,v){var a=c.getCursor('anchor');var h=c.getCursor('head');if(v.visualMode&&!c.somethingSelected()){p2(c,false);}else if(!v.visualMode&&!v.insertMode&&c.somethingSelected()){v.visualMode=true;v.visualLine=false;F.signal(c,"vim-mode-change",{mode:"visual"});}if(v.visualMode){var b=!$1(h,a)?-1:0;var d=$1(h,a)?-1:0;h=S1(h,0,b);a=S1(a,0,d);v.sel={anchor:a,head:h};E2(c,v,'<',_1(h,a));E2(c,v,'>',a2(h,a));}else if(!v.insertMode){v.lastHPos=c.getCursor().ch;}}function t3(k){this.keyName=k;}function u3(e){var m=y1.macroModeState;var a=m.lastInsertModeChanges;var k=F.keyName(e);if(!k){return;}function o(){if(a.maybeReset){a.changes=[];a.maybeReset=false;}a.changes.push(new t3(k));return true;}if(k.indexOf('Delete')!=-1||k.indexOf('Backspace')!=-1){F.lookupKey(k,'vim-insert',o);}}function v3(c,v,r,a){var m=y1.macroModeState;m.isPlaying=true;var b=!!v.lastEditActionCommand;var d=v.inputState;function e(){if(b){I1.processAction(c,v,v.lastEditActionCommand);}else{I1.evalInput(c,v);}}function f(r){if(m.lastInsertModeChanges.changes.length>0){r=!v.lastEditActionCommand?1:r;var h=m.lastInsertModeChanges;w3(c,h.changes,r,h.overwrite);}}v.inputState=v.lastEditInputState;if(b&&v.lastEditActionCommand.interlaceInsertRepeat){for(var i=0;i1&&k[0]=="n"){k=k.replace("numpad","");}k=x3[k]||k;var n='';if(e.ctrlKey){n+='C-';}if(e.altKey){n+='A-';}if(e.shiftKey){n+='S-';}n+=k;if(n.length>1){n='<'+n+'>';}return n;}var z3=V.handleKey.bind(V);V.handleKey=function(c,k,o){return c.operation(function(){return z3(c,k,o);},true);};function A3(s){var n=new s.constructor();Object.keys(s).forEach(function(k){var o=s[k];if(Array.isArray(o))o=o.slice();else if(o&&typeof o=="object"&&o.constructor!=Object)o=A3(o);n[k]=o;});if(s.sel){n.sel={head:s.sel.head&&Y1(s.sel.head),anchor:s.sel.anchor&&Y1(s.sel.anchor)};}return n;}function B3(c,k,o){var i=false;var v=V.maybeInitVimState_(c);var a=v.visualBlock||v.wasInVisualBlock;if(v.wasInVisualBlock&&!c.ace.inMultiSelectMode){v.wasInVisualBlock=false;}else if(c.ace.inMultiSelectMode&&v.visualBlock){v.wasInVisualBlock=true;}if(k==''&&!v.insertMode&&!v.visualMode&&c.ace.inMultiSelectMode){c.ace.exitMultiSelectMode();}else if(a||!c.ace.inMultiSelectMode||c.ace.inVirtualSelectionMode){i=V.handleKey(c,k,o);}else{var b=A3(v);c.operation(function(){c.ace.forEachSelection(function(){var s=c.ace.selection;c.state.vim.lastHPos=s.$desiredColumn==null?s.lead.column:s.$desiredColumn;var h=c.getCursor("head");var d=c.getCursor("anchor");var e=!$1(h,d)?-1:0;var f=$1(h,d)?-1:0;h=S1(h,0,e);d=S1(d,0,f);c.state.vim.sel.head=h;c.state.vim.sel.anchor=d;i=z3(c,k,o);s.$desiredColumn=c.state.vim.lastHPos==-1?null:c.state.vim.lastHPos;if(c.virtualSelectionMode()){c.state.vim=A3(b);}});if(c.curOp.cursorActivity&&!i)c.curOp.cursorActivity=false;},true);}return i;}l.CodeMirror=F;var C3=V.maybeInitVimState_;l.handler={$id:"ace/keyboard/vim",drawCursor:function(s,p,c,a,b){var v=this.state.vim||{};var w=c.characterWidth;var h=c.lineHeight;var d=p.top;var e=p.left;if(!v.insertMode){var i=!a.cursor?b.selection.isBackwards()||b.selection.isEmpty():R.comparePoints(a.cursor,a.start)<=0;if(!i&&e>w)e-=w;}if(!v.insertMode&&v.status){h=h/2;d+=h;}s.left=e+"px";s.top=d+"px";s.width=w+"px";s.height=h+"px";},handleKeyboard:function(d,h,k,a,e){var b=d.editor;var c=b.state.cm;var v=C3(c);if(a==-1)return;if(k=="c"&&h==1){if(!B.isMac&&b.getCopyText()){b.once("copy",function(){b.selection.clearSelection();});return{command:"null",passEvent:true};}}else if(!v.insertMode){if(B.isMac&&this.handleMacRepeat(d,h,k)){h=-1;k=d.inputChar;}}if(h==-1||h&1||h===0&&k.length>1){var i=v.insertMode;var n=y3(h,k,e||{});if(v.status==null)v.status="";var f=B3(c,n,'user');v=C3(c);if(f&&v.status!=null)v.status+=n;else if(v.status==null)v.status="";c._signal("changeStatus");if(!f&&(h!=-1||i))return;return{command:"null",passEvent:!f};}},attach:function(e){if(!e.state)e.state={};var c=new F(e);e.state.cm=c;e.$vimModeHandler=this;F.keyMap.vim.attach(c);C3(c).status=null;c.on('vim-command-done',function(){if(c.virtualSelectionMode())return;C3(c).status=null;c.ace._signal("changeStatus");c.ace.session.markUndoGroup();});c.on("changeStatus",function(){c.ace.renderer.updateCursor();c.ace._signal("changeStatus");});c.on("vim-mode-change",function(){if(c.virtualSelectionMode())return;c.ace.renderer.setStyle("normal-mode",!C3(c).insertMode);c._signal("changeStatus");});c.ace.renderer.setStyle("normal-mode",!C3(c).insertMode);e.renderer.$cursorLayer.drawCursor=this.drawCursor.bind(c);this.updateMacCompositionHandlers(e,true);},detach:function(e){var c=e.state.cm;F.keyMap.vim.detach(c);c.destroy();e.state.cm=null;e.$vimModeHandler=null;e.renderer.$cursorLayer.drawCursor=null;e.renderer.setStyle("normal-mode",false);this.updateMacCompositionHandlers(e,false);},getStatusText:function(e){var c=e.state.cm;var v=C3(c);if(v.insertMode)return"INSERT";var s="";if(v.visualMode){s+="VISUAL";if(v.visualLine)s+=" LINE";if(v.visualBlock)s+=" BLOCK";}if(v.status)s+=(s?" ":"")+v.status;return s;},handleMacRepeat:function(d,h,k){if(h==-1){d.inputChar=k;d.lastEvent="input";}else if(d.inputChar&&d.$lastHash==h&&d.$lastKey==k){if(d.lastEvent=="input"){d.lastEvent="input1";}else if(d.lastEvent=="input1"){return true;}}else{d.$lastHash=h;d.$lastKey=k;d.lastEvent="keypress";}},updateMacCompositionHandlers:function(e,a){var o=function(c){var d=e.state.cm;var v=C3(d);if(!v.insertMode){var f=this.textInput.getElement();f.blur();f.focus();f.value=c;}else{this.onCompositionUpdateOrig(c);}};var b=function(c){var d=e.state.cm;var v=C3(d);if(!v.insertMode){this.onCompositionStartOrig(c);}};if(a){if(!e.onCompositionUpdateOrig){e.onCompositionUpdateOrig=e.onCompositionUpdate;e.onCompositionUpdate=o;e.onCompositionStartOrig=e.onCompositionStart;e.onCompositionStart=b;}}else{if(e.onCompositionUpdateOrig){e.onCompositionUpdate=e.onCompositionUpdateOrig;e.onCompositionUpdateOrig=null;e.onCompositionStart=e.onCompositionStartOrig;e.onCompositionStartOrig=null;}}}};var D3={getText:function(s,r){return(Math.abs(s.selection.lead.row-r)||(r+1+(r<9?"\xb7":"")))+"";},getWidth:function(s,a,c){return s.getLength().toString().length*c.characterWidth;},update:function(e,a){a.renderer.$loop.schedule(a.renderer.CHANGE_GUTTER);},attach:function(e){e.renderer.$gutterLayer.$renderer=this;e.on("changeSelection",this.update);},detach:function(e){e.renderer.$gutterLayer.$renderer=null;e.off("changeSelection",this.update);}};V.defineOption({name:"wrap",set:function(v,c){if(c){c.ace.setOption("wrap",v)}},type:"boolean"},false);V.defineEx('write','w',function(){console.log(':write is not implemented')});J.push({keys:'zc',type:'action',action:'fold',actionArgs:{open:false}},{keys:'zC',type:'action',action:'fold',actionArgs:{open:false,all:true}},{keys:'zo',type:'action',action:'fold',actionArgs:{open:true}},{keys:'zO',type:'action',action:'fold',actionArgs:{open:true,all:true}},{keys:'za',type:'action',action:'fold',actionArgs:{toggle:true}},{keys:'zA',type:'action',action:'fold',actionArgs:{toggle:true,all:true}},{keys:'zf',type:'action',action:'fold',actionArgs:{open:true,all:true}},{keys:'zd',type:'action',action:'fold',actionArgs:{open:true,all:true}},{keys:'',type:'action',action:'aceCommand',actionArgs:{name:"addCursorAbove"}},{keys:'',type:'action',action:'aceCommand',actionArgs:{name:"addCursorBelow"}},{keys:'',type:'action',action:'aceCommand',actionArgs:{name:"addCursorAboveSkipCurrent"}},{keys:'',type:'action',action:'aceCommand',actionArgs:{name:"addCursorBelowSkipCurrent"}},{keys:'',type:'action',action:'aceCommand',actionArgs:{name:"selectMoreBefore"}},{keys:'',type:'action',action:'aceCommand',actionArgs:{name:"selectMoreAfter"}},{keys:'',type:'action',action:'aceCommand',actionArgs:{name:"selectNextBefore"}},{keys:'',type:'action',action:'aceCommand',actionArgs:{name:"selectNextAfter"}});O1.aceCommand=function(c,a,v){c.vimCmd=a;if(c.ace.inVirtualSelectionMode)c.ace.on("beforeEndOperation",E3);else E3(null,c.ace);};function E3(o,a){a.off("beforeEndOperation",E3);var c=a.state.cm.vimCmd;if(c){a.execCommand(c.exec?c:c.name,c.args);}a.curOp=a.prevOp;}O1.fold=function(c,a,v){c.ace.execCommand(['toggleFoldWidget','toggleFoldWidget','foldOther','unfoldall'][(a.all?2:0)+(a.open?1:0)]);};l.handler.defaultKeymap=J;l.handler.actions=O1;l.Vim=V;V.map("Y","yy","normal");});