mirror of
https://github.com/dperelman/stonescript-vim
synced 2024-12-22 09:28:12 -05:00
Compare commits
6 Commits
ed5ad0a524
...
618ba7dc1d
Author | SHA1 | Date | |
---|---|---|---|
618ba7dc1d | |||
1dc0803783 | |||
c99504fd1b | |||
4a654d2f47 | |||
71b6f41756 | |||
622000e97e |
3
filetype.vim
Normal file
3
filetype.vim
Normal file
|
@ -0,0 +1,3 @@
|
|||
augroup filetypedetect
|
||||
au BufNewFile,BufRead *.stonescript setf stonescript
|
||||
augroup END
|
32
indent/stonescript.vim
Normal file
32
indent/stonescript.vim
Normal file
|
@ -0,0 +1,32 @@
|
|||
" Vim indent file
|
||||
" Language: Stonescript (Stone Story RPG's builtin scripting language)
|
||||
" Maintainer: Daniel Perelman (https://github.com/dperelman)
|
||||
|
||||
" Only load this indent file when no other was loaded.
|
||||
if exists("b:did_indent")
|
||||
finish
|
||||
endif
|
||||
let b:did_indent = 1
|
||||
|
||||
setlocal autoindent " indentexpr isn't much help otherwise
|
||||
|
||||
setlocal indentexpr=GetStonescriptIndent(v:lnum)
|
||||
|
||||
setlocal expandtab
|
||||
setlocal softtabstop=2
|
||||
setlocal shiftwidth=2
|
||||
|
||||
" Based on the indent/python.vim included with Vim 8.1.
|
||||
function GetStonescriptIndent(lnum)
|
||||
" Search backwards for the previous non-empty line.
|
||||
let plnum = prevnonblank(v:lnum - 1)
|
||||
let plindent = indent(plnum)
|
||||
|
||||
let pline = getline(plnum)
|
||||
" If the previous line started with a question mark, indent this line
|
||||
if pline =~ '^\s*?'
|
||||
return plindent + shiftwidth()
|
||||
endif
|
||||
|
||||
return plindent
|
||||
endfunction
|
74
syntax/stonescript.vim
Normal file
74
syntax/stonescript.vim
Normal file
|
@ -0,0 +1,74 @@
|
|||
" Vim syntax file
|
||||
" Language: Stonescript (Stone Story RPG's builtin scripting language)
|
||||
" Maintainer: Daniel Perelman (https://github.com/dperelman)
|
||||
|
||||
" Quit when a (custom) syntax file was already loaded
|
||||
if exists('b:current_syntax')
|
||||
finish
|
||||
endif
|
||||
|
||||
syn match ssUnknown '\S*'
|
||||
syn match ssComment '//.*'
|
||||
|
||||
syn keyword ssStatement equip equipL equipR loadout
|
||||
syn match ssStatement 'activate potion'
|
||||
syn match ssIf '?'
|
||||
" TODO More precise highlighting for print
|
||||
syn match ssPrintLine />.*/
|
||||
syn match ssBoolOperator /[!&|][ a-z]/he=e-1,me=e-1
|
||||
syn match ssCompOperator /[><=][ a-z0-9*]/he=e-1,me=e-1
|
||||
|
||||
syn match ssNumber '\<\d\+\>'
|
||||
syn match ssEnchantLvl '[+]\(\d\|1[0-6]\)\>'
|
||||
syn match ssStarLvl '[*]\(\d\|10\)\>'
|
||||
|
||||
syn keyword ssLocation rocky deadwood cave caves shroom haunted crypt
|
||||
\ bronze icy temple nagaraj nagaraja halls
|
||||
syn keyword ssElement fire ice aether vigor poison
|
||||
syn keyword ssItemKind sword shield crossbow rune wand hammer staff
|
||||
\ ouroboros shovel hatchet grap
|
||||
syn keyword ssItemModifier big repeating dashing
|
||||
syn match ssItemVariant '\<[DdAa]\?[FfIiPpHLU]\?\>'
|
||||
syn keyword ssFoeName morel bolesh
|
||||
syn keyword ssFoeProperty arachnid serpent insect machine
|
||||
\ humanoid elemental
|
||||
\ boss spawner flying slow ranged
|
||||
\ unpushable undamageable
|
||||
\ magic_resist magic_vulnerability
|
||||
\ immune_to_stun immune_to_ranged
|
||||
\ immune_to_debuff_damage immune_to_physical
|
||||
|
||||
syn match ssFoeVar 'foe\(\.\(hp\|maxhp\|count\|armor\|distance\|debuffs\.count\)\)\?'
|
||||
syn match ssSelfVar '\(hp\|maxhp\|armor\|maxarmor\|loc\|time\|pickup\|pickup\.distance\|pos\.x\|face\|debuffs\.count\)'
|
||||
|
||||
syn match ssOverLength /^.\{50,\}$/
|
||||
|
||||
hi def link ssComment Comment
|
||||
|
||||
hi def link ssStatement Statement
|
||||
hi def link ssIf Conditional
|
||||
|
||||
hi def link ssLocation Constant
|
||||
hi def link ssElement Type
|
||||
hi def link ssItemKind Type
|
||||
hi def link ssItemModifier Type
|
||||
hi def link ssFoeName Constant
|
||||
hi def link ssFoeProperty Constant
|
||||
|
||||
hi def link ssFoeVar Identifier
|
||||
hi def link ssSelfVar Identifier
|
||||
|
||||
hi def link ssBoolOperator Operator
|
||||
hi def link ssCompOperator Operator
|
||||
|
||||
hi def link ssNumber Number
|
||||
hi def link ssEnchantLvl Type
|
||||
hi def link ssStarLvl Type
|
||||
hi def link ssItemVariant Type
|
||||
|
||||
hi def link ssPrintLine String
|
||||
|
||||
hi def link ssUnknown Error
|
||||
hi def link ssOverLength Error
|
||||
|
||||
let b:current_syntax = 'stonescript'
|
Loading…
Reference in New Issue
Block a user