1 line
78 KiB
JavaScript
1 line
78 KiB
JavaScript
!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(ze){"use strict";var Xe=[{keys:"<Left>",type:"keyToKey",toKeys:"h"},{keys:"<Right>",type:"keyToKey",toKeys:"l"},{keys:"<Up>",type:"keyToKey",toKeys:"k"},{keys:"<Down>",type:"keyToKey",toKeys:"j"},{keys:"<Space>",type:"keyToKey",toKeys:"l"},{keys:"<BS>",type:"keyToKey",toKeys:"h",context:"normal"},{keys:"<Del>",type:"keyToKey",toKeys:"x",context:"normal"},{keys:"<C-Space>",type:"keyToKey",toKeys:"W"},{keys:"<C-BS>",type:"keyToKey",toKeys:"B",context:"normal"},{keys:"<S-Space>",type:"keyToKey",toKeys:"w"},{keys:"<S-BS>",type:"keyToKey",toKeys:"b",context:"normal"},{keys:"<C-n>",type:"keyToKey",toKeys:"j"},{keys:"<C-p>",type:"keyToKey",toKeys:"k"},{keys:"<C-[>",type:"keyToKey",toKeys:"<Esc>"},{keys:"<C-c>",type:"keyToKey",toKeys:"<Esc>"},{keys:"<C-[>",type:"keyToKey",toKeys:"<Esc>",context:"insert"},{keys:"<C-c>",type:"keyToKey",toKeys:"<Esc>",context:"insert"},{keys:"s",type:"keyToKey",toKeys:"cl",context:"normal"},{keys:"s",type:"keyToKey",toKeys:"c",context:"visual"},{keys:"S",type:"keyToKey",toKeys:"cc",context:"normal"},{keys:"S",type:"keyToKey",toKeys:"VdO",context:"visual"},{keys:"<Home>",type:"keyToKey",toKeys:"0"},{keys:"<End>",type:"keyToKey",toKeys:"$"},{keys:"<PageUp>",type:"keyToKey",toKeys:"<C-b>"},{keys:"<PageDown>",type:"keyToKey",toKeys:"<C-f>"},{keys:"<CR>",type:"keyToKey",toKeys:"j^",context:"normal"},{keys:"<Ins>",type:"action",action:"toggleOverwrite",context:"insert"},{keys:"H",type:"motion",motion:"moveToTopLine",motionArgs:{linewise:!0,toJumplist:!0}},{keys:"M",type:"motion",motion:"moveToMiddleLine",motionArgs:{linewise:!0,toJumplist:!0}},{keys:"L",type:"motion",motion:"moveToBottomLine",motionArgs:{linewise:!0,toJumplist:!0}},{keys:"h",type:"motion",motion:"moveByCharacters",motionArgs:{forward:!1}},{keys:"l",type:"motion",motion:"moveByCharacters",motionArgs:{forward:!0}},{keys:"j",type:"motion",motion:"moveByLines",motionArgs:{forward:!0,linewise:!0}},{keys:"k",type:"motion",motion:"moveByLines",motionArgs:{forward:!1,linewise:!0}},{keys:"gj",type:"motion",motion:"moveByDisplayLines",motionArgs:{forward:!0}},{keys:"gk",type:"motion",motion:"moveByDisplayLines",motionArgs:{forward:!1}},{keys:"w",type:"motion",motion:"moveByWords",motionArgs:{forward:!0,wordEnd:!1}},{keys:"W",type:"motion",motion:"moveByWords",motionArgs:{forward:!0,wordEnd:!1,bigWord:!0}},{keys:"e",type:"motion",motion:"moveByWords",motionArgs:{forward:!0,wordEnd:!0,inclusive:!0}},{keys:"E",type:"motion",motion:"moveByWords",motionArgs:{forward:!0,wordEnd:!0,bigWord:!0,inclusive:!0}},{keys:"b",type:"motion",motion:"moveByWords",motionArgs:{forward:!1,wordEnd:!1}},{keys:"B",type:"motion",motion:"moveByWords",motionArgs:{forward:!1,wordEnd:!1,bigWord:!0}},{keys:"ge",type:"motion",motion:"moveByWords",motionArgs:{forward:!1,wordEnd:!0,inclusive:!0}},{keys:"gE",type:"motion",motion:"moveByWords",motionArgs:{forward:!1,wordEnd:!0,bigWord:!0,inclusive:!0}},{keys:"{",type:"motion",motion:"moveByParagraph",motionArgs:{forward:!1,toJumplist:!0}},{keys:"}",type:"motion",motion:"moveByParagraph",motionArgs:{forward:!0,toJumplist:!0}},{keys:"(",type:"motion",motion:"moveBySentence",motionArgs:{forward:!1}},{keys:")",type:"motion",motion:"moveBySentence",motionArgs:{forward:!0}},{keys:"<C-f>",type:"motion",motion:"moveByPage",motionArgs:{forward:!0}},{keys:"<C-b>",type:"motion",motion:"moveByPage",motionArgs:{forward:!1}},{keys:"<C-d>",type:"motion",motion:"moveByScroll",motionArgs:{forward:!0,explicitRepeat:!0}},{keys:"<C-u>",type:"motion",motion:"moveByScroll",motionArgs:{forward:!1,explicitRepeat:!0}},{keys:"gg",type:"motion",motion:"moveToLineOrEdgeOfDocument",motionArgs:{forward:!1,explicitRepeat:!0,linewise:!0,toJumplist:!0}},{keys:"G",type:"motion",motion:"moveToLineOrEdgeOfDocument",motionArgs:{forward:!0,explicitRepeat:!0,linewise:!0,toJumplist:!0}},{keys:"0",type:"motion",motion:"moveToStartOfLine"},{keys:"^",type:"motion",motion:"moveToFirstNonWhiteSpaceCharacter"},{keys:"+",type:"motion",motion:"moveByLines",motionArgs:{forward:!0,toFirstChar:!0}},{keys:"-",type:"motion",motion:"moveByLines",motionArgs:{forward:!1,toFirstChar:!0}},{keys:"_",type:"motion",motion:"moveByLines",motionArgs:{forward:!0,toFirstChar:!0,repeatOffset:-1}},{keys:"$",type:"motion",motion:"moveToEol",motionArgs:{inclusive:!0}},{keys:"%",type:"motion",motion:"moveToMatchedSymbol",motionArgs:{inclusive:!0,toJumplist:!0}},{keys:"f<character>",type:"motion",motion:"moveToCharacter",motionArgs:{forward:!0,inclusive:!0}},{keys:"F<character>",type:"motion",motion:"moveToCharacter",motionArgs:{forward:!1}},{keys:"t<character>",type:"motion",motion:"moveTillCharacter",motionArgs:{forward:!0,inclusive:!0}},{keys:"T<character>",type:"motion",motion:"moveTillCharacter",motionArgs:{forward:!1}},{keys:";",type:"motion",motion:"repeatLastCharacterSearch",motionArgs:{forward:!0}},{keys:",",type:"motion",motion:"repeatLastCharacterSearch",motionArgs:{forward:!1}},{keys:"'<character>",type:"motion",motion:"goToMark",motionArgs:{toJumplist:!0,linewise:!0}},{keys:"`<character>",type:"motion",motion:"goToMark",motionArgs:{toJumplist:!0}},{keys:"]`",type:"motion",motion:"jumpToMark",motionArgs:{forward:!0}},{keys:"[`",type:"motion",motion:"jumpToMark",motionArgs:{forward:!1}},{keys:"]'",type:"motion",motion:"jumpToMark",motionArgs:{forward:!0,linewise:!0}},{keys:"['",type:"motion",motion:"jumpToMark",motionArgs:{forward:!1,linewise:!0}},{keys:"]p",type:"action",action:"paste",isEdit:!0,actionArgs:{after:!0,isEdit:!0,matchIndent:!0}},{keys:"[p",type:"action",action:"paste",isEdit:!0,actionArgs:{after:!1,isEdit:!0,matchIndent:!0}},{keys:"]<character>",type:"motion",motion:"moveToSymbol",motionArgs:{forward:!0,toJumplist:!0}},{keys:"[<character>",type:"motion",motion:"moveToSymbol",motionArgs:{forward:!1,toJumplist:!0}},{keys:"|",type:"motion",motion:"moveToColumn"},{keys:"o",type:"motion",motion:"moveToOtherHighlightedEnd",context:"visual"},{keys:"O",type:"motion",motion:"moveToOtherHighlightedEnd",motionArgs:{sameLine:!0},context:"visual"},{keys:"d",type:"operator",operator:"delete"},{keys:"y",type:"operator",operator:"yank"},{keys:"c",type:"operator",operator:"change"},{keys:"=",type:"operator",operator:"indentAuto"},{keys:">",type:"operator",operator:"indent",operatorArgs:{indentRight:!0}},{keys:"<",type:"operator",operator:"indent",operatorArgs:{indentRight:!1}},{keys:"g~",type:"operator",operator:"changeCase"},{keys:"gu",type:"operator",operator:"changeCase",operatorArgs:{toLower:!0},isEdit:!0},{keys:"gU",type:"operator",operator:"changeCase",operatorArgs:{toLower:!1},isEdit:!0},{keys:"n",type:"motion",motion:"findNext",motionArgs:{forward:!0,toJumplist:!0}},{keys:"N",type:"motion",motion:"findNext",motionArgs:{forward:!1,toJumplist:!0}},{keys:"gn",type:"motion",motion:"findAndSelectNextInclusive",motionArgs:{forward:!0}},{keys:"gN",type:"motion",motion:"findAndSelectNextInclusive",motionArgs:{forward:!1}},{keys:"x",type:"operatorMotion",operator:"delete",motion:"moveByCharacters",motionArgs:{forward:!0},operatorMotionArgs:{visualLine:!1}},{keys:"X",type:"operatorMotion",operator:"delete",motion:"moveByCharacters",motionArgs:{forward:!1},operatorMotionArgs:{visualLine:!0}},{keys:"D",type:"operatorMotion",operator:"delete",motion:"moveToEol",motionArgs:{inclusive:!0},context:"normal"},{keys:"D",type:"operator",operator:"delete",operatorArgs:{linewise:!0},context:"visual"},{keys:"Y",type:"operatorMotion",operator:"yank",motion:"expandToLine",motionArgs:{linewise:!0},context:"normal"},{keys:"Y",type:"operator",operator:"yank",operatorArgs:{linewise:!0},context:"visual"},{keys:"C",type:"operatorMotion",operator:"change",motion:"moveToEol",motionArgs:{inclusive:!0},context:"normal"},{keys:"C",type:"operator",operator:"change",operatorArgs:{linewise:!0},context:"visual"},{keys:"~",type:"operatorMotion",operator:"changeCase",motion:"moveByCharacters",motionArgs:{forward:!0},operatorArgs:{shouldMoveCursor:!0},context:"normal"},{keys:"~",type:"operator",operator:"changeCase",context:"visual"},{keys:"<C-w>",type:"operatorMotion",operator:"delete",motion:"moveByWords",motionArgs:{forward:!1,wordEnd:!1},context:"insert"},{keys:"<C-w>",type:"idle",context:"normal"},{keys:"<C-i>",type:"action",action:"jumpListWalk",actionArgs:{forward:!0}},{keys:"<C-o>",type:"action",action:"jumpListWalk",actionArgs:{forward:!1}},{keys:"<C-e>",type:"action",action:"scroll",actionArgs:{forward:!0,linewise:!0}},{keys:"<C-y>",type:"action",action:"scroll",actionArgs:{forward:!1,linewise:!0}},{keys:"a",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"charAfter"},context:"normal"},{keys:"A",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"eol"},context:"normal"},{keys:"A",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"endOfSelectedArea"},context:"visual"},{keys:"i",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"inplace"},context:"normal"},{keys:"gi",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"lastEdit"},context:"normal"},{keys:"I",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"firstNonBlank"},context:"normal"},{keys:"gI",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"bol"},context:"normal"},{keys:"I",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"startOfSelectedArea"},context:"visual"},{keys:"o",type:"action",action:"newLineAndEnterInsertMode",isEdit:!0,interlaceInsertRepeat:!0,actionArgs:{after:!0},context:"normal"},{keys:"O",type:"action",action:"newLineAndEnterInsertMode",isEdit:!0,interlaceInsertRepeat:!0,actionArgs:{after:!1},context:"normal"},{keys:"v",type:"action",action:"toggleVisualMode"},{keys:"V",type:"action",action:"toggleVisualMode",actionArgs:{linewise:!0}},{keys:"<C-v>",type:"action",action:"toggleVisualMode",actionArgs:{blockwise:!0}},{keys:"<C-q>",type:"action",action:"toggleVisualMode",actionArgs:{blockwise:!0}},{keys:"gv",type:"action",action:"reselectLastSelection"},{keys:"J",type:"action",action:"joinLines",isEdit:!0},{keys:"gJ",type:"action",action:"joinLines",actionArgs:{keepSpaces:!0},isEdit:!0},{keys:"p",type:"action",action:"paste",isEdit:!0,actionArgs:{after:!0,isEdit:!0}},{keys:"P",type:"action",action:"paste",isEdit:!0,actionArgs:{after:!1,isEdit:!0}},{keys:"r<character>",type:"action",action:"replace",isEdit:!0},{keys:"@<character>",type:"action",action:"replayMacro"},{keys:"q<character>",type:"action",action:"enterMacroRecordMode"},{keys:"R",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{replace:!0},context:"normal"},{keys:"R",type:"operator",operator:"change",operatorArgs:{linewise:!0,fullLine:!0},context:"visual",exitVisualBlock:!0},{keys:"u",type:"action",action:"undo",context:"normal"},{keys:"u",type:"operator",operator:"changeCase",operatorArgs:{toLower:!0},context:"visual",isEdit:!0},{keys:"U",type:"operator",operator:"changeCase",operatorArgs:{toLower:!1},context:"visual",isEdit:!0},{keys:"<C-r>",type:"action",action:"redo"},{keys:"m<character>",type:"action",action:"setMark"},{keys:'"<character>',type:"action",action:"setRegister"},{keys:"zz",type:"action",action:"scrollToCursor",actionArgs:{position:"center"}},{keys:"z.",type:"action",action:"scrollToCursor",actionArgs:{position:"center"},motion:"moveToFirstNonWhiteSpaceCharacter"},{keys:"zt",type:"action",action:"scrollToCursor",actionArgs:{position:"top"}},{keys:"z<CR>",type:"action",action:"scrollToCursor",actionArgs:{position:"top"},motion:"moveToFirstNonWhiteSpaceCharacter"},{keys:"z-",type:"action",action:"scrollToCursor",actionArgs:{position:"bottom"}},{keys:"zb",type:"action",action:"scrollToCursor",actionArgs:{position:"bottom"},motion:"moveToFirstNonWhiteSpaceCharacter"},{keys:".",type:"action",action:"repeatLastEdit"},{keys:"<C-a>",type:"action",action:"incrementNumberToken",isEdit:!0,actionArgs:{increase:!0,backtrack:!1}},{keys:"<C-x>",type:"action",action:"incrementNumberToken",isEdit:!0,actionArgs:{increase:!1,backtrack:!1}},{keys:"<C-t>",type:"action",action:"indent",actionArgs:{indentRight:!0},context:"insert"},{keys:"<C-d>",type:"action",action:"indent",actionArgs:{indentRight:!1},context:"insert"},{keys:"a<character>",type:"motion",motion:"textObjectManipulation"},{keys:"i<character>",type:"motion",motion:"textObjectManipulation",motionArgs:{textObjectInner:!0}},{keys:"/",type:"search",searchArgs:{forward:!0,querySrc:"prompt",toJumplist:!0}},{keys:"?",type:"search",searchArgs:{forward:!1,querySrc:"prompt",toJumplist:!0}},{keys:"*",type:"search",searchArgs:{forward:!0,querySrc:"wordUnderCursor",wholeWordOnly:!0,toJumplist:!0}},{keys:"#",type:"search",searchArgs:{forward:!1,querySrc:"wordUnderCursor",wholeWordOnly:!0,toJumplist:!0}},{keys:"g*",type:"search",searchArgs:{forward:!0,querySrc:"wordUnderCursor",toJumplist:!0}},{keys:"g#",type:"search",searchArgs:{forward:!1,querySrc:"wordUnderCursor",toJumplist:!0}},{keys:":",type:"ex"}],Ze=Xe.length,Ge=[{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"}],Ye=ze.Pos;ze.Vim=function(){function e(e,t){var r;this==ze.keyMap.vim&&(ze.rmClass(e.getWrapperElement(),"cm-fat-cursor"),"contenteditable"==e.getOption("inputStyle")&&null!=document.body.style.caretColor&&(a(r=e),r.off("cursorActivity",o),r.state.fatCursorMarks=null,e.getInputField().style.caretColor="")),t&&t.attach==n||((e=e).setOption("disableInput",!1),e.off("cursorActivity",De),ze.off(e.getInputField(),"paste",l(e)),e.state.vim=null)}function n(e,t){var r;this==ze.keyMap.vim&&(ze.addClass(e.getWrapperElement(),"cm-fat-cursor"),"contenteditable"==e.getOption("inputStyle")&&null!=document.body.style.caretColor&&((r=e).state.fatCursorMarks=[],o(r),r.on("cursorActivity",o),e.getInputField().style.caretColor="transparent")),t&&t.attach==n||((e=e).setOption("disableInput",!0),e.setOption("showCursorWhenSelecting",!1),ze.signal(e,"vim-mode-change",{mode:"normal"}),e.on("cursorActivity",De),B(e),ze.on(e.getInputField(),"paste",l(e)))}function o(e){if(e.state.fatCursorMarks){a(e);for(var t=e.listSelections(),r=[],n=0;n<t.length;n++){var o,i=t[n];i.empty()&&(o=e.getLine(i.anchor.line).length,i.anchor.ch<o?r.push(e.markText(i.anchor,Ye(i.anchor.line,i.anchor.ch+1),{className:"cm-fat-cursor-mark"})):r.push(e.markText(Ye(i.anchor.line,o-1),Ye(i.anchor.line,o),{className:"cm-fat-cursor-mark"})))}e.state.fatCursorMarks=r}}function a(e){var t=e.state.fatCursorMarks;if(t)for(var r=0;r<t.length;r++)t[r].clear()}function t(e,t){if(t){if(this[e])return this[e];var r=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 r=!1,n=0;n<t.length;n++){var o=t[n];o in i?t[n]=i[o]:r=!0,o in s&&(t[n]=s[o])}if(!r)return!1;k(e)&&(t[t.length-1]=e.toLowerCase());return"<"+t.join("-")+">"}(e);if(!r)return!1;e=ze.Vim.findKey(t,r);return"function"==typeof e&&ze.signal(t,"vim-keypress",r),e}}ze.defineOption("vimMode",!1,function(e,t,r){t&&"vim"!=e.getOption("keyMap")?e.setOption("keyMap","vim"):!t&&r!=ze.Init&&/^vim/.test(e.getOption("keyMap"))&&e.setOption("keyMap","default")});var i={Shift:"S",Ctrl:"C",Alt:"A",Cmd:"D",Mod:"A",CapsLock:""},s={Enter:"CR",Backspace:"BS",Delete:"Del",Insert:"Ins"};function l(e){var t=e.state.vim;return t.onPasteFn||(t.onPasteFn=function(){t.insertMode||(e.setCursor(J(e.getCursor(),0,1)),V.enterInsertMode(e,{},t))}),t.onPasteFn}var c=/[\d]/,m=[ze.isWordChar,function(e){return e&&!ze.isWordChar(e)&&!/\s/.test(e)}],g=[function(e){return/\S/.test(e)}];function r(e,t){for(var r=[],n=e;n<e+t;n++)r.push(String.fromCharCode(n));return r}var u=r(65,26),h=r(97,26),p=r(48,10),f=[].concat(u,h,p,["<",">"]),d=[].concat(u,h,p,["-",'"',".",":","_","/"]);function v(e,t){return t>=e.firstLine()&&t<=e.lastLine()}function y(e){return/^[a-z]$/.test(e)}function k(e){return/^[A-Z]$/.test(e)}function A(e){return/^\s*$/.test(e)}function C(e){return-1!=".?!".indexOf(e)}function w(e,t){for(var r=0;r<t.length;r++)if(t[r]==e)return!0;return!1}var x={};function M(e,t,r,n,o){if(void 0===t&&!o)throw Error("defaultValue is required unless callback is provided");if(r=r||"string",x[e]={type:r,defaultValue:t,callback:o},n)for(var i=0;i<n.length;i++)x[n[i]]=x[e];t&&S(e,t)}function S(e,t,r,n){var o=x[e],n=(n=n||{}).scope;if(!o)return new Error("Unknown option: "+e);if("boolean"==o.type){if(t&&!0!==t)return new Error("Invalid argument: "+e+"="+t);!1!==t&&(t=!0)}o.callback?("local"!==n&&o.callback(t,void 0),"global"!==n&&r&&o.callback(t,r)):("local"!==n&&(o.value="boolean"==o.type?!!t:t),"global"!==n&&r&&(r.state.vim.options[e]={value:t}))}function b(e,t,r){var n=x[e],r=(r=r||{}).scope;if(!n)return new Error("Unknown option: "+e);if(n.callback){var o=t&&n.callback(void 0,t);return"global"!==r&&void 0!==o?o:"local"!==r?n.callback():void 0}return((o="global"!==r&&t&&t.state.vim.options[e])||"local"!==r&&n||{}).value}M("filetype",void 0,"string",["ft"],function(e,t){if(void 0!==t){if(void 0===e)return"null"==(r=t.getOption("mode"))?"":r;var r=""==e?"null":e;t.setOption("mode",r)}});function L(){var a=100,s=-1,l=0,c=0,u=new Array(a);function n(e,t){l<(s+=t)?s=l:s<c&&(s=c);var r=u[(a+s)%a];if(r&&!r.find()){var n,o=0<t?1:-1,i=e.getCursor();do{if((r=u[(a+(s+=o))%a])&&(n=r.find())&&!z(i,n))break}while(s<l&&c<s)}return r}return{cachedCursor:void 0,add:function(n,e,t){var r=u[s%a];function o(e){var t=++s%a,r=u[t];r&&r.clear(),u[t]=n.setBookmark(e)}r&&(!(r=r.find())||z(r,e))||o(e),o(t),(c=(l=s)-a+1)<0&&(c=0)},find:function(e,t){var r=s,t=n(e,t);return s=r,t&&t.find()},move:n}}var T,R,E=function(e){return e?{changes:e.changes,expectCursorActivityForChange:e.expectCursorActivityForChange}:{changes:[],expectCursorActivityForChange:!1}};function O(){this.latestRegister=void 0,this.isPlaying=!1,this.isRecording=!1,this.replaySearchQueries=[],this.onRecordingDone=void 0,this.lastInsertModeChanges=E()}function B(e){return e.state.vim||(e.state.vim={inputState:new N,lastEditInputState:void 0,lastEditActionCommand:void 0,lastHPos:-1,lastHSPos:-1,lastMotion:null,marks:{},fakeCursor:null,insertMode:!1,insertModeRepeat:void 0,visualMode:!1,visualLine:!1,visualBlock:!1,lastSelection:null,lastPastedText:null,sel:{},options:{}}),e.state.vim}function I(){for(var e in T={searchQuery:null,searchIsReversed:!1,lastSubstituteReplacePart:void 0,jumpList:L(),macroModeState:new O,lastCharacterSearch:{increment:0,forward:!0,selectedCharacter:""},registerController:new j({}),searchHistoryController:new _,exCommandHistoryController:new _},x){var t=x[e];t.value=t.defaultValue}}h={buildKeyMap:function(){},getRegisterController:function(){return T.registerController},resetVimGlobalState_:I,getVimGlobalState_:function(){return T},maybeInitVimState_:B,suppressErrorLogging:!(O.prototype={exitMacroRecordMode:function(){var e=T.macroModeState;e.onRecordingDone&&e.onRecordingDone(),e.onRecordingDone=void 0,e.isRecording=!1},enterMacroRecordMode:function(e,t){var r=T.registerController.getRegister(t);r&&(r.clear(),this.latestRegister=t,e.openDialog&&(this.onRecordingDone=e.openDialog("(recording)["+t+"]",null,{bottom:!0})),this.isRecording=!0)}}),InsertModeKey:Ue,map:function(e,t,r){_e.map(e,t,r)},unmap:function(e,t){_e.unmap(e,t)},noremap:function(e,t,r){function n(e){return e?[e]:["normal","insert","visual"]}for(var o=n(r),i=Xe.length,a=i-Ze;a<i&&o.length;a++){var s=Xe[a];if(!(s.keys!=t||r&&s.context&&s.context!==r||"ex"===s.type.substr(0,2)||"key"===s.type.substr(0,3))){var l,c={};for(l in s)c[l]=s[l];c.keys=e,r&&!c.context&&(c.context=r),this._mapCommand(c);var u=n(s.context),o=o.filter(function(e){return-1===u.indexOf(e)})}}},mapclear:function(e){var t=Xe.length,r=Ze,n=Xe.slice(0,t-r);if(Xe=Xe.slice(t-r),e)for(var o=n.length-1;0<=o;o--){var i=n[o];if(e!==i.context)if(i.context)this._mapCommand(i);else{var a,s=["normal","insert","visual"];for(a in s)if(s[a]!==e){var l,c={};for(l in i)c[l]=i[l];c.context=s[a],this._mapCommand(c)}}}},setOption:S,getOption:b,defineOption:M,defineEx:function(e,t,r){if(t){if(0!==e.indexOf(t))throw new Error('(Vim.defineEx) "'+t+'" is not a prefix of "'+e+'", command not registered')}else t=e;je[e]=r,_e.commandMap_[t]={name:e,shortName:t,type:"api"}},handleKey:function(e,t,r){r=this.findKey(e,t,r);if("function"==typeof r)return r()},findKey:function(s,l,t){var e,c=B(s);function n(){var e=T.macroModeState;if(e.isRecording){if("q"==l)return e.exitMacroRecordMode(),K(s),1;"mapping"!=t&&function(e,t){if(e.isPlaying)return;e=e.latestRegister,e=T.registerController.getRegister(e);e&&e.pushText(t)}(e,l)}}function u(){return"<Esc>"==l&&(K(s),c.visualMode?se(s):c.insertMode&&He(s),1)}return!1===(e=(c.insertMode?function(){if(u())return!0;for(var e=c.inputState.keyBuffer=c.inputState.keyBuffer+l,t=1==l.length,r=H.matchCommand(e,Xe,c.inputState,"insert");1<e.length&&"full"!=r.type;){var e=c.inputState.keyBuffer=e.slice(1),n=H.matchCommand(e,Xe,c.inputState,"insert");"none"!=n.type&&(r=n)}if("none"==r.type)return K(s),!1;if("partial"==r.type)return R&&window.clearTimeout(R),R=window.setTimeout(function(){c.insertMode&&c.inputState.keyBuffer&&K(s)},b("insertModeEscKeysTimeout")),!t;if(R&&window.clearTimeout(R),t){for(var o=s.listSelections(),i=0;i<o.length;i++){var a=o[i].head;s.replaceRange("",J(a,0,-(e.length-1)),a,"+input")}T.macroModeState.lastInsertModeChanges.changes.pop()}return K(s),r.command}:function(){if(n()||u())return!0;var e=c.inputState.keyBuffer=c.inputState.keyBuffer+l;if(/^[1-9]\d*$/.test(e))return!0;var t=/^(\d*)(.*)$/.exec(e);if(!t)return K(s),!1;var r=c.visualMode?"visual":"normal";return"none"==(r=H.matchCommand(t[2]||t[1],Xe,c.inputState,r)).type?(K(s),!1):"partial"==r.type||(c.inputState.keyBuffer="",(t=/^(\d*)(.*)$/.exec(e))[1]&&"0"!=t[1]&&c.inputState.pushRepeatDigit(t[1]),r.command)})())?c.insertMode||1!==l.length?void 0:function(){return!0}:!0===e?function(){return!0}:function(){return s.operation(function(){s.curOp.isVimOp=!0;try{"keyToKey"==e.type?function(e){for(var t;e;)t=/<\w+-.+?>|<\w+>|./.exec(e),l=t[0],e=e.substring(t.index+l.length),ze.Vim.handleKey(s,l,"mapping")}(e.toKeys):H.processCommand(s,c,e)}catch(e){throw s.state.vim=void 0,B(s),ze.Vim.suppressErrorLogging||console.log(e),e}return!0})}},handleEx:function(e,t){_e.processCommand(e,t)},defineMotion:function(e,t){F[e]=t},defineAction:function(e,t){V[e]=t},defineOperator:function(e,t){D[e]=t},mapCommand:function(e,t,r,n,o){var i,a={keys:e,type:t};for(i in a[t]=r,a[t+"Args"]=n,o)a[i]=o[i];Fe(a)},_mapCommand:Fe,defineRegister:function(e,t){var r=T.registerController.registers;if(!e||1!=e.length)throw Error("Register name must be 1 character");if(r[e])throw Error("Register already defined "+e);r[e]=t,d.push(e)},exitVisualMode:se,exitInsertMode:He};function N(){this.prefixRepeat=[],this.motionRepeat=[],this.operator=null,this.operatorArgs=null,this.motion=null,this.motionArgs=null,this.keyBuffer=[],this.registerName=null}function K(e,t){e.state.vim.inputState=new N,ze.signal(e,"vim-command-done",t)}function P(e,t,r){this.clear(),this.keyBuffer=[e||""],this.insertModeChanges=[],this.searchQueries=[],this.linewise=!!t,this.blockwise=!!r}function j(e){this.registers=e,this.unnamedRegister=e['"']=new P,e["."]=new P,e[":"]=new P,e["/"]=new P}function _(){this.historyBuffer=[],this.iterator=0,this.initialPrefix=null}N.prototype.pushRepeatDigit=function(e){this.operator?this.motionRepeat=this.motionRepeat.concat(e):this.prefixRepeat=this.prefixRepeat.concat(e)},N.prototype.getRepeat=function(){var e=0;return(0<this.prefixRepeat.length||0<this.motionRepeat.length)&&(e=1,0<this.prefixRepeat.length&&(e*=parseInt(this.prefixRepeat.join(""),10)),0<this.motionRepeat.length&&(e*=parseInt(this.motionRepeat.join(""),10))),e},P.prototype={setText:function(e,t,r){this.keyBuffer=[e||""],this.linewise=!!t,this.blockwise=!!r},pushText:function(e,t){t&&(this.linewise||this.keyBuffer.push("\n"),this.linewise=!0),this.keyBuffer.push(e)},pushInsertModeChanges:function(e){this.insertModeChanges.push(E(e))},pushSearchQuery:function(e){this.searchQueries.push(e)},clear:function(){this.keyBuffer=[],this.insertModeChanges=[],this.searchQueries=[],this.linewise=!1},toString:function(){return this.keyBuffer.join("")}},j.prototype={pushText:function(e,t,r,n,o){if("_"!==e){n&&"\n"!==r.charAt(r.length-1)&&(r+="\n");var i=this.isValidRegister(e)?this.getRegister(e):null;if(i)k(e)?i.pushText(r,n):i.setText(r,n,o),this.unnamedRegister.setText(i.toString(),n);else{switch(t){case"yank":this.registers[0]=new P(r,n,o);break;case"delete":case"change":-1==r.indexOf("\n")?this.registers["-"]=new P(r,n):(this.shiftNumericRegisters_(),this.registers[1]=new P(r,n))}this.unnamedRegister.setText(r,n,o)}}},getRegister:function(e){return this.isValidRegister(e)?(e=e.toLowerCase(),this.registers[e]||(this.registers[e]=new P),this.registers[e]):this.unnamedRegister},isValidRegister:function(e){return e&&w(e,d)},shiftNumericRegisters_:function(){for(var e=9;2<=e;e--)this.registers[e]=this.getRegister(""+(e-1))}},_.prototype={nextMatch:function(e,t){var r=this.historyBuffer,n=t?-1:1;null===this.initialPrefix&&(this.initialPrefix=e);for(var o=this.iterator+n;t?0<=o:o<r.length;o+=n)for(var i=r[o],a=0;a<=i.length;a++)if(this.initialPrefix==i.substring(0,a))return this.iterator=o,i;return o>=r.length?(this.iterator=r.length,this.initialPrefix):o<0?e:void 0},pushInput:function(e){var t=this.historyBuffer.indexOf(e);-1<t&&this.historyBuffer.splice(t,1),e.length&&this.historyBuffer.push(e)},reset:function(){this.initialPrefix=null,this.iterator=this.historyBuffer.length}};var H={matchCommand:function(e,t,r,n){var o=function(e,t,r,n){for(var o,i=[],a=[],s=0;s<t.length;s++){var l=t[s];"insert"==r&&"insert"!=l.context||l.context&&l.context!=r||n.operator&&"action"==l.type||!(o=function(e,t){{if("<character>"!=t.slice(-11))return e==t?"full":0==t.indexOf(e)&&"partial";var r=t.length-11,n=e.slice(0,r),t=t.slice(0,r);return n==t&&e.length>r?"full":0==t.indexOf(n)&&"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,n,r);if(!o.full&&!o.partial)return{type:"none"};if(!o.full&&o.partial)return{type:"partial"};for(var i=0;i<o.full.length;i++)var a=o.full[i],s=s||a;if("<character>"==s.keys.slice(-11)){e=function(e){var t=/^.*(<[^>]+>)$/.exec(e),e=t?t[1]:e.slice(-1);if(1<e.length)switch(e){case"<CR>":e="\n";break;case"<Space>":e=" ";break;default:e=""}return e}(e);if(!e)return{type:"none"};r.selectedCharacter=e}return{type:"full",command:s}},processCommand:function(e,t,r){switch(t.inputState.repeatOverride=r.repeatOverride,r.type){case"motion":this.processMotion(e,t,r);break;case"operator":this.processOperator(e,t,r);break;case"operatorMotion":this.processOperatorMotion(e,t,r);break;case"action":this.processAction(e,t,r);break;case"search":this.processSearch(e,t,r);break;case"ex":case"keyToEx":this.processEx(e,t,r)}},processMotion:function(e,t,r){t.inputState.motion=r.motion,t.inputState.motionArgs=U(r.motionArgs),this.evalInput(e,t)},processOperator:function(e,t,r){var n=t.inputState;if(n.operator){if(n.operator==r.operator)return n.motion="expandToLine",n.motionArgs={linewise:!0},void this.evalInput(e,t);K(e)}n.operator=r.operator,n.operatorArgs=U(r.operatorArgs),r.exitVisualBlock&&(t.visualBlock=!1,ie(e)),t.visualMode&&this.evalInput(e,t)},processOperatorMotion:function(e,t,r){var n=t.visualMode,o=U(r.operatorMotionArgs);o&&n&&o.visualLine&&(t.visualLine=!0),this.processOperator(e,t,r),n||this.processMotion(e,t,r)},processAction:function(e,t,r){var n=t.inputState,o=n.getRepeat(),i=!!o,a=U(r.actionArgs)||{};n.selectedCharacter&&(a.selectedCharacter=n.selectedCharacter),r.operator&&this.processOperator(e,t,r),r.motion&&this.processMotion(e,t,r),(r.motion||r.operator)&&this.evalInput(e,t),a.repeat=o||1,a.repeatIsExplicit=i,a.registerName=n.registerName,K(e),t.lastMotion=null,r.isEdit&&this.recordLastEdit(t,n,r),V[r.action](e,a,t)},processSearch:function(s,n,o){if(s.getSearchCursor){var l=o.searchArgs.forward,e=o.searchArgs.wholeWordOnly;ke(s).setReversed(!l);var t=l?"/":"?",i=ke(s).getQuery(),c=s.getScrollInfo();switch(o.searchArgs.querySrc){case"prompt":var r=T.macroModeState;r.isPlaying?u(a=r.replaySearchQueries.shift(),!0,!1):Te(s,{onClose:function(e){s.scrollTo(c.left,c.top),u(e,!0,!0);var t=T.macroModeState;t.isRecording&&function(e,t){if(e.isPlaying)return;e=e.latestRegister,e=T.registerController.getRegister(e);e&&e.pushSearchQuery&&e.pushSearchQuery(t)}(t,e)},prefix:t,desc:"(JavaScript regexp)",onKeyUp:function(e,t,r){var n,o,i,a=ze.keyName(e);"Up"==a||"Down"==a?(n="Up"==a,o=e.target?e.target.selectionEnd:0,r(t=T.searchHistoryController.nextMatch(t,n)||""),o&&e.target&&(e.target.selectionEnd=e.target.selectionStart=Math.min(o,e.target.value.length))):"Left"!=a&&"Right"!=a&&"Ctrl"!=a&&"Alt"!=a&&"Shift"!=a&&T.searchHistoryController.reset();try{i=Re(s,t,!0,!0)}catch(e){}i?s.scrollIntoView(Be(s,!l,i),30):(Ie(s),s.scrollTo(c.left,c.top))},onKeyDown:function(e,t,r){var n=ze.keyName(e);"Esc"==n||"Ctrl-C"==n||"Ctrl-["==n||"Backspace"==n&&""==t?(T.searchHistoryController.pushInput(t),T.searchHistoryController.reset(),Re(s,i),Ie(s),s.scrollTo(c.left,c.top),ze.e_stop(e),K(s),r(),s.focus()):"Up"==n||"Down"==n?ze.e_stop(e):"Ctrl-U"==n&&(ze.e_stop(e),r(""))}});break;case"wordUnderCursor":r=ce(s,!1,0,!1,!0),t=!0;if(r||(r=ce(s,!1,0,!1,!1),t=!1),!r)return;var a=s.getLine(r.start.line).substring(r.start.ch,r.end.ch);a=t&&e?"\\b"+a+"\\b":a.replace(/([.?*+$\[\]\/\\(){}|\-])/g,"\\$1"),T.jumpList.cachedCursor=s.getCursor(),s.setCursor(r.start),u(a,!0,!1)}}function u(t,e,r){T.searchHistoryController.pushInput(t),T.searchHistoryController.reset();try{Re(s,t,e,r)}catch(e){return Le(s,"Invalid regex: "+t),void K(s)}H.processMotion(s,n,{type:"motion",motion:"findNext",motionArgs:{forward:!0,toJumplist:o.searchArgs.toJumplist}})}},processEx:function(a,e,t){function r(e){T.exCommandHistoryController.pushInput(e),T.exCommandHistoryController.reset(),_e.processCommand(a,e)}function n(e,t,r){var n,o,i=ze.keyName(e);("Esc"==i||"Ctrl-C"==i||"Ctrl-["==i||"Backspace"==i&&""==t)&&(T.exCommandHistoryController.pushInput(t),T.exCommandHistoryController.reset(),ze.e_stop(e),K(a),r(),a.focus()),"Up"==i||"Down"==i?(ze.e_stop(e),n="Up"==i,o=e.target?e.target.selectionEnd:0,r(t=T.exCommandHistoryController.nextMatch(t,n)||""),o&&e.target&&(e.target.selectionEnd=e.target.selectionStart=Math.min(o,e.target.value.length))):"Ctrl-U"==i?(ze.e_stop(e),r("")):"Left"!=i&&"Right"!=i&&"Ctrl"!=i&&"Alt"!=i&&"Shift"!=i&&T.exCommandHistoryController.reset()}"keyToEx"==t.type?_e.processCommand(a,t.exArgs.input):e.visualMode?Te(a,{onClose:r,prefix:":",value:"'<,'>",onKeyDown:n,selectValueOnOpen:!1}):Te(a,{onClose:r,prefix:":",onKeyDown:n})},evalInput:function(e,t){var r,n,o,i,a,s,l=t.inputState,c=l.motion,u=l.motionArgs||{},h=l.operator,p=l.operatorArgs||{},f=l.registerName,d=t.sel,m=Q(t.visualMode?$(e,d.head):e.getCursor("head")),g=Q(t.visualMode?$(e,d.anchor):e.getCursor("anchor")),v=Q(m),y=Q(g);if(h&&this.recordLastEdit(t,l),0<(g=void 0!==l.repeatOverride?l.repeatOverride:l.getRepeat())&&u.explicitRepeat?u.repeatIsExplicit=!0:(u.noRepeat||!u.explicitRepeat&&0===g)&&(g=1,u.repeatIsExplicit=!1),l.selectedCharacter&&(u.selectedCharacter=p.selectedCharacter=l.selectedCharacter),u.repeat=g,K(e),c){var k,C=F[c](e,m,u,t,l);if(t.lastMotion=F[c],!C)return;u.toJumplist&&((S=(k=T.jumpList).cachedCursor)?(ue(e,S,C),delete k.cachedCursor):ue(e,m,C)),S=(S=C instanceof Array?(r=C[0],C[1]):C)||Q(m),t.visualMode?(t.visualBlock&&S.ch===1/0||(S=$(e,S)),r=(r=r&&$(e,r))||y,d.anchor=r,d.head=S,ie(e),ge(e,t,"<",X(r,S)?r:S),ge(e,t,">",X(r,S)?S:r)):h||(S=$(e,S),e.setCursor(S.line,S.ch))}if(h){if(p.lastSel?(r=y,k=p.lastSel,C=Math.abs(k.head.line-k.anchor.line),m=Math.abs(k.head.ch-k.anchor.ch),S=k.visualLine?Ye(y.line+C,y.ch):k.visualBlock?Ye(y.line+C,y.ch+m):k.head.line==k.anchor.line?Ye(y.line,y.ch+m):Ye(y.line+C,y.ch),t.visualMode=!0,t.visualLine=k.visualLine,t.visualBlock=k.visualBlock,d=t.sel={anchor:r,head:S},ie(e)):t.visualMode&&(p.lastSel={anchor:Q(d.anchor),head:Q(d.head),visualBlock:t.visualBlock,visualLine:t.visualLine}),t.visualMode){if(i=Z(d.head,d.anchor),a=G(d.head,d.anchor),n=t.visualLine||p.linewise,M=ae(e,{anchor:i,head:a},o=t.visualBlock?"block":n?"line":"char"),n){var w=M.ranges;if("block"==o)for(var x=0;x<w.length;x++)w[x].head.ch=ee(e,w[x].head.line);else"line"==o&&(w[0].head=Ye(w[0].head.line+1,0))}}else{i=Q(r||y),X(a=Q(S||v),i)&&(s=i,i=a,a=s),(n=u.linewise||p.linewise)?(s=a,i.ch=0,s.ch=0,s.line++):u.forward&&function(e,t,r){t=e.getRange(t,r);if(/\n\s*$/.test(t)){var n=t.split("\n");n.pop();for(var o=n.pop();0<n.length&&o&&A(o);o=n.pop())r.line--,r.ch=0;o?(r.line--,r.ch=ee(e,r.line)):r.ch=0}}(e,i,a);var M=ae(e,{anchor:i,head:a},o="char",!u.inclusive||n)}e.setSelections(M.ranges,M.primary),t.lastMotion=null,p.repeat=g,p.registerName=f,p.linewise=n;var S=D[h](e,p,M.ranges,y,S);t.visualMode&&se(e,null!=S),S&&e.setCursor(S)}},recordLastEdit:function(e,t,r){var n=T.macroModeState;n.isPlaying||(e.lastEditInputState=t,e.lastEditActionCommand=r,n.lastInsertModeChanges.changes=[],n.lastInsertModeChanges.expectCursorActivityForChange=!1,n.lastInsertModeChanges.visualBlock=e.visualBlock?e.sel.head.line-e.sel.anchor.line:0)}},F={moveToTopLine:function(e,t,r){r=Ne(e).top+r.repeat-1;return Ye(r,le(e.getLine(r)))},moveToMiddleLine:function(e){var t=Ne(e),t=Math.floor(.5*(t.top+t.bottom));return Ye(t,le(e.getLine(t)))},moveToBottomLine:function(e,t,r){r=Ne(e).bottom-r.repeat+1;return Ye(r,le(e.getLine(r)))},expandToLine:function(e,t,r){return Ye(t.line+r.repeat-1,1/0)},findNext:function(e,t,r){var n=ke(e),o=n.getQuery();if(o){var i=!r.forward,i=n.isReversed()?!i:i;return Oe(e,o),Be(e,i,o,r.repeat)}},findAndSelectNextInclusive:function(e,t,r,n,o){var i=ke(e),a=i.getQuery();if(a){var s=!r.forward,l=function(o,i,a,s,l){void 0===s&&(s=1);return o.operation(function(){var e=o.getCursor(),t=o.getSearchCursor(a,e),r=t.find(!i);!l.visualMode&&r&&z(t.from(),e)&&t.find(!i);for(var n=0;n<s;n++)if(r=t.find(i),!r&&!(t=o.getSearchCursor(a,i?Ye(o.lastLine()):Ye(o.firstLine(),0))).find(i))return;return[t.from(),t.to()]})}(e,s=i.isReversed()?!s:s,a,r.repeat,n);if(l){if(o.operator)return l;a=l[0],o=Ye(l[1].line,l[1].ch-1);if(n.visualMode){(n.visualLine||n.visualBlock)&&(n.visualLine=!1,n.visualBlock=!1,ze.signal(e,"vim-mode-change",{mode:"visual",subMode:""}));l=n.sel.anchor;if(l)return i.isReversed()?r.forward?[l,a]:[l,o]:r.forward?[l,o]:[l,a]}else n.visualMode=!0,n.visualLine=!1,n.visualBlock=!1,ze.signal(e,"vim-mode-change",{mode:"visual",subMode:""});return s?[o,a]:[a,o]}}},goToMark:function(e,t,r,n){n=Ke(e,n,r.selectedCharacter);return n?r.linewise?{line:n.line,ch:le(e.getLine(n.line))}:n:null},moveToOtherHighlightedEnd:function(e,t,r,n){if(n.visualBlock&&r.sameLine){r=n.sel;return[$(e,Ye(r.anchor.line,r.head.ch)),$(e,Ye(r.head.line,r.anchor.ch))]}return[n.sel.head,n.sel.anchor]},jumpToMark:function(e,t,r,n){for(var o=t,i=0;i<r.repeat;i++){var a,s,l,c,u=o;for(a in n.marks)y(a)&&(s=n.marks[a].find(),(r.forward?X(s,u):X(u,s))||r.linewise&&s.line==u.line||(l=z(u,o),c=r.forward?Y(u,s,o):Y(o,s,u),(l||c)&&(o=s)))}return r.linewise&&(o=Ye(o.line,le(e.getLine(o.line)))),o},moveByCharacters:function(e,t,r){var n=r.repeat,n=r.forward?t.ch+n:t.ch-n;return Ye(t.line,n)},moveByLines:function(e,t,r,n){var o=t,i=o.ch;switch(n.lastMotion){case this.moveByLines:case this.moveByDisplayLines:case this.moveByScroll:case this.moveToColumn:case this.moveToEol:i=n.lastHPos;break;default:n.lastHPos=i}var a=r.repeat+(r.repeatOffset||0),s=r.forward?o.line+a:o.line-a,l=e.firstLine(),c=e.lastLine(),a=e.findPosV(o,r.forward?a:-a,"line",n.lastHSPos);return(r.forward?a.line>s:a.line<s)&&(s=a.line,i=a.ch),s<l&&o.line==l?this.moveToStartOfLine(e,t,r,n):c<s&&o.line==c?de(e,t,r,n,!0):(r.toFirstChar&&(i=le(e.getLine(s)),n.lastHPos=i),n.lastHSPos=e.charCoords(Ye(s,i),"div").left,Ye(s,i))},moveByDisplayLines:function(e,t,r,n){var o=t;switch(n.lastMotion){case this.moveByDisplayLines:case this.moveByScroll:case this.moveByLines:case this.moveToColumn:case this.moveToEol:break;default:n.lastHSPos=e.charCoords(o,"div").left}var i,t=r.repeat,t=e.findPosV(o,r.forward?t:-t,"line",n.lastHSPos);return t.hitSide&&(t=r.forward?(i={top:e.charCoords(t,"div").top+8,left:n.lastHSPos},e.coordsChar(i,"div")):((i=e.charCoords(Ye(e.firstLine(),0),"div")).left=n.lastHSPos,e.coordsChar(i,"div"))),n.lastHPos=t.ch,t},moveByPage:function(e,t,r){var n=r.repeat;return e.findPosV(t,r.forward?n:-n,"page")},moveByParagraph:function(e,t,r){var n=r.forward?1:-1;return ve(e,t,r.repeat,n)},moveBySentence:function(e,t,r){var n=r.forward?1:-1;return function(e,t,r,n){function u(e,t){if(t.pos+t.dir<0||t.pos+t.dir>=t.line.length){if(t.ln+=t.dir,!v(e,t.ln))return t.line=null,t.ln=null,void(t.pos=null);t.line=e.getLine(t.ln),t.pos=0<t.dir?0:t.line.length-1}else t.pos+=t.dir}var o={ln:t.line,pos:t.ch};for(;0<r;)o=(n<0?function(e,t,r,n){var o={line:s=e.getLine(t),ln:t,pos:r,dir:n},i={ln:o.ln,pos:null},a=""===o.line;for(u(e,o);null!==o.line;){if(""===o.line&&!a)return null!==i.pos?i:{ln:o.ln,pos:o.pos};if(C(o.line[o.pos])&&null!==i.pos&&(o.ln!==i.ln||o.pos+1!==i.pos))return i;""===o.line||A(o.line[o.pos])||(a=!1,i={ln:o.ln,pos:o.pos}),u(e,o)}for(var s=e.getLine(i.ln),l=i.pos=0;l<s.length;++l)if(!A(s[l])){i.pos=l;break}return i}:function(e,t,r,n){var o=""===(l=e.getLine(t)),i={line:l,ln:t,pos:r,dir:n},a={ln:i.ln,pos:i.pos},s=""===i.line;for(u(e,i);null!==i.line;){if(a.ln=i.ln,a.pos=i.pos,""===i.line&&!s)return{ln:i.ln,pos:i.pos};if(o&&""!==i.line&&!A(i.line[i.pos]))return{ln:i.ln,pos:i.pos};!C(i.line[i.pos])||o||i.pos!==i.line.length-1&&!A(i.line[i.pos+1])||(o=!0),u(e,i)}var l=e.getLine(a.ln);a.pos=0;for(var c=l.length-1;0<=c;--c)if(!A(l[c])){a.pos=c;break}return a})(e,o.ln,o.pos,n),r--;return Ye(o.ln,o.pos)}(e,t,r.repeat,n)},moveByScroll:function(e,t,r,n){var o=e.getScrollInfo(),i=null,a=(a=r.repeat)||o.clientHeight/(2*e.defaultTextHeight()),s=e.charCoords(t,"local");if(r.repeat=a,!(i=F.moveByDisplayLines(e,t,r,n)))return null;n=e.charCoords(i,"local");return e.scrollTo(null,o.top+n.top-s.top),i},moveByWords:function(e,t,r){return function(e,t,r,n,o,i){var a=Q(t),s=[];(n&&!o||!n&&o)&&r++;for(var l=!(n&&o),c=0;c<r;c++){var u=function(e,t,r,n,o){var i=t.line,a=t.ch,s=e.getLine(i),l=r?1:-1,c=n?g:m;if(o&&""==s){if(i+=l,s=e.getLine(i),!v(e,i))return null;a=r?0:s.length}for(;;){if(o&&""==s)return{from:0,to:0,line:i};for(var u=0<l?s.length:-1,h=u,p=u;a!=u;){for(var f=!1,d=0;d<c.length&&!f;++d)if(c[d](s.charAt(a))){for(h=a;a!=u&&c[d](s.charAt(a));)a+=l;if(f=h!=(p=a),h!=t.ch||i!=t.line||p!=h+l)return{from:Math.min(h,p+1),to:Math.max(h,p),line:i}}f||(a+=l)}if(!v(e,i+=l))return null;s=e.getLine(i),a=0<l?0:s.length}}(e,t,n,i,l);if(!u){var h=ee(e,e.lastLine());s.push(n?{line:e.lastLine(),from:h,to:h}:{line:0,from:0,to:0});break}s.push(u),t=Ye(u.line,n?u.to-1:u.from)}var p=s.length!=r,f=s[0],d=s.pop();return n&&!o?(p||f.from==a.ch&&f.line==a.line||(d=s.pop()),Ye(d.line,d.from)):n&&o?Ye(d.line,d.to-1):!n&&o?(p||f.to==a.ch&&f.line==a.line||(d=s.pop()),Ye(d.line,d.to)):Ye(d.line,d.from)}(e,t,r.repeat,!!r.forward,!!r.wordEnd,!!r.bigWord)},moveTillCharacter:function(e,t,r){var n=me(e,r.repeat,r.forward,r.selectedCharacter),e=r.forward?-1:1;return he(e,r),n?(n.ch+=e,n):null},moveToCharacter:function(e,t,r){var n=r.repeat;return he(0,r),me(e,n,r.forward,r.selectedCharacter)||t},moveToSymbol:function(e,t,r){return function(e,t,r,n){var o=Q(e.getCursor()),i=r?1:-1,a=r?e.lineCount():-1,s=o.ch,l=o.line,c=e.getLine(l),u={lineText:c,nextCh:c.charAt(s),lastCh:null,index:s,symb:n,reverseSymb:(r?{")":"(","}":"{"}:{"(":")","{":"}"})[n],forward:r,depth:0,curMoveThrough:!1},r=pe[n];if(!r)return o;var n=fe[r].init,h=fe[r].isComplete;n&&n(u);for(;l!==a&&t;){var p;u.index+=i,u.nextCh=u.lineText.charAt(u.index),u.nextCh||(l+=i,u.lineText=e.getLine(l)||"",0<i?u.index=0:(p=u.lineText.length,u.index=0<p?p-1:0),u.nextCh=u.lineText.charAt(u.index)),h(u)&&(o.line=l,o.ch=u.index,t--)}if(u.nextCh||u.curMoveThrough)return Ye(l,u.index);return o}(e,r.repeat,r.forward,r.selectedCharacter)||t},moveToColumn:function(e,t,r,n){r=r.repeat;return n.lastHPos=r-1,n.lastHSPos=e.charCoords(t,"div").left,t=r,e=(r=e).getCursor().line,$(r,Ye(e,t-1))},moveToEol:function(e,t,r,n){return de(e,t,r,n,!1)},moveToFirstNonWhiteSpaceCharacter:function(e,t){return Ye(t.line,le(e.getLine(t.line)))},moveToMatchedSymbol:function(e,t){for(var r=t,n=r.line,o=r.ch,i=e.getLine(n);o<i.length;o++)if((a=i.charAt(o))&&-1!="()[]{}".indexOf(a)){var a=e.getTokenTypeAt(Ye(n,o+1));if("string"!==a&&"comment"!==a)break}if(o<i.length){t="<"===o||">"===o?/[(){}[\]<>]/:/[(){}[\]]/;return e.findMatchingBracket(Ye(n,o),{bracketRegex:t}).to}return r},moveToStartOfLine:function(e,t){return Ye(t.line,0)},moveToLineOrEdgeOfDocument:function(e,t,r){var n=r.forward?e.lastLine():e.firstLine();return r.repeatIsExplicit&&(n=r.repeat-e.getOption("firstLineNumber")),Ye(n,le(e.getLine(n)))},textObjectManipulation:function(e,t,r,n){var o=r.selectedCharacter;"b"==o?o="(":"B"==o&&(o="{");var i=!r.textObjectInner;if({"(":")",")":"(","{":"}","}":"{","[":"]","]":"[","<":">",">":"<"}[o])a=function(e,t,r,n){var o=t,i={"(":/[()]/,")":/[()]/,"[":/[[\]]/,"]":/[[\]]/,"{":/[{}]/,"}":/[{}]/,"<":/[<>]/,">":/[<>]/}[r],t={"(":"(",")":"(","[":"[","]":"[","{":"{","}":"{","<":"<",">":"<"}[r],r=e.getLine(o.line).charAt(o.ch)===t?1:0;if(t=e.scanForBracket(Ye(o.line,o.ch+r),-1,void 0,{bracketRegex:i}),i=e.scanForBracket(Ye(o.line,o.ch+r),1,void 0,{bracketRegex:i}),!t||!i)return{start:o,end:o};t=t.pos,i=i.pos,(t.line==i.line&&t.ch>i.ch||t.line>i.line)&&(o=t,t=i,i=o);n?i.ch+=1:t.ch+=1;return{start:t,end:i}}(e,t,o,i);else if({"'":!0,'"':!0,"`":!0}[o])a=function(e,t,r,n){var o,i,a,s,t=Q(t),l=e.getLine(t.line).split(""),e=l.indexOf(r);t.ch<e?t.ch=e:e<t.ch&&l[t.ch]==r&&(i=t.ch,--t.ch);if(l[t.ch]!=r||i)for(a=t.ch;-1<a&&!o;a--)l[a]==r&&(o=a+1);else o=t.ch+1;if(o&&!i)for(a=o,s=l.length;a<s&&!i;a++)l[a]==r&&(i=a);if(!o||!i)return{start:t,end:t};n&&(--o,++i);return{start:Ye(t.line,o),end:Ye(t.line,i)}}(e,t,o,i);else if("W"===o)a=ce(e,i,0,!0);else if("w"===o)a=ce(e,i,0,!1);else if("p"===o){var a=ve(e,t,r.repeat,0,i);r.linewise=!0,n.visualMode?n.visualLine||(n.visualLine=!0):((n=n.inputState.operatorArgs)&&(n.linewise=!0),a.end.line--)}else{if("t"!==o)return null;a=function(e,t,r){var n=t;if(!ze.findMatchingTag||!ze.findEnclosingTag)return{start:n,end:n};t=ze.findMatchingTag(e,t)||ze.findEnclosingTag(e,t);if(!t||!t.open||!t.close)return{start:n,end:n};if(r)return{start:t.open.from,end:t.close.to};return{start:t.open.to,end:t.close.from}}(e,t,i)}return e.state.vim.visualMode?function(e,t,r){var n=e.state.vim.sel,o=n.head,i=n.anchor;X(r,t)&&(n=r,r=t,t=n);X(o,i)?(o=Z(t,o),i=G(i,r)):(i=Z(t,i),-1==(o=J(o=G(o,r),0,-1)).ch&&o.line!=e.firstLine()&&(o=Ye(o.line-1,ee(e,o.line-1))));return[i,o]}(e,a.start,a.end):[a.start,a.end]},repeatLastCharacterSearch:function(e,t,r){var n=T.lastCharacterSearch,o=r.repeat,i=r.forward===n.forward,a=(n.increment?1:0)*(i?-1:1);e.moveH(-a,"char");n=me(e,o,r.inclusive=i,n.selectedCharacter);return n?(n.ch+=a,n):(e.moveH(a,"char"),t)}};function W(e,t){for(var r=[],n=0;n<t;n++)r.push(e);return r}var D={change:function(e,t,r){var n,o,i,a=e.state.vim,s=r[0].anchor,l=r[0].head,s=a.visualMode?t.fullLine?(l.ch=Number.MAX_VALUE,l.line--,e.setSelection(s,l),n=e.getSelection(),e.replaceSelection(""),s):(n=e.getSelection(),o=W("",r.length),e.replaceSelections(o),Z(r[0].head,r[0].anchor)):(n=e.getRange(s,l),"moveByWords"!=(a=a.lastEditInputState||{}).motion||A(n)||(i=/\s+$/.exec(n))&&a.motionArgs&&a.motionArgs.forward&&(l=J(l,0,-i[0].length),n=n.slice(0,-i[0].length)),a=new Ye(s.line-1,Number.MAX_VALUE),i=e.firstLine()==e.lastLine(),l.line>e.lastLine()&&t.linewise&&!i?e.replaceRange("",a,l):e.replaceRange("",s,l),t.linewise&&(i||(e.setCursor(a),ze.commands.newlineAndIndent(e)),s.ch=Number.MAX_VALUE),s);T.registerController.pushText(t.registerName,"change",n,t.linewise,1<r.length),V.enterInsertMode(e,{head:s},e.state.vim)},delete:function(e,t,r){var n,o,i,a=e.state.vim;return a.visualBlock?(o=e.getSelection(),i=W("",r.length),e.replaceSelections(i),n=r[0].anchor):(i=r[0].anchor,r=r[0].head,t.linewise&&r.line!=e.firstLine()&&i.line==e.lastLine()&&i.line==r.line-1&&(i.line==e.firstLine()?i.ch=0:i=Ye(i.line-1,ee(e,i.line-1))),o=e.getRange(i,r),e.replaceRange("",i,r),n=i,t.linewise&&(n=F.moveToFirstNonWhiteSpaceCharacter(e,i))),T.registerController.pushText(t.registerName,"delete",o,t.linewise,a.visualBlock),$(e,n)},indent:function(e,t,r){var n=e.state.vim,o=r[0].anchor.line,i=(n.visualBlock?r[r.length-1].anchor:r[0].head).line,a=n.visualMode?t.repeat:1;t.linewise&&i--;for(var s=o;s<=i;s++)for(var l=0;l<a;l++)e.indentLine(s,t.indentRight);return F.moveToFirstNonWhiteSpaceCharacter(e,r[0].anchor)},indentAuto:function(e,t,r){return e.execCommand("indentAuto"),F.moveToFirstNonWhiteSpaceCharacter(e,r[0].anchor)},changeCase:function(e,t,r,n,o){for(var i=e.getSelections(),a=[],s=t.toLower,l=0;l<i.length;l++){var c=i[l],u="";if(!0===s)u=c.toLowerCase();else if(!1===s)u=c.toUpperCase();else for(var h=0;h<c.length;h++){var p=c.charAt(h);u+=k(p)?p.toLowerCase():p.toUpperCase()}a.push(u)}return e.replaceSelections(a),t.shouldMoveCursor?o:!e.state.vim.visualMode&&t.linewise&&r[0].anchor.line+1==r[0].head.line?F.moveToFirstNonWhiteSpaceCharacter(e,n):t.linewise?n:Z(r[0].anchor,r[0].head)},yank:function(e,t,r,n){var o=e.state.vim,e=e.getSelection(),n=o.visualMode?Z(o.sel.anchor,o.sel.head,r[0].head,r[0].anchor):n;return T.registerController.pushText(t.registerName,"yank",e,t.linewise,o.visualBlock),n}};var V={jumpListWalk:function(e,t,r){r.visualMode||(r=t.repeat,t=t.forward,r=(r=(r=T.jumpList.move(e,t?r:-r))?r.find():void 0)||e.getCursor(),e.setCursor(r))},scroll:function(e,t,r){var n,o,i;r.visualMode||(o=t.repeat||1,n=e.defaultTextHeight(),i=e.getScrollInfo().top,r=n*o,o=t.forward?i+r:i-r,i=Q(e.getCursor()),r=e.charCoords(i,"local"),t.forward?o>r.top?(i.line+=(o-r.top)/n,i.line=Math.ceil(i.line),e.setCursor(i),r=e.charCoords(i,"local"),e.scrollTo(null,r.top)):e.scrollTo(null,o):(t=o+e.getScrollInfo().clientHeight)<r.bottom?(i.line-=(r.bottom-t)/n,i.line=Math.floor(i.line),e.setCursor(i),r=e.charCoords(i,"local"),e.scrollTo(null,r.bottom-e.getScrollInfo().clientHeight)):e.scrollTo(null,o))},scrollToCursor:function(e,t){var r=e.getCursor().line,n=e.charCoords(Ye(r,0),"local"),o=e.getScrollInfo().clientHeight,r=n.top,n=n.bottom-r;switch(t.position){case"center":r=r-o/2+n;break;case"bottom":r=r-o+n}e.scrollTo(null,r)},replayMacro:function(e,t,r){var n=t.selectedCharacter,o=t.repeat,i=T.macroModeState;for("@"==n?n=i.latestRegister:i.latestRegister=n;o--;)!function(e,t,r,n){var o=T.registerController.getRegister(n);if(":"==n)return o.keyBuffer[0]&&_e.processCommand(e,o.keyBuffer[0]),r.isPlaying=!1;var i=o.keyBuffer,a=0;r.isPlaying=!0,r.replaySearchQueries=o.searchQueries.slice(0);for(var s,l=0;l<i.length;l++)for(var c,u=i[l];u;)s=/<\w+-.+?>|<\w+>|./.exec(u),c=s[0],u=u.substring(s.index+c.length),ze.Vim.handleKey(e,c,"macro"),t.insertMode&&(c=o.insertModeChanges[a++].changes,T.macroModeState.lastInsertModeChanges.changes=c,Qe(e,c,1),He(e));r.isPlaying=!1}(e,r,i,n)},enterMacroRecordMode:function(e,t){var r=T.macroModeState,t=t.selectedCharacter;T.registerController.isValidRegister(t)&&r.enterMacroRecordMode(e,t)},toggleOverwrite:function(e){e.state.overwrite?(e.toggleOverwrite(!1),e.setOption("keyMap","vim-insert"),ze.signal(e,"vim-mode-change",{mode:"insert"})):(e.toggleOverwrite(!0),e.setOption("keyMap","vim-replace"),ze.signal(e,"vim-mode-change",{mode:"replace"}))},enterInsertMode:function(e,t,r){if(!e.getOption("readOnly")){r.insertMode=!0,r.insertModeRepeat=t&&t.repeat||1;var n=t?t.insertAt:null,o=r.sel,i=t.head||e.getCursor("head"),a=e.listSelections().length;if("eol"==n)i=Ye(i.line,ee(e,i.line));else if("bol"==n)i=Ye(i.line,0);else if("charAfter"==n)i=J(i,0,1);else if("firstNonBlank"==n)i=F.moveToFirstNonWhiteSpaceCharacter(e,i);else if("startOfSelectedArea"==n){if(!r.visualMode)return;r.visualBlock?(i=Ye(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?o.head:Ye(o.anchor.line,0)}else if("endOfSelectedArea"==n){if(!r.visualMode)return;r.visualBlock?(i=Ye(Math.min(o.head.line,o.anchor.line),Math.max(o.head.ch+1,o.anchor.ch)),a=Math.abs(o.head.line-o.anchor.line)+1):i=o.head.line>=o.anchor.line?J(o.head,0,1):Ye(o.anchor.line,0)}else if("inplace"==n){if(r.visualMode)return}else"lastEdit"==n&&(i=Pe(e)||i);e.setOption("disableInput",!1),t&&t.replace?(e.toggleOverwrite(!0),e.setOption("keyMap","vim-replace"),ze.signal(e,"vim-mode-change",{mode:"replace"})):(e.toggleOverwrite(!1),e.setOption("keyMap","vim-insert"),ze.signal(e,"vim-mode-change",{mode:"insert"})),T.macroModeState.isPlaying||(e.on("change",We),ze.on(e.getInputField(),"keydown",Je)),r.visualMode&&se(e),ne(e,i,a)}},toggleVisualMode:function(e,t,r){var n=t.repeat,o=e.getCursor();r.visualMode?r.visualLine^t.linewise||r.visualBlock^t.blockwise?(r.visualLine=!!t.linewise,r.visualBlock=!!t.blockwise,ze.signal(e,"vim-mode-change",{mode:"visual",subMode:r.visualLine?"linewise":r.visualBlock?"blockwise":""}),ie(e)):se(e):(r.visualMode=!0,r.visualLine=!!t.linewise,r.visualBlock=!!t.blockwise,n=$(e,Ye(o.line,o.ch+n-1)),r.sel={anchor:o,head:n},ze.signal(e,"vim-mode-change",{mode:"visual",subMode:r.visualLine?"linewise":r.visualBlock?"blockwise":""}),ie(e),ge(e,r,"<",Z(o,n)),ge(e,r,">",G(o,n)))},reselectLastSelection:function(e,t,r){var n,o,i=r.lastSelection;r.visualMode&&oe(e,r),i&&(n=i.anchorMark.find(),o=i.headMark.find(),n&&o&&(r.sel={anchor:n,head:o},r.visualMode=!0,r.visualLine=i.visualLine,r.visualBlock=i.visualBlock,ie(e),ge(e,r,"<",Z(n,o)),ge(e,r,">",G(n,o)),ze.signal(e,"vim-mode-change",{mode:"visual",subMode:r.visualLine?"linewise":r.visualBlock?"blockwise":""})))},joinLines:function(e,t,r){var n,o;r.visualMode?(o=e.getCursor("anchor"),X(n=e.getCursor("head"),o)&&(s=n,n=o,o=s),n.ch=ee(e,n.line)-1):(c=Math.max(t.repeat,2),o=e.getCursor(),n=$(e,Ye(o.line+c-1,1/0)));for(var i=0,a=o.line;a<n.line;a++){i=ee(e,o.line);var s=Ye(o.line+1,ee(e,o.line+1)),l=e.getRange(o,s),l=t.keepSpaces?l.replace(/\n\r?/g,""):l.replace(/\n\s*/g," ");e.replaceRange(l,o,s)}var c=Ye(o.line,i);r.visualMode&&se(e,!1),e.setCursor(c)},newLineAndEnterInsertMode:function(e,t,r){r.insertMode=!0;var n=Q(e.getCursor());n.line!==e.firstLine()||t.after?(n.line=t.after?n.line:n.line-1,n.ch=ee(e,n.line),e.setCursor(n),(ze.commands.newlineAndIndentContinueComment||ze.commands.newlineAndIndent)(e)):(e.replaceRange("\n",Ye(e.firstLine(),0)),e.setCursor(e.firstLine(),0)),this.enterInsertMode(e,{repeat:t.repeat},r)},paste:function(r,e,t){var n,o,i,a,s=Q(r.getCursor()),l=T.registerController.getRegister(e.registerName),c=l.toString();if(c){e.matchIndent&&(n=r.getOption("tabSize"),o=function(e){var t=e.split("\t").length-1,e=e.split(" ").length-1;return t*n+e},y=r.getLine(r.getCursor().line),i=o(y.match(/^\s*/)[0]),x=c.replace(/\n$/,""),C=c!==x,a=o(c.match(/^\s*/)[0]),c=x.replace(/^\s*/gm,function(e){var t=i+(o(e)-a);if(t<0)return"";if(r.getOption("indentWithTabs")){e=Math.floor(t/n);return Array(e+1).join("\t")}return Array(t+1).join(" ")}),c+=C?"\n":""),1<e.repeat&&(c=Array(e.repeat+1).join(c));var u,h,p,f,d,m,g,v=l.linewise,y=l.blockwise;if(y){c=c.split("\n"),v&&c.pop();for(var k=0;k<c.length;k++)c[k]=""==c[k]?" ":c[k];s.ch+=e.after?1:0,s.ch=Math.min(ee(r,s.line),s.ch)}else v?t.visualMode?c=t.visualLine?c.slice(0,-1):"\n"+c.slice(0,c.length-1)+"\n":e.after?(c="\n"+c.slice(0,c.length-1),s.ch=ee(r,s.line)):s.ch=0:s.ch+=e.after?1:0;if(t.visualMode){t.lastPastedText=c;var C=(m=r,g=(x=t).lastSelection,(x.visualMode?function(){var e=m.listSelections(),t=e[0],e=e[e.length-1];return[X(t.anchor,t.head)?t.anchor:t.head,X(e.anchor,e.head)?e.head:e.anchor]}:function(){var e=m.getCursor(),t=m.getCursor(),r=g.visualBlock;if(r){for(var n=r.width,o=r.height,t=Ye(e.line+o,e.ch+n),i=[],a=e.line;a<t.line;a++){var s={anchor:Ye(a,e.ch),head:Ye(a,t.ch)};i.push(s)}m.setSelections(i)}else{r=g.anchorMark.find(),o=g.headMark.find(),n=o.line-r.line,r=o.ch-r.ch;t={line:t.line+n,ch:n?t.ch:r+t.ch},g.visualLine&&(e=Ye(e.line,0),t=Ye(t.line,ee(m,t.line))),m.setSelection(e,t)}return[e,t]})()),w=C[0],l=C[1],x=r.getSelection(),C=r.listSelections(),C=new Array(C.length).join("1").split("1");t.lastSelection&&(h=t.lastSelection.headMark.find()),T.registerController.unnamedRegister.setText(x),w=y?(r.replaceSelections(C),l=Ye(w.line+c.length-1,w.ch),r.setCursor(w),re(r,l),r.replaceSelections(c),w):t.visualBlock?(r.replaceSelections(C),r.setCursor(w),r.replaceRange(c,w,w),w):(r.replaceRange(c,w,l),r.posFromIndex(r.indexFromPos(w)+c.length-1)),h&&(t.lastSelection.headMark=r.setBookmark(h)),v&&(w.ch=0)}else if(y){r.setCursor(s);for(k=0;k<c.length;k++){var M=s.line+k;M>r.lastLine()&&r.replaceRange("\n",Ye(M,0)),ee(r,M)<s.ch&&(p=r,f=M,d=s.ch,M=void 0,M=ee(p,f),d=new Array(d-M+1).join(" "),p.setCursor(Ye(f,M)),p.replaceRange(d,p.getCursor()))}r.setCursor(s),re(r,Ye(s.line+c.length-1,s.ch)),r.replaceSelections(c),w=s}else r.replaceRange(c,s),w=v&&e.after?Ye(s.line+1,le(r.getLine(s.line+1))):v&&!e.after?Ye(s.line,le(r.getLine(s.line))):!v&&e.after?(u=r.indexFromPos(s),r.posFromIndex(u+c.length-1)):(u=r.indexFromPos(s),r.posFromIndex(u+c.length));t.visualMode&&se(r,!1),r.setCursor(w)}},undo:function(e,t){e.operation(function(){q(e,ze.commands.undo,t.repeat)(),e.setCursor(e.getCursor("anchor"))})},redo:function(e,t){q(e,ze.commands.redo,t.repeat)()},setRegister:function(e,t,r){r.inputState.registerName=t.selectedCharacter},setMark:function(e,t,r){ge(e,r,t.selectedCharacter,e.getCursor())},replace:function(e,t,r){var n,o,i=t.selectedCharacter,a=e.getCursor(),s=e.listSelections(),t=r.visualMode?(a=e.getCursor("start"),e.getCursor("end")):(o=e.getLine(a.line),(n=a.ch+t.repeat)>o.length&&(n=o.length),Ye(a.line,n));"\n"==i?(r.visualMode||e.replaceRange("",a,t),(ze.commands.newlineAndIndentContinueComment||ze.commands.newlineAndIndent)(e)):(o=(o=e.getRange(a,t)).replace(/[^\n]/g,i),r.visualBlock?(n=new Array(e.getOption("tabSize")+1).join(" "),o=(o=e.getSelection()).replace(/\t/g,n).replace(/[^\n]/g,i).split("\n"),e.replaceSelections(o)):e.replaceRange(o,a,t),r.visualMode?(a=X(s[0].anchor,s[0].head)?s[0].anchor:s[0].head,e.setCursor(a),se(e,!1)):e.setCursor(J(t,0,-1)))},incrementNumberToken:function(e,t){for(var r,n,o,i,a,s,l,c=e.getCursor(),u=e.getLine(c.line),h=/(-?)(?:(0x)([\da-f]+)|(0b|0|)(\d+))/gi;null!==(r=h.exec(u))&&(o=(n=r.index)+r[0].length,!(c.ch<o)););!t.backtrack&&o<=c.ch||r&&(s=r[2]||r[4],l=r[3]||r[5],i=t.increase?1:-1,a={"0b":2,0:8,"":10,"0x":16}[s.toLowerCase()],a=(parseInt(r[1]+l,a)+i*t.repeat).toString(a),l=s?new Array(l.length-a.length+1+r[1].length).join("0"):"",a="-"===a.charAt(0)?"-"+s+l+a.substr(1):s+l+a,s=Ye(c.line,n),l=Ye(c.line,o),e.replaceRange(a,s,l),e.setCursor(Ye(c.line,n+a.length-1)))},repeatLastEdit:function(e,t,r){var n;r.lastEditInputState&&((n=t.repeat)&&t.repeatIsExplicit?r.lastEditInputState.repeatOverride=n:n=r.lastEditInputState.repeatOverride||n,qe(e,r,n,!1))},indent:function(e,t){e.indentLine(e.getCursor().line,t.indentRight)},exitInsertMode:He};function $(e,t){var r=e.state.vim,n=r.insertMode||r.visualMode,r=Math.min(Math.max(e.firstLine(),t.line),e.lastLine()),n=ee(e,r)-1+!!n,n=Math.min(Math.max(0,t.ch),n);return Ye(r,n)}function U(e){var t,r={};for(t in e)e.hasOwnProperty(t)&&(r[t]=e[t]);return r}function J(e,t,r){return"object"==typeof t&&(r=t.ch,t=t.line),Ye(e.line+t,e.ch+r)}function q(t,r,n){return function(){for(var e=0;e<n;e++)r(t)}}function Q(e){return Ye(e.line,e.ch)}function z(e,t){return e.ch==t.ch&&e.line==t.line}function X(e,t){return e.line<t.line||e.line==t.line&&e.ch<t.ch}function Z(e,t){return 2<arguments.length&&(t=Z.apply(void 0,Array.prototype.slice.call(arguments,1))),X(e,t)?e:t}function G(e,t){return 2<arguments.length&&(t=G.apply(void 0,Array.prototype.slice.call(arguments,1))),X(e,t)?t:e}function Y(e,t,r){e=X(e,t),r=X(t,r);return e&&r}function ee(e,t){return e.getLine(t).length}function te(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")}function re(e,t){var r=[],n=e.listSelections(),o=Q(e.clipPos(t)),i=!z(t,o),a=function(e,t,r){for(var n=0;n<e.length;n++){var o="head"!=r&&z(e[n].anchor,t),i="anchor"!=r&&z(e[n].head,t);if(o||i)return n}return-1}(n,e.getCursor("head")),s=z(n[a].head,n[a].anchor),l=n.length-1,c=a<l-a?l:0,a=n[c].anchor,l=Math.min(a.line,o.line),u=Math.max(a.line,o.line),h=a.ch,p=o.ch,n=n[c].head.ch-h,c=p-h;0<n&&c<=0?(h++,i||p--):n<0&&0<=c?(h--,s||p++):n<0&&-1==c&&(h--,p++);for(var f=l;f<=u;f++){var d={anchor:new Ye(f,h),head:new Ye(f,p)};r.push(d)}return e.setSelections(r),t.ch=p,a.ch=h,a}function ne(e,t,r){for(var n=[],o=0;o<r;o++){var i=J(t,o,0);n.push({anchor:i,head:i})}e.setSelections(n,0)}function oe(e,t){var r=t.sel.anchor,n=t.sel.head;t.lastPastedText&&(n=e.posFromIndex(e.indexFromPos(r)+t.lastPastedText.length),t.lastPastedText=null),t.lastSelection={anchorMark:e.setBookmark(r),headMark:e.setBookmark(n),anchor:Q(r),head:Q(n),visualMode:t.visualMode,visualLine:t.visualLine,visualBlock:t.visualBlock}}function ie(e,t,r){var n=e.state.vim,r=ae(e,t=t||n.sel,r=r||n.visualLine?"line":n.visualBlock?"block":"char");e.setSelections(r.ranges,r.primary),Ve(e)}function ae(e,t,r,n){var o=Q(t.head),i=Q(t.anchor);if("char"==r){var a=n||X(t.head,t.anchor)?0:1,n=X(t.head,t.anchor)?1:0,o=J(t.head,0,a);return{ranges:[{anchor:i=J(t.anchor,0,n),head:o}],primary:0}}if("line"==r)return X(t.head,t.anchor)?(o.ch=0,i.ch=ee(e,i.line)):(i.ch=0,t=e.lastLine(),o.line>t&&(o.line=t),o.ch=ee(e,o.line)),{ranges:[{anchor:i,head:o}],primary:0};if("block"==r){for(var s=Math.min(i.line,o.line),l=Math.min(i.ch,o.ch),r=Math.max(i.line,o.line),c=Math.max(i.ch,o.ch)+1,u=r-s+1,o=o.line==s?0:u-1,h=[],p=0;p<u;p++)h.push({anchor:Ye(s+p,l),head:Ye(s+p,c)});return{ranges:h,primary:o}}}function se(e,t){var r=e.state.vim;!1!==t&&e.setCursor($(e,r.sel.head)),oe(e,r),r.visualMode=!1,r.visualLine=!1,r.visualBlock=!1,r.insertMode||ze.signal(e,"vim-mode-change",{mode:"normal"}),$e(r)}function le(e){if(!e)return 0;var t=e.search(/\S/);return-1==t?e.length:t}function ce(e,t,r,n,o){for(var i,a,a=(a=(i=e).getCursor("head"),1==i.getSelection().length&&(a=Z(a,i.getCursor("anchor"))),a),s=e.getLine(a.line),l=a.ch,c=(o?m:g)[0];!c(s.charAt(l));)if(++l>=s.length)return null;n?c=g[0]:(c=m[0])(s.charAt(l))||(c=m[1]);for(var u=l,h=l;c(s.charAt(u))&&u<s.length;)u++;for(;c(s.charAt(h))&&0<=h;)h--;if(h++,t){for(t=u;/\s/.test(s.charAt(u))&&u<s.length;)u++;if(t==u){for(t=h;/\s/.test(s.charAt(h-1))&&0<h;)h--;h=h||t}}return{start:Ye(a.line,h),end:Ye(a.line,u)}}function ue(e,t,r){z(t,r)||T.jumpList.add(e,t,r)}function he(e,t){T.lastCharacterSearch.increment=e,T.lastCharacterSearch.forward=t.forward,T.lastCharacterSearch.selectedCharacter=t.selectedCharacter}var pe={"(":"bracket",")":"bracket","{":"bracket","}":"bracket","[":"section","]":"section","*":"comment","/":"comment",m:"method",M:"method","#":"preprocess"},fe={bracket:{isComplete:function(e){if(e.nextCh===e.symb){if(e.depth++,1<=e.depth)return!0}else e.nextCh===e.reverseSymb&&e.depth--;return!1}},section:{init:function(e){e.curMoveThrough=!0,e.symb=(e.forward?"]":"[")===e.symb?"{":"}"},isComplete:function(e){return 0===e.index&&e.nextCh===e.symb}},comment:{isComplete:function(e){var t="*"===e.lastCh&&"/"===e.nextCh;return e.lastCh=e.nextCh,t}},method:{init:function(e){e.symb="m"===e.symb?"{":"}",e.reverseSymb="{"===e.symb?"}":"{"},isComplete:function(e){return e.nextCh===e.symb}},preprocess:{init:function(e){e.index=0},isComplete:function(e){if("#"===e.nextCh){var t=e.lineText.match(/^#(\w+)/)[1];if("endif"===t){if(e.forward&&0===e.depth)return!0;e.depth++}else if("if"===t){if(!e.forward&&0===e.depth)return!0;e.depth--}if("else"===t&&0===e.depth)return!0}return!1}}};function de(e,t,r,n,o){t=Ye(t.line+r.repeat-1,1/0),r=e.clipPos(t);return r.ch--,o||(n.lastHPos=1/0,n.lastHSPos=e.charCoords(r,"div").left),t}function me(e,t,r,n){for(var o,i=e.getCursor(),a=i.ch,s=0;s<t;s++){if(-1==(o=function(e,t,r,n,o){var i;n?-1==(i=t.indexOf(r,e+1))||o||--i:-1==(i=t.lastIndexOf(r,e-1))||o||(i+=1);return i}(a,e.getLine(i.line),n,r,!0)))return null;a=o}return Ye(e.getCursor().line,o)}function ge(e,t,r,n){w(r,f)&&(t.marks[r]&&t.marks[r].clear(),t.marks[r]=e.setBookmark(n))}function ve(t,e,r,n,o){var i=e.line,a=t.firstLine(),s=t.lastLine(),l=i;function c(e){return!t.getLine(e)}function u(e,t,r){return r?c(e)!=c(e+t):!c(e)&&c(e+t)}if(n){for(;a<=l&&l<=s&&0<r;)u(l,n)&&r--,l+=n;return new Ye(l,0)}var h,e=t.state.vim;e.visualLine&&u(i,1,!0)&&(u((h=e.sel.anchor).line,-1,!0)&&(o&&h.line==i||(i+=1)));for(var p=c(i),l=i;l<=s&&r;l++)u(l,1,!0)&&(o&&c(l)==p||r--);for(h=new Ye(l,0),s<l&&!p?p=!0:o=!1,l=i;a<l&&(o&&c(l)!=p&&l!=i||!u(l,-1,!0));l--);return{start:new Ye(l,0),end:h}}function ye(){}function ke(e){e=e.state.vim;return e.searchState_||(e.searchState_=new ye)}function Ce(e,t){var r=we(e,t)||[];if(!r.length)return[];var n=[];if(0===r[0]){for(var o=0;o<r.length;o++)"number"==typeof r[o]&&n.push(e.substring(r[o]+1,r[o+1]));return n}}function we(e,t){t=t||"/";for(var r=!1,n=[],o=0;o<e.length;o++){var i=e.charAt(o);r||i!=t||n.push(o),r=!r&&"\\"==i}return n}M("pcre",!0,"boolean"),ye.prototype={getQuery:function(){return T.query},setQuery:function(e){T.query=e},getOverlay:function(){return this.searchOverlay},setOverlay:function(e){this.searchOverlay=e},isReversed:function(){return T.isReversed},setReversed:function(e){T.isReversed=e},getScrollbarAnnotate:function(){return this.annotate},setScrollbarAnnotate:function(e){this.annotate=e}};var xe={"\\n":"\n","\\r":"\r","\\t":"\t"};function Me(e){for(var t,r=!1,n=[],o=-1;o<e.length;o++){var i=e.charAt(o)||"",a=e.charAt(o+1)||"";xe[i+a]?(n.push(xe[i+a]),o++):r?(n.push(i),r=!1):"\\"===i?(r=!0,t=a,c.test(t)||"$"===a?n.push("$"):"/"!==a&&"\\"!==a&&n.push("\\")):("$"===i&&n.push("$"),n.push(i),"/"===a&&n.push("\\"))}return n.join("")}var Se={"\\/":"/","\\\\":"\\","\\n":"\n","\\r":"\r","\\t":"\t","\\&":"&"};function Ae(e,t,r){if(T.registerController.getRegister("/").setText(e),e instanceof RegExp)return e;var n,o,i=we(e,"/");return i.length?(n=e.substring(0,i[0]),o=-1!=e.substring(i[0]).indexOf("i")):n=e,n?(b("pcre")||(n=function(e){for(var t=!1,r=[],n=-1;n<e.length;n++){var o=e.charAt(n)||"",i=e.charAt(n+1)||"",a=i&&-1!="|(){".indexOf(i);t?("\\"===o&&a||r.push(o),t=!1):"\\"===o?(t=!0,i&&-1!="}".indexOf(i)&&(a=!0),a&&"\\"!==i||r.push(o)):(r.push(o),a&&"\\"!==i&&r.push("\\"))}return r.join("")}(n)),r&&(t=/^[^A-Z]*$/.test(n)),new RegExp(n,t||o?"i":void 0)):null}function be(e){"string"==typeof e&&(e=document.createElement(e));for(var t,r=1;r<arguments.length;r++)if(t=arguments[r])if("object"!=typeof t&&(t=document.createTextNode(t)),t.nodeType)e.appendChild(t);else for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&("$"===n[0]?e.style[n.slice(1)]=t[n]:e.setAttribute(n,t[n]));return e}function Le(e,t){t=be("pre",{$color:"red"},t);e.openNotification?e.openNotification(t,{bottom:!0,duration:5e3}):alert(t.innerText)}function Te(e,t){var r,n,o=(t.prefix||"")+" "+(t.desc||""),n=(r=t.prefix,n=t.desc,be(document.createDocumentFragment(),be("span",{$fontFamily:"monospace",$whiteSpace:"pre"},r,be("input",{type:"text",autocorrect:"off",autocapitalize:"off",spellcheck:"false"})),n&&be("span",{$color:"#888"},n)));e.openDialog?e.openDialog(n,t.onClose,{onKeyDown:t.onKeyDown,onKeyUp:t.onKeyUp,bottom:!0,selectValueOnOpen:!1,value:t.value}):t.onClose(prompt(o,""))}function Re(e,t,r,n){if(t){var o=ke(e),n=Ae(t,!!r,!!n);if(n)return Oe(e,n),function(e,t){if(e instanceof RegExp&&t instanceof RegExp){for(var r=["global","multiline","ignoreCase","source"],n=0;n<r.length;n++){var o=r[n];if(e[o]!==t[o])return}return 1}}(n,o.getQuery())||o.setQuery(n),n}}var Ee=0;function Oe(o,i){clearTimeout(Ee),Ee=setTimeout(function(){var r,n,e=ke(o),t=e.getOverlay();t&&i==t.query||(t&&o.removeOverlay(t),"^"==(r=i).source.charAt(0)&&(n=!0),t={token:function(e){if(!n||e.sol()){var t=e.match(r,!1);if(t)return 0==t[0].length?(e.next(),"searching"):e.sol()||(e.backUp(1),r.exec(e.next()+t[0]))?(e.match(r),"searching"):(e.next(),null);for(;!e.eol()&&(e.next(),!e.match(r,!1)););}else e.skipToEnd()},query:r},o.addOverlay(t),o.showMatchesOnScrollbar&&(e.getScrollbarAnnotate()&&e.getScrollbarAnnotate().clear(),e.setScrollbarAnnotate(o.showMatchesOnScrollbar(i))),e.setOverlay(t))},50)}function Be(o,i,a,s){return void 0===s&&(s=1),o.operation(function(){for(var e=o.getCursor(),t=o.getSearchCursor(a,e),r=0;r<s;r++){var n=t.find(i);if(0==r&&n&&z(t.from(),e)&&(n=t.find(i)),!n&&!(t=o.getSearchCursor(a,i?Ye(o.lastLine()):Ye(o.firstLine(),0))).find(i))return}return t.from()})}function Ie(e){var t=ke(e);e.removeOverlay(ke(e).getOverlay()),t.setOverlay(null),t.getScrollbarAnnotate()&&(t.getScrollbarAnnotate().clear(),t.setScrollbarAnnotate(null))}function Ne(e){var t=e.getScrollInfo(),r=e.coordsChar({left:0,top:6+t.top},"local"),t=t.clientHeight-10+t.top,t=e.coordsChar({left:0,top:t},"local");return{top:r.line,bottom:t.line}}function Ke(e,t,r){if("'"==r||"`"==r)return T.jumpList.find(e,-1)||Ye(0,0);if("."==r)return Pe(e);r=t.marks[r];return r&&r.find()}function Pe(e){for(var t=e.doc.history.done,r=t.length;r--;)if(t[r].changes)return Q(t[r].changes[0].to)}p=function(){this.buildCommandMap_()};p.prototype={processCommand:function(e,t,r){var n=this;e.operation(function(){e.curOp.isVimOp=!0,n._processCommand(e,t,r)})},_processCommand:function(t,e,r){var n=t.state.vim,o=T.registerController.getRegister(":"),i=o.toString();n.visualMode&&se(t);var a=new ze.StringStream(e);o.setText(e);var s,l,c=r||{};c.input=e;try{this.parseInput_(t,a,c)}catch(e){throw Le(t,e.toString()),e}if(c.commandName){if(s=this.matchCommand_(c.commandName)){if(l=s.name,s.excludeFromCommandHistory&&o.setText(i),this.parseCommandArgs_(a,c,s),"exToKey"==s.type){for(var u=0;u<s.toKeys.length;u++)ze.Vim.handleKey(t,s.toKeys[u],"mapping");return}if("exToEx"==s.type)return void this.processCommand(t,s.toInput)}}else void 0!==c.line&&(l="move");if(l)try{je[l](t,c),s&&s.possiblyAsync||!c.callback||c.callback()}catch(e){throw Le(t,e.toString()),e}else Le(t,'Not an editor command ":'+e+'"')},parseInput_:function(e,t,r){t.eatWhile(":"),t.eat("%")?(r.line=e.firstLine(),r.lineEnd=e.lastLine()):(r.line=this.parseLineSpec_(e,t),void 0!==r.line&&t.eat(",")&&(r.lineEnd=this.parseLineSpec_(e,t)));e=t.match(/^(\w+|!!|@@|[!#&*<=>@~])/);return r.commandName=e?e[1]:t.match(/.*/)[0],r},parseLineSpec_:function(e,t){var r=t.match(/^(\d+)/);if(r)return parseInt(r[1],10)-1;switch(t.next()){case".":return this.parseLineSpecOffset_(t,e.getCursor().line);case"$":return this.parseLineSpecOffset_(t,e.lastLine());case"'":r=t.next(),r=Ke(e,e.state.vim,r);if(!r)throw new Error("Mark not set");return this.parseLineSpecOffset_(t,r.line);case"-":case"+":return t.backUp(1),this.parseLineSpecOffset_(t,e.getCursor().line);default:return void t.backUp(1)}},parseLineSpecOffset_:function(e,t){var r=e.match(/^([+-])?(\d+)/);return r&&(e=parseInt(r[2],10),"-"==r[1]?t-=e:t+=e),t},parseCommandArgs_:function(e,t,r){e.eol()||(t.argString=e.match(/.*/)[0],r=r.argDelimiter||/\s+/,(r=te(t.argString).split(r)).length&&r[0]&&(t.args=r))},matchCommand_:function(e){for(var t=e.length;0<t;t--){var r=e.substring(0,t);if(this.commandMap_[r]){r=this.commandMap_[r];if(0===r.name.indexOf(e))return r}}return null},buildCommandMap_:function(){this.commandMap_={};for(var e=0;e<Ge.length;e++){var t=Ge[e],r=t.shortName||t.name;this.commandMap_[r]=t}},map:function(e,t,r){if(":"!=e&&":"==e.charAt(0)){if(r)throw Error("Mode not supported for ex mappings");var n=e.substring(1);":"!=t&&":"==t.charAt(0)?this.commandMap_[n]={name:n,type:"exToEx",toInput:t.substring(1),user:!0}:this.commandMap_[n]={name:n,type:"exToKey",toKeys:t,user:!0}}else t=":"!=t&&":"==t.charAt(0)?{keys:e,type:"keyToEx",exArgs:{input:t.substring(1)}}:{keys:e,type:"keyToKey",toKeys:t},r&&(t.context=r),Xe.unshift(t)},unmap:function(e,t){if(":"!=e&&":"==e.charAt(0)){if(t)throw Error("Mode not supported for ex mappings");var r=e.substring(1);if(this.commandMap_[r]&&this.commandMap_[r].user)return void delete this.commandMap_[r]}else for(var n=e,o=0;o<Xe.length;o++)if(n==Xe[o].keys&&Xe[o].context===t)return void Xe.splice(o,1);throw Error("No such mapping.")}};var je={colorscheme:function(e,t){!t.args||t.args.length<1?Le(e,e.getOption("theme")):e.setOption("theme",t.args[0])},map:function(e,t,r){var n=t.args;!n||n.length<2?e&&Le(e,"Invalid mapping: "+t.input):_e.map(n[0],n[1],r)},imap:function(e,t){this.map(e,t,"insert")},nmap:function(e,t){this.map(e,t,"normal")},vmap:function(e,t){this.map(e,t,"visual")},unmap:function(e,t,r){var n=t.args;!n||n.length<1?e&&Le(e,"No such mapping: "+t.input):_e.unmap(n[0],r)},move:function(e,t){H.processCommand(e,e.state.vim,{type:"motion",motion:"moveToLineOrEdgeOfDocument",motionArgs:{forward:!1,explicitRepeat:!0,linewise:!0},repeatOverride:t.line+1})},set:function(e,t){var r=t.args,n=t.setCfg||{};if(!r||r.length<1)e&&Le(e,"Invalid mapping: "+t.input);else{var o=r[0].split("="),i=o[0],r=o[1],o=!1;if("?"==i.charAt(i.length-1)){if(r)throw Error("Trailing characters: "+t.argString);i=i.substring(0,i.length-1),o=!0}void 0===r&&"no"==i.substring(0,2)&&(i=i.substring(2),r=!1);t=x[i]&&"boolean"==x[i].type;t&&null==r&&(r=!0),!t&&void 0===r||o?(o=b(i,e,n))instanceof Error?Le(e,o.message):Le(e,!0===o||!1===o?" "+(o?"":"no")+i:" "+i+"="+o):(n=S(i,r,e,n))instanceof Error&&Le(e,n.message)}},setlocal:function(e,t){t.setCfg={scope:"local"},this.set(e,t)},setglobal:function(e,t){t.setCfg={scope:"global"},this.set(e,t)},registers:function(e,t){var r=t.args,n=T.registerController.registers,o="----------Registers----------\n\n";if(r)for(var r=r.join(""),i=0;i<r.length;i++)a=r.charAt(i),T.registerController.isValidRegister(a)&&(o+='"'+a+" "+(n[a]||new P).toString()+"\n");else for(var a in n){var s=n[a].toString();s.length&&(o+='"'+a+" "+s+"\n")}Le(e,o)},sort:function(e,o){var i,a,s,l,c;var t=function(){if(o.argString){var e=new ze.StringStream(o.argString);if(e.eat("!")&&(i=!0),!e.eol()){if(!e.eatSpace())return"Invalid arguments";var t=e.match(/([dinuox]+)?\s*(\/.+\/)?\s*/);if(!t&&!e.eol())return"Invalid arguments";if(t[1]){a=-1!=t[1].indexOf("i"),s=-1!=t[1].indexOf("u");var r=-1!=t[1].indexOf("d")||-1!=t[1].indexOf("n")&&1,n=-1!=t[1].indexOf("x")&&1,e=-1!=t[1].indexOf("o")&&1;if(1<r+n+e)return"Invalid arguments";l=(r?"decimal":n&&"hex")||e&&"octal"}t[2]&&(c=new RegExp(t[2].substr(1,t[2].length-2),a?"i":""))}}}();if(t)Le(e,t+": "+o.argString);else{var r=o.line||e.firstLine(),t=o.lineEnd||o.line||e.lastLine();if(r!=t){var r=Ye(r,0),t=Ye(t,ee(e,t)),n=e.getRange(r,t).split("\n"),u=c||("decimal"==l?/(-?)([\d]+)/:"hex"==l?/(-?)(?:0x)?([0-9a-f]+)/i:"octal"==l?/([0-7]+)/:null),h="decimal"==l?10:"hex"==l?16:"octal"==l?8:null,p=[],f=[];if(l||c)for(var d=0;d<n.length;d++){var m=c?n[d].match(c):null;m&&""!=m[0]?p.push(m):(!c&&u.exec(n[d])?p:f).push(n[d])}else f=n;if(p.sort(c?function(e,t){var r;return i&&(r=e,e=t,t=r),a&&(e[0]=e[0].toLowerCase(),t[0]=t[0].toLowerCase()),e[0]<t[0]?-1:1}:y),c)for(d=0;d<p.length;d++)p[d]=p[d].input;else l||f.sort(y);if(n=i?p.concat(f):f.concat(p),s)for(var g,v=n,n=[],d=0;d<v.length;d++)v[d]!=g&&n.push(v[d]),g=v[d];e.replaceRange(n.join("\n"),r,t)}}function y(e,t){i&&(n=e,e=t,t=n),a&&(e=e.toLowerCase(),t=t.toLowerCase());var r=l&&u.exec(e),n=l&&u.exec(t);return r?parseInt((r[1]+r[2]).toLowerCase(),h)-(n=parseInt((n[1]+n[2]).toLowerCase(),h)):e<t?-1:1}},vglobal:function(e,t){this.global(e,t)},global:function(t,e){var r=e.argString;if(r){var n,o="v"===e.commandName[0],i=void 0!==e.line?e.line:t.firstLine(),a=e.lineEnd||e.line||t.lastLine(),e=Ce(r,"/"),s=r;if(e.length&&(s=e[0],n=e.slice(1,e.length).join("/")),s)try{Re(t,s,!0,!0)}catch(e){return void Le(t,"Invalid regex: "+s)}for(var l,c,u=ke(t).getQuery(),h=[],p=i;p<=a;p++){var f=t.getLineHandle(p);u.test(f.text)!==o&&h.push(n?f:f.text)}n?(l=0,(c=function(){var e;l<h.length&&(e=h[l++],null!=(e=t.getLineNumber(e))?(e=e+1+n,_e.processCommand(t,e,{callback:c})):c())})()):Le(t,h.join("\n"))}else Le(t,"Regular Expression missing from global")},substitute:function(t,e){if(!t.getSearchCursor)throw new Error("Search feature not available. Requires searchcursor.js or any other getSearchCursor implementation.");var r,n,o,i,a=e.argString,s=a?Ce(a,a[0]):[],l="",c=!1,u=!1;if(s.length)r=s[0],b("pcre")&&""!==r&&(r=new RegExp(r).source),l=s[1],/(^|[^\\])(\\\\)*\$$/.test(r)&&(r=r.slice(0,-1)+"\\n",l=(l||"")+"\n"),void 0!==l&&(l=b("pcre")?function(e){for(var t=new ze.StringStream(e),r=[];!t.eol();){for(;t.peek()&&"\\"!=t.peek();)r.push(t.next());var n,o=!1;for(n in Se)if(t.match(n,!0)){o=!0,r.push(Se[n]);break}o||r.push(t.next())}return r.join("")}(l.replace(/([^\\])&/g,"$1$$&")):Me(l),T.lastSubstituteReplacePart=l),n=s[2]?s[2].split(" "):[];else if(a&&a.length)return void Le(t,"Substitutions should be of the form :s/pattern/replace/");if(n&&(o=n[0],i=parseInt(n[1]),o&&(-1!=o.indexOf("c")&&(c=!0),-1!=o.indexOf("g")&&(u=!0),r=b("pcre")?r+"/"+o:r.replace(/\//g,"\\/")+"/"+o)),r)try{Re(t,r,!0,!0)}catch(e){return void Le(t,"Invalid regex: "+r)}void 0!==(l=l||T.lastSubstituteReplacePart)?(a=ke(t).getQuery(),n=(void 0!==e.line?e:t.getCursor()).line,o=e.lineEnd||n,n==t.firstLine()&&o==t.lastLine()&&(o=1/0),i&&(o=(n=o)+i-1),i=$(t,Ye(n,0)),i=t.getSearchCursor(a,i),function(n,e,o,i,a,s,r,l,c){n.state.vim.exMode=!0;var u,h,p,f=!1;function d(){n.operation(function(){for(;!f;)m(),g();v()})}function m(){var e=n.getRange(s.from(),s.to()).replace(r,l),t=s.to().line;s.replace(e),h=s.to().line,a+=h-t,p=h<t}function g(){for(;s.findNext()&&(e=s.from(),t=i,r=a,"number"!=typeof e&&(e=e.line),t instanceof Array?w(e,t):"number"==typeof r?t<=e&&e<=r:e==t);)if(o||s.from().line!=h||p)return n.scrollIntoView(s.from(),30),n.setSelection(s.from(),s.to()),u=s.from(),void(f=!1);var e,t,r;f=!0}function v(e){e&&e(),n.focus(),u&&(n.setCursor(u),(e=n.state.vim).exMode=!1,e.lastHPos=e.lastHSPos=u.ch),c&&c()}if(g(),f)return Le(n,"No matches for "+r.source);if(!e)return d(),c&&c();Te(n,{prefix:be("span","replace with ",be("strong",l)," (y/n/a/q/l)"),onKeyDown:function(e,t,r){switch(ze.e_stop(e),ze.keyName(e)){case"Y":m(),g();break;case"N":g();break;case"A":e=c;c=void 0,n.operation(d),c=e;break;case"L":m();case"Q":case"Esc":case"Ctrl-C":case"Ctrl-[":v(r)}return f&&v(r),!0}})}(t,c,u,n,o,i,a,l,e.callback)):Le(t,"No previous substitute regular expression")},redo:ze.commands.redo,undo:ze.commands.undo,write:function(e){ze.commands.save?ze.commands.save(e):e.save&&e.save()},nohlsearch:function(e){Ie(e)},yank:function(e){var t=Q(e.getCursor()).line,t=e.getLine(t);T.registerController.pushText("0","yank",t,!0,!0)},delmarks:function(e,t){if(t.argString&&te(t.argString))for(var r=e.state.vim,n=new ze.StringStream(te(t.argString));!n.eol();){n.eatSpace();var o=n.pos;if(!n.match(/[a-zA-Z]/,!1))return void Le(e,"Invalid argument: "+t.argString.substring(o));var i=n.next();if(n.match("-",!0)){if(!n.match(/[a-zA-Z]/,!1))return void Le(e,"Invalid argument: "+t.argString.substring(o));var a=i,s=n.next();if(!(y(a)&&y(s)||k(a)&&k(s)))return void Le(e,"Invalid argument: "+a+"-");var l=a.charCodeAt(0),c=s.charCodeAt(0);if(c<=l)return void Le(e,"Invalid argument: "+t.argString.substring(o));for(var u=0;u<=c-l;u++){var h=String.fromCharCode(l+u);delete r.marks[h]}}else delete r.marks[i]}else Le(e,"Argument required")}},_e=new p;function He(e){var t=e.state.vim,r=T.macroModeState,n=T.registerController.getRegister("."),o=r.isPlaying,i=r.lastInsertModeChanges;o||(e.off("change",We),ze.off(e.getInputField(),"keydown",Je)),!o&&1<t.insertModeRepeat&&(qe(e,t,t.insertModeRepeat-1,!0),t.lastEditInputState.repeatOverride=t.insertModeRepeat),delete t.insertModeRepeat,t.insertMode=!1,e.setCursor(e.getCursor().line,e.getCursor().ch-1),e.setOption("keyMap","vim"),e.setOption("disableInput",!0),e.toggleOverwrite(!1),n.setText(i.changes.join("")),ze.signal(e,"vim-mode-change",{mode:"normal"}),r.isRecording&&function(e){if(e.isPlaying)return;var t=e.latestRegister,t=T.registerController.getRegister(t);t&&t.pushInsertModeChanges&&t.pushInsertModeChanges(e.lastInsertModeChanges)}(r)}function Fe(e){Xe.unshift(e)}function We(e,t){var r,n=T.macroModeState,o=n.lastInsertModeChanges;if(!n.isPlaying)for(;t;)o.expectCursorActivityForChange=!0,1<o.ignoreCount?o.ignoreCount--:"+input"!=t.origin&&"paste"!=t.origin&&void 0!==t.origin||(1<(r=e.listSelections().length)&&(o.ignoreCount=r),r=t.text.join("\n"),o.maybeReset&&(o.changes=[],o.maybeReset=!1),r&&(e.state.overwrite&&!/\n/.test(r)?o.changes.push([r]):o.changes.push(r))),t=t.next}function De(e){var t=e.state.vim;if(t.insertMode){var r=T.macroModeState;if(r.isPlaying)return;r=r.lastInsertModeChanges;r.expectCursorActivityForChange?r.expectCursorActivityForChange=!1:r.maybeReset=!0}else e.curOp.isVimOp||function(e,t){var r=e.getCursor("anchor"),n=e.getCursor("head");t.visualMode&&!e.somethingSelected()?se(e,!1):t.visualMode||t.insertMode||!e.somethingSelected()||(t.visualMode=!0,t.visualLine=!1,ze.signal(e,"vim-mode-change",{mode:"visual"}));{var o,i;t.visualMode?(o=X(n,r)?0:-1,i=X(n,r)?-1:0,n=J(n,0,o),r=J(r,0,i),t.sel={anchor:r,head:n},ge(e,t,"<",Z(n,r)),ge(e,t,">",G(n,r))):t.insertMode||(t.lastHPos=e.getCursor().ch)}}(e,t);t.visualMode&&Ve(e)}function Ve(e){var t,r="cm-animate-fat-cursor",n=e.state.vim,o=$(e,Q(n.sel.head)),i=J(o,0,1);$e(n),o.ch==e.getLine(o.line).length?(t=be("span",{class:r}," "),n.fakeCursorBookmark=e.setBookmark(o,{widget:t})):n.fakeCursor=e.markText(o,i,{className:r})}function $e(e){e.fakeCursor&&(e.fakeCursor.clear(),e.fakeCursor=null),e.fakeCursorBookmark&&(e.fakeCursorBookmark.clear(),e.fakeCursorBookmark=null)}function Ue(e){this.keyName=e}function Je(e){var t=T.macroModeState.lastInsertModeChanges,r=ze.keyName(e);r&&(-1==r.indexOf("Delete")&&-1==r.indexOf("Backspace")||ze.lookupKey(r,"vim-insert",function(){return t.maybeReset&&(t.changes=[],t.maybeReset=!1),t.changes.push(new Ue(r)),!0}))}function qe(r,n,e,t){var o=T.macroModeState;o.isPlaying=!0;var i=!!n.lastEditActionCommand,a=n.inputState;function s(){i?H.processAction(r,n,n.lastEditActionCommand):H.evalInput(r,n)}function l(e){var t;0<o.lastInsertModeChanges.changes.length&&(e=n.lastEditActionCommand?e:1,t=o.lastInsertModeChanges,Qe(r,t.changes,e))}if(n.inputState=n.lastEditInputState,i&&n.lastEditActionCommand.interlaceInsertRepeat)for(var c=0;c<e;c++)s(),l(1);else t||s(),l(e);n.inputState=a,n.insertMode&&!t&&He(r),o.isPlaying=!1}function Qe(t,e,r){function n(e){return"string"==typeof e?ze.commands[e](t):e(t),!0}var o=t.getCursor("head"),i=T.macroModeState.lastInsertModeChanges.visualBlock;i&&(ne(t,o,i+1),r=t.listSelections().length,t.setCursor(o));for(var a=0;a<r;a++){i&&t.setCursor(J(o,a,0));for(var s=0;s<e.length;s++){var l,c,u=e[s];u instanceof Ue?ze.lookupKey(u.keyName,"vim-insert",n):"string"==typeof u?(c=t.getCursor(),t.replaceRange(u,c,c)):(c=J(l=t.getCursor(),0,u[0].length),t.replaceRange(u[0],l,c))}}i&&t.setCursor(J(o,0,1))}return ze.keyMap.vim={attach:n,detach:e,call:t},M("insertModeEscKeysTimeout",200,"number"),ze.keyMap["vim-insert"]={fallthrough:["default"],attach:n,detach:e,call:t},ze.keyMap["vim-replace"]={Backspace:"goCharLeft",fallthrough:["vim-insert"],attach:n,detach:e,call:t},I(),h}()}); |