|
|
function R(e,t,n,l,c,d){this.indented=e,this.column=t,this.type=n,this.info=l,this.align=c,this.prev=d}function I(e,t,n,l){var c=e.indented;return e.context&&e.context.type=="statement"&&n!="statement"&&(c=e.context.indented),e.context=new R(c,t,n,l,null,e.context)}function _(e){var t=e.context.type;return(t==")"||t=="]"||t=="}")&&(e.indented=e.context.indented),e.context=e.context.prev}function V(e,t,n){if(t.prevToken=="variable"||t.prevToken=="type"||/\S(?:[^- ]>|[*\]])\s*$|\*$/.test(e.string.slice(0,n))||t.typeAtEndOfLine&&e.column()==e.indentation())return!0}function F(e){for(;;){if(!e||e.type=="top")return!0;if(e.type=="}"&&e.prev.info!="namespace")return!1;e=e.prev}}function m(e){var t=e.statementIndentUnit,n=e.dontAlignCalls,l=e.keywords||{},c=e.types||{},d=e.builtin||{},b=e.blockKeywords||{},x=e.defKeywords||{},v=e.atoms||{},h=e.hooks||{},ne=e.multiLineStrings,re=e.indentStatements!==!1,ae=e.indentSwitch!==!1,O=e.namespaceSeparator,oe=e.isPunctuationChar||/[\[\]{}\(\),;\:\.]/,ie=e.numberStart||/[\d\.]/,le=e.number||/^(?:0x[a-f\d]+|0b[01]+|(?:\d+\.?\d*|\.\d+)(?:e[-+]?\d+)?)(u|ll?|l|f)?/i,j=e.isOperatorChar||/[+\-*&%=<>!?|\/]/,A=e.isIdentifierChar||/[\w\$_\xa1-\uffff]/,U=e.isReservedIdentifier||!1,p,E;function $(a,i){var s=a.next();if(h[s]){var o=h[s](a,i);if(o!==!1)return o}if(s=='"'||s=="'")return i.tokenize=se(s),i.tokenize(a,i);if(ie.test(s)){if(a.backUp(1),a.match(le))return"number";a.next()}if(oe.test(s))return p=s,null;if(s=="/"){if(a.eat("*"))return i.tokenize=B,B(a,i);if(a.eat("/"))return a.skipToEnd(),"comment"}if(j.test(s)){for(;!a.match(/^\/[\/*]/,!1)&&a.eat(j););return"operator"}if(a.eatWhile(A),O)for(;a.match(O);)a.eatWhile(A);var u=a.current();return y(l,u)?(y(b,u)&&(p="newstatement"),y(x,u)&&(E=!0),"keyword"):y(c,u)?"type":y(d,u)||U&&U(u)?(y(b,u)&&(p="newstatement"),"builtin"):y(v,u)?"atom":"variable"}function se(a){return function(i,s){for(var o=!1,u,w=!1;(u=i.next())!=null;){if(u==a&&!o){w=!0;break}o=!o&&u=="\\"}return(w||!(o||ne))&&(s.tokenize=null),"string"}}function B(a,i){for(var s=!1,o;o=a.next();){if(o=="/"&&s){i.tokenize=null;break}s=o=="*"}return"comment"}function K(a,i){e.typeFirstDefinitions&&a.eol()&&F(i.context)&&(i.typeAtEndOfLine=V(a,i,a.pos))}return{name:e.name,startState:function(a){return{tokenize:null,context:new R(-a,0,"top",null,!1),indented:0,startOfLine:!0,prevToken:null}},token:function(a,i){var s=i.context;if(a.sol()&&(s.align==null&&(s.align=!1),i.indented=a.indentation(),i.startOfLine=!0),a.eatSpace())return K(a,i),null;p=E=null;var o=(i.tokenize||$)(a,i);if(o=="comment"||o=="meta")return o;if(s.align==null&&(s.align=!0),p==";"||p==":"||p==","&&a.match(/^\s*(?:\/\/.*)?$/,!1))for(;i.context.type=="statement";)_(i);else if(p=="{")I(i,a.column(),"}");else if(p=="[")I(i,a.column(),"]");else if(p=="(")I(i,a.column(),")");else if(p=="}"){for(;s.type=="statement";)s=_(i);for(s.type=="}"&&(s=_(i));s.type=="statement";)s=_(i)}else p==s.type?_(i):re&&((s.type=="}"||s.type=="top")&&p!=";"||s.type=="statement"&&p=="newstatement")&&I(i,a.column(),"statement",a.current());if(o=="variable"&&(i.prevToken=="def"||e.typeFirstDefinitions&&V(a,i,a.start)&&F(i.context)&&a.match(/^\s*\(/,!1))&&(o="def"),h.token){var u=h.token(a,i,o);u!==void 0&&(o=u)}return o=="def"&&e.styleDefs===!1&&(o="variable"),i.startOfLine=!1,i.prevToken=E?"def":o||p,K(a,i),o},indent:function(a,i,s){if(a.tokenize!=$&&a.tokenize!=null||a.typeAtEndOfLine&&F(a.context))return null;var o=a.context,u=i&&i.charAt(0),w=u==o.type;if(o.type=="statement"&&u=="}"&&(o=o.prev),e.dontIndentStatements)for(;o.type=="statement"&&e.dontIndentStatements.test(o.info);)o=o.prev;if(h.indent){var q=h.indent(a,o,i,s.unit);if(typeof q=="number")return q}var ce=o.prev&&o.prev.info=="switch";if(e.allmanIndentation&&/[{(]/.test(u)){for(;o.type!="top"&&o.type!="}";)o=o.prev;return o.indented}return o.type=="statement"?o.indented+(u=="{"?0:t||s.unit):o.align&&(!n||o.type!=")")?o.column+(w?0:1):o.type==")"&&!w?o.indented+(t||s.unit):o.indented+(w?0:s.unit)+(!w&&ce&&!/^(?:case|default)\b/.test(i)?s.unit:0)},languageData:{indentOnInput:ae?/^\s*(?:case
|