!function(e){"object"==typeof exports&&"object"==typeof module?e(require("../../lib/codemirror-modes")):"function"==typeof define&&define.amd?define(["../../lib/codemirror-modes"],e):e(CodeMirror)}(function(e){function t(e,t){return"pairs"==t&&"string"==typeof e?e:"object"==typeof e&&null!=e[t]?e[t]:h[t]}function n(e){for(var t=0;t0;return{anchor:new u(t.anchor.line,t.anchor.ch+(n?-1:1)),head:new u(t.head.line,t.head.ch+(n?1:-1))}}function o(n,r){var o=i(n);if(!o||n.getOption("disableInput"))return e.Pass;var c=t(o,"pairs"),h=c.indexOf(r);if(-1==h)return e.Pass;for(var d,g=t(o,"triples"),p=c.charAt(h+1)==r,v=n.listSelections(),m=h%2==0,b=0;b1&&g.indexOf(r)>=0&&n.getRange(u(k.line,k.ch-2),k)==r+r&&(k.ch<=2||n.getRange(u(k.line,k.ch-3),u(k.line,k.ch-2))!=r))x="addFour";else if(p){if(e.isWordChar(P)||!l(n,k,r))return e.Pass;x="both"}else{if(!m||n.getLine(k.line).length!=k.ch&&!s(P,c)&&!/\s/.test(P))return e.Pass;x="both"}else x=p&&f(n,k)?"both":g.indexOf(r)>=0&&n.getRange(k,u(k.line,k.ch+3))==r+r+r?"skipThree":"skip";if(d){if(d!=x)return e.Pass}else d=x}var S=h%2?c.charAt(h-1):r,y=h%2?r:c.charAt(h+1);n.operation(function(){if("skip"==d)n.execCommand("goCharRight");else if("skipThree"==d)for(t=0;t<3;t++)n.execCommand("goCharRight");else if("surround"==d){for(var e=n.getSelections(),t=0;t-1&&n%2==1}function c(e,t){var n=e.getRange(u(t.line,t.ch-1),u(t.line,t.ch+1));return 2==n.length?n:null}function l(t,n,r){var i=t.getLine(n.line),a=t.getTokenAt(n);if(/\bstring2?\b/.test(a.type)||f(t,n))return!1;var o=new e.StringStream(i.slice(0,n.ch)+r+i.slice(n.ch),4);for(o.pos=o.start=a.start;;){var s=t.getMode().token(o,a.state);if(o.pos>=n.ch+1)return/\bstring2?\b/.test(s);o.start=o.pos}}function f(e,t){var n=e.getTokenAt(u(t.line,t.ch+1));return/\bstring/.test(n.type)&&n.start==t.ch}var h={pairs:"()[]{}''\"\"",triples:"",explode:"[]{}"},u=e.Pos;e.defineOption("autoCloseBrackets",!1,function(r,i,a){a&&a!=e.Init&&(r.removeKeyMap(d),r.state.closeBrackets=null),i&&(n(t(i,"pairs")),r.state.closeBrackets=i,r.addKeyMap(d))});var d={Backspace:function(n){var r=i(n);if(!r||n.getOption("disableInput"))return e.Pass;for(var a=t(r,"pairs"),o=n.listSelections(),s=0;s=0;s--){var f=o[s].head;n.replaceRange("",u(f.line,f.ch-1),u(f.line,f.ch+1),"+delete")}},Enter:function(n){var r=i(n),a=r&&t(r,"explode");if(!a||n.getOption("disableInput"))return e.Pass;for(var o=n.listSelections(),s=0;s