mirror of
https://git.sfja.dk/Mikkel/slige.git
synced 2025-01-18 10:06:31 +00:00
add vim syntax
This commit is contained in:
parent
51685ddd97
commit
72cbf727d0
2
editors/vim/ftdetect/slige.vim
Normal file
2
editors/vim/ftdetect/slige.vim
Normal file
@ -0,0 +1,2 @@
|
||||
autocmd BufNewFile,BufRead *.slg setfiletype slige
|
||||
autocmd BufNewFile,BufRead *.slgbc setfiletype json
|
1
editors/vim/ftplugin/slige.vim
Normal file
1
editors/vim/ftplugin/slige.vim
Normal file
@ -0,0 +1 @@
|
||||
setlocal commentstring=//%s
|
23
editors/vim/indent/slige.vim
Normal file
23
editors/vim/indent/slige.vim
Normal file
@ -0,0 +1,23 @@
|
||||
setlocal indentexpr=SligeIndent()
|
||||
|
||||
function! SligeIndent()
|
||||
let line = getline(v:lnum)
|
||||
let previousNum = prevnonblank(v:lnum - 1)
|
||||
let previous = getline(previousNum)
|
||||
|
||||
if previous =~ "(" && previous !~ ")" && (line !~ ")" || line !~ "%)")
|
||||
return indent(previousNum) + &shiftwidth
|
||||
elseif (line =~ ")" || line =~ "%)") && line !~ "("
|
||||
return indent(previousNum) - &shiftwidth
|
||||
elif previous =~ "{" && previous !~ "}" && (line !~ "}" || line !~ "%}")
|
||||
return indent(previousNum) + &shiftwidth
|
||||
elseif (line =~ "}" || line =~ "%}") && line !~ "{"
|
||||
return indent(previousNum) - &shiftwidth
|
||||
elif previous =~ "[" && previous !~ "]" && (line !~ "]" || line !~ "%]")
|
||||
return indent(previousNum) + &shiftwidth
|
||||
elseif (line =~ "]" || line =~ "%]") && line !~ "["
|
||||
return indent(previousNum) - &shiftwidth
|
||||
else
|
||||
return indent(previousNum)
|
||||
endif
|
||||
endfunction
|
46
editors/vim/syntax/slige.vim
Normal file
46
editors/vim/syntax/slige.vim
Normal file
@ -0,0 +1,46 @@
|
||||
" Vim syntax file
|
||||
" Language: Slige
|
||||
" Maintainer: SFJ
|
||||
" Latest Revision: 1 January 1984
|
||||
|
||||
if exists("b:current_syntax")
|
||||
finish
|
||||
endif
|
||||
|
||||
syn keyword Keyword break return let fn loop if else struct import or and not
|
||||
syn keyword Special null
|
||||
syn keyword Type int string
|
||||
syn keyword Boolean true false
|
||||
|
||||
syn match Operator '+'
|
||||
syn match Operator '-'
|
||||
syn match Operator '\*'
|
||||
syn match Operator '/'
|
||||
syn match Operator '='
|
||||
syn match Operator '=='
|
||||
syn match Operator '!='
|
||||
syn match Operator '<'
|
||||
syn match Operator '>'
|
||||
syn match Operator '<='
|
||||
syn match Operator '>='
|
||||
syn match Operator '\.'
|
||||
syn match Operator ':'
|
||||
syn match Operator '->'
|
||||
|
||||
syn match Number '0'
|
||||
syn match Number '[1-9][0-9]*'
|
||||
syn match Number '0[0-7]\+'
|
||||
syn match Number '0x[0-9a-fA-F]\+'
|
||||
syn match Number '0b[01]\+'
|
||||
|
||||
syn region String start=+"+ skip=+\\"+ end=+"+
|
||||
|
||||
syn keyword Todo contained TODO FIXME XXX NOTE
|
||||
syn match Comment "/\*.*\*/" contains=Todo
|
||||
syn match Comment "//.*$" contains=Todo
|
||||
|
||||
syn match Function '[a-zA-Z_]\w*\ze('
|
||||
|
||||
syn region sligeBlock start="{" end="}" transparent fold
|
||||
|
||||
let b:current_syntax = "slige"
|
Loading…
Reference in New Issue
Block a user