(function(a){if(typeof exports=="object"&&typeof module=="object")a(require("../../lib/codemirror"));else if(typeof define=="function"&&define.amd)define(["../../lib/codemirror"],a);else a(CodeMirror)})(function(a){"use strict";a.defineMIME("text/x-erlang","erlang");a.defineMode("erlang",function(b){"use strict";var c=["-type","-spec","-export_type","-opaque"];var d=["after","begin","catch","case","cond","end","fun","if","let","of","query","receive","try","when"];var e=/[\->,;]/;var f=["->",";",","];var g=["and","andalso","band","bnot","bor","bsl","bsr","bxor","div","not","or","orelse","rem","xor"];var h=/[\+\-\*\/<>=\|:!]/;var i=["=","+","-","*","/",">",">=","<","=<","=:=","==","=/=","/=","||","<-","!"];var j=/[<\(\[\{]/;var k=["<<","(","[","{"];var l=/[>\)\]\}]/;var m=["}","]",")",">>"];var n=["is_atom","is_binary","is_bitstring","is_boolean","is_float","is_function","is_integer","is_list","is_number","is_pid","is_port","is_record","is_reference","is_tuple","atom","binary","bitstring","boolean","function","integer","list","number","pid","port","record","reference","tuple"];var o=["abs","adler32","adler32_combine","alive","apply","atom_to_binary","atom_to_list","binary_to_atom","binary_to_existing_atom","binary_to_list","binary_to_term","bit_size","bitstring_to_list","byte_size","check_process_code","contact_binary","crc32","crc32_combine","date","decode_packet","delete_module","disconnect_node","element","erase","exit","float","float_to_list","garbage_collect","get","get_keys","group_leader","halt","hd","integer_to_list","internal_bif","iolist_size","iolist_to_binary","is_alive","is_atom","is_binary","is_bitstring","is_boolean","is_float","is_function","is_integer","is_list","is_number","is_pid","is_port","is_process_alive","is_record","is_reference","is_tuple","length","link","list_to_atom","list_to_binary","list_to_bitstring","list_to_existing_atom","list_to_float","list_to_integer","list_to_pid","list_to_tuple","load_module","make_ref","module_loaded","monitor_node","node","node_link","node_unlink","nodes","notalive","now","open_port","pid_to_list","port_close","port_command","port_connect","port_control","pre_loaded","process_flag","process_info","processes","purge_module","put","register","registered","round","self","setelement","size","spawn","spawn_link","spawn_monitor","spawn_opt","split_binary","statistics","term_to_binary","time","throw","tl","trunc","tuple_size","tuple_to_list","unlink","unregister","whereis"];var p=/[\w@Ø-ÞÀ-Öß-öø-ÿ]/;var q=/[0-7]{1,3}|[bdefnrstv\\"']|\^[a-zA-Z]|x[0-9a-zA-Z]{2}|x{[0-9a-zA-Z]+}/;function r(a,b){if(b.in_string){b.in_string=!u(a);return z(b,a,"string")}if(b.in_atom){b.in_atom=!v(a);return z(b,a,"atom")}if(a.eatSpace()){return z(b,a,"whitespace")}if(!D(b)&&a.match(/-\s*[a-zß-öø-ÿ][\wØ-ÞÀ-Öß-öø-ÿ]*/)){if(y(a.current(),c)){return z(b,a,"type")}else{return z(b,a,"attribute")}}var r=a.next();if(r=="%"){a.skipToEnd();return z(b,a,"comment")}if(r==":"){return z(b,a,"colon")}if(r=="?"){a.eatSpace();a.eatWhile(p);return z(b,a,"macro")}if(r=="#"){a.eatSpace();a.eatWhile(p);return z(b,a,"record")}if(r=="$"){if(a.next()=="\\"&&!a.match(q)){return z(b,a,"error")}return z(b,a,"number")}if(r=="."){return z(b,a,"dot")}if(r=="'"){if(!(b.in_atom=!v(a))){if(a.match(/\s*\/\s*[0-9]/,false)){a.match(/\s*\/\s*[0-9]/,true);return z(b,a,"fun")}if(a.match(/\s*\(/,false)||a.match(/\s*:/,false)){return z(b,a,"function")}}return z(b,a,"atom")}if(r=='"'){b.in_string=!u(a);return z(b,a,"string")}if(/[A-Z_Ø-ÞÀ-Ö]/.test(r)){a.eatWhile(p);return z(b,a,"variable")}if(/[a-z_ß-öø-ÿ]/.test(r)){a.eatWhile(p);if(a.match(/\s*\/\s*[0-9]/,false)){a.match(/\s*\/\s*[0-9]/,true);return z(b,a,"fun")}var w=a.current();if(y(w,d)){return z(b,a,"keyword")}else if(y(w,g)){return z(b,a,"operator")}else if(a.match(/\s*\(/,false)){if(y(w,o)&&(D(b).token!=":"||D(b,2).token=="erlang")){return z(b,a,"builtin")}else if(y(w,n)){return z(b,a,"guard")}else{return z(b,a,"function")}}else if(x(a)==":"){if(w=="erlang"){return z(b,a,"builtin")}else{return z(b,a,"function")}}else if(y(w,["true","false"])){return z(b,a,"boolean")}else{return z(b,a,"atom")}}var A=/[0-9]/;var B=/[0-9a-zA-Z]/;if(A.test(r)){a.eatWhile(A);if(a.eat("#")){if(!a.eatWhile(B)){a.backUp(1)}}else if(a.eat(".")){if(!a.eatWhile(A)){a.backUp(1)}else{if(a.eat(/[eE]/)){if(a.eat(/[-+]/)){if(!a.eatWhile(A)){a.backUp(2)}}else{if(!a.eatWhile(A)){a.backUp(1)}}}}}return z(b,a,"number")}if(s(a,j,k)){return z(b,a,"open_paren")}if(s(a,l,m)){return z(b,a,"close_paren")}if(t(a,e,f)){return z(b,a,"separator")}if(t(a,h,i)){return z(b,a,"operator")}return z(b,a,null)}function s(a,b,c){if(a.current().length==1&&b.test(a.current())){a.backUp(1);while(b.test(a.peek())){a.next();if(y(a.current(),c)){return true}}a.backUp(a.current().length-1)}return false}function t(a,b,c){if(a.current().length==1&&b.test(a.current())){while(b.test(a.peek())){a.next()}while(01&&a[b].type==="fun"&&a[b-1].token==="fun"){return a.slice(0,b-1)}switch(a[b].token){case"}":return H(a,{g:["{"]});case"]":return H(a,{i:["["]});case")":return H(a,{i:["("]});case">>":return H(a,{i:["<<"]});case"end":return H(a,{i:["begin","case","fun","if","receive","try"]});case",":return H(a,{e:["begin","try","when","->",",","(","[","{","<<"]});case"->":return H(a,{r:["when"],m:["try","if","case","receive"]});case";":return H(a,{E:["case","fun","if","receive","try","when"]});case"catch":return H(a,{e:["try"]});case"of":return H(a,{e:["case"]});case"after":return H(a,{e:["receive","try"]});default:return a}}function H(a,b){for(var c in b){var d=a.length-1;var e=b[c];for(var f=d-1;-1"){if(y(i.token,["receive","case","if","try"])){return i.column+f+f}else{return i.column+f}}else if(y(h.token,k)){return h.column+h.token.length}else{e=L(c);return O(e)?e.column+f:0}}function J(a){var b=a.match(/,|[a-z]+|\}|\]|\)|>>|\|+|\(/);return O(b)&&b.index===0?b[0]:""}function K(a){var b=a.tokenStack.slice(0,-1);var c=N(b,"type",["open_paren"]);return O(b[c])?b[c]:false}function L(a){var b=a.tokenStack;var c=N(b,"type",["open_paren","separator","keyword"]);var d=N(b,"type",["operator"]);if(O(c)&&O(d)&&c