EVOLUTION-MANAGER
Edit File: closebrackets.min.js
!(function(a){"object"==typeof exports&&"object"==typeof module?a(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){function b(a,b){return"pairs"==b&&"string"==typeof a?a:"object"==typeof a&&null!=a[b]?a[b]:l[b]}function c(a){for(var b=0;b<a.length;b++){var c=a.charAt(b),e="'"+c+"'";n[e]||(n[e]=d(c))}}function d(a){return function(b){return i(b,a)}}function e(a){var b=a.state.closeBrackets;if(!b||b.override)return b;var c=a.getModeAt(a.getCursor());return c.closeBrackets||b}function f(c){var d=e(c);if(!d||c.getOption("disableInput"))return a.Pass;for(var f=b(d,"pairs"),g=c.listSelections(),h=0;h<g.length;h++){if(!g[h].empty())return a.Pass;var i=j(c,g[h].head);if(!i||f.indexOf(i)%2!=0)return a.Pass}for(var h=g.length-1;h>=0;h--){var k=g[h].head;c.replaceRange("",m(k.line,k.ch-1),m(k.line,k.ch+1),"+delete")}}function g(c){var d=e(c),f=d&&b(d,"explode");if(!f||c.getOption("disableInput"))return a.Pass;for(var g=c.listSelections(),h=0;h<g.length;h++){if(!g[h].empty())return a.Pass;var i=j(c,g[h].head);if(!i||f.indexOf(i)%2!=0)return a.Pass}c.operation((function(){var a=c.lineSeparator()||"\n";c.replaceSelection(a+a,null),c.execCommand("goCharLeft"),g=c.listSelections();for(var b=0;b<g.length;b++){var d=g[b].head.line;c.indentLine(d,null,!0),c.indentLine(d+1,null,!0)}}))}function h(b){var c=a.cmpPos(b.anchor,b.head)>0;return{anchor:new m(b.anchor.line,b.anchor.ch+(c?-1:1)),head:new m(b.head.line,b.head.ch+(c?1:-1))}}function i(c,d){var f=e(c);if(!f||c.getOption("disableInput"))return a.Pass;var g=b(f,"pairs"),i=g.indexOf(d);if(i==-1)return a.Pass;for(var j,l=b(f,"triples"),n=g.charAt(i+1)==d,o=c.listSelections(),p=i%2==0,q=0;q<o.length;q++){var r,s=o[q],t=s.head,u=c.getRange(t,m(t.line,t.ch+1));if(p&&!s.empty())r="surround";else if(!n&&p||u!=d)if(n&&t.ch>1&&l.indexOf(d)>=0&&c.getRange(m(t.line,t.ch-2),t)==d+d){if(t.ch>2&&/\bstring/.test(c.getTokenTypeAt(m(t.line,t.ch-2))))return a.Pass;r="addFour"}else if(n){var v=0==t.ch?" ":c.getRange(m(t.line,t.ch-1),t);if(a.isWordChar(u)||v==d||a.isWordChar(v))return a.Pass;r="both"}else{if(!p)return a.Pass;r="both"}else r=n&&k(c,t)?"both":l.indexOf(d)>=0&&c.getRange(t,m(t.line,t.ch+3))==d+d+d?"skipThree":"skip";if(j){if(j!=r)return a.Pass}else j=r}var w=i%2?g.charAt(i-1):d,x=i%2?d:g.charAt(i+1);c.operation((function(){if("skip"==j)c.execCommand("goCharRight");else if("skipThree"==j)for(var a=0;a<3;a++)c.execCommand("goCharRight");else if("surround"==j){for(var b=c.getSelections(),a=0;a<b.length;a++)b[a]=w+b[a]+x;c.replaceSelections(b,"around"),b=c.listSelections().slice();for(var a=0;a<b.length;a++)b[a]=h(b[a]);c.setSelections(b)}else"both"==j?(c.replaceSelection(w+x,null),c.triggerElectric(w+x),c.execCommand("goCharLeft")):"addFour"==j&&(c.replaceSelection(w+w+w+w,"before"),c.execCommand("goCharRight"))}))}function j(a,b){var c=a.getRange(m(b.line,b.ch-1),m(b.line,b.ch+1));return 2==c.length?c:null}function k(a,b){var c=a.getTokenAt(m(b.line,b.ch+1));return/\bstring/.test(c.type)&&c.start==b.ch&&(0==b.ch||!/\bstring/.test(a.getTokenTypeAt(b)))}var l={pairs:"()[]{}''\"\"",triples:"",explode:"[]{}"},m=a.Pos;a.defineOption("autoCloseBrackets",!1,(function(d,e,f){f&&f!=a.Init&&(d.removeKeyMap(n),d.state.closeBrackets=null),e&&(c(b(e,"pairs")),d.state.closeBrackets=e,d.addKeyMap(n))}));var n={Backspace:f,Enter:g};c(l.pairs+"`")}));