branch : pmacs2
This commit is contained in:
moculus 2009-02-26 19:37:43 +00:00
parent f58417a42d
commit b673ef2a52
2 changed files with 26 additions and 21 deletions

View File

@ -48,6 +48,7 @@ class Application(object):
'number': ('default', 'default', 'bold'), 'number': ('default', 'default', 'bold'),
'label': ('magenta', 'default', 'bold'), 'label': ('magenta', 'default', 'bold'),
'keyword': ('cyan', 'default', 'bold'), 'keyword': ('cyan', 'default', 'bold'),
'reserved': ('cyan', 'default', 'bold'),
'function': ('blue', 'default', 'bold'), 'function': ('blue', 'default', 'bold'),
'builtin': ('magenta', 'default', 'bold'), 'builtin': ('magenta', 'default', 'bold'),
'method': ('cyan', 'default', 'bold'), 'method': ('cyan', 'default', 'bold'),

View File

@ -3,31 +3,40 @@ import color, completer, default, mode, method, regex, tab
from point import Point from point import Point
from lex import Grammar, PatternRule, RegionRule, OverridePatternRule, NocasePatternRule from lex import Grammar, PatternRule, RegionRule, OverridePatternRule, NocasePatternRule
class CommentGrammar(Grammar): class CommentGrammar(Grammar): pass
rules = [ CommentGrammar.rules = [
RegionRule(r'comment', r'{-', None, r'-}'), RegionRule(r'comment', r'{-', CommentGrammar, r'-}'),
PatternRule(r'data', r'(?:[^{-]|{(?!-)|-(?!}))+'), PatternRule(r'data', r'(?:[^{-]|{(?!-)|-(?!}))+'),
] ]
class StringGrammar(Grammar): class StringGrammar(Grammar):
rules = [ rules = [
RegionRule(r'gap', r'\\ *\n$', Grammar, r'^ *[^ \n]'), RegionRule(r'gap', r'\\ *\n$', Grammar, r'^ *[^ \n]'),
NocasePatternRule(r'escaped', r'\\(?:NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|[&abfnrtv\\"\']|\^[a-z]|\d{1,3}|o[0-7]{0,3}|x(?:[0-9a-f]){0,2})'), NocasePatternRule(r'escaped', r'\\(?:NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|[&abfnrtv\\"\']|\^[a-z]|\d{1,3}|o[0-7]{0,3}|x(?:[0-9a-f]){0,2})'),
PatternRule(r'data', r'[^\\]+'), PatternRule(r'data', r'[^\\"]+'),
] ]
class HaskellGrammar(Grammar): class HaskellGrammar(Grammar):
rules = [ rules = [
PatternRule(r'comment', r'--.*$'), PatternRule(r'comment', r'--(?!>).*$'),
RegionRule(r'comment', r'{-', CommentGrammar, r'-}'), RegionRule(r'comment', r'{-', CommentGrammar, r'-}'),
RegionRule(r'hs_string', r'"', StringGrammar, r'"'),
PatternRule(r'hs_reserved', r"(?:_|where|type|then|of|newtype|module|let|instance|infixr|infixl|infix|in|import|if|else|do|deriving|default|data|class|case)(?![a-zA-Z0-9_'])"), PatternRule(r'integer', r'[0-9]+|0[oO][0-7]+|0[xX][0-7]+'),
PatternRule(r'float', r'[0-9]+\.[0-9]+(?:[eE][+-]?[0-9]+)?|[0-9]+[eE][+-]?[0-9]+'),
PatternRule(r'char', r"'[^'\\]'"),
PatternRule(r'char', r"'(?:[^'\\]|\\(?:NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|[&abfnrtv\\\"\']|\^[a-z]|\d{1,3}|o[0-7]{0,3}|x(?:[0-9a-f]){0,2}))'"),
RegionRule(r'string', r'"', StringGrammar, r'"'),
PatternRule(r'reserved', r"(?:_|where|type|then|of|newtype|module|let|instance|infixr|infixl|infix|in|import|if|else|do|deriving|default|data|class|case)(?![a-zA-Z0-9_'])"),
PatternRule(r'hs_declaration', r"^[a-z_][a-zA-Z0-9_']*"), PatternRule(r'hs_declaration', r"^[a-z_][a-zA-Z0-9_']*"),
PatternRule(r'hs_variable', r"[a-z_][a-zA-Z0-9_']*"), PatternRule(r'hs_variable', r"[a-z_][a-zA-Z0-9_']*"),
PatternRule(r'hs_constructor', r"[A-Z][a-zA-Z0-9_']*"), PatternRule(r'hs_constructor', r"[A-Z][a-zA-Z0-9_']*"),
PatternRule(r'hs_operator', r'@|!|>@>|>>=|>>|=>|::|->|;|<-|\\\\|\.\.|!!|:|\+\+|\||\.|\\|>=|>|/=|==|<=|<|\|\||&&|\^\^|\*\*|##|\^|/|\*|-|\+|='), PatternRule(r'operator', r'@|!|>@>|>>=|>>|=>|::|->|;|<-|\\\\|\.\.|!!|:|\+\+|\||\.|\\|>=|>|/=|==|<=|<|\|\||&&|\^\^|\*\*|##|\^|/|\*|-|\+|='),
] ]
class HaskellTabber(tab.Tabber):
pass
class Haskell(mode.Fundamental): class Haskell(mode.Fundamental):
modename = 'Haskell' modename = 'Haskell'
extensions = ['.hs'] extensions = ['.hs']
@ -40,17 +49,12 @@ class Haskell(mode.Fundamental):
#closetokens = ('delimiter',) #closetokens = ('delimiter',)
#closetags = {')': '('} #closetags = {')': '('}
colors = { colors = {
'hs_reserved': ('cyan', 'default', 'bold'), 'hs_constructor': ('magenta', 'default', 'bold'),
'hs_constructor': ('magenta', 'default', 'bold'), 'hs_declaration': ('blue', 'default', 'bold'),
'hs_declaration': ('blue', 'default', 'bold'), 'hs_variable': ('yellow', 'default', 'bold'),
'hs_operator': ('green', 'default', 'bold'), 'string.gap.start': ('red', 'default', 'bold'),
'hs_string.start': ('green', 'default', 'bold'), 'string.gap.null': ('red', 'default', 'bold'),
'hs_string.null': ('green', 'default', 'bold'), 'string.gap.end': ('red', 'default', 'bold'),
'hs_string.end': ('green', 'default', 'bold'),
'hs_string.escaped': ('magenta', 'default', 'bold'),
'hs_string.gap.start': ('red', 'default', 'bold'),
'hs_string.gap.null': ('red', 'default', 'bold'),
'hs_string.gap.end': ('red', 'default', 'bold'),
} }
install = Haskell.install install = Haskell.install