Java
glimmerout javac %1/%2 2>&1
%term% %1/%3
1
0
4
java
string
"
\("\|\n\)
chars
'
\('\|\n\)
cplus_comment
//
\n
jcomment
/\*
\*/
doc_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'""\\\\])
declarations
\b\(class\|extends\|implements\|import\|instanceof\|interface\|native\|package\|volatile\|throws\)\b
primitive
\b\(boolean\|byte\|char\|double\|float\|int\|long\|short\)\b
flow
\b\(break\|case\|catch\|continue\|default\|do\|else\|for\|if\|return\|for\|goto\|if\|return\|switch\|switch\|synchronized\|throw\|try\|while\)\b
modifiers
\b\(abstract\|final\|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 java_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", java_enter_callback)
def java_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", java_tab_callback)
def insert_cs_comment():
glimmer.freeze()
if glimmer.has_selection():
start = glimmer.selection_start()
end = glimmer.selection_end()
file = glimmer.get_file_number()
glimmer.move(0)
glimmer.insert_in(file, start, "/* ")
glimmer.insert_in(file, end+3, " */")
glimmer.move_to(end+6)
else:
glimmer.insert("/*\n *\n*/")
glimmer.move(-3)
glimmer.thaw()
def insert_cpps_comment():
glimmer.freeze()
if glimmer.has_selection():
start = glimmer.selection_start()
end = glimmer.selection_end()
file = glimmer.get_file_number()
glimmer.move(0)
line1 = glimmer.line_by_pos(start)
line2 = glimmer.line_by_pos(end)
cur = line1
print start
print end
while cur <= line2:
glimmer.move_to_col(0)
glimmer.move_to_line(cur)
glimmer.insert("//")
cur = cur+1
glimmer.move_to(end+((line2-line1)+1)*2)
else:
glimmer.insert("//")
glimmer.thaw()
def insert_doc_comment():
glimmer.freeze()
if glimmer.has_selection():
start = glimmer.selection_start()
end = glimmer.selection_end()
file = glimmer.get_file_number()
glimmer.move(0)
glimmer.insert_in(file, start, "/** ")
glimmer.insert_in(file, end+4, " */")
glimmer.move_to(end+7)
else:
glimmer.insert("/**\n *\n*/")
glimmer.move(-3)
glimmer.thaw()
glimmer.add_sub_to_menu("_Insert/", "Java", -1);
glimmer.add_item_to_menu("_Insert/Java/", "Comment (C)", "", "", -1, insert_cs_comment)
glimmer.add_item_to_menu("_Insert/Java/", "Comment (C++)", "", "", -1, insert_cpps_comment)
glimmer.add_item_to_menu("_Insert/Java/", "Comment (Doc)", "", "", -1, insert_doc_comment)
glimmer.add_item_to_popup_menu("Comment (C)", -1, insert_cs_comment)
glimmer.add_item_to_popup_menu("Comment (C++)", -1, insert_cpps_comment)
glimmer.add_item_to_popup_menu("Comment (Doc)", -1, insert_doc_comment)