83 lines
3 KiB
VimL
83 lines
3 KiB
VimL
" Vim syntax file
|
|
" Language: Session
|
|
" Maintainer: Arija A. <ari@ari.lt>
|
|
|
|
" Usage Instructions
|
|
" Put this file in ~/.vim/syntax/fa.vim and
|
|
" then put fa.ftp.vim to ~/.vim/ftdetect/fa.ftp.vim
|
|
|
|
scriptencoding utf-8
|
|
|
|
if exists("b:current_syntax")
|
|
finish
|
|
endif
|
|
|
|
" TODOs
|
|
syntax keyword sessionTodo TODO XXX FIXME NOTE contained
|
|
|
|
" Keywords
|
|
syntax keyword sessionKeyword begin end read push pop ssl print exit contained
|
|
syntax keyword sessionSemiKeyword quiet contained
|
|
|
|
" Numbers
|
|
syntax match sessionNumber /\d*/
|
|
syntax match sessionNumber /-\d*/
|
|
|
|
" Comments
|
|
syntax region sessionCommentLine start="--" end="$" contains=sessionTodo
|
|
syntax region sessionCommentLine start="^--" end="$" contains=sessionTodo
|
|
syntax region sessionCommentLine start="^#!" end="$"
|
|
|
|
" Pre-processor stuff
|
|
syntax keyword sessionMacroKeyword randstr randnum randhead uuid env lit contained
|
|
syntax match sessionMacro "%[^%]*%" contains=sessionMacroKeyword,sessionNumber,sessionCommentLine,sessionString,sessionDash
|
|
|
|
" Command
|
|
syntax match sessionCommand /^\$ / contained
|
|
syntax match sessionCommandLine /\$.*$/ contains=sessionCommand,sessionKeyword,sessionCommentLine,sessionMacro,sessionNumber,sessionSemiKeyword,sessionString,sessionDash contained
|
|
|
|
" Strings
|
|
syntax region sessionString start=/\v"/ skip=/\v\\./ end=/\v"/ contains=sessionEscape,sessionDash contained
|
|
|
|
" HTTP Method
|
|
syntax match sessionHttpMethod /^\(GET\|POST\|PUT\|DELETE\|OPTIONS\|HEAD\|PATCH\)\s/ contained
|
|
|
|
" HTTP Version
|
|
syntax match sessionHttpVersion /HTTP\/[0-9]/ contained
|
|
syntax match sessionHttpVersion /HTTP\/[0-9].[0-9]/ contained
|
|
|
|
" HTTP Headers
|
|
syntax match sessionHttpHeader /^[^:]\+:/ contains=sessionMacro,sessionDash contained
|
|
|
|
" Escapes
|
|
syntax match sessionEscape +\\[abfnrtv'"\\]+ contained
|
|
syntax match sessionEscape "\\\o\{1,3}" contained
|
|
syntax match sessionEscape "\\x\x\{2}" contained
|
|
syntax match sessionEscape "\%(\\u\x\{4}\|\\U\x\{8}\)" contained
|
|
syntax match sessionEscape "\\N{\a\+\%(\s\a\+\)*}" contained
|
|
|
|
" -=-= => --
|
|
syntax match sessionDash "-=-="
|
|
|
|
" Default syntax is string (when unknown will highlight as a string)
|
|
syntax match sessionDefault /./ contains=ALLBUT,sessionKeyword,sessionSemiKeyword,sessionString,sessionTodo
|
|
|
|
" Set highlights
|
|
highlight default link sessionTodo Todo
|
|
highlight default link sessionKeyword Keyword
|
|
highlight default link sessionMacroKeyword Statement
|
|
highlight default link sessionSemiKeyword Constant
|
|
highlight default link sessionNumber Number
|
|
highlight default link sessionCommentLine Comment
|
|
highlight default link sessionDash Define
|
|
highlight default link sessionCommand Constant
|
|
highlight default link sessionMacro Define
|
|
highlight default link sessionHttpMethod Type
|
|
highlight default link sessionHttpVersion Identifier
|
|
highlight default link sessionHttpHeader Statement
|
|
highlight default link sessionEscape Special
|
|
highlight default link sessionString String
|
|
highlight default link sessionDefault String
|
|
|
|
" Set syntax
|
|
let b:current_syntax = "session"
|