add xonsh syntax highlighting

This commit is contained in:
riley 2021-09-22 03:58:57 -04:00
parent b3ddca8a06
commit 3d58d836b0
2 changed files with 154 additions and 0 deletions

2
.vim/ftdetect/xonsh.vim Normal file
View File

@ -0,0 +1,2 @@
au BufNewFile,BufRead .xonshrc set filetype=xonsh
au BufNewFile,BufRead *.xsh set filetype=xonsh

152
.vim/syntax/xonsh.vim Normal file
View File

@ -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"