vim-polyglot/syntax/tf.vim
2017-09-27 20:43:42 +02:00

201 lines
6.8 KiB
VimL

if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1
" Vim syntax file
" Language: tf
" Maintainer: Lutz Eymers <ixtab@polzin.com>
" URL: http://www.isp.de/data/tf.vim
" Email: send syntax_vim.tgz
" Last Change: 2001 May 10
"
" Options lite_minlines = x to sync at least x lines backwards
" Remove any old syntax stuff hanging around
" quit when a syntax file was already loaded
if exists("b:current_syntax")
finish
endif
syn case match
if !exists("main_syntax")
let main_syntax = 'tf'
endif
" Special global variables
syn keyword tfVar HOME LANG MAIL SHELL TERM TFHELP TFLIBDIR TFLIBRARY TZ contained
syn keyword tfVar background backslash contained
syn keyword tfVar bamf bg_output borg clearfull cleardone clock connect contained
syn keyword tfVar emulation end_color gag gethostbyname gpri hook hilite contained
syn keyword tfVar hiliteattr histsize hpri insert isize istrip kecho contained
syn keyword tfVar kprefix login lp lpquote maildelay matching max_iter contained
syn keyword tfVar max_recur mecho more mprefix oldslash promt_sec contained
syn keyword tfVar prompt_usec proxy_host proxy_port ptime qecho qprefix contained
syn keyword tfVar quite quitdone redef refreshtime scroll shpause snarf sockmload contained
syn keyword tfVar start_color tabsize telopt sub time_format visual contained
syn keyword tfVar watch_dog watchname wordpunct wrap wraplog wrapsize contained
syn keyword tfVar wrapspace contained
" Worldvar
syn keyword tfWorld world_name world_character world_password world_host contained
syn keyword tfWorld world_port world_mfile world_type contained
" Number
syn match tfNumber "-\=\<\d\+\>"
" Float
syn match tfFloat "\(-\=\<\d+\|-\=\)\.\d\+\>"
" Operator
syn match tfOperator "[-+=?:&|!]"
syn match tfOperator "/[^*~@]"he=e-1
syn match tfOperator ":="
syn match tfOperator "[^/%]\*"hs=s+1
syn match tfOperator "$\+[([{]"he=e-1,me=e-1
syn match tfOperator "\^\[\+"he=s+1 contains=tfSpecialCharEsc
" Relational
syn match tfRelation "&&"
syn match tfRelation "||"
syn match tfRelation "[<>/!=]="
syn match tfRelation "[<>]"
syn match tfRelation "[!=]\~"
syn match tfRelation "[=!]/"
" Readonly Var
syn match tfReadonly "[#*]" contained
syn match tfReadonly "\<-\=L\=\d\{-}\>" contained
syn match tfReadonly "\<P\(\d\+\|R\|L\)\>" contained
syn match tfReadonly "\<R\>" contained
" Identifier
syn match tfIdentifier "%\+[a-zA-Z_#*-0-9]\w*" contains=tfVar,tfReadonly
syn match tfIdentifier "%\+[{]"he=e-1,me=e-1
syn match tfIdentifier "\$\+{[a-zA-Z_#*-0-9]\w*}" contains=tfWorld
" Function names
syn keyword tfFunctions ascii char columns echo filename ftime fwrite getopts
syn keyword tfFunctions getpid idle kbdel kbgoto kbhead kblen kbmatch kbpoint
syn keyword tfFunctions kbtail kbwordleft kbwordright keycode lines mod
syn keyword tfFunctions moresize pad rand read regmatch send strcat strchr
syn keyword tfFunctions strcmp strlen strncmp strrchr strrep strstr substr
syn keyword tfFunctions systype time tolower toupper
syn keyword tfStatement addworld bamf beep bind break cat changes connect contained
syn keyword tfStatement dc def dokey echo edit escape eval export expr fg for contained
syn keyword tfStatement gag getfile grab help hilite histsize hook if input contained
syn keyword tfStatement kill lcd let list listsockets listworlds load contained
syn keyword tfStatement localecho log nohilite not partial paste ps purge contained
syn keyword tfStatement purgeworld putfile quit quote recall recordline save contained
syn keyword tfStatement saveworld send sh shift sub substitute contained
syn keyword tfStatement suspend telnet test time toggle trig trigger unbind contained
syn keyword tfStatement undef undefn undeft unhook untrig unworld contained
syn keyword tfStatement version watchdog watchname while world contained
" Hooks
syn keyword tfHook ACTIVITY BACKGROUND BAMF CONFAIL CONFLICT CONNECT DISCONNECT
syn keyword tfHook KILL LOAD LOADFAIL LOG LOGIN MAIL MORE PENDING PENDING
syn keyword tfHook PROCESS PROMPT PROXY REDEF RESIZE RESUME SEND SHADOW SHELL
syn keyword tfHook SIGHUP SIGTERM SIGUSR1 SIGUSR2 WORLD
" Conditional
syn keyword tfConditional if endif then else elseif contained
" Repeat
syn keyword tfRepeat while do done repeat for contained
" Statement
syn keyword tfStatement break quit contained
" Include
syn keyword tfInclude require load save loaded contained
" Define
syn keyword tfDefine bind unbind def undef undefn undefn purge hook unhook trig untrig contained
syn keyword tfDefine set unset setenv contained
" Todo
syn keyword tfTodo TODO Todo todo contained
" SpecialChar
syn match tfSpecialChar "\\[abcfnrtyv\\]" contained
syn match tfSpecialChar "\\\d\{3}" contained contains=tfOctalError
syn match tfSpecialChar "\\x[0-9a-fA-F]\{2}" contained
syn match tfSpecialCharEsc "\[\+" contained
syn match tfOctalError "[89]" contained
" Comment
syn region tfComment start="^;" end="$" contains=tfTodo
" String
syn region tfString oneline matchgroup=None start=+'+ skip=+\\\\\|\\'+ end=+'+ contains=tfIdentifier,tfSpecialChar,tfEscape
syn region tfString matchgroup=None start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=tfIdentifier,tfSpecialChar,tfEscape
syn match tfParentError "[)}\]]"
" Parents
syn region tfParent matchgroup=Delimiter start="(" end=")" contains=ALLBUT,tfReadonly
syn region tfParent matchgroup=Delimiter start="\[" end="\]" contains=ALL
syn region tfParent matchgroup=Delimiter start="{" end="}" contains=ALL
syn match tfEndCommand "%%\{-};"
syn match tfJoinLines "\\$"
" Types
syn match tfType "/[a-zA-Z_~@][a-zA-Z0-9_]*" contains=tfConditional,tfRepeat,tfStatement,tfInclude,tfDefine,tfStatement
" Catch /quote .. '
syn match tfQuotes "/quote .\{-}'" contains=ALLBUT,tfString
" Catch $(/escape )
syn match tfEscape "(/escape .*)"
" sync
if exists("tf_minlines")
exec "syn sync minlines=" . tf_minlines
else
syn sync minlines=100
endif
" Define the default highlighting.
" Only when an item doesn't have highlighting yet
hi def link tfComment Comment
hi def link tfString String
hi def link tfNumber Number
hi def link tfFloat Float
hi def link tfIdentifier Identifier
hi def link tfVar Identifier
hi def link tfWorld Identifier
hi def link tfReadonly Identifier
hi def link tfHook Identifier
hi def link tfFunctions Function
hi def link tfRepeat Repeat
hi def link tfConditional Conditional
hi def link tfLabel Label
hi def link tfStatement Statement
hi def link tfType Type
hi def link tfInclude Include
hi def link tfDefine Define
hi def link tfSpecialChar SpecialChar
hi def link tfSpecialCharEsc SpecialChar
hi def link tfParentError Error
hi def link tfTodo Todo
hi def link tfEndCommand Delimiter
hi def link tfJoinLines Delimiter
hi def link tfOperator Operator
hi def link tfRelation Operator
let b:current_syntax = "tf"
if main_syntax == 'tf'
unlet main_syntax
endif
" vim: ts=8
endif