!function(e){"object"==typeof exports&&"object"==typeof module?e(require("../lib/codemirror"),require("../addon/search/searchcursor"),require("../addon/dialog/dialog"),require("../addon/edit/matchbrackets.js")):"function"==typeof define&&define.amd?define(["../lib/codemirror","../addon/search/searchcursor","../addon/dialog/dialog","../addon/edit/matchbrackets"],e):e(CodeMirror)}(function(e){"use strict";function t(b){var L=b.Pos;function r(e,t){e=e.state.vim;if(!e||e.insertMode)return t.head;var n=e.sel.head;return n?e.visualBlock&&t.head.line!=n.line?void 0:t.from()!=t.anchor||t.empty()||t.head.line!=n.line||t.head.ch==n.ch?t.head:new L(t.head.line,t.head.ch-1):t.head}var p=[{keys:"",type:"keyToKey",toKeys:"h"},{keys:"",type:"keyToKey",toKeys:"l"},{keys:"",type:"keyToKey",toKeys:"k"},{keys:"",type:"keyToKey",toKeys:"j"},{keys:"g",type:"keyToKey",toKeys:"gk"},{keys:"g",type:"keyToKey",toKeys:"gj"},{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:"",type:"keyToKey",toKeys:""},{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:"keyToKey",toKeys:"i",context:"normal"},{keys:"",type:"action",action:"toggleOverwrite",context:"insert"},{keys:"H",type:"motion",motion:"moveToTopLine",motionArgs:{linewise:!0,toJumplist:!0}},{keys:"M",type:"motion",motion:"moveToMiddleLine",motionArgs:{linewise:!0,toJumplist:!0}},{keys:"L",type:"motion",motion:"moveToBottomLine",motionArgs:{linewise:!0,toJumplist:!0}},{keys:"h",type:"motion",motion:"moveByCharacters",motionArgs:{forward:!1}},{keys:"l",type:"motion",motion:"moveByCharacters",motionArgs:{forward:!0}},{keys:"j",type:"motion",motion:"moveByLines",motionArgs:{forward:!0,linewise:!0}},{keys:"k",type:"motion",motion:"moveByLines",motionArgs:{forward:!1,linewise:!0}},{keys:"gj",type:"motion",motion:"moveByDisplayLines",motionArgs:{forward:!0}},{keys:"gk",type:"motion",motion:"moveByDisplayLines",motionArgs:{forward:!1}},{keys:"w",type:"motion",motion:"moveByWords",motionArgs:{forward:!0,wordEnd:!1}},{keys:"W",type:"motion",motion:"moveByWords",motionArgs:{forward:!0,wordEnd:!1,bigWord:!0}},{keys:"e",type:"motion",motion:"moveByWords",motionArgs:{forward:!0,wordEnd:!0,inclusive:!0}},{keys:"E",type:"motion",motion:"moveByWords",motionArgs:{forward:!0,wordEnd:!0,bigWord:!0,inclusive:!0}},{keys:"b",type:"motion",motion:"moveByWords",motionArgs:{forward:!1,wordEnd:!1}},{keys:"B",type:"motion",motion:"moveByWords",motionArgs:{forward:!1,wordEnd:!1,bigWord:!0}},{keys:"ge",type:"motion",motion:"moveByWords",motionArgs:{forward:!1,wordEnd:!0,inclusive:!0}},{keys:"gE",type:"motion",motion:"moveByWords",motionArgs:{forward:!1,wordEnd:!0,bigWord:!0,inclusive:!0}},{keys:"{",type:"motion",motion:"moveByParagraph",motionArgs:{forward:!1,toJumplist:!0}},{keys:"}",type:"motion",motion:"moveByParagraph",motionArgs:{forward:!0,toJumplist:!0}},{keys:"(",type:"motion",motion:"moveBySentence",motionArgs:{forward:!1}},{keys:")",type:"motion",motion:"moveBySentence",motionArgs:{forward:!0}},{keys:"",type:"motion",motion:"moveByPage",motionArgs:{forward:!0}},{keys:"",type:"motion",motion:"moveByPage",motionArgs:{forward:!1}},{keys:"",type:"motion",motion:"moveByScroll",motionArgs:{forward:!0,explicitRepeat:!0}},{keys:"",type:"motion",motion:"moveByScroll",motionArgs:{forward:!1,explicitRepeat:!0}},{keys:"gg",type:"motion",motion:"moveToLineOrEdgeOfDocument",motionArgs:{forward:!1,explicitRepeat:!0,linewise:!0,toJumplist:!0}},{keys:"G",type:"motion",motion:"moveToLineOrEdgeOfDocument",motionArgs:{forward:!0,explicitRepeat:!0,linewise:!0,toJumplist:!0}},{keys:"g$",type:"motion",motion:"moveToEndOfDisplayLine"},{keys:"g^",type:"motion",motion:"moveToStartOfDisplayLine"},{keys:"g0",type:"motion",motion:"moveToStartOfDisplayLine"},{keys:"0",type:"motion",motion:"moveToStartOfLine"},{keys:"^",type:"motion",motion:"moveToFirstNonWhiteSpaceCharacter"},{keys:"+",type:"motion",motion:"moveByLines",motionArgs:{forward:!0,toFirstChar:!0}},{keys:"-",type:"motion",motion:"moveByLines",motionArgs:{forward:!1,toFirstChar:!0}},{keys:"_",type:"motion",motion:"moveByLines",motionArgs:{forward:!0,toFirstChar:!0,repeatOffset:-1}},{keys:"$",type:"motion",motion:"moveToEol",motionArgs:{inclusive:!0}},{keys:"%",type:"motion",motion:"moveToMatchedSymbol",motionArgs:{inclusive:!0,toJumplist:!0}},{keys:"f",type:"motion",motion:"moveToCharacter",motionArgs:{forward:!0,inclusive:!0}},{keys:"F",type:"motion",motion:"moveToCharacter",motionArgs:{forward:!1}},{keys:"t",type:"motion",motion:"moveTillCharacter",motionArgs:{forward:!0,inclusive:!0}},{keys:"T",type:"motion",motion:"moveTillCharacter",motionArgs:{forward:!1}},{keys:";",type:"motion",motion:"repeatLastCharacterSearch",motionArgs:{forward:!0}},{keys:",",type:"motion",motion:"repeatLastCharacterSearch",motionArgs:{forward:!1}},{keys:"'",type:"motion",motion:"goToMark",motionArgs:{toJumplist:!0,linewise:!0}},{keys:"`",type:"motion",motion:"goToMark",motionArgs:{toJumplist:!0}},{keys:"]`",type:"motion",motion:"jumpToMark",motionArgs:{forward:!0}},{keys:"[`",type:"motion",motion:"jumpToMark",motionArgs:{forward:!1}},{keys:"]'",type:"motion",motion:"jumpToMark",motionArgs:{forward:!0,linewise:!0}},{keys:"['",type:"motion",motion:"jumpToMark",motionArgs:{forward:!1,linewise:!0}},{keys:"]p",type:"action",action:"paste",isEdit:!0,actionArgs:{after:!0,isEdit:!0,matchIndent:!0}},{keys:"[p",type:"action",action:"paste",isEdit:!0,actionArgs:{after:!1,isEdit:!0,matchIndent:!0}},{keys:"]",type:"motion",motion:"moveToSymbol",motionArgs:{forward:!0,toJumplist:!0}},{keys:"[",type:"motion",motion:"moveToSymbol",motionArgs:{forward:!1,toJumplist:!0}},{keys:"|",type:"motion",motion:"moveToColumn"},{keys:"o",type:"motion",motion:"moveToOtherHighlightedEnd",context:"visual"},{keys:"O",type:"motion",motion:"moveToOtherHighlightedEnd",motionArgs:{sameLine:!0},context:"visual"},{keys:"d",type:"operator",operator:"delete"},{keys:"y",type:"operator",operator:"yank"},{keys:"c",type:"operator",operator:"change"},{keys:"=",type:"operator",operator:"indentAuto"},{keys:">",type:"operator",operator:"indent",operatorArgs:{indentRight:!0}},{keys:"<",type:"operator",operator:"indent",operatorArgs:{indentRight:!1}},{keys:"g~",type:"operator",operator:"changeCase"},{keys:"gu",type:"operator",operator:"changeCase",operatorArgs:{toLower:!0},isEdit:!0},{keys:"gU",type:"operator",operator:"changeCase",operatorArgs:{toLower:!1},isEdit:!0},{keys:"n",type:"motion",motion:"findNext",motionArgs:{forward:!0,toJumplist:!0}},{keys:"N",type:"motion",motion:"findNext",motionArgs:{forward:!1,toJumplist:!0}},{keys:"gn",type:"motion",motion:"findAndSelectNextInclusive",motionArgs:{forward:!0}},{keys:"gN",type:"motion",motion:"findAndSelectNextInclusive",motionArgs:{forward:!1}},{keys:"x",type:"operatorMotion",operator:"delete",motion:"moveByCharacters",motionArgs:{forward:!0},operatorMotionArgs:{visualLine:!1}},{keys:"X",type:"operatorMotion",operator:"delete",motion:"moveByCharacters",motionArgs:{forward:!1},operatorMotionArgs:{visualLine:!0}},{keys:"D",type:"operatorMotion",operator:"delete",motion:"moveToEol",motionArgs:{inclusive:!0},context:"normal"},{keys:"D",type:"operator",operator:"delete",operatorArgs:{linewise:!0},context:"visual"},{keys:"Y",type:"operatorMotion",operator:"yank",motion:"expandToLine",motionArgs:{linewise:!0},context:"normal"},{keys:"Y",type:"operator",operator:"yank",operatorArgs:{linewise:!0},context:"visual"},{keys:"C",type:"operatorMotion",operator:"change",motion:"moveToEol",motionArgs:{inclusive:!0},context:"normal"},{keys:"C",type:"operator",operator:"change",operatorArgs:{linewise:!0},context:"visual"},{keys:"~",type:"operatorMotion",operator:"changeCase",motion:"moveByCharacters",motionArgs:{forward:!0},operatorArgs:{shouldMoveCursor:!0},context:"normal"},{keys:"~",type:"operator",operator:"changeCase",context:"visual"},{keys:"",type:"operatorMotion",operator:"delete",motion:"moveToStartOfLine",context:"insert"},{keys:"",type:"operatorMotion",operator:"delete",motion:"moveByWords",motionArgs:{forward:!1,wordEnd:!1},context:"insert"},{keys:"",type:"idle",context:"normal"},{keys:"",type:"action",action:"jumpListWalk",actionArgs:{forward:!0}},{keys:"",type:"action",action:"jumpListWalk",actionArgs:{forward:!1}},{keys:"",type:"action",action:"scroll",actionArgs:{forward:!0,linewise:!0}},{keys:"",type:"action",action:"scroll",actionArgs:{forward:!1,linewise:!0}},{keys:"a",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"charAfter"},context:"normal"},{keys:"A",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"eol"},context:"normal"},{keys:"A",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"endOfSelectedArea"},context:"visual"},{keys:"i",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"inplace"},context:"normal"},{keys:"gi",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"lastEdit"},context:"normal"},{keys:"I",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"firstNonBlank"},context:"normal"},{keys:"gI",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"bol"},context:"normal"},{keys:"I",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"startOfSelectedArea"},context:"visual"},{keys:"o",type:"action",action:"newLineAndEnterInsertMode",isEdit:!0,interlaceInsertRepeat:!0,actionArgs:{after:!0},context:"normal"},{keys:"O",type:"action",action:"newLineAndEnterInsertMode",isEdit:!0,interlaceInsertRepeat:!0,actionArgs:{after:!1},context:"normal"},{keys:"v",type:"action",action:"toggleVisualMode"},{keys:"V",type:"action",action:"toggleVisualMode",actionArgs:{linewise:!0}},{keys:"",type:"action",action:"toggleVisualMode",actionArgs:{blockwise:!0}},{keys:"",type:"action",action:"toggleVisualMode",actionArgs:{blockwise:!0}},{keys:"gv",type:"action",action:"reselectLastSelection"},{keys:"J",type:"action",action:"joinLines",isEdit:!0},{keys:"gJ",type:"action",action:"joinLines",actionArgs:{keepSpaces:!0},isEdit:!0},{keys:"p",type:"action",action:"paste",isEdit:!0,actionArgs:{after:!0,isEdit:!0}},{keys:"P",type:"action",action:"paste",isEdit:!0,actionArgs:{after:!1,isEdit:!0}},{keys:"r",type:"action",action:"replace",isEdit:!0},{keys:"@",type:"action",action:"replayMacro"},{keys:"q",type:"action",action:"enterMacroRecordMode"},{keys:"R",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{replace:!0},context:"normal"},{keys:"R",type:"operator",operator:"change",operatorArgs:{linewise:!0,fullLine:!0},context:"visual",exitVisualBlock:!0},{keys:"u",type:"action",action:"undo",context:"normal"},{keys:"u",type:"operator",operator:"changeCase",operatorArgs:{toLower:!0},context:"visual",isEdit:!0},{keys:"U",type:"operator",operator:"changeCase",operatorArgs:{toLower:!1},context:"visual",isEdit:!0},{keys:"",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:"zb",type:"action",action:"scrollToCursor",actionArgs:{position:"bottom"}},{keys:"z-",type:"action",action:"scrollToCursor",actionArgs:{position:"bottom"},motion:"moveToFirstNonWhiteSpaceCharacter"},{keys:".",type:"action",action:"repeatLastEdit"},{keys:"",type:"action",action:"incrementNumberToken",isEdit:!0,actionArgs:{increase:!0,backtrack:!1}},{keys:"",type:"action",action:"incrementNumberToken",isEdit:!0,actionArgs:{increase:!1,backtrack:!1}},{keys:"",type:"action",action:"indent",actionArgs:{indentRight:!0},context:"insert"},{keys:"",type:"action",action:"indent",actionArgs:{indentRight:!1},context:"insert"},{keys:"a",type:"motion",motion:"textObjectManipulation"},{keys:"i",type:"motion",motion:"textObjectManipulation",motionArgs:{textObjectInner:!0}},{keys:"/",type:"search",searchArgs:{forward:!0,querySrc:"prompt",toJumplist:!0}},{keys:"?",type:"search",searchArgs:{forward:!1,querySrc:"prompt",toJumplist:!0}},{keys:"*",type:"search",searchArgs:{forward:!0,querySrc:"wordUnderCursor",wholeWordOnly:!0,toJumplist:!0}},{keys:"#",type:"search",searchArgs:{forward:!1,querySrc:"wordUnderCursor",wholeWordOnly:!0,toJumplist:!0}},{keys:"g*",type:"search",searchArgs:{forward:!0,querySrc:"wordUnderCursor",toJumplist:!0}},{keys:"g#",type:"search",searchArgs:{forward:!1,querySrc:"wordUnderCursor",toJumplist:!0}},{keys:":",type:"ex"}],w=p.length,o=[{name:"colorscheme",shortName:"colo"},{name:"map"},{name:"imap",shortName:"im"},{name:"nmap",shortName:"nm"},{name:"vmap",shortName:"vm"},{name:"unmap"},{name:"write",shortName:"w"},{name:"undo",shortName:"u"},{name:"redo",shortName:"red"},{name:"set",shortName:"se"},{name:"setlocal",shortName:"setl"},{name:"setglobal",shortName:"setg"},{name:"sort",shortName:"sor"},{name:"substitute",shortName:"s",possiblyAsync:!0},{name:"nohlsearch",shortName:"noh"},{name:"yank",shortName:"y"},{name:"delmarks",shortName:"delm"},{name:"registers",shortName:"reg",excludeFromCommandHistory:!0},{name:"vglobal",shortName:"v"},{name:"global",shortName:"g"}];function i(e){e.setOption("disableInput",!0),e.setOption("showCursorWhenSelecting",!1),b.signal(e,"vim-mode-change",{mode:"normal"}),e.on("cursorActivity",Ze),se(e),b.on(e.getInputField(),"paste",x(e))}function t(e,t){this==b.keyMap.vim&&(e.options.$customCursor=null,b.rmClass(e.getWrapperElement(),"cm-fat-cursor")),t&&t.attach==n||((t=e).setOption("disableInput",!1),t.off("cursorActivity",Ze),b.off(t.getInputField(),"paste",x(t)),t.state.vim=null,De&&clearTimeout(De))}function n(e,t){this==b.keyMap.vim&&(e.curOp&&(e.curOp.selectionChanged=!0),e.options.$customCursor=r,b.addClass(e.getWrapperElement(),"cm-fat-cursor")),t&&t.attach==n||i(e)}function s(e,t){if(t){if(this[e])return this[e];e=function(e){if("'"==e.charAt(0))return e.charAt(1);var t=e.split(/-(?!$)/),e=t[t.length-1];{if(1==t.length&&1==t[0].length)return!1;if(2==t.length&&"Shift"==t[0]&&1==e.length)return!1}for(var n=!1,r=0;r"}(e);if(!e)return!1;var n=v.findKey(t,e);return"function"==typeof n&&b.signal(t,"vim-keypress",e),n}}b.defineOption("vimMode",!1,function(e,t,n){t&&"vim"!=e.getOption("keyMap")?e.setOption("keyMap","vim"):!t&&n!=b.Init&&/^vim/.test(e.getOption("keyMap"))&&e.setOption("keyMap","default")});var c={Shift:"S",Ctrl:"C",Alt:"A",Cmd:"D",Mod:"A",CapsLock:""},u={Enter:"CR",Backspace:"BS",Delete:"Del",Insert:"Ins"};function x(e){var t=e.state.vim;return t.onPasteFn||(t.onPasteFn=function(){t.insertMode||(e.setCursor(y(e.getCursor(),0,1)),fe.enterInsertMode(e,{},t))}),t.onPasteFn}var M=/[\d]/,m=[b.isWordChar,function(e){return e&&!b.isWordChar(e)&&!/\s/.test(e)}],J=[function(e){return/\S/.test(e)}];function q(e,t){for(var n=[],r=e;r"]),Y=[].concat(z,X,Z,["-",'"',".",":","_","/"]);try{Q=new RegExp("^[\\p{Lu}]$","u")}catch(e){Q=/^[A-Z]$/}function ee(e,t){return t>=e.firstLine()&&t<=e.lastLine()}function te(e){return/^[a-z]$/.test(e)}function d(e){return Q.test(e)}function A(e){return/^\s*$/.test(e)}function h(e){return-1!=".?!".indexOf(e)}function ne(e,t){for(var n=0;n"!=i||e.insertMode||e.visualMode||!n||""!=e.status?t||!n||o.inVirtualSelectionMode?s=v.handleKey(o,i,a):(l=rt(e),o.operation(function(){o.curOp.isVimOp=!0,o.forEachSelection(function(){var e=N(n=o.getCursor("head"),r=o.getCursor("anchor"))?0:-1,t=N(n,r)?-1:0,n=y(n,0,e),r=y(r,0,t);o.state.vim.sel.head=n,o.state.vim.sel.anchor=r,s=v.handleKey(o,i,a),o.virtualSelection&&(o.state.vim=rt(l))}),o.curOp.cursorActivity&&!s&&(o.curOp.cursorActivity=!1),o.state.vim=e},!0)):E(o)}!s||e.visualMode||e.insert||e.visualMode==o.somethingSelected()||Ge(o,e);return s},findKey:function(s,l,n){var r,c=se(s);function o(){var e,t=R.macroModeState;if(t.isRecording){if("q"==l)return t.exitMacroRecordMode(),E(s),1;"mapping"!=n&&(e=l,(t=t).isPlaying||(t=t.latestRegister,(t=R.registerController.getRegister(t))&&t.pushText(e)))}}function u(){if(""==l){if(c.visualMode)D(s);else{if(!c.insertMode)return;C(s)}return E(s),1}}return!1===(r=(c.insertMode?function(){if(u())return!0;for(var e=c.inputState.keyBuffer=c.inputState.keyBuffer+l,t=1==l.length,n=g.matchCommand(e,p,c.inputState,"insert");1|<\w+>|./.exec(t),l=e[0],t=t.substring(e.index+l.length),v.handleKey(s,l,"mapping");else g.processCommand(s,c,r)}catch(e){throw s.state.vim=void 0,se(s),v.suppressErrorLogging||console.log(e),e}return!0})}},handleEx:function(e,t){k.processCommand(e,t)},defineMotion:function(e,t){O[e]=t},defineAction:function(e,t){fe[e]=t},defineOperator:function(e,t){de[e]=t},mapCommand:function(e,t,n,r,o){var i,a={keys:e,type:t};for(i in a[t]=n,a[t+"Args"]=r,o)a[i]=o[i];ze(a)},_mapCommand:ze,defineRegister:function(e,t){var n=R.registerController.registers;if(!e||1!=e.length)throw Error("Register name must be 1 character");if(n[e])throw Error("Register already defined "+e);n[e]=t,Y.push(e)},exitVisualMode:D,exitInsertMode:C};function ce(){this.prefixRepeat=[],this.motionRepeat=[],this.operator=null,this.operatorArgs=null,this.motion=null,this.motionArgs=null,this.keyBuffer=[],this.registerName=null}function E(e,t){e.state.vim.inputState=new ce,b.signal(e,"vim-command-done",t)}function l(e,t,n){this.clear(),this.keyBuffer=[e||""],this.insertModeChanges=[],this.searchQueries=[],this.linewise=!!t,this.blockwise=!!n}function ue(e){this.registers=e,this.unnamedRegister=e['"']=new l,e["."]=new l,e[":"]=new l,e["/"]=new l}function pe(){this.historyBuffer=[],this.iterator=0,this.initialPrefix=null}ce.prototype.pushRepeatDigit=function(e){this.operator?this.motionRepeat=this.motionRepeat.concat(e):this.prefixRepeat=this.prefixRepeat.concat(e)},ce.prototype.getRepeat=function(){var e=0;return(0=n.length?(this.iterator=n.length,this.initialPrefix):o<0?e:void 0},pushInput:function(e){var t=this.historyBuffer.indexOf(e);-1"==t.slice(-11)?(n=t.length-11,r=e.slice(0,n),o=t.slice(0,n),r==o&&e.length>n?"full":0==o.indexOf(r)&&"partial"):e==t?"full":0==t.indexOf(e)&&"partial"}}(e,l.keys))||("partial"==o&&i.push(l),"full"==o&&a.push(l))}return{partial:i.length&&i,full:a.length&&a}}(e,t,r,n);if(!o.full&&!o.partial)return{type:"none"};if(!o.full&&o.partial)return{type:"partial"};for(var i=0;i"==s.keys.slice(-11)){t=function(e){var t=/^.*(<[^>]+>)$/.exec(e),n=t?t[1]:e.slice(-1);if(1":n="\n";break;case"":n=" ";break;default:n=""}return n}(e);if(!t||1",onKeyDown:r,selectValueOnOpen:!1}):He(i,{onClose:n,prefix:":",onKeyDown:r})},evalInput:function(e,t){var n,r,o,i,a=t.inputState,s=a.motion,l=a.motionArgs||{},c=a.operator,u=a.operatorArgs||{},p=a.registerName,h=t.sel,d=B(t.visualMode?I(e,h.head):e.getCursor("head")),f=B(t.visualMode?I(e,h.anchor):e.getCursor("anchor")),m=B(d),f=B(f);if(c&&this.recordLastEdit(t,a),0<(n=void 0!==a.repeatOverride?a.repeatOverride:a.getRepeat())&&l.explicitRepeat?l.repeatIsExplicit=!0:(l.noRepeat||!l.explicitRepeat&&0===n)&&(l.repeatIsExplicit=!(n=1)),a.selectedCharacter&&(l.selectedCharacter=u.selectedCharacter=a.selectedCharacter),l.repeat=n,E(e),s){var g,a=O[s](e,d,l,t,a);if(t.lastMotion=O[s],!a)return;l.toJumplist&&((g=(s=R.jumpList).cachedCursor)?(Se(e,g,a),delete s.cachedCursor):Se(e,d,a)),g=(g=a instanceof Array?(M=a[0],a[1]):a)||B(d),t.visualMode?(t.visualBlock&&g.ch===1/0||(g=I(e,g)),M=M&&I(e,M),h.anchor=M=M||f,h.head=g,H(e),V(e,t,"<",N(M,g)?M:g),V(e,t,">",N(M,g)?g:M)):c||(g=I(e,g),e.setCursor(g.line,g.ch))}if(c){if(u.lastSel?(M=f,s=u.lastSel,a=Math.abs(s.head.line-s.anchor.line),d=Math.abs(s.head.ch-s.anchor.ch),g=s.visualLine?new L(f.line+a,f.ch):s.visualBlock?new L(f.line+a,f.ch+d):s.head.line==s.anchor.line?new L(f.line,f.ch+d):new L(f.line+a,f.ch),t.visualMode=!0,t.visualLine=s.visualLine,t.visualBlock=s.visualBlock,h=t.sel={anchor:M,head:g},H(e)):t.visualMode&&(u.lastSel={anchor:B(h.anchor),head:B(h.head),visualBlock:t.visualBlock,visualLine:t.visualLine}),t.visualMode){if(o=P(h.head,h.anchor),i=j(h.head,h.anchor),r=t.visualLine||u.linewise,S=xe(e,{anchor:o,head:i},x=t.visualBlock?"block":r?"line":"char"),r){var v=S.ranges;if("block"==x)for(var y=0;ys:a.line=t.line.length){if(t.ln+=t.dir,!ee(e,t.ln))return t.line=null,t.ln=null,void(t.pos=null);t.line=e.getLine(t.ln),t.pos=0"===o?/[(){}[\]<>]/:/[(){}[\]]/,e.findMatchingBracket(new L(r,o),{bracketRegex:n}).to):t},moveToStartOfLine:function(e,t){return new L(t.line,0)},moveToLineOrEdgeOfDocument:function(e,t,n){var r=n.forward?e.lastLine():e.firstLine();return n.repeatIsExplicit&&(r=n.repeat-e.getOption("firstLineNumber")),new L(r,S(e.getLine(r)))},moveToStartOfDisplayLine:function(e){return e.execCommand("goLineLeft"),e.getCursor()},moveToEndOfDisplayLine:function(e){e.execCommand("goLineRight");e=e.getCursor();return"before"==e.sticky&&e.ch--,e},textObjectManipulation:function(e,t,n,r){var o=n.selectedCharacter,i=("b"==o?o="(":"B"==o&&(o="{"),!n.textObjectInner);if({"(":")",")":"(","{":"}","}":"{","[":"]","]":"[","<":">",">":"<"}[o])a=function(e,t,n,r){var o,i={"(":/[()]/,")":/[()]/,"[":/[[\]]/,"]":/[[\]]/,"{":/[{}]/,"}":/[{}]/,"<":/[<>]/,">":/[<>]/}[n],n={"(":"(",")":"(","[":"[","]":"[","{":"{","}":"{","<":"<",">":"<"}[n],n=e.getLine(t.line).charAt(t.ch)===n?1:0;if(o=e.scanForBracket(new L(t.line,t.ch+n),-1,void 0,{bracketRegex:i}),e=e.scanForBracket(new L(t.line,t.ch+n),1,void 0,{bracketRegex:i}),!o||!e)return{start:t,end:t};o=o.pos,e=e.pos,(o.line==e.line&&o.ch>e.ch||o.line>e.line)&&(n=o,o=e,e=n);r?e.ch+=1:o.ch+=1;return{start:o,end:e}}(e,t,o,i);else if({"'":!0,'"':!0,"`":!0}[o])a=function(e,t,n,r){var o,i,a,s,t=B(t),l=e.getLine(t.line).split(""),e=l.indexOf(n);t.che.lastLine()&&t.linewise&&!i?e.replaceRange("",o,s):e.replaceRange("",a,s),t.linewise&&(i||(e.setCursor(o),b.commands.newlineAndIndent(e)),a.ch=Number.MAX_VALUE),a);R.registerController.pushText(t.registerName,"change",r,t.linewise,1i.top?(n.line+=(o-i.top)/r,n.line=Math.ceil(n.line),e.setCursor(n),i=e.charCoords(n,"local"),e.scrollTo(null,i.top)):e.scrollTo(null,o):(t=o+e.getScrollInfo().clientHeight)|<\w+>|./.exec(g),f=m[0],g=g.substring(m.index+f.length),v.handleKey(a,f,"macro"),s.insertMode&&(m=u.insertModeChanges[h++].changes,R.macroModeState.lastInsertModeChanges.changes=m,nt(a,m,1),C(a));l.isPlaying=!1}}},enterMacroRecordMode:function(e,t){var n=R.macroModeState,t=t.selectedCharacter;R.registerController.isValidRegister(t)&&n.enterMacroRecordMode(e,t)},toggleOverwrite:function(e){e.state.overwrite?(e.toggleOverwrite(!1),e.setOption("keyMap","vim-insert"),b.signal(e,"vim-mode-change",{mode:"insert"})):(e.toggleOverwrite(!0),e.setOption("keyMap","vim-replace"),b.signal(e,"vim-mode-change",{mode:"replace"}))},enterInsertMode:function(e,t,n){if(!e.getOption("readOnly")){n.insertMode=!0,n.insertModeRepeat=t&&t.repeat||1;var r=t?t.insertAt:null,o=n.sel,i=t.head||e.getCursor("head"),a=e.listSelections().length;if("eol"==r)i=new L(i.line,_(e,i.line));else if("bol"==r)i=new L(i.line,0);else if("charAfter"==r)i=y(i,0,1);else if("firstNonBlank"==r)i=O.moveToFirstNonWhiteSpaceCharacter(e,i);else if("startOfSelectedArea"==r){if(!n.visualMode)return;n.visualBlock?(i=new L(Math.min(o.head.line,o.anchor.line),Math.min(o.head.ch,o.anchor.ch)),a=Math.abs(o.head.line-o.anchor.line)+1):i=o.head.line=o.anchor.line?y(o.head,0,1):new L(o.anchor.line,0)}else if("inplace"==r){if(n.visualMode)return}else"lastEdit"==r&&(i=Je(e)||i);e.setOption("disableInput",!1),t&&t.replace?(e.toggleOverwrite(!0),e.setOption("keyMap","vim-replace"),b.signal(e,"vim-mode-change",{mode:"replace"})):(e.toggleOverwrite(!1),e.setOption("keyMap","vim-insert"),b.signal(e,"vim-mode-change",{mode:"insert"})),R.macroModeState.isPlaying||(e.on("change",Xe),b.on(e.getInputField(),"keydown",et)),n.visualMode&&D(e),Ce(e,i,a)}},toggleVisualMode:function(e,t,n){var r=t.repeat,o=e.getCursor();n.visualMode?n.visualLine^t.linewise||n.visualBlock^t.blockwise?(n.visualLine=!!t.linewise,n.visualBlock=!!t.blockwise,b.signal(e,"vim-mode-change",{mode:"visual",subMode:n.visualLine?"linewise":n.visualBlock?"blockwise":""}),H(e)):D(e):(n.visualMode=!0,n.visualLine=!!t.linewise,n.visualBlock=!!t.blockwise,t=I(e,new L(o.line,o.ch+r-1)),n.sel={anchor:o,head:t},b.signal(e,"vim-mode-change",{mode:"visual",subMode:n.visualLine?"linewise":n.visualBlock?"blockwise":""}),H(e),V(e,n,"<",P(o,t)),V(e,n,">",j(o,t)))},reselectLastSelection:function(e,t,n){var r,o,i=n.lastSelection;n.visualMode&&we(e,n),i&&(r=i.anchorMark.find(),o=i.headMark.find(),r&&o&&(n.sel={anchor:r,head:o},n.visualMode=!0,n.visualLine=i.visualLine,n.visualBlock=i.visualBlock,H(e),V(e,n,"<",P(r,o)),V(e,n,">",j(r,o)),b.signal(e,"vim-mode-change",{mode:"visual",subMode:n.visualLine?"linewise":n.visualBlock?"blockwise":""})))},joinLines:function(e,t,n){n.visualMode?(o=e.getCursor("anchor"),N(r=e.getCursor("head"),o)&&(s=r,r=o,o=s),r.ch=_(e,r.line)-1):(c=Math.max(t.repeat,2),o=e.getCursor(),r=I(e,new L(o.line+c-1,1/0)));for(var r,o,i=0,a=o.line;an.lastLine()&&n.replaceRange("\n",new L(M,0)),_(n,M)s.length&&(t=s.length),new L(i.line,t));"\n"==o?(n.visualMode||e.replaceRange("",i,s),(b.commands.newlineAndIndentContinueComment||b.commands.newlineAndIndent)(e)):(t=(t=e.getRange(i,s)).replace(/[^\n]/g,o),n.visualBlock?(r=new Array(e.getOption("tabSize")+1).join(" "),t=(t=e.getSelection()).replace(/\t/g,r).replace(/[^\n]/g,o).split("\n"),e.replaceSelections(t)):e.replaceRange(t,i,s),n.visualMode?(i=N(a[0].anchor,a[0].head)?a[0].anchor:a[0].head,e.setCursor(i),D(e,!1)):e.setCursor(y(s,0,-1)))},incrementNumberToken:function(e,t){for(var n,r,o,i,a,s,l,c=e.getCursor(),u=e.getLine(c.line),p=/(-?)(?:(0x)([\da-f]+)|(0b|0|)(\d+))/gi;null!==(n=p.exec(u))&&(o=(r=n.index)+n[0].length,!(c.chr&&(o.line=r),o.ch=_(e,o.line)),{ranges:[{anchor:i,head:o}],primary:0};if("block"==n){for(var a=Math.min(i.line,o.line),s=i.ch,l=Math.max(i.line,o.line),c=o.ch,u=(s=a.length)return null;r?l=J[0]:(l=m[0])(a.charAt(s))||(l=m[1]);for(var c=s,u=s;l(a.charAt(c))&&c=e.line.length?e.line=null:e.pos+=e.dir}for(var o={ln:t.line,pos:t.ch};0@~])/);return n.commandName=e?e[1]:t.match(/.*/)[0],n},parseLineSpec_:function(e,t){var n=t.match(/^(\d+)/);if(n)return parseInt(n[1],10)-1;switch(t.next()){case".":return this.parseLineSpecOffset_(t,e.getCursor().line);case"$":return this.parseLineSpecOffset_(t,e.lastLine());case"'":var r=t.next(),r=Ue(e,e.state.vim,r);if(r)return this.parseLineSpecOffset_(t,r.line);throw new Error("Mark not set");case"-":case"+":return t.backUp(1),this.parseLineSpecOffset_(t,e.getCursor().line);default:return void t.backUp(1)}},parseLineSpecOffset_:function(e,t){var n,e=e.match(/^([+-])?(\d+)/);return e&&(n=parseInt(e[2],10),"-"==e[1]?t-=n:t+=n),t},parseCommandArgs_:function(e,t,n){e.eol()||(t.argString=e.match(/.*/)[0],e=n.argDelimiter||/\s+/,(n=ye(t.argString).split(e)).length&&n[0]&&(t.args=n))},matchCommand_:function(e){for(var t=e.length;0",j(i,o))):t.insertMode||(t.lastHPos=e.getCursor().ch)}function Ye(e){this.keyName=e}function et(e){var t=R.macroModeState.lastInsertModeChanges,n=b.keyName(e);!n||-1==n.indexOf("Delete")&&-1==n.indexOf("Backspace")||b.lookupKey(n,"vim-insert",function(){return t.maybeReset&&(t.changes=[],t.maybeReset=!1),t.changes.push(new Ye(n)),!0})}function tt(n,r,e,t){var o=R.macroModeState,i=(o.isPlaying=!0,!!r.lastEditActionCommand),a=r.inputState;function s(){i?g.processAction(n,r,r.lastEditActionCommand):g.evalInput(n,r)}function l(e){var t;0