(function(a){if(typeof exports=="object"&&typeof module=="object")a(require("../lib/codemirror"),require("../addon/search/searchcursor"),require("../addon/dialog/dialog"),require("../addon/edit/matchbrackets.js"));else if(typeof define=="function"&&define.amd)define(["../lib/codemirror","../addon/search/searchcursor","../addon/dialog/dialog","../addon/edit/matchbrackets"],a);else a(CodeMirror)})(function(a){"use strict";var b=[{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:"x",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:"",type:"action",action:"toggleOverwrite",context:"insert"},{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:"moveBySentence",motionArgs:{forward:false}},{keys:")",type:"motion",motion:"moveBySentence",motionArgs:{forward: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:"indentAuto"},{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:"expandToLine",motionArgs:{linewise: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:"idle",context:"normal"},{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:"gi",type:"action",action:"enterInsertMode",isEdit:true,actionArgs:{insertAt:"lastEdit"},context:"normal"},{keys:"I",type:"action",action:"enterInsertMode",isEdit:true,actionArgs:{insertAt:"firstNonBlank"},context:"normal"},{keys:"gI",type:"action",action:"enterInsertMode",isEdit:true,actionArgs:{insertAt:"bol"},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:"gJ",type:"action",action:"joinLines",actionArgs:{keepSpaces:true},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},context:"normal"},{keys:"R",type:"operator",operator:"change",operatorArgs:{linewise:true,fullLine:true},context:"visual",exitVisualBlock: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:"",type:"action",action:"indent",actionArgs:{indentRight:true},context:"insert"},{keys:"",type:"action",action:"indent",actionArgs:{indentRight:false},context:"insert"},{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 c=b.length;var d=[{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:true},{name:"nohlsearch",shortName:"noh"},{name:"yank",shortName:"y"},{name:"delmarks",shortName:"delm"},{name:"registers",shortName:"reg",excludeFromCommandHistory:true},{name:"global",shortName:"g"}];var e=a.Pos;var f=function(){function f(b){b.setOption("disableInput",true);b.setOption("showCursorWhenSelecting",false);a.signal(b,"vim-mode-change",{mode:"normal"});b.on("cursorActivity",Ob);Q(b);a.on(b.getInputField(),"paste",r(b))}function g(b){b.setOption("disableInput",false);b.off("cursorActivity",Ob);a.off(b.getInputField(),"paste",r(b));b.state.vim=null}function h(b,c){if(this==a.keyMap.vim){a.rmClass(b.getWrapperElement(),"cm-fat-cursor");if(b.getOption("inputStyle")=="contenteditable"&&document.body.style.caretColor!=null){m(b);b.getInputField().style.caretColor=""}}if(!c||c.attach!=i)g(b)}function i(b,c){if(this==a.keyMap.vim){a.addClass(b.getWrapperElement(),"cm-fat-cursor");if(b.getOption("inputStyle")=="contenteditable"&&document.body.style.caretColor!=null){l(b);b.getInputField().style.caretColor="transparent"}}if(!c||c.attach!=i)f(b)}function j(a){if(!a.state.fatCursorMarks)return;k(a);var b=a.listSelections(),c=[];for(var d=0;d"}function r(a){var b=a.state.vim;if(!b.onPasteFn){b.onPasteFn=function(){if(!b.insertMode){a.setCursor(ja(a.getCursor(),0,1));fa.enterInsertMode(a,{},b)}}}return b.onPasteFn}var s=/[\d]/;var t=[a.isWordChar,function(b){return b&&!a.isWordChar(b)&&!/\s/.test(b)}],u=[function(a){return/\S/.test(a)}];function v(a,b){var c=[];for(var d=a;d"]);var A=[].concat(w,x,y,["-",'"',".",":","/"]);function B(a,b){return b>=a.firstLine()&&b<=a.lastLine()}function C(a){return/^[a-z]$/.test(a)}function D(a){return"()[]{}".indexOf(a)!=-1}function E(a){return s.test(a)}function F(a){return/^[A-Z]$/.test(a)}function G(a){return/^\s*$/.test(a)}function H(a){return".?!".indexOf(a)!=-1}function I(a,b){for(var c=0;cc){b=c}else if(b0?1:-1;var j;var k=f.getCursor();do{b+=i;h=e[(a+b)%a];if(h&&(j=h.find())&&!pa(k,j)){break}}while(bd)}return h}function h(a,c){var d=b;var e=g(a,c);b=d;return e&&e.find()}return{cachedCursor:undefined,add:f,find:h,move:g}};var O=function(a){if(a){return{changes:a.changes,expectCursorActivityForChange:a.expectCursorActivityForChange}}return{changes:[],expectCursorActivityForChange:false}};function P(){this.latestRegister=undefined;this.isPlaying=false;this.isRecording=false;this.replaySearchQueries=[];this.onRecordingDone=undefined;this.lastInsertModeChanges=O()}P.prototype={exitMacroRecordMode:function(){var a=R.macroModeState;if(a.onRecordingDone){a.onRecordingDone()}a.onRecordingDone=undefined;a.isRecording=false},enterMacroRecordMode:function(a,b){var c=R.registerController.getRegister(b);if(c){c.clear();this.latestRegister=b;if(a.openDialog){this.onRecordingDone=a.openDialog("(recording)["+b+"]",null,{bottom:true})}this.isRecording=true}}};function Q(a){if(!a.state.vim){a.state.vim={inputState:new V,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 a.state.vim}var R;function S(){R={searchQuery:null,searchIsReversed:false,lastSubstituteReplacePart:undefined,jumpList:N(),macroModeState:new P,lastCharacterSearch:{increment:0,forward:true,selectedCharacter:""},registerController:new Z({}),searchHistoryController:new $,exCommandHistoryController:new $};for(var a in J){var b=J[a];b.value=b.defaultValue}}var T;var U={buildKeyMap:function(){},getRegisterController:function(){return R.registerController},resetVimGlobalState_:S,getVimGlobalState_:function(){return R},maybeInitVimState_:Q,suppressErrorLogging:false,InsertModeKey:Sb,map:function(a,b,c){Eb.map(a,b,c)},unmap:function(a,b){Eb.unmap(a,b)},noremap:function(a,d,e){function f(a){return a?[a]:["normal","insert","visual"]}var g=f(e);var h=b.length,i=c;for(var j=h-i;j=0;g--){var h=f[g];if(a!==h.context){if(h.context){this._mapCommand(h)}else{var i=["normal","insert","visual"];for(var j in i){if(i[j]!==a){var k={};for(var l in h){k[l]=h[l]}k.context=i[j];this._mapCommand(k)}}}}}}},setOption:L,getOption:M,defineOption:K,defineEx:function(a,b,c){if(!b){b=a}else if(a.indexOf(b)!==0){throw new Error('(Vim.defineEx) "'+b+'" is not a prefix of "'+a+'", command not registered')}Db[a]=c;Eb.commandMap_[b]={name:a,shortName:b,type:"api"}},handleKey:function(a,b,c){var d=this.findKey(a,b,c);if(typeof d==="function"){return d()}},findKey:function(c,d,e){var f=Q(c);function g(){var a=R.macroModeState;if(a.isRecording){if(d=="q"){a.exitMacroRecordMode();W(c);return true}if(e!="mapping"){Kb(a,d)}}}function h(){if(d==""){W(c);if(f.visualMode){Ha(c)}else if(f.insertMode){Gb(c)}return true}}function i(b){var e;while(b){e=/<\w+-.+?>|<\w+>|./.exec(b);d=e[0];b=b.substring(e.index+d.length);a.Vim.handleKey(c,d,"mapping")}}function j(){if(h()){return true}var a=f.inputState.keyBuffer=f.inputState.keyBuffer+d;var e=d.length==1;var g=_.matchCommand(a,b,f.inputState,"insert");while(a.length>1&&g.type!="full"){var a=f.inputState.keyBuffer=a.slice(1);var i=_.matchCommand(a,b,f.inputState,"insert");if(i.type!="none"){g=i}}if(g.type=="none"){W(c);return false}else if(g.type=="partial"){if(T){window.clearTimeout(T)}T=window.setTimeout(function(){if(f.insertMode&&f.inputState.keyBuffer){W(c)}},M("insertModeEscKeysTimeout"));return!e}if(T){window.clearTimeout(T)}if(e){var j=c.listSelections();for(var k=0;k0||this.motionRepeat.length>0){a=1;if(this.prefixRepeat.length>0){a*=parseInt(this.prefixRepeat.join(""),10)}if(this.motionRepeat.length>0){a*=parseInt(this.motionRepeat.join(""),10)}}return a};function W(b,c){b.state.vim.inputState=new V;a.signal(b,"vim-command-done",c)}function X(a,b,c){this.clear();this.keyBuffer=[a||""];this.insertModeChanges=[];this.searchQueries=[];this.linewise=!!b;this.blockwise=!!c}X.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(a){this.insertModeChanges.push(O(a))},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 Y(a,b){var c=R.registerController.registers;if(!a||a.length!=1){throw Error("Register name must be 1 character")}if(c[a]){throw Error("Register already defined "+a)}c[a]=b;A.push(a)}function Z(a){this.registers=a;this.unnamedRegister=a['"']=new X;a["."]=new X;a[":"]=new X;a["/"]=new X}Z.prototype={pushText:function(a,b,c,d,e){if(d&&c.charAt(c.length-1)!=="\n"){c+="\n"}var f=this.isValidRegister(a)?this.getRegister(a):null;if(!f){switch(b){case"yank":this.registers["0"]=new X(c,d,e);break;case"delete":case"change":if(c.indexOf("\n")==-1){this.registers["-"]=new X(c,d)}else{this.shiftNumericRegisters_();this.registers["1"]=new X(c,d)}break}this.unnamedRegister.setText(c,d,e);return}var g=F(a);if(g){f.pushText(c,d)}else{f.setText(c,d,e)}this.unnamedRegister.setText(f.toString(),d)},getRegister:function(a){if(!this.isValidRegister(a)){return this.unnamedRegister}a=a.toLowerCase();if(!this.registers[a]){this.registers[a]=new X}return this.registers[a]},isValidRegister:function(a){return a&&I(a,A)},shiftNumericRegisters_:function(){for(var a=9;a>=2;a--){this.registers[a]=this.getRegister(""+(a-1))}}};function $(){this.historyBuffer=[];this.iterator=0;this.initialPrefix=null}$.prototype={nextMatch:function(a,b){var c=this.historyBuffer;var d=b?-1:1;if(this.initialPrefix===null)this.initialPrefix=a;for(var e=this.iterator+d;b?e>=0:e=c.length){this.iterator=c.length;return this.initialPrefix}if(e<0)return a},pushInput:function(a){var b=this.historyBuffer.indexOf(a);if(b>-1)this.historyBuffer.splice(b,1);if(a.length)this.historyBuffer.push(a)},reset:function(){this.initialPrefix=null;this.iterator=this.historyBuffer.length}};var _={matchCommand:function(a,b,c,d){var e=ka(a,b,d,c);if(!e.full&&!e.partial){return{type:"none"}}else if(!e.full&&e.partial){return{type:"partial"}}var f;for(var g=0;g"){var i=ma(a);if(!i)return{type:"none"};c.selectedCharacter=i}return{type:"full",command:f}},processCommand:function(a,b,c){b.inputState.repeatOverride=c.repeatOverride;switch(c.type){case"motion":this.processMotion(a,b,c);break;case"operator":this.processOperator(a,b,c);break;case"operatorMotion":this.processOperatorMotion(a,b,c);break;case"action":this.processAction(a,b,c);break;case"search":this.processSearch(a,b,c);break;case"ex":case"keyToEx":this.processEx(a,b,c);break;default:break}},processMotion:function(a,b,c){b.inputState.motion=c.motion;b.inputState.motionArgs=ia(c.motionArgs);this.evalInput(a,b)},processOperator:function(a,b,c){var d=b.inputState;if(d.operator){if(d.operator==c.operator){d.motion="expandToLine";d.motionArgs={linewise:true};this.evalInput(a,b);return}else{W(a)}}d.operator=c.operator;d.operatorArgs=ia(c.operatorArgs);if(c.exitVisualBlock){b.visualBlock=false;Ea(a)}if(b.visualMode){this.evalInput(a,b)}},processOperatorMotion:function(a,b,c){var d=b.visualMode;var e=ia(c.operatorMotionArgs);if(e){if(d&&e.visualLine){b.visualLine=true}}this.processOperator(a,b,c);if(!d){this.processMotion(a,b,c)}},processAction:function(a,b,c){var d=b.inputState;var e=d.getRepeat();var f=!!e;var g=ia(c.actionArgs)||{};if(d.selectedCharacter){g.selectedCharacter=d.selectedCharacter}if(c.operator){this.processOperator(a,b,c)}if(c.motion){this.processMotion(a,b,c)}if(c.motion||c.operator){this.evalInput(a,b)}g.repeat=e||1;g.repeatIsExplicit=f;g.registerName=d.registerName;W(a);b.lastMotion=null;if(c.isEdit){this.recordLastEdit(b,d,c)}fa[c.action](a,g,b)},processSearch:function(b,c,d){if(!b.getSearchCursor){return}var e=d.searchArgs.forward;var f=d.searchArgs.wholeWordOnly;bb(b).setReversed(!e);var g=e?"/":"?";var h=bb(b).getQuery();var i=b.getScrollInfo();function j(a,e,f){R.searchHistoryController.pushInput(a);R.searchHistoryController.reset();try{sb(b,a,e,f)}catch(g){nb(b,"Invalid regex: "+a);W(b);return}_.processMotion(b,c,{type:"motion",motion:"findNext",motionArgs:{forward:true,toJumplist:d.searchArgs.toJumplist}})}function k(a){b.scrollTo(i.left,i.top);j(a,true,true);var c=R.macroModeState;if(c.isRecording){Mb(c,a)}}function l(c,d,f){var g=a.keyName(c),h,j;if(g=="Up"||g=="Down"){h=g=="Up"?true:false;j=c.target?c.target.selectionEnd:0;d=R.searchHistoryController.nextMatch(d,h)||"";f(d);if(j&&c.target)c.target.selectionEnd=c.target.selectionStart=Math.min(j,c.target.value.length)}else{if(g!="Left"&&g!="Right"&&g!="Ctrl"&&g!="Alt"&&g!="Shift")R.searchHistoryController.reset()}var k;try{k=sb(b,d,true,true)}catch(c){}if(k){b.scrollIntoView(wb(b,!e,k),30)}else{xb(b);b.scrollTo(i.left,i.top)}}function m(c,d,e){var f=a.keyName(c);if(f=="Esc"||f=="Ctrl-C"||f=="Ctrl-["||f=="Backspace"&&d==""){R.searchHistoryController.pushInput(d);R.searchHistoryController.reset();sb(b,h);xb(b);b.scrollTo(i.left,i.top);a.e_stop(c);W(b);e();b.focus()}else if(f=="Up"||f=="Down"){a.e_stop(c)}else if(f=="Ctrl-U"){a.e_stop(c);e("")}}switch(d.searchArgs.querySrc){case"prompt":var n=R.macroModeState;if(n.isPlaying){var o=n.replaySearchQueries.shift();j(o,true,false)}else{qb(b,{onClose:k,prefix:g,desc:pb,onKeyUp:l,onKeyDown:m})}break;case"wordUnderCursor":var p=La(b,false,true,false,true);var q=true;if(!p){p=La(b,false,true,false,false);q=false}if(!p){return}var o=b.getLine(p.start.line).substring(p.start.ch,p.end.ch);if(q&&f){o="\\b"+o+"\\b"}else{o=wa(o)}R.jumpList.cachedCursor=b.getCursor();b.setCursor(p.start);j(o,true,false);break}},processEx:function(b,c,d){function e(a){R.exCommandHistoryController.pushInput(a);R.exCommandHistoryController.reset();Eb.processCommand(b,a)}function f(c,d,e){var f=a.keyName(c),g,h;if(f=="Esc"||f=="Ctrl-C"||f=="Ctrl-["||f=="Backspace"&&d==""){R.exCommandHistoryController.pushInput(d);R.exCommandHistoryController.reset();a.e_stop(c);W(b);e();b.focus()}if(f=="Up"||f=="Down"){a.e_stop(c);g=f=="Up"?true:false;h=c.target?c.target.selectionEnd:0;d=R.exCommandHistoryController.nextMatch(d,g)||"";e(d);if(h&&c.target)c.target.selectionEnd=c.target.selectionStart=Math.min(h,c.target.value.length)}else if(f=="Ctrl-U"){a.e_stop(c);e("")}else{if(f!="Left"&&f!="Right"&&f!="Ctrl"&&f!="Alt"&&f!="Shift")R.exCommandHistoryController.reset()}}if(d.type=="keyToEx"){Eb.processCommand(b,d.exArgs.input)}else{if(c.visualMode){qb(b,{onClose:e,prefix:":",value:"'<,'>",onKeyDown:f,selectValueOnOpen:false})}else{qb(b,{onClose:e, prefix:":",onKeyDown:f})}}},evalInput:function(a,b){var c=b.inputState;var d=c.motion;var f=c.motionArgs||{};var g=c.operator;var h=c.operatorArgs||{};var i=c.registerName;var j=b.sel;var k=oa(b.visualMode?ha(a,j.head):a.getCursor("head"));var l=oa(b.visualMode?ha(a,j.anchor):a.getCursor("anchor"));var m=oa(k);var n=oa(l);var o,p;var q;if(g){this.recordLastEdit(b,c)}if(c.repeatOverride!==undefined){q=c.repeatOverride}else{q=c.getRepeat()}if(q>0&&f.explicitRepeat){f.repeatIsExplicit=true}else if(f.noRepeat||!f.explicitRepeat&&q===0){q=1;f.repeatIsExplicit=false}if(c.selectedCharacter){f.selectedCharacter=h.selectedCharacter=c.selectedCharacter}f.repeat=q;W(a);if(d){var r=aa[d](a,k,f,b);b.lastMotion=aa[d];if(!r){return}if(f.toJumplist){var s=R.jumpList;var t=s.cachedCursor;if(t){Na(a,t,r);delete s.cachedCursor}else{Na(a,k,r)}}if(r instanceof Array){p=r[0];o=r[1]}else{o=r}if(!o){o=oa(k)}if(b.visualMode){if(!(b.visualBlock&&o.ch===Infinity)){o=ha(a,o)}if(p){p=ha(a,p)}p=p||n;j.anchor=p;j.head=o;Ea(a);Wa(a,b,"<",qa(p,o)?p:o);Wa(a,b,">",qa(p,o)?o:p)}else if(!g){o=ha(a,o);a.setCursor(o.line,o.ch)}}if(g){if(h.lastSel){p=n;var u=h.lastSel;var v=Math.abs(u.head.line-u.anchor.line);var w=Math.abs(u.head.ch-u.anchor.ch);if(u.visualLine){o=e(n.line+v,n.ch)}else if(u.visualBlock){o=e(n.line+v,n.ch+w)}else if(u.head.line==u.anchor.line){o=e(n.line,n.ch+w)}else{o=e(n.line+v,n.ch)}b.visualMode=true;b.visualLine=u.visualLine;b.visualBlock=u.visualBlock;j=b.sel={anchor:p,head:o};Ea(a)}else if(b.visualMode){h.lastSel={anchor:oa(j.anchor),head:oa(j.head),visualBlock:b.visualBlock,visualLine:b.visualLine}}var x,y,z,A;var B;if(b.visualMode){x=ra(j.head,j.anchor);y=sa(j.head,j.anchor);z=b.visualLine||h.linewise;A=b.visualBlock?"block":z?"line":"char";B=Fa(a,{anchor:x,head:y},A);if(z){var C=B.ranges;if(A=="block"){for(var D=0;Di:l.linek&&f.line==k){return this.moveToEol(a,b,c,d,true)}if(c.toFirstChar){g=Ka(a.getLine(i));d.lastHPos=g}d.lastHSPos=a.charCoords(e(i,g),"div").left;return e(i,g)},moveByDisplayLines:function(a,b,c,d){var f=b;switch(d.lastMotion){case this.moveByDisplayLines:case this.moveByScroll:case this.moveByLines:case this.moveToColumn:case this.moveToEol:break;default:d.lastHSPos=a.charCoords(f,"div").left}var g=c.repeat;var h=a.findPosV(f,c.forward?g:-g,"line",d.lastHSPos);if(h.hitSide){if(c.forward){var i=a.charCoords(h,"div");var j={top:i.top+8,left:d.lastHSPos};var h=a.coordsChar(j,"div")}else{var k=a.charCoords(e(a.firstLine(),0),"div");k.left=d.lastHSPos;h=a.coordsChar(k,"div")}}d.lastHPos=h.ch;return h},moveByPage:function(a,b,c){var d=b;var e=c.repeat;return a.findPosV(d,c.forward?e:-e,"page")},moveByParagraph:function(a,b,c){var d=c.forward?1:-1;return Ya(a,b,c.repeat,d)},moveBySentence:function(a,b,c){var d=c.forward?1:-1;return Za(a,b,c.repeat,d)},moveByScroll:function(a,b,c,d){var e=a.getScrollInfo();var f=null;var g=c.repeat;if(!g){g=e.clientHeight/(2*a.defaultTextHeight())}var h=a.charCoords(b,"local");c.repeat=g;var f=aa.moveByDisplayLines(a,b,c,d);if(!f){return null}var i=a.charCoords(f,"local");a.scrollTo(null,e.top+i.top-h.top);return f},moveByWords:function(a,b,c){return Ta(a,b,c.repeat,!!c.forward,!!c.wordEnd,!!c.bigWord)},moveTillCharacter:function(a,b,c){var d=c.repeat;var e=Ua(a,d,c.forward,c.selectedCharacter);var f=c.forward?-1:1;Oa(f,c);if(!e)return null;e.ch+=f;return e},moveToCharacter:function(a,b,c){var d=c.repeat;Oa(0,c);return Ua(a,d,c.forward,c.selectedCharacter)||b},moveToSymbol:function(a,b,c){var d=c.repeat;return Ra(a,d,c.forward,c.selectedCharacter)||b},moveToColumn:function(a,b,c,d){var e=c.repeat;d.lastHPos=e-1;d.lastHSPos=a.charCoords(b,"div").left;return Va(a,e)},moveToEol:function(a,b,c,d,f){var g=b;var h=e(g.line+c.repeat-1,Infinity);var i=a.clipPos(h);i.ch--;if(!f){d.lastHPos=Infinity;d.lastHSPos=a.charCoords(i,"div").left}return h},moveToFirstNonWhiteSpaceCharacter:function(a,b){var c=b;return e(c.line,Ka(a.getLine(c.line)))},moveToMatchedSymbol:function(a,b){var c=b;var d=c.line;var f=c.ch;var g=a.getLine(d);var h;for(;f"?/[(){}[\]<>]/:/[(){}[\]]/;var k=a.findMatchingBracket(e(d,f),{bracketRegex:j});return k.to}else{return c}},moveToStartOfLine:function(a,b){return e(b.line,0)},moveToLineOrEdgeOfDocument:function(a,b,c){var d=c.forward?a.lastLine():a.firstLine();if(c.repeatIsExplicit){d=c.repeat-a.getOption("firstLineNumber")}return e(d,Ka(a.getLine(d)))},textObjectManipulation:function(a,b,c,d){var e={"(":")",")":"(","{":"}","}":"{","[":"]","]":"[","<":">",">":"<"};var f={"'":true,'"':true,"`":true};var g=c.selectedCharacter;if(g=="b"){g="("}else if(g=="B"){g="{"}var h=!c.textObjectInner;var i;if(e[g]){i=$a(a,b,g,h)}else if(f[g]){i=_a(a,b,g,h)}else if(g==="W"){i=La(a,h,true,true)}else if(g==="w"){i=La(a,h,true,false)}else if(g==="p"){i=Ya(a,b,c.repeat,0,h);c.linewise=true;if(d.visualMode){if(!d.visualLine){d.visualLine=true}}else{var j=d.inputState.operatorArgs;if(j){j.linewise=true}i.end.line--}}else if(g==="t"){i=Ma(a,b,h)}else{return null}if(!a.state.vim.visualMode){return[i.start,i.end]}else{return Da(a,i.start,i.end)}},repeatLastCharacterSearch:function(a,b,c){var d=R.lastCharacterSearch;var e=c.repeat;var f=c.forward===d.forward;var g=(d.increment?1:0)*(f?-1:1);a.moveH(-g,"char");c.inclusive=f?true:false;var h=Ua(a,e,f,d.selectedCharacter);if(!h){a.moveH(g,"char");return b}h.ch+=g;return h}};function ba(a,b){aa[a]=b}function ca(a,b){var c=[];for(var d=0;db.lastLine()&&c.linewise&&!n){b.replaceRange("",m,j)}else{b.replaceRange("",i,j)}if(c.linewise){if(!n){b.setCursor(m);a.commands.newlineAndIndent(b)}i.ch=Number.MAX_VALUE}f=i}else if(c.fullLine){j.ch=Number.MAX_VALUE;j.line--;b.setSelection(i,j);g=b.getSelection();b.replaceSelection("");f=i}else{g=b.getSelection();var o=ca("",d.length);b.replaceSelections(o);f=ra(d[0].head,d[0].anchor)}R.registerController.pushText(c.registerName,"change",g,c.linewise,d.length>1);fa.enterInsertMode(b,{head:f},b.state.vim)},"delete":function(a,b,c){var d,f;var g=a.state.vim;if(!g.visualBlock){var h=c[0].anchor,i=c[0].head;if(b.linewise&&i.line!=a.firstLine()&&h.line==a.lastLine()&&h.line==i.line-1){if(h.line==a.firstLine()){h.ch=0}else{h=e(h.line-1,ua(a,h.line-1))}}f=a.getRange(h,i);a.replaceRange("",h,i);d=h;if(b.linewise){d=aa.moveToFirstNonWhiteSpaceCharacter(a,h)}}else{f=a.getSelection();var j=ca("",c.length);a.replaceSelections(j);d=c[0].anchor}R.registerController.pushText(b.registerName,"delete",f,b.linewise,g.visualBlock);return ha(a,d)},indent:function(a,b,c){var d=a.state.vim;var e=c[0].anchor.line;var f=d.visualBlock?c[c.length-1].anchor.line:c[0].head.line;var g=d.visualMode?b.repeat:1;if(b.linewise){f--}for(var h=e;h<=f;h++){for(var i=0;ij.top){i.line+=(h-j.top)/e;i.line=Math.ceil(i.line);a.setCursor(i);j=a.charCoords(i,"local");a.scrollTo(null,j.top)}else{a.scrollTo(null,h)}}else{var k=h+a.getScrollInfo().clientHeight;if(k=g.anchor.line){h=ja(g.head,0,1)}else{h=e(g.anchor.line,0)}}else{h=e(Math.min(g.head.line,g.anchor.line),Math.max(g.head.ch+1,g.anchor.ch));i=Math.abs(g.head.line-g.anchor.line)+1}}else if(f=="inplace"){if(d.visualMode){return}}else if(f=="lastEdit"){h=Bb(b)||h}b.setOption("disableInput",false);if(c&&c.replace){b.toggleOverwrite(true);b.setOption("keyMap","vim-replace");a.signal(b,"vim-mode-change",{mode:"replace"})}else{b.toggleOverwrite(false);b.setOption("keyMap","vim-insert");a.signal(b,"vim-mode-change",{mode:"insert"})}if(!R.macroModeState.isPlaying){b.on("change",Nb);a.on(b.getInputField(),"keydown",Tb)}if(d.visualMode){Ha(b)}za(b,h,i)},toggleVisualMode:function(b,c,d){var f=c.repeat;var g=b.getCursor();var h;if(!d.visualMode){d.visualMode=true;d.visualLine=!!c.linewise;d.visualBlock=!!c.blockwise;h=ha(b,e(g.line,g.ch+f-1));d.sel={anchor:g,head:h};a.signal(b,"vim-mode-change",{mode:"visual",subMode:d.visualLine?"linewise":d.visualBlock?"blockwise":""});Ea(b);Wa(b,d,"<",ra(g,h));Wa(b,d,">",sa(g,h))}else if(d.visualLine^c.linewise||d.visualBlock^c.blockwise){d.visualLine=!!c.linewise;d.visualBlock=!!c.blockwise;a.signal(b,"vim-mode-change",{mode:"visual",subMode:d.visualLine?"linewise":d.visualBlock?"blockwise":""});Ea(b)}else{Ha(b)}},reselectLastSelection:function(b,c,d){var e=d.lastSelection;if(d.visualMode){Ca(b,d)}if(e){var f=e.anchorMark.find();var g=e.headMark.find();if(!f||!g){return}d.sel={anchor:f,head:g};d.visualMode=true;d.visualLine=e.visualLine;d.visualBlock=e.visualBlock;Ea(b);Wa(b,d,"<",ra(f,g));Wa(b,d,">",sa(f,g));a.signal(b,"vim-mode-change",{mode:"visual",subMode:d.visualLine?"linewise":d.visualBlock?"blockwise":""})}},joinLines:function(a,b,c){var d,f;if(c.visualMode){d=a.getCursor("anchor");f=a.getCursor("head");if(qa(f,d)){var g=f;f=d;d=g}f.ch=ua(a,f.line)-1}else{var h=Math.max(b.repeat,2);d=a.getCursor();f=ha(a,e(d.line+h-1,Infinity))}var i=0;for(var j=d.line;j1){var g=Array(b.repeat+1).join(g)}var o=f.linewise;var p=f.blockwise;if(p){g=g.split("\n");if(o){g.pop()}for(var q=0;qa.lastLine()){a.replaceRange("\n",e(A,0))}var B=ua(a,A);if(Bk.length){h=k.length}i=e(g.line,h)}if(f=="\n"){if(!d.visualMode)b.replaceRange("",g,i);(a.commands.newlineAndIndentContinueComment||a.commands.newlineAndIndent)(b)}else{var l=b.getRange(g,i);l=l.replace(/[^\n]/g,f);if(d.visualBlock){var m=new Array(b.getOption("tabSize")+1).join(" ");l=b.getSelection();l=l.replace(/\t/g,m).replace(/[^\n]/g,f).split("\n");b.replaceSelections(l)}else{b.replaceRange(l,g,i)}if(d.visualMode){g=qa(j[0].anchor,j[0].head)?j[0].anchor:j[0].head;b.setCursor(g);Ha(b,false)}else{b.setCursor(ja(i,0,-1))}}},incrementNumberToken:function(a,b){var c=a.getCursor();var d=a.getLine(c.line);var f=/(-?)(?:(0x)([\da-f]+)|(0b|0|)(\d+))/gi;var g;var h;var i;var j;while((g=f.exec(d))!==null){h=g.index;i=h+g[0].length;if(c.ch"){var c=b.length-11;var d=a.slice(0,c);var e=b.slice(0,c);return d==e&&a.length>c?"full":e.indexOf(d)==0?"partial":false}else{return a==b?"full":b.indexOf(a)==0?"partial":false}}function ma(a){var b=/^.*(<[^>]+>)$/.exec(a);var c=b?b[1]:a.slice(-1);if(c.length>1){switch(c){case"":c="\n";break;case"":c=" ";break;default:c="";break}}return c}function na(a,b,c){return function(){for(var d=0;d2){b=ra.apply(undefined,Array.prototype.slice.call(arguments,1))}return qa(a,b)?a:b}function sa(a,b){if(arguments.length>2){b=sa.apply(undefined,Array.prototype.slice.call(arguments,1))}return qa(a,b)?b:a}function ta(a,b,c){var d=qa(a,b);var e=qa(b,c);return d&&e}function ua(a,b){return a.getLine(b).length}function va(a){if(a.trim){return a.trim()}return a.replace(/^\s+|\s+$/g,"")}function wa(a){return a.replace(/([.?*+$\[\]\/\\(){}|\-])/g,"\\$1")}function xa(a,b,c){var d=ua(a,b);var f=new Array(c-d+1).join(" ");a.setCursor(e(b,d));a.replaceRange(f,a.getCursor())}function ya(a,b){var c=[],d=a.listSelections();var f=oa(a.clipPos(b));var g=!pa(b,f);var h=a.getCursor("head");var i=Aa(d,h);var j=pa(d[i].head,d[i].anchor);var k=d.length-1;var l=k-i>i?k:0;var m=d[l].anchor;var n=Math.min(m.line,f.line);var o=Math.max(m.line,f.line);var p=m.ch,q=f.ch;var r=d[l].head.ch-p;var s=q-p;if(r>0&&s<=0){p++;if(!g){q--}}else if(r<0&&s>=0){p--;if(!j){q++}}else if(r<0&&s==-1){p--;q++}for(var t=n;t<=o;t++){var u={anchor:new e(t,p),head:new e(t,q)};c.push(u)}a.setSelections(c);b.ch=q;m.ch=p;return m}function za(a,b,c){var d=[];for(var e=0;ej){f.line=j}f.ch=ua(a,f.line)}else{f.ch=0;g.ch=ua(a,g.line)}return{ranges:[{anchor:g,head:f}],primary:0}}else if(c=="block"){var k=Math.min(g.line,f.line),l=Math.min(g.ch,f.ch),m=Math.max(g.line,f.line),n=Math.max(g.ch,f.ch)+1;var o=m-k+1;var p=f.line==k?0:o-1;var q=[];for(var r=0;r0&&f&&G(f);f=e.pop()){c.line--;c.ch=0}if(f){c.line--;c.ch=ua(a,c.line)}else{c.ch=0}}}function Ja(a,b,c){b.ch=0;c.ch=0;c.line++}function Ka(a){if(!a){return 0}var b=a.search(/\S/);return b==-1?a.length:b}function La(a,b,c,d,f){var g=Ga(a);var h=a.getLine(g.line);var i=g.ch;var j=f?t[0]:u[0];while(!j(h.charAt(i))){i++;if(i>=h.length){return null}}if(d){j=u[0]}else{j=t[0];if(!j(h.charAt(i))){j=t[1]}}var k=i,l=i;while(j(h.charAt(k))&&k=0){l--}l++;if(b){var m=k;while(/\s/.test(h.charAt(k))&&k0){l--}if(!l){l=n}}}return{start:e(g.line,l),end:e(g.line,k)}}function Ma(b,c,d){var e=c;if(!a.findMatchingTag||!a.findEnclosingTag){return{start:e,end:e}}var f=a.findMatchingTag(b,c)||a.findEnclosingTag(b,c);if(!f||!f.open||!f.close){return{start:e,end:e}}if(d){return{start:f.open.from,end:f.close.to}}return{start:f.open.to,end:f.close.from}}function Na(a,b,c){if(!pa(b,c)){R.jumpList.add(a,b,c)}}function Oa(a,b){R.lastCharacterSearch.increment=a;R.lastCharacterSearch.forward=b.forward;R.lastCharacterSearch.selectedCharacter=b.selectedCharacter}var Pa={"(":"bracket",")":"bracket","{":"bracket","}":"bracket","[":"section","]":"section","*":"comment","/":"comment",m:"method",M:"method","#":"preprocess"};var Qa={bracket:{isComplete:function(a){if(a.nextCh===a.symb){a.depth++;if(a.depth>=1)return true}else if(a.nextCh===a.reverseSymb){a.depth--}return false}},section:{init:function(a){a.curMoveThrough=true;a.symb=(a.forward?"]":"[")===a.symb?"{":"}"},isComplete:function(a){return a.index===0&&a.nextCh===a.symb}},comment:{isComplete:function(a){var b=a.lastCh==="*"&&a.nextCh==="/";a.lastCh=a.nextCh;return b}},method:{init:function(a){a.symb=a.symb==="m"?"{":"}";a.reverseSymb=a.symb==="{"?"}":"{"},isComplete:function(a){if(a.nextCh===a.symb)return true;return false}},preprocess:{init:function(a){a.index=0},isComplete:function(a){if(a.nextCh==="#"){var b=a.lineText.match(/#(\w+)/)[1];if(b==="endif"){if(a.forward&&a.depth===0){return true}a.depth++}else if(b==="if"){if(!a.forward&&a.depth===0){return true}a.depth--}if(b==="else"&&a.depth===0)return true}return false}}};function Ra(a,b,c,d){var f=oa(a.getCursor());var g=c?1:-1;var h=c?a.lineCount():-1;var i=f.ch;var j=f.line;var k=a.getLine(j);var l={lineText:k,nextCh:k.charAt(i),lastCh:null,index:i,symb:d,reverseSymb:(c?{")":"(","}":"{"}:{"(":")","{":"}"})[d],forward:c,depth:0,curMoveThrough:false};var m=Pa[d];if(!m)return f;var n=Qa[m].init;var o=Qa[m].isComplete;if(n){n(l)}while(j!==h&&b){l.index+=g;l.nextCh=l.lineText.charAt(l.index);if(!l.nextCh){j+=g;l.lineText=a.getLine(j)||"";if(g>0){l.index=0}else{var p=l.lineText.length;l.index=p>0?p-1:0}l.nextCh=l.lineText.charAt(l.index)}if(o(l)){f.line=j;f.ch=l.index;b--}}if(l.nextCh||l.curMoveThrough){return e(j,l.index)}return f}function Sa(a,b,c,d,e){var f=b.line;var g=b.ch;var h=a.getLine(f);var i=c?1:-1;var j=d?u:t;if(e&&h==""){f+=i;h=a.getLine(f);if(!B(a,f)){return null}g=c?0:h.length}while(true){if(e&&h==""){return{from:0,to:0,line:f}}var k=i>0?h.length:-1;var l=k,m=k;while(g!=k){var n=false;for(var o=0;o0?0:h.length}}function Ta(a,b,c,d,f,g){var h=oa(b);var i=[];if(d&&!f||!d&&f){c++}var j=!(d&&f);for(var k=0;k0){if(n(l,d)){c--}l+=d}return new e(l,0)}var o=a.state.vim;if(o.visualLine&&n(g,1,true)){var p=o.sel.anchor;if(n(p.line,-1,true)){if(!f||p.line!=g){g+=1}}}var q=m(g);for(l=g;l<=i&&c;l++){if(n(l,1,true)){if(!f||m(l)!=q){c--}}}k=new e(l,0);if(l>i&&!q){q=true}else{f=false}for(l=g;l>h;l--){if(!f||m(l)==q||l==g){if(n(l,-1,true)){break}}}j=new e(l,0);return{start:j,end:k}}function Za(a,b,c,d){function f(a,b){if(b.pos+b.dir<0||b.pos+b.dir>=b.line.length){b.ln+=b.dir;if(!B(a,b.ln)){b.line=null;b.ln=null;b.pos=null;return}b.line=a.getLine(b.ln);b.pos=b.dir>0?0:b.line.length-1}else{b.pos+=b.dir}}function g(a,b,c,d){var e=a.getLine(b);var g=e==="";var h={line:e,ln:b,pos:c,dir:d};var i={ln:h.ln,pos:h.pos};var j=h.line==="";f(a,h);while(h.line!==null){i.ln=h.ln;i.pos=h.pos;if(h.line===""&&!j){return{ln:h.ln,pos:h.pos}}else if(g&&h.line!==""&&!G(h.line[h.pos])){return{ln:h.ln,pos:h.pos}}else if(H(h.line[h.pos])&&!g&&(h.pos===h.line.length-1||G(h.line[h.pos+1]))){g=true}f(a,h)}var e=a.getLine(i.ln);i.pos=0;for(var k=e.length-1;k>=0;--k){if(!G(e[k])){i.pos=k;break}}return i}function h(a,b,c,d){var e=a.getLine(b);var g={line:e,ln:b,pos:c,dir:d};var h={ln:g.ln,pos:null};var i=g.line==="";f(a,g);while(g.line!==null){if(g.line===""&&!i){if(h.pos!==null){return h}else{return{ln:g.ln,pos:g.pos}}}else if(H(g.line[g.pos])&&h.pos!==null&&!(g.ln===h.ln&&g.pos+1===h.pos)){return h}else if(g.line!==""&&!G(g.line[g.pos])){i=false;h={ln:g.ln,pos:g.pos}}f(a,g)}var e=a.getLine(h.ln);h.pos=0;for(var j=0;j0){if(d<0){i=h(a,i.ln,i.pos,d)}else{i=g(a,i.ln,i.pos,d)}c--}return e(i.ln,i.pos)}function $a(a,b,c,d){var f=b,g,h;var i={"(":/[()]/,")":/[()]/,"[":/[[\]]/,"]":/[[\]]/,"{":/[{}]/,"}":/[{}]/,"<":/[<>]/,">":/[<>]/}[c];var j={"(":"(",")":"(","[":"[","]":"[","{":"{","}":"{","<":"<",">":"<"}[c];var k=a.getLine(f.line).charAt(f.ch);var l=k===j?1:0;g=a.scanForBracket(e(f.line,f.ch+l),-1,undefined,{bracketRegex:i});h=a.scanForBracket(e(f.line,f.ch+l),1,undefined,{bracketRegex:i});if(!g||!h){return{start:f,end:f}}g=g.pos;h=h.pos ;if(g.line==h.line&&g.ch>h.ch||g.line>h.line){var m=g;g=h;h=m}if(d){h.ch+=1}else{g.ch+=1}return{start:g,end:h}}function _a(a,b,c,d){var f=oa(b);var g=a.getLine(f.line);var h=g.split("");var i,j,k,l;var m=h.indexOf(c);if(f.ch-1&&!i;k--){if(h[k]==c){i=k+1}}}if(i&&!j){for(k=i,l=h.length;k'+b+"",{bottom:true,duration:5e3})}else{alert(b)}}function ob(a,b){var c=''+(a||"")+'';if(b)c+=' '+b+"";return c}var pb="(Javascript regexp)";function qb(a,b){var c=(b.prefix||"")+" "+(b.desc||"");var d=ob(b.prefix,b.desc);cb(a,d,c,b.onClose,b)}function rb(a,b){if(a instanceof RegExp&&b instanceof RegExp){var c=["global","multiline","ignoreCase","source"];for(var d=0;d=b&&a<=c}else{return a==b}}}function zb(a){var b=a.getScrollInfo();var c=6;var d=10;var e=a.coordsChar({left:0,top:c+b.top},"local");var f=b.clientHeight-d+b.top;var g=a.coordsChar({left:0,top:f},"local");return{top:e.line,bottom:g.line}}function Ab(a,b,c){if(c=="'"||c=="`"){return R.jumpList.find(a,-1)||e(0,0)}else if(c=="."){return Bb(a)}var d=b.marks[c];return d&&d.find()}function Bb(a){var b=a.doc.history.done;for(var c=b.length;c--;){if(b[c].changes){return oa(b[c].changes[0].to)}}}var Cb=function(){this.buildCommandMap_()};Cb.prototype={processCommand:function(a,b,c){var d=this;a.operation(function(){a.curOp.isVimOp=true;d._processCommand(a,b,c)})},_processCommand:function(b,c,d){var e=b.state.vim;var f=R.registerController.getRegister(":");var g=f.toString();if(e.visualMode){Ha(b)}var h=new a.StringStream(c);f.setText(c);var i=d||{};i.input=c;try{this.parseInput_(b,h,i)}catch(m){nb(b,m);throw m}var j;var k;if(!i.commandName){if(i.line!==undefined){k="move"}}else{j=this.matchCommand_(i.commandName);if(j){k=j.name;if(j.excludeFromCommandHistory){f.setText(g)}this.parseCommandArgs_(h,i,j);if(j.type=="exToKey"){for(var l=0;l@~])/);if(d){c.commandName=d[1]}else{c.commandName=b.match(/.*/)[0]}return c},parseLineSpec_:function(a,b){var c=b.match(/^(\d+)/);if(c){return parseInt(c[1],10)-1}switch(b.next()){case".":return this.parseLineSpecOffset_(b,a.getCursor().line);case"$":return this.parseLineSpecOffset_(b,a.lastLine());case"'":var d=b.next();var e=Ab(a,a.state.vim,d);if(!e)throw new Error("Mark not set");return this.parseLineSpecOffset_(b,e.line);case"-":case"+":b.backUp(1);return this.parseLineSpecOffset_(b,a.getCursor().line);default:b.backUp(1);return undefined}},parseLineSpecOffset_:function(a,b){var c=a.match(/^([+-])?(\d+)/);if(c){var d=parseInt(c[2],10);if(c[1]=="-"){b-=d}else{b+=d}}return b},parseCommandArgs_:function(a,b,c){if(a.eol()){return}b.argString=a.match(/.*/)[0];var d=c.argDelimiter||/\s+/;var e=va(b.argString).split(d);if(e.length&&e[0]){b.args=e}},matchCommand_:function(a){for(var b=a.length;b>0;b--){var c=a.substring(0,b);if(this.commandMap_[c]){var d=this.commandMap_[c];if(d.name.indexOf(a)===0){return d}}}return null},buildCommandMap_:function(){this.commandMap_={};for(var a=0;a"}}}else{var f;c=c.join("");for(var h=0;h"}}nb(a,e)},sort:function(b,c){var d,f,g,h,i;function j(){if(c.argString){var b=new a.StringStream(c.argString);if(b.eat("!")){d=true}if(b.eol()){return}if(!b.eatSpace()){return"Invalid arguments"}var e=b.match(/([dinuox]+)?\s*(\/.+\/)?\s*/);if(!e&&!b.eol()){return"Invalid arguments"}if(e[1]){f=e[1].indexOf("i")!=-1;g=e[1].indexOf("u")!=-1;var j=e[1].indexOf("d")!=-1||e[1].indexOf("n")!=-1&&1;var k=e[1].indexOf("x")!=-1&&1;var l=e[1].indexOf("o")!=-1&&1;if(j+k+l>1){return"Invalid arguments"}h=j&&"decimal"||k&&"hex"||l&&"octal"}if(e[2]){i=new RegExp(e[2].substr(1,e[2].length-2),f?"i":"")}}}var k=j();if(k){nb(b,k+": "+c.argString);return}var l=c.line||b.firstLine();var m=c.lineEnd||c.line||b.lastLine();if(l==m){return}var n=e(l,0);var o=e(m,ua(b,m));var p=b.getRange(n,o).split("\n");var q=i?i:h=="decimal"?/(-?)([\d]+)/:h=="hex"?/(-?)(?:0x)?([0-9a-f]+)/i:h=="octal"?/([0-7]+)/:null;var r=h=="decimal"?10:h=="hex"?16:h=="octal"?8:null;var s=[],t=[];if(h||i){for(var u=0;u"}}if(!h){nb(a,k);return}var n=0;var o=function(){if(n=k){nb(b,"Invalid argument: "+c.argString.substring(f));return}for(var l=0;l<=k-j;l++){var m=String.fromCharCode(j+l);delete d.marks[m]}}else{nb(b,"Invalid argument: "+h+"-");return}}else{delete d.marks[g]}}}};var Eb=new Cb;function Fb(b,c,d,e,f,g,h,i,j){b.state.vim.exMode=true;var k=false;var l=g.from();function m(){b.operation(function(){while(!k){n();o()}p()})}function n(){var a=b.getRange(g.from(),g.to());var c=a.replace(h,i);g.replace(c)}function o(){while(g.findNext()&&yb(g.from(),e,f)){if(!d&&l&&g.from().line==l.line){continue}b.scrollIntoView(g.from(),30);b.setSelection(g.from(),g.to());l=g.from();k=false;return}k=true}function p(a){if(a){a()}b.focus();if(l){b.setCursor(l);var c=b.state.vim;c.exMode=false;c.lastHPos=c.lastHSPos=l.ch}if(j){j()}}function q(c,d,e){a.e_stop(c);var f=a.keyName(c);switch(f){case"Y":n();o();break;case"N":o();break;case"A":var g=j;j=undefined;b.operation(m);j=g;break;case"L":n();case"Q":case"Esc":case"Ctrl-C":case"Ctrl-[":p(e);break}if(k){p(e)}return true}o();if(k){nb(b,"No matches for "+h.source);return}if(!c){m();if(j){j()}return}qb(b,{prefix:"replace with "+i+" (y/n/a/q/l)",onKeyDown:q})}a.keyMap.vim={attach:i,detach:h,call:n};function Gb(b){var c=b.state.vim;var d=R.macroModeState;var e=R.registerController.getRegister(".");var f=d.isPlaying;var g=d.lastInsertModeChanges;if(!f){b.off("change",Nb);a.off(b.getInputField(),"keydown",Tb)}if(!f&&c.insertModeRepeat>1){Ub(b,c,c.insertModeRepeat-1,true);c.lastEditInputState.repeatOverride=c.insertModeRepeat}delete c.insertModeRepeat;c.insertMode=false;b.setCursor(b.getCursor().line,b.getCursor().ch-1);b.setOption("keyMap","vim");b.setOption("disableInput",true);b.toggleOverwrite(false);e.setText(g.changes.join(""));a.signal(b,"vim-mode-change",{mode:"normal"});if(d.isRecording){Lb(d)}}function Hb(a){b.unshift(a)}function Ib(a,b,c,d,e){var f={keys:a,type:b};f[b]=c;f[b+"Args"]=d;for(var g in e)f[g]=e[g];Hb(f)}K("insertModeEscKeysTimeout",200,"number");a.keyMap["vim-insert"]={fallthrough:["default"],attach:i,detach:h,call:n};a.keyMap["vim-replace"]={Backspace:"goCharLeft",fallthrough:["vim-insert"],attach:i,detach:h,call:n};function Jb(b,c,d,e){var f=R.registerController.getRegister(e);if(e==":"){if(f.keyBuffer[0]){Eb.processCommand(b,f.keyBuffer[0])}d.isPlaying=false;return}var g=f.keyBuffer;var h=0;d.isPlaying=true;d.replaySearchQueries=f.searchQueries.slice(0);for(var i=0;i|<\w+>|./.exec(j);l=k[0];j=j.substring(k.index+l.length);a.Vim.handleKey(b,l,"macro");if(c.insertMode){var m=f.insertModeChanges[h++].changes;R.macroModeState.lastInsertModeChanges.changes=m;Vb(b,m,1);Gb(b)}}}d.isPlaying=false}function Kb(a,b){if(a.isPlaying){return}var c=a.latestRegister;var d=R.registerController.getRegister(c);if(d){d.pushText(b)}}function Lb(a){if(a.isPlaying){return}var b=a.latestRegister;var c=R.registerController.getRegister(b);if(c&&c.pushInsertModeChanges){c.pushInsertModeChanges(a.lastInsertModeChanges)}}function Mb(a,b){if(a.isPlaying){return}var c=a.latestRegister;var d=R.registerController.getRegister(c);if(d&&d.pushSearchQuery){d.pushSearchQuery(b)}}function Nb(a,b){var c=R.macroModeState;var d=c.lastInsertModeChanges;if(!c.isPlaying){while(b){d.expectCursorActivityForChange=true;if(d.ignoreCount>1){d.ignoreCount--}else if(b.origin=="+input"||b.origin=="paste"||b.origin===undefined){var e=a.listSelections().length;if(e>1)d.ignoreCount=e;var f=b.text.join("\n");if(d.maybeReset){d.changes=[];d.maybeReset=false}if(f){if(a.state.overwrite&&!/\n/.test(f)){d.changes.push([f])}else{d.changes.push(f)}}}b=b.next}}}function Ob(a){var b=a.state.vim;if(b.insertMode){var c=R.macroModeState;if(c.isPlaying){return}var d=c.lastInsertModeChanges;if(d.expectCursorActivityForChange){d.expectCursorActivityForChange=false}else{d.maybeReset=true}}else if(!a.curOp.isVimOp){Rb(a,b)}if(b.visualMode){Pb(a)}}function Pb(a){var b="cm-animate-fat-cursor";var c=a.state.vim;var d=ha(a,oa(c.sel.head));var e=ja(d,0,1);Qb(c);if(d.ch==a.getLine(d.line).length){var f=document.createElement("span");f.textContent=" ";f.className=b;c.fakeCursorBookmark=a.setBookmark(d,{widget:f})}else{c.fakeCursor=a.markText(d,e,{className:b})}}function Qb(a){if(a.fakeCursor){a.fakeCursor.clear();a.fakeCursor=null}if(a.fakeCursorBookmark){a.fakeCursorBookmark.clear();a.fakeCursorBookmark=null}}function Rb(b,c){var d=b.getCursor("anchor");var e=b.getCursor("head");if(c.visualMode&&!b.somethingSelected()){Ha(b,false)}else if(!c.visualMode&&!c.insertMode&&b.somethingSelected()){c.visualMode=true;c.visualLine=false;a.signal(b,"vim-mode-change",{mode:"visual"})}if(c.visualMode){var f=!qa(e,d)?-1:0;var g=qa(e,d)?-1:0;e=ja(e,0,f);d=ja(d,0,g);c.sel={anchor:d,head:e};Wa(b,c,"<",ra(e,d));Wa(b,c,">",sa(e,d))}else if(!c.insertMode){c.lastHPos=b.getCursor().ch}}function Sb(a){this.keyName=a}function Tb(b){var c=R.macroModeState;var d=c.lastInsertModeChanges;var e=a.keyName(b);if(!e){return}function f(){if(d.maybeReset){d.changes=[];d.maybeReset=false}d.changes.push(new Sb(e));return true}if(e.indexOf("Delete")!=-1||e.indexOf("Backspace")!=-1){a.lookupKey(e,"vim-insert",f)}}function Ub(a,b,c,d){var e=R.macroModeState;e.isPlaying=true;var f=!!b.lastEditActionCommand;var g=b.inputState;function h(){if(f){_.processAction(a,b,b.lastEditActionCommand)}else{_.evalInput(a,b)}}function i(c){if(e.lastInsertModeChanges.changes.length>0){c=!b.lastEditActionCommand?1:c;var d=e.lastInsertModeChanges;Vb(a,d.changes,c)}}b.inputState=b.lastEditInputState;if(f&&b.lastEditActionCommand.interlaceInsertRepeat){for(var j=0;j