parent
f88a2e18cb
commit
a620e610c9
42
mode/rust.py
42
mode/rust.py
|
@ -1,38 +1,8 @@
|
|||
import os.path
|
||||
#from subprocess import Popen, PIPE, STDOUT
|
||||
#from method import Method, arg
|
||||
#from method.shell import Exec
|
||||
#from method.tags import InitTags
|
||||
from mode import Fundamental
|
||||
import tab
|
||||
#import completer
|
||||
from lex import Grammar, PatternRule, RegionRule, PatternMatchRule, OverridePatternRule
|
||||
from mode.python import StringGrammar2
|
||||
#from etags import TagManager
|
||||
|
||||
#class CommentGrammar(Grammar):
|
||||
# rules = [
|
||||
# PatternRule(r'data', r'(?:[^\*]|\*(?!/))+'),
|
||||
# ]
|
||||
#
|
||||
#class ErrorGrammar(Grammar):
|
||||
# rules = [
|
||||
# PatternRule(r'data', r'[^\\\n]+'),
|
||||
# PatternRule('continuation', r'\\\n$'),
|
||||
# ]
|
||||
|
||||
#class MacroGrammar(Grammar):
|
||||
# rules = [
|
||||
# PatternRule('continuation', r'\\\n$'),
|
||||
# PatternRule('name', '(?<=#define ) *' + word),
|
||||
# PatternRule('name', '(?<=#ifdef ) *' + word),
|
||||
# PatternRule('name', '(?<=#ifndef ) *' + word),
|
||||
# PatternRule('name', '(?<=#undef ) *' + word),
|
||||
# PatternRule('concat', '##' + chr2 + '+'),
|
||||
# PatternRule('quoted', '#' + chr2 + '+'),
|
||||
# PatternMatchRule('x', r'(defined)(\()(' + word + r')(\))',
|
||||
# 'function', 'delimiter', 'name', 'delimiter'),
|
||||
# ]
|
||||
|
||||
chr1 = '[a-zA-Z_]'
|
||||
chr2 = '[a-zA-Z0-9_]'
|
||||
|
@ -66,7 +36,15 @@ class RustGrammar(Grammar):
|
|||
PatternRule("rust.float", r"-?[0-9]+\.[0-9]+|-?\.[0-9]+|-?(?:[0-9]|[0-9]+\.[0-9]*|-?\.[0-9]+)[eE][\+-]?[0-9]+"),
|
||||
PatternRule("rust.integer", r"(?:0(?![x0-9])|-?[1-9][0-9]*|0[0-7]+|0[xX][0-9a-fA-F]+)[lL]?"),
|
||||
|
||||
PatternRule('rust.keyword', r"(?:fn)(?!" + chr2 + ")"),
|
||||
#PatternRule('rust.keyword', r"(?<=[a-zA-Z0-9_])(?:while|where|use|unsafe|type|true|trait|super|struct|static|Self|self|return|ref|pub|mut|move|mod|match|loop|let|in|impl|if|for|fn|false|extern|enum|else|dyn|crate|continue|const|break|await|async|as)"),
|
||||
PatternRule('rust.keyword', r"(?<![a-zA-Z0-9_])(?:while|where|use|unsafe|type|true|trait|super|struct|static|Self|self|return|ref|pub|mut|move|mod|match|loop|let|in|impl|if|for|fn|false|extern|enum|else|dyn|crate|continue|const|break|await|async|as)(?![a-zA-Z0-9_])"),
|
||||
|
||||
PatternRule('rust.reserved', r"(?<![a-zA-Z0-9_])(?:yield|virtual|unsized|typeof|try|priv|override|macro|final|do|box|become|abstract)(?![a-zA-Z0-9_])"),
|
||||
|
||||
# weak keywords
|
||||
PatternRule('rust.keyword', r"(?<![a-zA-Z0-9_])(?:union|'static)(?![a-zA-Z0-9_])"),
|
||||
|
||||
PatternRule('rust.method', r"(?:fn)(?!" + chr2 + ")"),
|
||||
|
||||
PatternRule('rust.delimiter', r"[;\(\){}\[\]]"),
|
||||
PatternRule('rust.delimiter', r"(?:->|\.\.|%|==)"),
|
||||
|
@ -118,7 +96,7 @@ hi_blue = ('blue225', 'default')
|
|||
|
||||
class Rust(Fundamental):
|
||||
name = 'rust'
|
||||
extensions = ['.rust']
|
||||
extensions = ['.rs']
|
||||
grammar = RustGrammar
|
||||
opentokens = ('delimiter',)
|
||||
opentags = {'(': ')', '[': ']', '{': '}'}
|
||||
|
|
Loading…
Reference in New Issue