TiddlyWiki5/plugins/tiddlywiki/codemirror-keymap-vim/files/keymap/vim.js
Leilei332 cd480de280
Bump codemirror 5 plugin version to 5.65.19 (#9114)
* Bump codemirror 5 plugin version to 5.65.19

* Update autocomplete

* Update closebrackets

* Update fullscreen

* Update keymap

* Update modes

* Update search

* Update trailingspace

* Fix broken markdown mode

* Add all codemirror plugins to codemirrordemo edition
2025-06-28 16:18:42 +01:00

1 line
No EOL
81 KiB
JavaScript
Executable file

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