Glimmer Language Definition
null
null
null
1
1
3
1
lang
comment
^<!--
-->
string
"
\("\|\n\)
rstring
r'
'
singlestring
'
\('\|\n\)
multiline-string
"""
"""
python
\(glimmer\|glimmer\.[a-z_]+\)
tags
</?\(glimmer-definition\|python-definition\|settings\|language\|compiler\|debugger\|execution\|auto-indent\|use-spaces\|tab-stop\|over-ride\|mime-types\|extension\|mime-type\|syntax-items\|syntax-item\|pattern-items\|pattern-item\|embedded-items\|embedded-item\|name\|start-regex\|end-regex\|regex\|outside-regex\|inside-regex\|style\)>
entities
\(\&\|\%\)[a-zA-Z0-9#]*;
regex-chars
\(\\(\|\\)\|\\b\|\\t\|\\n\|(\|)\|\\|\|\[\|\]\|{\|}\)
modules
\b\(import\|from\)\b
func-class
\b\(def\|class\|return\)\b
keywords
\b\(and\|del\|for\|is\|raise\|assert\|elif\|from\|lambda\|break\|else\|global\|not\|try\|except\|if\|or\|while\|continue\|exec\|pass\|finally\|in\|print\)\b
operators
\(\?\|\%\|\*\|\*\*\|-\|>\|::\|:\|>>\|<<\|>\|<\|=\|==\|!=\|<=\|>=\|++\|--\|%\|+\|-\|||\|&&\|!\|+=\|-=\|\*=\|/=\|%=\|~\|\.\|,\|;\)
import glimmer
def lang_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", lang_enter_callback)
def lang_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", lang_tab_callback)
def insert_lang_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()
glimmer.add_sub_to_menu("_Insert/", "Language Definition", -1)
glimmer.add_item_to_menu("_Insert/Language Definition/", "Comment (#)", "", "", -1, insert_lang_comment)
glimmer.add_item_to_popup_menu("Comment (#)", -1, insert_lang_comment)