vessel/scripts/vim/session.vim
2025-06-13 18:14:26 +03:00

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"