JavaScript 1 0 4 js string " \("\|\n\) chars ' \('\|\n\) cpps_comment // \n cs_comment /\* \*/ numeric_constant <(?i0[X][\\dA-F]+|\\d+(\\.\\d*)?(?:E[+-]?[\\d]+)?F?|\\.\\d+(?:E[+-]?[\\d]+)?F?|[\\d]+[LF]?)) string_escape (?:\\\\u[\\dA-Faf]{4}|\\\\[0-7]{1,3}|\\\\[btnfr'\"\"\\\\]) primitive \b\(var\)\b flow \b\(break\|case\|catch\|continue\|default\|do\|else\|for\|if\|return\|for\|goto\|if\|return\|switch\|switch\|while\)\b modifiers \b\(finally\|private\|protected\|public\|static\)\b memory \b\(new\|null\|super\this\|void\)\b unused \b\(const\|gotol\|transient\)\b operators \(\*\|-)\|::\|<<\|<\|>>\|>\|=\|==\|!=\|<=\|>=\|)=\|++\|--\|%\|+\|-\|||\|&&\|!\|+=\|-=\|\*=\|/=\|%=\) import glimmer import string def js_enter_callback(): insert = "\n" extralen = 0 slen = 0 file = glimmer.get_file_number() tstart = glimmer.line_start() tend = glimmer.current_position() if (tend-tstart) > 0: chars = glimmer.get_text(tstart, tend) slen = len(chars) if slen > 0: index = 0 while index < slen: c = chars[index] if c == '\t' or c == ' ': insert = insert + chars[index] index = index+1 else: break c = chars[slen-1] if c == '{': extralen = glimmer.get_file_tab_width(file) if glimmer.get_file_use_spaces(file): while extralen > 0: insert = insert + " " extralen = extralen-1 else: insert = insert + '\t' glimmer.insert(insert) glimmer.register_signal_hook("enter-pressed", js_enter_callback) def js_tab_callback(): tablen = 0 insertchars = "" file = glimmer.get_file_number() if glimmer.get_file_use_spaces(file): tablen = glimmer.get_file_tab_width(file) pos = glimmer.current_position() lstart = glimmer.line_start() if pos - lstart > 0: str1 = glimmer.get_text(lstart, pos) else: str1 = "" if glimmer.get_tab_stops(): str1 = string.expandtabs(str1, tablen) len1 = len(str1) del str1 tablen = tablen - (len1 % tablen) while tablen > 0: insertchars = insertchars + " " tablen = tablen-1 else: insertchars = insertchars + "\t" glimmer.insert(insertchars) glimmer.register_signal_hook("tab-pressed", js_tab_callback)