diff --git a/.vim/ftdetect/xonsh.vim b/.vim/ftdetect/xonsh.vim new file mode 100644 index 0000000..b542b3a --- /dev/null +++ b/.vim/ftdetect/xonsh.vim @@ -0,0 +1,2 @@ +au BufNewFile,BufRead .xonshrc set filetype=xonsh +au BufNewFile,BufRead *.xsh set filetype=xonsh diff --git a/.vim/syntax/xonsh.vim b/.vim/syntax/xonsh.vim new file mode 100644 index 0000000..ada2f19 --- /dev/null +++ b/.vim/syntax/xonsh.vim @@ -0,0 +1,152 @@ +" Vim syntax file for xonsh +" Language: Xonsh Shell Script +" Maintainer: Abhishek Mukherjee +" Latest Revision: 05 January 2016 + + +if exists("b:current_syntax") + finish +endif + +if exists("xsh_highlight_all") + let xsh_highlight_numbers = 1 + let xsh_highlight_builtins = 1 + let xsh_highlight_exceptions = 1 + let xsh_highlight_space_errors = 1 +endif + +syn keyword xshStatement as assert break continue del except exec finally +syn keyword xshStatement global lambda pass print raise return try with +syn keyword xshStatement yield +syn match xshEnvironmentVariable "\v\$[a-zA-Z0-9_]+" + +syn keyword xshStatement def class nextgroup=xshFunction skipwhite + +syn match xshFunction "[a-zA-Z_][a-zA-Z0-9_]*" contained + +syn keyword xshRepeat for while + +syn keyword xshConditional if elif else + +syn keyword xshOperator and in is not or + +syn keyword xshPreCondit import from + +syn match xshComment "#.*$" contains=xshTodo + +syn keyword xshTodo TODO FIXME XXX contained + +syn region xshString matchgroup=Normal start=+[uU]\='+ end=+'+ skip=+\\\\\|\\'+ contains=xshEscape +syn region xshString matchgroup=Normal start=+[uU]\="+ end=+"+ skip=+\\\\\|\\"+ contains=xshEscape +syn region xshString matchgroup=Normal start=+[uU]\="""+ end=+"""+ contains=xshEscape +syn region xshString matchgroup=Normal start=+[uU]\='''+ end=+'''+ contains=xshEscape +syn region xshString matchgroup=Normal start=+[uU]\=[rR]'+ end=+'+ skip=+\\\\\|\\'+ +syn region xshString matchgroup=Normal start=+[uU]\=[rR]"+ end=+"+ skip=+\\\\\|\\"+ +syn region xshString matchgroup=Normal start=+[uU]\=[rR]"""+ end=+"""+ +syn region xshString matchgroup=Normal start=+[uU]\=[rR]'''+ end=+'''+ + +syn match xshEscape +\\[abfnrtv\'"\\]+ contained +syn match xshEscape "\\\o\{1,3}" contained +syn match xshEscape "\\x\x\{2}" contained +syn match xshEscape "\(\\u\x\{4}\|\\U\x\{8}\)" contained + +syn match xshEscape "\\$" + + +if exists("xsh_highlight_numbers") + syn match xshNumber "\<0x\x\+[Ll]\=\>" + syn match xshNumber "\<\d\+[LljJ]\=\>" + syn match xshNumber "\.\d\+\([eE][+-]\=\d\+\)\=[jJ]\=\>" + syn match xshNumber "\<\d\+\.\([eE][+-]\=\d\+\)\=[jJ]\=\>" + syn match xshNumber "\<\d\+\.\d\+\([eE][+-]\=\d\+\)\=[jJ]\=\>" + +endif + + +if exists("xsh_highlight_builtins") + syn keyword xshBuiltin Ellipsis False None NotImplemented True __debug__ + syn keyword xshBuiltin __import__ abs all any apply basestring bin bool + syn keyword xshBuiltin buffer bytearray bytes callable chr classmethod + syn keyword xshBuiltin cmp coerce compile complex copyright credits + syn keyword xshBuiltin delattr dict dir divmod enumerate eval execfile + syn keyword xshBuiltin exit file filter float format frozenset getattr + syn keyword xshBuiltin globals hasattr hash help hex id input int intern + syn keyword xshBuiltin isinstance issubclass iter len license list + syn keyword xshBuiltin locals long map max memoryview min next object + syn keyword xshBuiltin oct open ord pow print property quit range + syn keyword xshBuiltin raw_input reduce reload repr reversed round set + syn keyword xshBuiltin setattr slice sorted staticmethod str sum super + syn keyword xshBuiltin tuple type unichr unicode vars xrange zip + +endif + + +if exists("xsh_highlight_exceptions") + syn keyword xshException ArithmeticError AssertionError AttributeError + syn keyword xshException BaseException BufferError BytesWarning + syn keyword xshException DeprecationWarning EOFError EnvironmentError + syn keyword xshException Exception FloatingPointError FutureWarning + syn keyword xshException GeneratorExit IOError ImportError ImportWarning + syn keyword xshException IndentationError IndexError KeyError + syn keyword xshException KeyboardInterrupt LookupError MemoryError + syn keyword xshException NameError NotImplementedError OSError + syn keyword xshException OverflowError PendingDeprecationWarning + syn keyword xshException ReferenceError RuntimeError RuntimeWarning + syn keyword xshException StandardError StopIteration SyntaxError + syn keyword xshException SyntaxWarning SystemError SystemExit TabError + syn keyword xshException TypeError UnboundLocalError UnicodeDecodeError + syn keyword xshException UnicodeEncodeError UnicodeError + syn keyword xshException UnicodeTranslateError UnicodeWarning + syn keyword xshException UserWarning ValueError Warning + syn keyword xshException ZeroDivisionError + +endif + + +if exists("xsh_highlight_space_errors") + syn match xshSpaceError display excludenl "\S\s\+$"ms=s+1 + syn match xshSpaceError display " \+\t" + syn match xshSpaceError display "\t\+ " + +endif + + + hi def link xshStatement Statement + hi def link xshStatement Statement + hi def link xshFunction Function + hi def link xshRepeat Repeat + hi def link xshConditional Conditional + hi def link xshOperator Operator + hi def link xshPreCondit PreCondit + hi def link xshComment Comment + hi def link xshTodo Todo + hi def link xshString String + hi def link xshEscape Special + hi def link xshEscape Special + + if exists("xsh_highlight_numbers") + hi def link xshNumber Number + endif + hi def link xshEnvironmentVariable Number + + if exists("xsh_highlight_builtins") + hi def link xshBuiltin Function + endif + + if exists("xsh_highlight_exceptions") + hi def link xshException Exception + endif + + if exists("xsh_highlight_space_errors") + hi def link xshSpaceError Error + endif + + +" Uncomment the 'minlines' statement line and comment out the 'maxlines' +" statement line; changes behaviour to look at least 2000 lines previously for +" syntax matches instead of at most 200 lines +syn sync match xshSync grouphere NONE "):$" +syn sync maxlines=200 +"syn sync minlines=2000 + +let b:current_syntax = "xsh"