ace-builds
Version:
Ace (Ajax.org Cloud9 Editor)
1 lines • 119 kB
JavaScript
define("ace/ext/hardwrap",["require","exports","module","ace/range","ace/editor","ace/config"],function(e,t,n){"use strict";function i(e,t){function m(e,t,n){if(e.length<t)return;var r=e.slice(0,t),i=e.slice(t),s=/^(?:(\s+)|(\S+)(\s+))/.exec(i),o=/(?:(\s+)|(\s+)(\S+))$/.exec(r),u=0,a=0;o&&!o[2]&&(u=t-o[1].length,a=t),s&&!s[2]&&(u||(u=t),a=t+s[1].length);if(u)return{start:u,end:a};if(o&&o[2]&&o.index>n)return{start:o.index,end:o.index+o[2].length};if(s&&s[2])return u=t+s[2].length,{start:u,end:u+s[3].length}}var n=t.column||e.getOption("printMarginColumn"),i=t.allowMerge!=0,s=Math.min(t.startRow,t.endRow),o=Math.max(t.startRow,t.endRow),u=e.session;while(s<=o){var a=u.getLine(s);if(a.length>n){var f=m(a,n,5);if(f){var l=/^\s*/.exec(a)[0];u.replace(new r(s,f.start,s,f.end),"\n"+l)}o++}else if(i&&/\S/.test(a)&&s!=o){var c=u.getLine(s+1);if(c&&/\S/.test(c)){var h=a.replace(/\s+$/,""),p=c.replace(/^\s+/,""),d=h+" "+p,f=m(d,n,5);if(f&&f.start>h.length||d.length<n){var v=new r(s,h.length,s+1,c.length-p.length);u.replace(v," "),s--,o--}else h.length<a.length&&u.remove(new r(s,h.length,s,a.length))}}s++}}function s(e){if(e.command.name=="insertstring"&&/\S/.test(e.args)){var t=e.editor,n=t.selection.cursor;if(n.column<=t.renderer.$printMarginColumn)return;var r=t.session.$undoManager.$lastDelta;i(t,{startRow:n.row,endRow:n.row,allowMerge:!1}),r!=t.session.$undoManager.$lastDelta&&t.session.markUndoGroup()}}var r=e("../range").Range,o=e("../editor").Editor;e("../config").defineOptions(o.prototype,"editor",{hardWrap:{set:function(e){e?this.commands.on("afterExec",s):this.commands.off("afterExec",s)},value:!1}}),t.hardWrap=i}),define("ace/keyboard/vim",["require","exports","module","ace/range","ace/lib/event_emitter","ace/lib/dom","ace/lib/oop","ace/lib/keys","ace/lib/event","ace/search","ace/lib/useragent","ace/search_highlight","ace/commands/multi_select_commands","ace/mode/text","ace/ext/hardwrap","ace/multi_select"],function(e,t,n){"use strict";function r(){function t(e){return typeof e!="object"?e+"":"line"in e?e.line+":"+e.ch:"anchor"in e?t(e.anchor)+"->"+t(e.head):Array.isArray(e)?"["+e.map(function(e){return t(e)})+"]":JSON.stringify(e)}var e="";for(var n=0;n<arguments.length;n++){var r=arguments[n],i=t(r);e+=i+" "}console.log(e)}function g(e){return{row:e.line,column:e.ch}}function y(e){return new w(e.row,e.column)}function E(e,t,n){if(t.line===n.line&&t.ch>=n.ch-1){var r=e.getLine(t.line),i=r.charCodeAt(t.ch);55296<=i&&i<=55551&&(n.ch+=1)}return{start:t,end:n}}function C(e){e.setOption("disableInput",!0),e.setOption("showCursorWhenSelecting",!1),m.signal(e,"vim-mode-change",{mode:"normal"}),e.on("cursorActivity",cr),Y(e),m.on(e.getInputField(),"paste",L(e))}function k(e){e.setOption("disableInput",!1),e.off("cursorActivity",cr),m.off(e.getInputField(),"paste",L(e)),e.state.vim=null,Wn&&clearTimeout(Wn)}function L(e){var t=e.state.vim;return t.onPasteFn||(t.onPasteFn=function(){t.insertMode||(e.setCursor(Mt(e.getCursor(),0,1)),kt.enterInsertMode(e,{},t))}),t.onPasteFn}function j(e,t){return t>=e.firstLine()&&t<=e.lastLine()}function F(e){return/^[a-z]$/.test(e)}function I(e){return"()[]{}".indexOf(e)!=-1}function q(e){return A.test(e)}function R(e){return H.test(e)}function U(e){return/^\s*$/.test(e)}function z(e){return".?!".indexOf(e)!=-1}function W(e,t){for(var n=0;n<t.length;n++)if(t[n]==e)return!0;return!1}function V(e,t,n,r,i){if(t===undefined&&!i)throw Error("defaultValue is required unless callback is provided");n||(n="string"),X[e]={type:n,defaultValue:t,callback:i};if(r)for(var s=0;s<r.length;s++)X[r[s]]=X[e];t&&$(e,t)}function $(e,t,n,r){var i=X[e];r=r||{};var s=r.scope;if(!i)return new Error("Unknown option: "+e);if(i.type=="boolean"){if(t&&t!==!0)return new Error("Invalid argument: "+e+"="+t);t!==!1&&(t=!0)}i.callback?(s!=="local"&&i.callback(t,undefined),s!=="global"&&n&&i.callback(t,n)):(s!=="local"&&(i.value=i.type=="boolean"?!!t:t),s!=="global"&&n&&(n.state.vim.options[e]={value:t}))}function J(e,t,n){var r=X[e];n=n||{};var i=n.scope;if(!r)return new Error("Unknown option: "+e);if(r.callback){var s=t&&r.callback(undefined,t);if(i!=="global"&&s!==undefined)return s;if(i!=="local")return r.callback();return}var s=i!=="global"&&t&&t.state.vim.options[e];return(s||i!=="local"&&r||{}).value}function G(){this.latestRegister=undefined,this.isPlaying=!1,this.isRecording=!1,this.replaySearchQueries=[],this.onRecordingDone=undefined,this.lastInsertModeChanges=Q()}function Y(e){return e.state.vim||(e.state.vim={inputState:new dt,lastEditInputState:undefined,lastEditActionCommand:undefined,lastHPos:-1,lastHSPos:-1,lastMotion:null,marks:{},insertMode:!1,insertModeReturn:!1,insertModeRepeat:undefined,visualMode:!1,visualLine:!1,visualBlock:!1,lastSelection:null,lastPastedText:null,sel:{},options:{},expectLiteralNext:!1}),e.state.vim}function et(){Z={searchQuery:null,searchIsReversed:!1,lastSubstituteReplacePart:undefined,jumpList:K(),macroModeState:new G,lastCharacterSearch:{increment:0,forward:!0,selectedCharacter:""},registerController:new bt({}),searchHistoryController:new wt,exCommandHistoryController:new wt};for(var e in X){var t=X[e];t.value=t.defaultValue}}function ot(e){function o(e){typeof e=="string"?st.value=e:st=null}if(e[0]=="<"){var t=e.toLowerCase().slice(1,-1),n=t.split("-");t=n.pop()||"";if(t=="lt")e="<";else if(t=="space")e=" ";else if(t=="cr")e="\n";else if(lt[t]){var r=st.value,i={key:lt[t],target:{value:r,selectionEnd:r.length,selectionStart:r.length}};st.onKeyDown&&st.onKeyDown(i,st.value,o),st&&st.onKeyUp&&st.onKeyUp(i,st.value,o);return}}if(e=="\n"){var s=st;st=null,s.onClose&&s.onClose(s.value)}else st.value=(st.value||"")+e}function ut(e,t,n){var r=it;if(n){if(rt.indexOf(n)!=-1)return;rt.push(n),it=n.noremap!=0}try{var i=Y(e),s=/<(?:[CSMA]-)*\w+>|./gi,o;while(o=s.exec(t)){var u=o[0],a=i.insertMode;if(st){ot(u);continue}var f=nt.handleKey(e,u,"mapping");if(!f&&a&&i.insertMode){if(u[0]=="<"){var l=u.toLowerCase().slice(1,-1),c=l.split("-");l=c.pop()||"";if(l=="lt")u="<";else if(l=="space")u=" ";else if(l=="cr")u="\n";else{if(lt.hasOwnProperty(l)){u=lt[l],mr(e,u);continue}u=u[0],s.lastIndex=o.index+1}}e.replaceSelection(u)}}}finally{rt.pop(),it=rt.length?r:!1;if(!rt.length&&st){var h=st;st=null,qn(e,h)}}}function ct(e,t){var n=e.key;if(ft[n])return;n.length>1&&n[0]=="n"&&(n=n.replace("Numpad","")),n=at[n]||n;var r="";e.ctrlKey&&(r+="C-"),e.altKey&&(r+="A-"),e.metaKey&&(r+="M-"),m.isMac&&e.altKey&&!e.metaKey&&!e.ctrlKey&&(r=r.slice(2)),(r||n.length>1)&&e.shiftKey&&(r+="S-");if(t&&!t.expectLiteralNext&&n.length==1)if(N.keymap&&n in N.keymap){if(N.remapCtrl!=0||!r)n=N.keymap[n]}else if(n.charCodeAt(0)>255){var i=e.code&&e.code.slice(-1)||"";e.shiftKey||(i=i.toLowerCase()),i&&(n=i)}return r+=n,r.length>1&&(r="<"+r+">"),r}function ht(e,t){N.string!==e&&(N=pt(e)),N.remapCtrl=t}function pt(e){function n(e){return e.split(/\\?(.)/).filter(Boolean)}var t={};return e?(e.split(/((?:[^\\,]|\\.)+),/).map(function(e){if(!e)return;var r=e.split(/((?:[^\\;]|\\.)+);/);if(r.length==3){var i=n(r[1]),s=n(r[2]);if(i.length!==s.length)return;for(var o=0;o<i.length;++o)t[i[o]]=s[o]}else if(r.length==1){var u=n(e);if(u.length%2!==0)return;for(var o=0;o<u.length;o+=2)t[u[o]]=u[o+1]}}),{keymap:t,string:e}):{keymap:t,string:""}}function dt(){this.prefixRepeat=[],this.motionRepeat=[],this.operator=null,this.operatorArgs=null,this.motion=null,this.motionArgs=null,this.keyBuffer=[],this.registerName=null,this.changeQueue=null}function vt(e,t){e.state.vim.inputState=new dt,e.state.vim.expectLiteralNext=!1,m.signal(e,"vim-command-done",t)}function mt(){this.removed=[],this.inserted=""}function gt(e,t,n){this.clear(),this.keyBuffer=[e||""],this.insertModeChanges=[],this.searchQueries=[],this.linewise=!!t,this.blockwise=!!n}function yt(e,t){var n=Z.registerController.registers;if(!e||e.length!=1)throw Error("Register name must be 1 character");n[e]=t,D.push(e)}function bt(e){this.registers=e,this.unnamedRegister=e['"']=new gt,e["."]=new gt,e[":"]=new gt,e["/"]=new gt,e["+"]=new gt}function wt(){this.historyBuffer=[],this.iterator=0,this.initialPrefix=null}function xt(e,t){St[e]=t}function Tt(e,t){var n=[];for(var r=0;r<t;r++)n.push(e);return n}function Ct(e,t){Nt[e]=t}function Lt(e,t){kt[e]=t}function At(e,t,n){var r=e.state.vim,i=r.insertMode||r.visualMode,s=Math.min(Math.max(e.firstLine(),t.line),e.lastLine()),o=e.getLine(s),u=o.length-1+Number(!!i),a=Math.min(Math.max(0,t.ch),u),f=o.charCodeAt(a);if(56320<=f&&f<=57343){var l=1;n&&n.line==s&&n.ch>a&&(l=-1),a+=l,a>u&&(a-=2)}return new w(s,a)}function Ot(e){var t={};for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n]);return t}function Mt(e,t,n){return typeof t=="object"&&(n=t.ch,t=t.line),new w(e.line+t,e.ch+n)}function _t(e,t,n,r){r.operator&&(n="operatorPending");var i,s=[],o=[],u=it?t.length-x:0;for(var a=u;a<t.length;a++){var f=t[a];if(n=="insert"&&f.context!="insert"||f.context&&f.context!=n||r.operator&&f.type=="action"||!(i=Dt(e,f.keys)))continue;i=="partial"&&s.push(f),i=="full"&&o.push(f)}return{partial:s.length&&s,full:o.length&&o}}function Dt(e,t){var n=t.slice(-11)=="<character>",r=t.slice(-10)=="<register>";if(n||r){var i=t.length-(n?11:10),s=e.slice(0,i),o=t.slice(0,i);return s==o&&e.length>i?"full":o.indexOf(s)==0?"partial":!1}return e==t?"full":t.indexOf(e)==0?"partial":!1}function Pt(e){var t=/^.*(<[^>]+>)$/.exec(e),n=t?t[1]:e.slice(-1);if(n.length>1)switch(n){case"<CR>":n="\n";break;case"<Space>":n=" ";break;default:n=""}return n}function Ht(e,t,n){return function(){for(var r=0;r<n;r++)t(e)}}function Bt(e){return new w(e.line,e.ch)}function jt(e,t){return e.ch==t.ch&&e.line==t.line}function Ft(e,t){return e.line<t.line?!0:e.line==t.line&&e.ch<t.ch?!0:!1}function It(e,t){return arguments.length>2&&(t=It.apply(undefined,Array.prototype.slice.call(arguments,1))),Ft(e,t)?e:t}function qt(e,t){return arguments.length>2&&(t=qt.apply(undefined,Array.prototype.slice.call(arguments,1))),Ft(e,t)?t:e}function Rt(e,t,n){var r=Ft(e,t),i=Ft(t,n);return r&&i}function Ut(e,t){return e.getLine(t).length}function zt(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")}function Wt(e){return e.replace(/([.?*+$\[\]\/\\(){}|\-])/g,"\\$1")}function Xt(e,t,n){var r=Ut(e,t),i=(new Array(n-r+1)).join(" ");e.setCursor(new w(t,r)),e.replaceRange(i,e.getCursor())}function Vt(e,t){var n=[],r=e.listSelections(),i=Bt(e.clipPos(t)),s=!jt(t,i),o=e.getCursor("head"),u=Jt(r,o),a=jt(r[u].head,r[u].anchor),f=r.length-1,l=f-u>u?f:0,c=r[l].anchor,h=Math.min(c.line,i.line),p=Math.max(c.line,i.line),d=c.ch,v=i.ch,m=r[l].head.ch-d,g=v-d;m>0&&g<=0?(d++,s||v--):m<0&&g>=0?(d--,a||v++):m<0&&g==-1&&(d--,v++);for(var y=h;y<=p;y++){var b={anchor:new w(y,d),head:new w(y,v)};n.push(b)}return e.setSelections(n),t.ch=v,c.ch=d,c}function $t(e,t,n){var r=[];for(var i=0;i<n;i++){var s=Mt(t,i,0);r.push({anchor:s,head:s})}e.setSelections(r,0)}function Jt(e,t,n){for(var r=0;r<e.length;r++){var i=n!="head"&&jt(e[r].anchor,t),s=n!="anchor"&&jt(e[r].head,t);if(i||s)return r}return-1}function Kt(e,t){var n=t.lastSelection,r=function(){var t=e.listSelections(),n=t[0],r=t[t.length-1],i=Ft(n.anchor,n.head)?n.anchor:n.head,s=Ft(r.anchor,r.head)?r.head:r.anchor;return[i,s]},i=function(){var t=e.getCursor(),r=e.getCursor(),i=n.visualBlock;if(i){var s=i.width,o=i.height;r=new w(t.line+o,t.ch+s);var u=[];for(var a=t.line;a<r.line;a++){var f=new w(a,t.ch),l=new w(a,r.ch),c={anchor:f,head:l};u.push(c)}e.setSelections(u)}else{var h=n.anchorMark.find(),p=n.headMark.find(),d=p.line-h.line,v=p.ch-h.ch;r={line:r.line+d,ch:d?r.ch:v+r.ch},n.visualLine&&(t=new w(t.line,0),r=new w(r.line,Ut(e,r.line))),e.setSelection(t,r)}return[t,r]};return t.visualMode?r():i()}function Qt(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:Bt(n),head:Bt(r),visualMode:t.visualMode,visualLine:t.visualLine,visualBlock:t.visualBlock}}function Gt(e,t,n,r){var i=e.state.vim.sel,s=r?t:i.head,o=r?t:i.anchor,u;return Ft(n,t)&&(u=n,n=t,t=u),Ft(s,o)?(s=It(t,s),o=qt(o,n)):(o=It(t,o),s=qt(s,n),s=Mt(s,0,-1),s.ch==-1&&s.line!=e.firstLine()&&(s=new w(s.line-1,Ut(e,s.line-1)))),[o,s]}function Yt(e,t,n){var r=e.state.vim;t=t||r.sel;var n=n||r.visualLine?"line":r.visualBlock?"block":"char",i=Zt(e,t,n);e.setSelections(i.ranges,i.primary)}function Zt(e,t,n,r){var i=Bt(t.head),s=Bt(t.anchor);if(n=="char"){var o=!r&&!Ft(t.head,t.anchor)?1:0,u=Ft(t.head,t.anchor)?1:0;return i=Mt(t.head,0,o),s=Mt(t.anchor,0,u),{ranges:[{anchor:s,head:i}],primary:0}}if(n=="line"){if(!Ft(t.head,t.anchor)){s.ch=0;var a=e.lastLine();i.line>a&&(i.line=a),i.ch=Ut(e,i.line)}else i.ch=0,s.ch=Ut(e,s.line);return{ranges:[{anchor:s,head:i}],primary:0}}if(n=="block"){var f=Math.min(s.line,i.line),l=s.ch,c=Math.max(s.line,i.line),h=i.ch;l<h?h+=1:l+=1;var p=c-f+1,d=i.line==f?0:p-1,v=[];for(var m=0;m<p;m++)v.push({anchor:new w(f+m,l),head:new w(f+m,h)});return{ranges:v,primary:d}}}function en(e){var t=e.getCursor("head");return e.getSelection().length==1&&(t=It(t,e.getCursor("anchor"))),t}function tn(e,t){var n=e.state.vim;t!==!1&&e.setCursor(At(e,n.sel.head)),Qt(e,n),n.visualMode=!1,n.visualLine=!1,n.visualBlock=!1,n.insertMode||m.signal(e,"vim-mode-change",{mode:"normal"})}function nn(e,t,n){var r=e.getRange(t,n);if(/\n\s*$/.test(r)){var i=r.split("\n");i.pop();var s;for(var s=i.pop();i.length>0&&s&&U(s);s=i.pop())n.line--,n.ch=0;s?(n.line--,n.ch=Ut(e,n.line)):n.ch=0}}function rn(e,t,n){t.ch=0,n.ch=0,n.line++}function sn(e){if(!e)return 0;var t=e.search(/\S/);return t==-1?e.length:t}function on(e,t,n){var r=t.inclusive,i=t.innerWord,s=t.bigWord,o=t.noSymbol,u=t.multiline,a=n||en(e),f=e.getLine(a.line),l=f,c=a.line,h=c,p=a.ch,d,v=o?O[0]:M[0];if(i&&/\s/.test(f.charAt(p)))v=function(e){return/\s/.test(e)};else{while(!v(f.charAt(p))){p++;if(p>=f.length){if(!u)return null;p--,d=pn(e,a,!0,s,!0);break}}s?v=M[0]:(v=O[0],v(f.charAt(p))||(v=O[1]))}var m=p,g=p;while(v(f.charAt(g))&&g>=0)g--;g++;if(d)m=d.to,h=d.line,l=e.getLine(h),!l&&m==0&&m++;else while(v(f.charAt(m))&&m<f.length)m++;if(r){var y=m,b=a.ch<=g&&/\s/.test(f.charAt(a.ch));if(!b)while(/\s/.test(l.charAt(m))&&m<l.length)m++;if(y==m||b){var E=g;while(/\s/.test(f.charAt(g-1))&&g>0)g--;!g&&!b&&(g=E)}}return{start:new w(c,g),end:new w(h,m)}}function un(e,t,n){var r=t;if(!m.findMatchingTag||!m.findEnclosingTag)return{start:r,end:r};var i=m.findMatchingTag(e,t)||m.findEnclosingTag(e,t);return!i||!i.open||!i.close?{start:r,end:r}:n?{start:i.open.from,end:i.close.to}:{start:i.open.to,end:i.close.from}}function an(e,t,n){jt(t,n)||Z.jumpList.add(e,t,n)}function fn(e,t){Z.lastCharacterSearch.increment=e,Z.lastCharacterSearch.forward=t.forward,Z.lastCharacterSearch.selectedCharacter=t.selectedCharacter}function hn(e,t,n,r){var i=Bt(e.getCursor()),s=n?1:-1,o=n?e.lineCount():-1,u=i.ch,a=i.line,f=e.getLine(a),l={lineText:f,nextCh:f.charAt(u),lastCh:null,index:u,symb:r,reverseSymb:(n?{")":"(","}":"{"}:{"(":")","{":"}"})[r],forward:n,depth:0,curMoveThrough:!1},c=ln[r];if(!c)return i;var h=cn[c].init,p=cn[c].isComplete;h&&h(l);while(a!==o&&t){l.index+=s,l.nextCh=l.lineText.charAt(l.index);if(!l.nextCh){a+=s,l.lineText=e.getLine(a)||"";if(s>0)l.index=0;else{var d=l.lineText.length;l.index=d>0?d-1:0}l.nextCh=l.lineText.charAt(l.index)}p(l)&&(i.line=a,i.ch=l.index,t--)}return l.nextCh||l.curMoveThrough?new w(a,l.index):i}function pn(e,t,n,r,i){var s=t.line,o=t.ch,u=e.getLine(s),a=n?1:-1,f=r?M:O;if(i&&u==""){s+=a,u=e.getLine(s);if(!j(e,s))return null;o=n?0:u.length}for(;;){if(i&&u=="")return{from:0,to:0,line:s};var l=a>0?u.length:-1,c=l,h=l;while(o!=l){var p=!1;for(var d=0;d<f.length&&!p;++d)if(f[d](u.charAt(o))){c=o;while(o!=l&&f[d](u.charAt(o)))o+=a;h=o,p=c!=h;if(c==t.ch&&s==t.line&&h==c+a)continue;return{from:Math.min(c,h+1),to:Math.max(c,h),line:s}}p||(o+=a)}s+=a;if(!j(e,s))return null;u=e.getLine(s),o=a>0?0:u.length}}function dn(e,t,n,r,i,s){var o=Bt(t),u=[];(r&&!i||!r&&i)&&n++;var a=!r||!i;for(var f=0;f<n;f++){var l=pn(e,t,r,s,a);if(!l){var c=Ut(e,e.lastLine());u.push(r?{line:e.lastLine(),from:c,to:c}:{line:0,from:0,to:0});break}u.push(l),t=new w(l.line,r?l.to-1:l.from)}var h=u.length!=n,p=u[0],d=u.pop();return r&&!i?(!h&&(p.from!=o.ch||p.line!=o.line)&&(d=u.pop()),new w(d.line,d.from)):r&&i?new w(d.line,d.to-1):!r&&i?(!h&&(p.to!=o.ch||p.line!=o.line)&&(d=u.pop()),new w(d.line,d.to)):new w(d.line,d.from)}function vn(e,t,n,r,i){var s=t,o=new w(s.line+n.repeat-1,Infinity),u=e.clipPos(o);return u.ch--,i||(r.lastHPos=Infinity,r.lastHSPos=e.charCoords(u,"div").left),o}function mn(e,t,n,r,i){var s=i||e.getCursor(),o=s.ch,u;for(var a=0;a<t;a++){var f=e.getLine(s.line);u=bn(o,f,r,n,!0);if(u==-1)return null;o=u}return new w(e.getCursor().line,u)}function gn(e,t){var n=e.getCursor().line;return At(e,new w(n,t-1))}function yn(e,t,n,r){if(!W(n,_)&&!P.test(n))return;t.marks[n]&&t.marks[n].clear(),t.marks[n]=e.setBookmark(r)}function bn(e,t,n,r,i){var s;return r?(s=t.indexOf(n,e+1),s!=-1&&!i&&(s-=1)):(s=t.lastIndexOf(n,e-1),s!=-1&&!i&&(s+=1)),s}function wn(e,t,n,r,i){function c(t){return!/\S/.test(e.getLine(t))}function h(e,t,n){return n?c(e)!=c(e+t):!c(e)&&c(e+t)}function p(t){r=r>0?1:-1;var n=e.ace.session.getFoldLine(t);n&&t+r>n.start.row&&t+r<n.end.row&&(r=(r>0?n.end.row:n.start.row)-t)}var s=t.line,o=e.firstLine(),u=e.lastLine(),a,f,l=s;if(r){while(o<=l&&l<=u&&n>0)p(l),h(l,r)&&n--,l+=r;return new w(l,0)}var d=e.state.vim;if(d.visualLine&&h(s,1,!0)){var v=d.sel.anchor;h(v.line,-1,!0)&&(!i||v.line!=s)&&(s+=1)}var m=c(s);for(l=s;l<=u&&n;l++)h(l,1,!0)&&(!i||c(l)!=m)&&n--;f=new w(l,0),l>u&&!m?m=!0:i=!1;for(l=s;l>o;l--)if(!i||c(l)==m||l==s)if(h(l,-1,!0))break;return a=new w(l,0),{start:a,end:f}}function En(e,t,n,r,i){function s(e){e.pos+e.dir<0||e.pos+e.dir>=e.line.length?e.line=null:e.pos+=e.dir}function o(e,t,n,r){var o=e.getLine(t),u={line:o,ln:t,pos:n,dir:r};if(u.line==="")return{ln:u.ln,pos:u.pos};var a=u.pos;s(u);while(u.line!==null){a=u.pos;if(z(u.line[u.pos])){if(!i)return{ln:u.ln,pos:u.pos+1};s(u);while(u.line!==null){if(!U(u.line[u.pos]))break;a=u.pos,s(u)}return{ln:u.ln,pos:a+1}}s(u)}return{ln:u.ln,pos:a+1}}function u(e,t,n,r){var o=e.getLine(t),u={line:o,ln:t,pos:n,dir:r};if(u.line==="")return{ln:u.ln,pos:u.pos};var a=u.pos;s(u);while(u.line!==null){if(!U(u.line[u.pos])&&!z(u.line[u.pos]))a=u.pos;else if(z(u.line[u.pos]))return i?U(u.line[u.pos+1])?{ln:u.ln,pos:u.pos+1}:{ln:u.ln,pos:a}:{ln:u.ln,pos:a};s(u)}return u.line=o,i&&U(u.line[u.pos])?{ln:u.ln,pos:u.pos}:{ln:u.ln,pos:a}}var a={ln:t.line,pos:t.ch};while(n>0)r<0?a=u(e,a.ln,a.pos,r):a=o(e,a.ln,a.pos,r),n--;return new w(a.ln,a.pos)}function Sn(e,t,n,r){function i(e,t){if(t.pos+t.dir<0||t.pos+t.dir>=t.line.length){t.ln+=t.dir;if(!j(e,t.ln)){t.line=null,t.ln=null,t.pos=null;return}t.line=e.getLine(t.ln),t.pos=t.dir>0?0:t.line.length-1}else t.pos+=t.dir}function s(e,t,n,r){var s=e.getLine(t),o=s==="",u={line:s,ln:t,pos:n,dir:r},a={ln:u.ln,pos:u.pos},f=u.line==="";i(e,u);while(u.line!==null){a.ln=u.ln,a.pos=u.pos;if(u.line===""&&!f)return{ln:u.ln,pos:u.pos};if(o&&u.line!==""&&!U(u.line[u.pos]))return{ln:u.ln,pos:u.pos};z(u.line[u.pos])&&!o&&(u.pos===u.line.length-1||U(u.line[u.pos+1]))&&(o=!0),i(e,u)}var s=e.getLine(a.ln);a.pos=0;for(var l=s.length-1;l>=0;--l)if(!U(s[l])){a.pos=l;break}return a}function o(e,t,n,r){var s=e.getLine(t),o={line:s,ln:t,pos:n,dir:r},u={ln:o.ln,pos:null},a=o.line==="";i(e,o);while(o.line!==null){if(o.line===""&&!a)return u.pos!==null?u:{ln:o.ln,pos:o.pos};if(!(!z(o.line[o.pos])||u.pos===null||o.ln===u.ln&&o.pos+1===u.pos))return u;o.line!==""&&!U(o.line[o.pos])&&(a=!1,u={ln:o.ln,pos:o.pos}),i(e,o)}var s=e.getLine(u.ln);u.pos=0;for(var f=0;f<s.length;++f)if(!U(s[f])){u.pos=f;break}return u}var u={ln:t.line,pos:t.ch};while(n>0)r<0?u=o(e,u.ln,u.pos,r):u=s(e,u.ln,u.pos,r),n--;return new w(u.ln,u.pos)}function xn(e,t,n,r){var i=t,s,o,u={"(":/[()]/,")":/[()]/,"[":/[[\]]/,"]":/[[\]]/,"{":/[{}]/,"}":/[{}]/,"<":/[<>]/,">":/[<>]/}[n],a={"(":"(",")":"(","[":"[","]":"[","{":"{","}":"{","<":"<",">":"<"}[n],f=e.getLine(i.line).charAt(i.ch),l=f===a?1:0;s=e.scanForBracket(new w(i.line,i.ch+l),-1,undefined,{bracketRegex:u}),o=e.scanForBracket(new w(i.line,i.ch+l),1,undefined,{bracketRegex:u});if(!s||!o)return null;s=s.pos,o=o.pos;if(s.line==o.line&&s.ch>o.ch||s.line>o.line){var c=s;s=o,o=c}return r?o.ch+=1:s.ch+=1,{start:s,end:o}}function Tn(e,t,n,r){var i=Bt(t),s=e.getLine(i.line),o=s.split(""),u,a,f,l,c=o.indexOf(n);if(i.ch<c)i.ch=c;else if(c<i.ch&&o[i.ch]==n){var h=/string/.test(e.getTokenTypeAt(Mt(t,0,1))),p=/string/.test(e.getTokenTypeAt(t)),d=h&&!p;d||(a=i.ch,--i.ch)}if(o[i.ch]==n&&!a)u=i.ch+1;else for(f=i.ch;f>-1&&!u;f--)o[f]==n&&(u=f+1);if(u&&!a)for(f=u,l=o.length;f<l&&!a;f++)o[f]==n&&(a=f);return!u||!a?{start:i,end:i}:(r&&(--u,++a),{start:new w(i.line,u),end:new w(i.line,a)})}function Nn(){}function Cn(e){var t=e.state.vim;return t.searchState_||(t.searchState_=new Nn)}function kn(e){return An(e,"/")}function Ln(e){return On(e,"/")}function An(e,t){var n=On(e,t)||[];if(!n.length)return[];var r=[];if(n[0]!==0)return;for(var i=0;i<n.length;i++)typeof n[i]=="number"&&r.push(e.substring(n[i]+1,n[i+1]));return r}function On(e,t){t||(t="/");var n=!1,r=[];for(var i=0;i<e.length;i++){var s=e.charAt(i);!n&&s==t&&r.push(i),n=!n&&s=="\\"}return r}function Mn(e){var t="|(){",n="}",r=!1,i=[];for(var s=-1;s<e.length;s++){var o=e.charAt(s)||"",u=e.charAt(s+1)||"",a=u&&t.indexOf(u)!=-1;r?((o!=="\\"||!a)&&i.push(o),r=!1):o==="\\"?(r=!0,u&&n.indexOf(u)!=-1&&(a=!0),(!a||u==="\\")&&i.push(o)):(i.push(o),a&&u!=="\\"&&i.push("\\"))}return i.join("")}function Dn(e){var t=!1,n=[];for(var r=-1;r<e.length;r++){var i=e.charAt(r)||"",s=e.charAt(r+1)||"";_n[i+s]?(n.push(_n[i+s]),r++):t?(n.push(i),t=!1):i==="\\"?(t=!0,q(s)||s==="$"?n.push("$"):s!=="/"&&s!=="\\"&&n.push("\\")):(i==="$"&&n.push("$"),n.push(i),s==="/"&&n.push("\\"))}return n.join("")}function Hn(e){var t=new m.StringStream(e),n=[];while(!t.eol()){while(t.peek()&&t.peek()!="\\")n.push(t.next());var r=!1;for(var i in Pn)if(t.match(i,!0)){r=!0,n.push(Pn[i]);break}r||n.push(t.next())}return n.join("")}function Bn(e,t,n){var r=Z.registerController.getRegister("/");r.setText(e);if(e instanceof RegExp)return e;var i=Ln(e),s,o;if(!i.length)s=e;else{s=e.substring(0,i[0]);var u=e.substring(i[0]);o=u.indexOf("i")!=-1}if(!s)return null;J("pcre")||(s=Mn(s)),n&&(t=/^[^A-Z]*$/.test(s));var a=new RegExp(s,t||o?"im":"m");return a}function jn(e){typeof e=="string"&&(e=document.createElement(e));for(var t,n=1;n<arguments.length;n++){if(!(t=arguments[n]))continue;typeof t!="object"&&(t=document.createTextNode(t));if(t.nodeType)e.appendChild(t);else for(var r in t){if(!Object.prototype.hasOwnProperty.call(t,r))continue;r[0]==="$"?e.style[r.slice(1)]=t[r]:e.setAttribute(r,t[r])}}return e}function Fn(e,t){var n=jn("div",{$color:"red",$whiteSpace:"pre","class":"cm-vim-message"},t);e.openNotification?e.openNotification(n,{bottom:!0,duration:5e3}):alert(n.innerText)}function In(e,t){return jn("div",{$display:"flex"},jn("span",{$fontFamily:"monospace",$whiteSpace:"pre",$flex:1},e,jn("input",{type:"text",autocorrect:"off",autocapitalize:"off",spellcheck:"false",$width:"100%"})),t&&jn("span",{$color:"#888"},t))}function qn(e,t){if(rt.length){t.value||(t.value=""),st=t;return}var n=In(t.prefix,t.desc);if(e.openDialog)e.openDialog(n,t.onClose,{onKeyDown:t.onKeyDown,onKeyUp:t.onKeyUp,bottom:!0,selectValueOnOpen:!1,value:t.value});else{var r="";typeof t.prefix!="string"&&t.prefix&&(r+=t.prefix.textContent),t.desc&&(r+=" "+t.desc),t.onClose(prompt(r,""))}}function Rn(e,t){if(e instanceof RegExp&&t instanceof RegExp){var n=["global","multiline","ignoreCase","source"];for(var r=0;r<n.length;r++){var i=n[r];if(e[i]!==t[i])return!1}return!0}return!1}function Un(e,t,n,r){if(!t)return;var i=Cn(e),s=Bn(t,!!n,!!r);if(!s)return;return Xn(e,s),Rn(s,i.getQuery())?s:(i.setQuery(s),s)}function zn(e){if(e.source.charAt(0)=="^")var t=!0;return{token:function(n){if(t&&!n.sol()){n.skipToEnd();return}var r=n.match(e,!1);if(r){if(r[0].length==0)return n.next(),"searching";if(!n.sol()){n.backUp(1);if(!e.exec(n.next()+r[0]))return n.next(),null}return n.match(e),"searching"}while(!n.eol()){n.next();if(n.match(e,!1))break}},query:e}}function Xn(e,t){clearTimeout(Wn);var n=Cn(e);n.highlightTimeout=Wn,Wn=setTimeout(function(){if(!e.state.vim)return;var n=Cn(e);n.highlightTimeout=null;var r=n.getOverlay();if(!r||t!=r.query)r&&e.removeOverlay(r),r=zn(t),e.addOverlay(r),e.showMatchesOnScrollbar&&(n.getScrollbarAnnotate()&&n.getScrollbarAnnotate().clear(),n.setScrollbarAnnotate(e.showMatchesOnScrollbar(t))),n.setOverlay(r)},50)}function Vn(e,t,n,r){return r===undefined&&(r=1),e.operation(function(){var i=e.getCursor(),s=e.getSearchCursor(n,i);for(var o=0;o<r;o++){var u=s.find(t);if(o==0&&u&&jt(s.from(),i)){var a=t?s.from():s.to();u=s.find(t),u&&!u[0]&&jt(s.from(),a)&&e.getLine(a.line).length==a.ch&&(u=s.find(t))}if(!u){s=e.getSearchCursor(n,t?new w(e.lastLine()):new w(e.firstLine(),0));if(!s.find(t))return}}return s.from()})}function $n(e,t,n,r,i){return r===undefined&&(r=1),e.operation(function(){var s=e.getCursor(),o=e.getSearchCursor(n,s),u=o.find(!t);!i.visualMode&&u&&jt(o.from(),s)&&o.find(!t);for(var a=0;a<r;a++){u=o.find(t);if(!u){o=e.getSearchCursor(n,t?new w(e.lastLine()):new w(e.firstLine(),0));if(!o.find(t))return}}return[o.from(),o.to()]})}function Jn(e){var t=Cn(e);t.highlightTimeout&&(clearTimeout(t.highlightTimeout),t.highlightTimeout=null),e.removeOverlay(Cn(e).getOverlay()),t.setOverlay(null),t.getScrollbarAnnotate()&&(t.getScrollbarAnnotate().clear(),t.setScrollbarAnnotate(null))}function Kn(e,t,n){return typeof e!="number"&&(e=e.line),t instanceof Array?W(e,t):typeof n=="number"?e>=t&&e<=n:e==t}function Qn(e){var t=e.ace.renderer;return{top:t.getFirstFullyVisibleRow(),bottom:t.getLastFullyVisibleRow()}}function Gn(e,t,n){if(n=="'"||n=="`")return Z.jumpList.find(e,-1)||new w(0,0);if(n==".")return Yn(e);var r=t.marks[n];return r&&r.find()}function Yn(e){if(e.getLastEditEnd)return e.getLastEditEnd();var t=e.doc.history.done;for(var n=t.length;n--;)if(t[n].changes)return Bt(t[n].changes[0].to)}function nr(e,t,n,r,i,s,o,u,a){function p(){e.operation(function(){while(!f)d(),g();y()})}function d(){var t=e.getRange(s.from(),s.to()),n=t.replace(o,u),r=s.to().line;s.replace(n),c=s.to().line,i+=c-r,h=c<r}function v(){var e=l&&Bt(s.to()),t=s.findNext();return t&&!t[0]&&e&&jt(s.from(),e)&&(t=s.findNext()),t}function g(){while(v()&&Kn(s.from(),r,i)){if(!n&&s.from().line==c&&!h)continue;e.scrollIntoView(s.from(),30),e.setSelection(s.from(),s.to()),l=s.from(),f=!1;return}f=!0}function y(t){t&&t(),e.focus();if(l){e.setCursor(l);var n=e.state.vim;n.exMode=!1,n.lastHPos=n.lastHSPos=l.ch}a&&a()}function b(t,n,r){m.e_stop(t);var i=ct(t);switch(i){case"y":d(),g();break;case"n":g();break;case"a":var s=a;a=undefined,e.operation(p),a=s;break;case"l":d();case"q":case"<Esc>":case"<C-c>":case"<C-[>":y(r)}return f&&y(r),!0}e.state.vim.exMode=!0;var f=!1,l,c,h;g();if(f){Fn(e,"No matches for "+o.source);return}if(!t){p(),a&&a();return}qn(e,{prefix:jn("span","replace with ",jn("strong",u)," (y/n/a/q/l)"),onKeyDown:b})}function rr(e,t){var n=e.state.vim,r=Z.macroModeState,i=Z.registerController.getRegister("."),s=r.isPlaying,o=r.lastInsertModeChanges;s||(e.off("change",lr),n.insertEnd&&n.insertEnd.clear(),n.insertEnd=null,m.off(e.getInputField(),"keydown",dr)),!s&&n.insertModeRepeat>1&&(vr(e,n,n.insertModeRepeat-1,!0),n.lastEditInputState.repeatOverride=n.insertModeRepeat),delete n.insertModeRepeat,n.insertMode=!1,t||e.setCursor(e.getCursor().line,e.getCursor().ch-1),e.setOption("keyMap","vim"),e.setOption("disableInput",!0),e.toggleOverwrite(!1),i.setText(o.changes.join("")),m.signal(e,"vim-mode-change",{mode:"normal"}),r.isRecording&&ar(r)}function ir(e){S.unshift(e)}function sr(e,t,n,r,i){var s={keys:e,type:t};s[t]=n,s[t+"Args"]=r;for(var o in i)s[o]=i[o];ir(s)}function or(e,t,n,r){var i=Z.registerController.getRegister(r);if(r==":"){i.keyBuffer[0]&&tr.processCommand(e,i.keyBuffer[0]),n.isPlaying=!1;return}var s=i.keyBuffer,o=0;n.isPlaying=!0,n.replaySearchQueries=i.searchQueries.slice(0);for(var u=0;u<s.length;u++){var a=s[u],f,l;while(a){f=/<\w+-.+?>|<\w+>|./.exec(a),l=f[0],a=a.substring(f.index+l.length),nt.handleKey(e,l,"macro");if(t.insertMode){var c=i.insertModeChanges[o++].changes;Z.macroModeState.lastInsertModeChanges.changes=c,gr(e,c,1),rr(e)}}}n.isPlaying=!1}function ur(e,t){if(e.isPlaying)return;var n=e.latestRegister,r=Z.registerController.getRegister(n);r&&r.pushText(t)}function ar(e){if(e.isPlaying)return;var t=e.latestRegister,n=Z.registerController.getRegister(t);n&&n.pushInsertModeChanges&&n.pushInsertModeChanges(e.lastInsertModeChanges)}function fr(e,t){if(e.isPlaying)return;var n=e.latestRegister,r=Z.registerController.getRegister(n);r&&r.pushSearchQuery&&r.pushSearchQuery(t)}function lr(e,t){var n=Z.macroModeState,r=n.lastInsertModeChanges;if(!n.isPlaying){var i=e.state.vim;while(t){r.expectCursorActivityForChange=!0;if(r.ignoreCount>1)r.ignoreCount--;else if(t.origin=="+input"||t.origin=="paste"||t.origin===undefined){var s=e.listSelections().length;s>1&&(r.ignoreCount=s);var o=t.text.join("\n");r.maybeReset&&(r.changes=[],r.maybeReset=!1);if(o)if(e.state.overwrite&&!/\n/.test(o))r.changes.push([o]);else{if(o.length>1){var u=i&&i.insertEnd&&i.insertEnd.find(),a=e.getCursor();if(u&&u.line==a.line){var f=u.ch-a.ch;f>0&&f<o.length&&(r.changes.push([o,f]),o="")}}o&&r.changes.push(o)}}t=t.next}}}function cr(e){var t=e.state.vim;if(t.insertMode){var n=Z.macroModeState;if(n.isPlaying)return;var r=n.lastInsertModeChanges;r.expectCursorActivityForChange?r.expectCursorActivityForChange=!1:(r.maybeReset=!0,t.insertEnd&&t.insertEnd.clear(),t.insertEnd=e.setBookmark(e.getCursor(),{insertLeft:!0}))}else e.curOp.isVimOp||hr(e,t)}function hr(e,t,n){var r=e.getCursor("anchor"),i=e.getCursor("head");t.visualMode&&!e.somethingSelected()?tn(e,!1):!t.visualMode&&!t.insertMode&&e.somethingSelected()&&(t.visualMode=!0,t.visualLine=!1,m.signal(e,"vim-mode-change",{mode:"visual"}));if(t.visualMode){var s=Ft(i,r)?0:-1,o=Ft(i,r)?-1:0;i=Mt(i,0,s),r=Mt(r,0,o),t.sel={anchor:r,head:i},yn(e,t,"<",It(i,r)),yn(e,t,">",qt(i,r))}else!t.insertMode&&!n&&(t.lastHPos=e.getCursor().ch)}function pr(e,t){this.keyName=e,this.key=t.key,this.ctrlKey=t.ctrlKey,this.altKey=t.altKey,this.metaKey=t.metaKey,this.shiftKey=t.shiftKey}function dr(e){var t=Z.macroModeState,n=t.lastInsertModeChanges,r=m.keyName?m.keyName(e):e.key;if(!r)return;if(r.indexOf("Delete")!=-1||r.indexOf("Backspace")!=-1)n.maybeReset&&(n.changes=[],n.maybeReset=!1),n.changes.push(new pr(r,e))}function vr(e,t,n,r){function u(){s?Et.processAction(e,t,t.lastEditActionCommand):Et.evalInput(e,t)}function a(n){if(i.lastInsertModeChanges.changes.length>0){n=t.lastEditActionCommand?n:1;var r=i.lastInsertModeChanges;gr(e,r.changes,n)}}var i=Z.macroModeState;i.isPlaying=!0;var s=!!t.lastEditActionCommand,o=t.inputState;t.inputState=t.lastEditInputState;if(s&&t.lastEditActionCommand.interlaceInsertRepeat)for(var f=0;f<n;f++)u(),a(1);else r||u(),a(n);t.inputState=o,t.insertMode&&!r&&rr(e),i.isPlaying=!1}function mr(e,t){m.lookupKey(t,"vim-insert",function(n){return typeof n=="string"?m.commands[n](e):n(e),!0})}function gr(e,t,n){var r=e.getCursor("head"),i=Z.macroModeState.lastInsertModeChanges.visualBlock;i&&($t(e,r,i+1),n=e.listSelections().length,e.setCursor(r));for(var s=0;s<n;s++){i&&e.setCursor(Mt(r,s,0));for(var o=0;o<t.length;o++){var u=t[o];if(u instanceof pr)mr(e,u.keyName,u);else if(typeof u=="string")e.replaceSelection(u);else{var a=e.getCursor(),f=Mt(a,0,u[0].length-(u[1]||0));e.replaceRange(u[0],a,u[1]?a:f),e.setCursor(f)}}}i&&e.setCursor(Mt(r,0,1))}function br(e,t,n,r){t.length>1&&t[0]=="n"&&(t=t.replace("numpad","")),t=yr[t]||t;var i="";n.ctrlKey&&(i+="C-"),n.altKey&&(i+="A-"),(i||t.length>1)&&n.shiftKey&&(i+="S-");if(r&&!r.expectLiteralNext&&t.length==1)if(N.keymap&&t in N.keymap){if(N.remapCtrl!==!1||!i)t=N.keymap[t]}else if(t.charCodeAt(0)>255){var s=n.code&&n.code.slice(-1)||"";n.shiftKey||(s=s.toLowerCase()),s&&(t=s)}return i+=t,i.length>1&&(i="<"+i+">"),i}function Er(e){var t=new e.constructor;return Object.keys(e).forEach(function(n){if(n=="insertEnd")return;var r=e[n];Array.isArray(r)?r=r.slice():r&&typeof r=="object"&&r.constructor!=Object&&(r=Er(r)),t[n]=r}),e.sel&&(t.sel={head:e.sel.head&&Bt(e.sel.head),anchor:e.sel.anchor&&Bt(e.sel.anchor)}),t}function Sr(e,t,n){var r=!1,i=nt.maybeInitVimState_(e),s=i.visualBlock||i.wasInVisualBlock,o=e.ace.inMultiSelectMode;i.wasInVisualBlock&&!o?i.wasInVisualBlock=!1:o&&i.visualBlock&&(i.wasInVisualBlock=!0);if(t=="<Esc>"&&!i.insertMode&&!i.visualMode&&o)e.ace.exitMultiSelectMode();else if(s||!o||e.ace.inVirtualSelectionMode)r=nt.handleKey(e,t,n);else{var u=Er(i),a=i.inputState.changeQueueList||[];e.operation(function(){e.curOp.isVimOp=!0;var s=0;e.ace.forEachSelection(function(){var i=e.ace.selection;e.state.vim.lastHPos=i.$desiredColumn==null?i.lead.column:i.$desiredColumn,e.state.vim.inputState.changeQueue=a[s];var o=e.getCursor("head"),f=e.getCursor("anchor"),l=Ft(o,f)?0:-1,c=Ft(o,f)?-1:0;o=Mt(o,0,l),f=Mt(f,0,c),e.state.vim.sel.head=o,e.state.vim.sel.anchor=f,r=wr(e,t,n),i.$desiredColumn=e.state.vim.lastHPos==-1?null:e.state.vim.lastHPos,e.ace.inVirtualSelectionMode&&(a[s]=e.state.vim.inputState.changeQueue),e.virtualSelectionMode()&&(e.state.vim=Er(u)),s++}),e.curOp.cursorActivity&&!r&&(e.curOp.cursorActivity=!1),i.status=e.state.vim.status,e.state.vim=i,i.inputState.changeQueueList=a,i.inputState.changeQueue=null},!0)}return r&&!i.visualMode&&!i.insert&&i.visualMode!=e.somethingSelected()&&hr(e,i,!0),r}function Tr(e,t){t.off("beforeEndOperation",Tr);var n=t.state.cm.vimCmd;n&&t.execCommand(n.exec?n:n.name,n.args),t.curOp=t.prevOp}var i=e("../range").Range,s=e("../lib/event_emitter").EventEmitter,o=e("../lib/dom"),u=e("../lib/oop"),a=e("../lib/keys"),f=e("../lib/event"),l=e("../search").Search,c=e("../lib/useragent"),h=e("../search_highlight").SearchHighlight,p=e("../commands/multi_select_commands"),d=e("../mode/text").Mode.prototype.tokenRe,v=e("../ext/hardwrap").hardWrap;e("../multi_select");var m=function(e){this.ace=e,this.state={},this.marks={},this.options={},this.$uid=0,this.onChange=this.onChange.bind(this),this.onSelectionChange=this.onSelectionChange.bind(this),this.onBeforeEndOperation=this.onBeforeEndOperation.bind(this),this.ace.on("change",this.onChange),this.ace.on("changeSelection",this.onSelectionChange),this.ace.on("beforeEndOperation",this.onBeforeEndOperation)};m.Pos=function(e,t){if(!(this instanceof w))return new w(e,t);this.line=e,this.ch=t},m.defineOption=function(e,t,n){},m.commands={redo:function(e){e.ace.redo()},undo:function(e){e.ace.undo()},newlineAndIndent:function(e){e.ace.insert("\n")},goLineLeft:function(e){e.ace.selection.moveCursorLineStart()},goLineRight:function(e){e.ace.selection.moveCursorLineEnd()}},m.keyMap={},m.addClass=m.rmClass=function(){},m.e_stop=m.e_preventDefault=f.stopEvent,m.keyName=function(e){var t=a[e.keyCode]||e.key||"";return t.length==1&&(t=t.toUpperCase()),t=f.getModifierString(e).replace(/(^|-)\w/g,function(e){return e.toUpperCase()})+t,t},m.keyMap["default"]=function(e){return function(t){var n=t.ace.commands.commandKeyBinding[e.toLowerCase()];return n&&t.ace.execCommand(n)!==!1}},m.lookupKey=function Nr(e,t,n){t||(t="default"),typeof t=="string"&&(t=m.keyMap[t]||m.keyMap["default"]);var r=typeof t=="function"?t(e):t[e];if(r===!1)return"nothing";if(r==="...")return"multi";if(r!=null&&n(r))return"handled";if(t.fallthrough){if(!Array.isArray(t.fallthrough))return Nr(e,t.fallthrough,n);for(var i=0;i<t.fallthrough.length;i++){var s=Nr(e,t.fallthrough[i],n);if(s)return s}}},m.findMatchingTag=function(e,t){return e.findMatchingTag(t)},m.findEnclosingTag=function(e,t){},m.signal=function(e,t,n){return e._signal(t,n)},m.on=f.addListener,m.off=f.removeListener,m.isWordChar=function(e){return e<""?/^\w$/.test(e):(d.lastIndex=0,d.test(e))},function(){u.implement(m.prototype,s),this.destroy=function(){this.ace.off("change",this.onChange),this.ace.off("changeSelection",this.onSelectionChange),this.ace.off("beforeEndOperation",this.onBeforeEndOperation),this.removeOverlay()},this.virtualSelectionMode=function(){return this.ace.inVirtualSelectionMode&&this.ace.selection.index},this.onChange=function(e){this.$lineHandleChanges&&this.$lineHandleChanges.push(e);var t={text:e.action[0]=="i"?e.lines:[]},n=this.curOp=this.curOp||{};n.changeHandlers||(n.changeHandlers=this._eventRegistry.change&&this._eventRegistry.change.slice()),n.lastChange?n.lastChange.next=n.lastChange=t:n.lastChange=n.change=t,this.$updateMarkers(e)},this.onSelectionChange=function(){var e=this.curOp=this.curOp||{};e.cursorActivityHandlers||(e.cursorActivityHandlers=this._eventRegistry.cursorActivity&&this._eventRegistry.cursorActivity.slice()),this.curOp.cursorActivity=!0,this.ace.inMultiSelectMode&&this.ace.keyBinding.removeKeyboardHandler(p.keyboardHandler)},this.operation=function(e,t){if(!t&&this.curOp||t&&this.curOp&&this.curOp.force)return e();(t||!this.ace.curOp)&&this.curOp&&this.onBeforeEndOperation();if(!this.ace.curOp){var n=this.ace.prevOp;this.ace.startOperation({command:{name:"vim",scrollIntoView:"cursor"}})}var r=this.curOp=this.curOp||{};this.curOp.force=t;var i=e();return this.ace.curOp&&this.ace.curOp.command.name=="vim"&&(this.state.dialog&&(this.ace.curOp.command.scrollIntoView=this.ace.curOp.vimDialogScroll),this.ace.endOperation(),!r.cursorActivity&&!r.lastChange&&n&&(this.ace.prevOp=n)),(t||!this.ace.curOp)&&this.curOp&&this.onBeforeEndOperation(),i},this.onBeforeEndOperation=function(){var e=this.curOp;e&&(e.change&&this.signal("change",e.change,e),e&&e.cursorActivity&&this.signal("cursorActivity",null,e),this.curOp=null)},this.signal=function(e,t,n){var r=n?n[e+"Handlers"]:(this._eventRegistry||{})[e];if(!r)return;r=r.slice();for(var i=0;i<r.length;i++)r[i](this,t)},this.firstLine=function(){return 0},this.lastLine=function(){return this.ace.session.getLength()-1},this.lineCount=function(){return this.ace.session.getLength()},this.setCursor=function(e,t){typeof e=="object"&&(t=e.ch,e=e.line);var n=!this.curOp&&!this.ace.inVirtualSelectionMode;this.ace.inVirtualSelectionMode||this.ace.exitMultiSelectMode(),this.ace.session.unfold({row:e,column:t}),this.ace.selection.moveTo(e,t),n&&(this.ace.renderer.scrollCursorIntoView(),this.ace.endOperation())},this.getCursor=function(e){var t=this.ace.selection,n=e=="anchor"?t.isEmpty()?t.lead:t.anchor:e=="head"||!e?t.lead:t.getRange()[e];return y(n)},this.listSelections=function(e){var t=this.ace.multiSelect.rangeList.ranges;return!t.length||this.ace.inVirtualSelectionMode?[{anchor:this.getCursor("anchor"),head:this.getCursor("head")}]:t.map(function(e){return{anchor:this.clipPos(y(e.cursor==e.end?e.start:e.end)),head:this.clipPos(y(e.cursor))}},this)},this.setSelections=function(e,t){var n=this.ace.multiSelect,r=e.map(function(e){var t=g(e.anchor),n=g(e.head),r=i.comparePoints(t,n)<0?new i.fromPoints(t,n):new i.fromPoints(n,t);return r.cursor=i.comparePoints(r.start,n)?r.end:r.start,r});if(this.ace.inVirtualSelectionMode){this.ace.selection.fromOrientedRange(r[0]);return}t?r[t]&&r.push(r.splice(t,1)[0]):r=r.reverse(),n.toSingleRange(r[0].clone());var s=this.ace.session;for(var o=0;o<r.length;o++){var u=s.$clipRangeToDocument(r[o]);n.addRange(u)}},this.setSelection=function(e,t,n){var r=this.ace.selection;r.moveTo(e.line,e.ch),r.selectTo(t.line,t.ch),n&&n.origin=="*mouse"&&this.onBeforeEndOperation()},this.somethingSelected=function(e){return!this.ace.selection.isEmpty()},this.clipPos=function(e){var t=this.ace.session.$clipPositionToDocument(e.line,e.ch);return y(t)},this.foldCode=function(e){this.ace.session.$toggleFoldWidget(e.line,{})},this.markText=function(e){return{clear:function(){},find:function(){}}},this.$updateMarkers=function(e){var t=e.action=="insert",n=e.start,r=e.end,s=(r.row-n.row)*(t?1:-1),o=(r.column-n.column)*(t?1:-1);t&&(r=n);for(var u in this.marks){var a=this.marks[u],f=i.comparePoints(a,n);if(f<0)continue;if(f===0&&t)if(!a.$insertRight)f=1;else{if(a.bias!=1){a.bias=-1;continue}f=1}var l=t?f:i.comparePoints(a,r);if(l>0){a.row+=s,a.column+=a.row==r.row?o:0;continue}!t&&l<=0&&(a.row=n.row,a.column=n.column,l===0&&(a.bias=1))}};var e=function(e,t,n,r){this.cm=e,this.id=t,this.row=n,this.column=r,e.marks[this.id]=this};e.prototype.clear=function(){delete this.cm.marks[this.id]},e.prototype.find=function(){return y(this)},this.setBookmark=function(t,n){var r=new e(this,this.$uid++,t.line,t.ch);if(!n||!n.insertLeft)r.$insertRight=!0;return this.marks[r.id]=r,r},this.moveH=function(e,t){if(t=="char"){var n=this.ace.selection;n.clearSelection(),n.moveCursorBy(0,e)}},this.findPosV=function(e,t,n,r){if(n=="page"){var i=this.ace.renderer,s=i.layerConfig;t*=Math.floor(s.height/s.lineHeight),n="line"}if(n=="line"){var o=this.ace.session.documentToScreenPosition(e.line,e.ch);r!=null&&(o.column=r),o.row+=t,o.row=Math.min(Math.max(0,o.row),this.ace.session.getScreenLength()-1);var u=this.ace.session.screenToDocumentPosition(o.row,o.column);return y(u)}debugger},this.charCoords=function(e,t){if(t=="div"||!t){var n=this.ace.session.documentToScreenPosition(e.line,e.ch);return{left:n.column,top:n.row}}if(t=="local"){var r=this.ace.renderer,n=this.ace.session.documentToScreenPosition(e.line,e.ch),i=r.layerConfig.lineHeight,s=r.layerConfig.characterWidth,o=i*n.row;return{left:n.column*s,top:o,bottom:o+i}}},this.coordsChar=function(e,t){var n=this.ace.renderer;if(t=="local"){var r=Math.max(0,Math.floor(e.top/n.lineHeight)),i=Math.max(0,Math.floor(e.left/n.characterWidth)),s=n.session.screenToDocumentPosition(r,i);return y(s)}if(t=="div")throw"not implemented"},this.getSearchCursor=function(e,t,n){var r=!1,i=!1;e instanceof RegExp&&!e.global&&(r=!e.ignoreCase,e=e.source,i=!0),e=="\\n"&&(e="\n",i=!1);var s=new l;t.ch==undefined&&(t.ch=Number.MAX_VALUE);var o={row:t.line,column:t.ch},u=this,a=null;return{findNext:function(){return this.find(!1)},findPrevious:function(){return this.find(!0)},find:function(t){s.setOptions({needle:e,caseSensitive:r,wrap:!1,backwards:t,regExp:i,start:a||o});var n=s.find(u.ace.session);return a=n,a&&[!a.isEmpty()]},from:function(){return a&&y(a.start)},to:function(){return a&&y(a.end)},replace:function(e){a&&(a.end=u.ace.session.doc.replace(a,e))}}},this.scrollTo=function(e,t){var n=this.ace.renderer,r=n.layerConfig,i=r.maxHeight;i-=(n.$size.scrollerHeight-n.lineHeight)*n.$scrollPastEnd,t!=null&&this.ace.session.setScrollTop(Math.max(0,Math.min(t,i))),e!=null&&this.ace.session.setScrollLeft(Math.max(0,Math.min(e,r.width)))},this.scrollInfo=function(){return 0},this.scrollIntoView=function(e,t){if(e){var n=this.ace.renderer,r={top:0,bottom:t};n.scrollCursorIntoView(g(e),n.lineHeight*2/n.$size.scrollerHeight,r)}},this.getLine=function(e){return this.ace.session.getLine(e)},this.getRange=function(e,t){return this.ace.session.getTextRange(new i(e.line,e.ch,t.line,t.ch))},this.replaceRange=function(e,t,n){n||(n=t);var r=new i(t.line,t.ch,n.line,n.ch);return this.ace.session.$clipRangeToDocument(r),this.ace.session.replace(r,e)},this.replaceSelection=this.replaceSelections=function(e){var t=Array.isArray(e)&&e,n=this.ace.selection;if(this.ace.inVirtualSelectionMode){this.ace.session.replace(n.getRange(),t?e[0]||"":e);return}n.inVirtualSelectionMode=!0;var r=n.rangeList.ranges;r.length||(r=[this.ace.multiSelect.getRange()]);for(var i=r.length;i--;)this.ace.session.replace(r[i],t?e[i]||"":e);n.inVirtualSelectionMode=!1},this.getSelection=function(){return this.ace.getSelectedText()},this.getSelections=function(){return this.listSelections().map(function(e){return this.getRange(e.anchor,e.head)},this)},this.getInputField=function(){return this.ace.textInput.getElement()},this.getWrapperElement=function(){return this.ace.container};var t={indentWithTabs:"useSoftTabs",indentUnit:"tabSize",tabSize:"tabSize",firstLineNumber:"firstLineNumber",readOnly:"readOnly"};this.setOption=function(e,n){this.state[e]=n;switch(e){case"indentWithTabs":e=t[e],n=!n;break;case"keyMap":this.state.$keyMap=n;return;default:e=t[e]}e&&this.ace.setOption(e,n)},this.getOption=function(e){var n,r=t[e];r&&(n=this.ace.getOption(r));switch(e){case"indentWithTabs":return e=t[e],!n;case"keyMap":return this.state.$keyMap||"vim"}return r?n:this.state[e]},this.toggleOverwrite=function(e){return this.state.overwrite=e,this.ace.setOverwrite(e)},this.addOverlay=function(e){if(!this.$searchHighlight||!this.$searchHighlight.session){var t=new h(null,"ace_highlight-marker","text"),n=this.ace.session.addDynamicMarker(t);t.id=n.id,t.session=this.ace.session,t.destroy=function(e){t.session.off("change",t.updateOnChange),t.session.off("changeEditor",t.destroy),t.session.removeMarker(t.id),t.session=null},t.updateOnChange=function(e){var n=e.start.row;n==e.end.row?t.cache[n]=undefined:t.cache.splice(n,t.cache.length)},t.session.on("changeEditor",t.destroy),t.session.on("change",t.updateOnChange)}var r=new RegExp(e.query.source,"gmi");this.$searchHighlight=e.highlight=t,this.$searchHighlight.setRegexp(r),this.ace.renderer.updateBackMarkers()},this.removeOverlay=function(e){this.$searchHighlight&&this.$searchHighlight.session&&this.$searchHighlight.destroy()},this.getScrollInfo=function(){var e=this.ace.renderer,t=e.layerConfig;return{left:e.scrollLeft,top:e.scrollTop,height:t.maxHeight,width:t.width,clientHeight:t.height,clientWidth:t.width}},this.getValue=function(){return this.ace.getValue()},this.setValue=function(e){return this.ace.setValue(e,-1)},this.getTokenTypeAt=function(e){var t=this.ace.session.getTokenAt(e.line,e.ch);return t&&/comment|string/.test(t.type)?"string":""},this.findMatchingBracket=function(e){var t=this.ace.session.findMatchingBracket(g(e));return{to:t&&y(t)}},this.findMatchingTag=function(e){var t=this.ace.session.getMatchingTags(g(e));if(!t)return;return{open:{from:y(t.openTag.start),to:y(t.openTag.end)},close:{from:y(t.closeTag.start),to:y(t.closeTag.end)}}},this.indentLine=function(e,t){t===!0?this.ace.session.indentRows(e,e," "):t===!1&&this.ace.session.outdentRows(new i(e,0,e,0))},this.indexFromPos=function(e){return this.ace.session.doc.positionToIndex(g(e))},this.posFromIndex=function(e){return y(this.ace.session.doc.indexToPosition(e))},this.focus=function(e){return this.ace.textInput.focus()},this.blur=function(e){return this.ace.blur()},this.defaultTextHeight=function(e){return this.ace.renderer.layerConfig.lineHeight},this.scanForBracket=function(e,t,n,r){var i=r.bracketRegex.source,s=/paren|text|operator|tag/;if(t==1)var o=this.ace.session.$findClosingBracket(i.slice(1,2),g(e),s);else{var o=this.ace.session.$findOpeningBracket(i.slice(-2,-1),{row:e.line,column:e.ch+1},s);!o&&r.bracketRegex&&r.bracketRegex.test(this.getLine(e.line)[e.ch-1])&&(o={row:e.line,column:e.ch-1})}return o&&{pos:y(o)}},this.refresh=function(){return this.ace.resize(!0)},this.getMode=function(){return{name:this.getOption("mode")}},this.execCommand=function(e){if(m.commands.hasOwnProperty(e))return m.commands[e](this);if(e=="indentAuto")return this.ace.execCommand("autoindent");console.log(e+" is not implemented")},this.getLineNumber=function(e){var t=this.$lineHandleChanges;if(!t)return null;var n=e.row;for(var r=0;r<t.length;r++){var i=t[r];if(i.start.row!=i.end.row)if(i.action[0]=="i")i.start.row<n&&(n+=i.end.row-i.start.row);else if(i.start.row<n){if(n<i.end.row||n==i.end.row&&i.start.column>0)return null;n-=i.end.row-i.start.row}}return n},this.getLineHandle=function(e){return this.$lineHandleChanges||(this.$lineHandleChanges=[]),{text:this.ace.session.getLine(e),row:e}},this.releaseLineHandles=function(){this.$lineHandleChanges=undefined},this.getLastEditEnd=function(){var e=this.ace.session.$undoManager;if(e&&e.$lastDelta)return y(e.$lastDelta.end)}}.call(m.prototype);var b=m.StringStream=function(e,t){this.pos=this.start=0,this.string=e,this.tabSize=t||8,this.lastColumnPos=this.lastColumnValue=0,this.lineStart=0};b.prototype={eol:function(){return this.pos>=this.string.length},sol:function(){return this.pos==this.lineStart},peek:function(){return this.string.charAt(this.pos)||undefined},next:function(){if(this.pos<this.string.length)return this.string.charAt(this.pos++)},eat:function(e){var t=this.string.charAt(this.pos);if(typeof e=="string")var n=t==e;else var n=t&&(e.test?e.test(t):e(t));if(n)return++this.pos,t},eatWhile:function(e){var t=this.pos;while(this.eat(e));return this.pos>t},eatSpace:function(){var e=this.pos;while(/[\s\u00a0]/.test(this.string.charAt(this.pos)))++this.pos;return this.pos>e},skipToEnd:function(){this.pos=this.string.length},skipTo:function(e){var t=this.string.indexOf(e,this.pos);if(t>-1)return this.pos=t,!0},backUp:function(e){this.pos-=e},column:function(){throw"not implemented"},indentation:function(){throw"not implemented"},match:function(e,t,n){if(typeof e!="string"){var s=this.string.slice(this.pos).match(e);return s&&s.index>0?null:(s&&t!==!1&&(this.pos+=s[0].length),s)}var r=function(e){return n?e.toLowerCase():e},i=this.string.substr(this.pos,e.length);if(r(i)==r(e))return t!==!1&&(this.pos+=e.length),!0},current:function(){return this.string.slice(this.start,this.pos)},hideFirstChars:function(e,t){this.lineStart+=e;try{return t()}finally{this.lineStart-=e}}},m.defineExtension=function(e,t){m.prototype[e]=t},o.importCssString(".normal-mode .ace_cursor{\n border: none;\n background-color: rgba(255,0,0,0.5);\n}\n.normal-mode .ace_hidden-cursors .ace_cursor{\n background-color: transparent;\n border: 1px solid red;\n opacity: 0.7\n}\n.ace_dialog {\n position: absolute;\n left: 0; right: 0;\n background: inherit;\n z-index: 15;\n padding: .1em .8em;\n overflow: hidden;\n color: inherit;\n}\n.ace_dialog-top {\n border-bottom: 1px solid #444;\n top: 0;\n}\n.ace_dialog-bottom {\n border-top: 1px solid #444;\n bottom: 0;\n}\n.ace_dialog input {\n border: none;\n outline: none;\n backgroun