Files
dotfiles/.vim/syntax/setty.vim
2015-03-29 18:22:30 -04:00

149 lines
4.9 KiB
VimL

" Vim syntax file
" Language: Setty
" Maintainer: Adam Blank <adamblan@cs.cmu.edu>
" Last Change: 2013 Jun 17
" Credits: This is based on setty.vim by
" Zvezdan Petkovic <zpetkovic@acm.org>
" Neil Schemenauer <nas@setty.ca>
" Dmitry Vasiliev
"
if version < 600
syntax clear
elseif exists("b:current_syntax")
finish
endif
" Keep setty keywords in alphabetical order inside groups for easy
" comparison with the table in the 'setty Language Reference'
"
syn keyword settyStatement T, F
syn keyword settyStatement print printx
syn keyword settyStatement return requires recurse
syn keyword settyConditional else if
syn keyword settyRepeat for
syn keyword settyOperator and in not or union intersect minus
syn keyword settyInclude use
" The zero-length non-grouping match before the function name is
" extremely important in settyFunction. Without it, everything is
" interpreted as a function inside the contained environment of
" doctests.
syn match settyFunction
\ "\%(\%(def\s\|class\s\|@\)\s*\)\@<=\h\%(\w\|\.\)*" contained
syn match settyComment "#.*$" contains=settyTodo,@Spell
syn keyword settyTodo FIXME NOTE NOTES TODO XXX contained
" Triple-quoted strings can contain doctests.
syn region settyString
\ start=+[uU]\=\z(['"]\)+ end="\z1" skip="\\\\\|\\\z1"
\ contains=settyEscape,@Spell
syn region settyString
\ start=+[uU]\=\z('''\|"""\)+ end="\z1" keepend
\ contains=settyEscape,settySpaceError,settyDoctest,@Spell
syn region settyRawString
\ start=+[uU]\=[rR]\z(['"]\)+ end="\z1" skip="\\\\\|\\\z1"
\ contains=@Spell
syn region settyRawString
\ start=+[uU]\=[rR]\z('''\|"""\)+ end="\z1" keepend
\ contains=settySpaceError,settyDoctest,@Spell
syn match settyEscape +\\[abfnrtv'"\\]+ contained
syn match settyEscape "\\\o\{1,3}" contained
syn match settyEscape "\\x\x\{2}" contained
syn match settyEscape "\%(\\u\x\{4}\|\\U\x\{8}\)" contained
" setty allows case-insensitive Unicode IDs: http://www.unicode.org/charts/
syn match settyEscape "\\N{\a\+\%(\s\a\+\)*}" contained
syn match settyEscape "\\$"
if exists("setty_highlight_all")
if exists("setty_no_builtin_highlight")
unlet setty_no_builtin_highlight
endif
if exists("setty_no_number_highlight")
unlet setty_no_number_highlight
endif
let setty_space_error_highlight = 1
endif
" It is very important to understand all details before changing the
" regular expressions below or their order.
" The word boundaries are *not* the floating-point number boundaries
" because of a possible leading or trailing decimal point.
" The expressions below ensure that all valid number literals are
" highlighted, and invalid number literals are not. For example,
"
" - a decimal point in '4.' at the end of a line is highlighted,
" - a second dot in 1.0.0 is not highlighted,
" - 08 is not highlighted,
" - 08e0 or 08j are highlighted,
"
" and so on, as specified in the 'setty Language Reference'.
if !exists("setty_no_number_highlight")
" numbers (including longs and complex)
syn match settyNumber "\<\%([1-9]\d*\|0\)\=\>"
endif
" Group the built-ins in the order in the 'setty Library Reference' for
" easier comparison.
" http://docs.setty.org/library/constants.html
" http://docs.setty.org/library/functions.html
" http://docs.setty.org/library/functions.html#non-essential-built-in-functions
" setty built-in functions are in alphabetical order.
if !exists("setty_no_builtin_highlight")
" built-in constants
syn keyword settyBuiltin F T
" built-in functions
syn keyword settyBuiltin pi1 pi2 cardinality lt leq gt geq implies iff unimplemented
endif
if exists("setty_space_error_highlight")
" trailing whitespace
syn match settySpaceError display excludenl "\s\+$"
" mixed tabs and spaces
syn match settySpaceError display " \+\t"
syn match settySpaceError display "\t\+ "
endif
if version >= 508 || !exists("did_setty_syn_inits")
if version <= 508
let did_setty_syn_inits = 1
command -nargs=+ HiLink hi link <args>
else
command -nargs=+ HiLink hi def link <args>
endif
" The default highlight links. Can be overridden later.
HiLink settyStatement Statement
HiLink settyConditional Conditional
HiLink settyRepeat Repeat
HiLink settyOperator Operator
HiLink settyInclude Include
HiLink settyDecorator Define
HiLink settyFunction Function
HiLink settyComment Comment
HiLink settyTodo Todo
HiLink settyString String
HiLink settyRawString String
HiLink settyEscape Special
if !exists("setty_no_number_highlight")
HiLink settyNumber Number
endif
if !exists("setty_no_builtin_highlight")
HiLink settyBuiltin Function
endif
if exists("setty_space_error_highlight")
HiLink settySpaceError Error
endif
if !exists("setty_no_doctest_highlight")
HiLink settyDoctest Special
HiLink settyDoctestValue Define
endif
delcommand HiLink
endif
let b:current_syntax = "setty"
" vim:set sw=2 sts=2 ts=8 noet: