feat(vim): add basic syntax support for vim
This commit is contained in:
parent
44c6e92a64
commit
3188a42259
2 changed files with 101 additions and 0 deletions
2
src/vim/ftdetect/lean.vim
Normal file
2
src/vim/ftdetect/lean.vim
Normal file
|
@ -0,0 +1,2 @@
|
|||
au BufRead,BufNewFile *.ilean set ft=lean
|
||||
au BufRead,BufNewFile *.lean set ft=lean
|
99
src/vim/syntax/lean.vim
Normal file
99
src/vim/syntax/lean.vim
Normal file
|
@ -0,0 +1,99 @@
|
|||
" Vim syntax file
|
||||
" Language: Lean
|
||||
" Filename extensions: *.lean, *.ilean
|
||||
" Maintainer: Simon Cruanes
|
||||
" For version 5.x: Clear all syntax items
|
||||
" For version 6.x: Quit when a syntax file was already loaded
|
||||
if version < 600
|
||||
syntax clear
|
||||
"elseif exists("b:current_syntax")
|
||||
" finish
|
||||
endif
|
||||
|
||||
if version >= 600
|
||||
setlocal iskeyword=@,48-57,_,-,!,#,$,%
|
||||
else
|
||||
set iskeyword=@,48-57,_,-,!,#,$,%
|
||||
endif
|
||||
|
||||
" tabs = evil
|
||||
set expandtab
|
||||
|
||||
syn case match
|
||||
|
||||
" keywords
|
||||
syn keyword leanKeyword import prelude tactic_hint protected private noncomputable
|
||||
syn keyword leanKeyword definition renaming hiding exposing parameter parameters
|
||||
syn keyword leanKeyword begin "begin+" proof qed conjecture constant constants hypothesis lemma
|
||||
syn keyword leanKeyword corollary variable variables premise premises theory print theorem proposition
|
||||
syn keyword leanKeyword example abbreviation abstract open as export override axiom axioms inductive
|
||||
syn keyword leanKeyword with structure record universe universes alias help environment options
|
||||
syn keyword leanKeyword precedence reserve match infix infixl infixr notation postfix prefix
|
||||
syn keyword leanKeyword tactic_infix tactic_infixl tactic_infixr tactic_notation tactic_postfix
|
||||
syn keyword leanKeyword tactic_prefix eval check end reveal this suppose using namespace section
|
||||
syn keyword leanKeyword fields find_decl attribute local set_option extends include omit classes
|
||||
syn keyword leanKeyword instances coercions metaclasses raw migrate replacing calc have show suffices
|
||||
syn keyword leanKeyword by in at let forall fun exists if dif then else assume assert take obtain from
|
||||
|
||||
syn match leanOp ":"
|
||||
syn match leanOp "="
|
||||
|
||||
" constants
|
||||
syn keyword leanConstant # @ -> ∼ ↔ / == := <-> /\\ \\/ ∧ ∨
|
||||
syn keyword leanConstant ≠ < > ≤ ≥ ¬ <= >= ⁻¹ ⬝ ▸ + * - / λ
|
||||
syn keyword leanConstant → ∃ ∀
|
||||
|
||||
" modifiers (pragmas)
|
||||
syn keyword leanModifier contained containedin=leanBracketEncl persistent notation visible instance trans-instance class parsing-only
|
||||
syn keyword leanModifier contained containedin=leanBracketEncl coercion unfold-full constructor reducible irreducible semireducible
|
||||
syn keyword leanModifier contained containedin=leanBracketEncl quasireducible wf whnf multiple-instances none decls declarations coercions
|
||||
syn keyword leanModifier contained containedin=leanBracketEncl classes symm subst refl trans simp congr notations abbreviations
|
||||
syn keyword leanModifier contained containedin=leanBracketEncl begin-end-hints tactic-hints reduce-hints unfold-hints aliases eqv
|
||||
syn keyword leanModifier contained containedin=leanBracketEncl localrefinfo
|
||||
|
||||
" delimiters
|
||||
|
||||
syn match leanBraceErr "}"
|
||||
syn match leanParenErr ")"
|
||||
syn match leanBrackErr "\]"
|
||||
|
||||
syn region leanEncl matchgroup=leanDelim start="(" end=")" contains=ALLBUT,leanParenErr,leanModifier keepend
|
||||
syn region leanBracketEncl matchgroup=leanDelim start="\[" end="\]" contains=ALLBUT,leanBrackErr keepend
|
||||
syn region leanEncl matchgroup=leanDelim start="{" end="}" contains=ALLBUT,leanBraceErr,leanModifier keepend
|
||||
|
||||
syn keyword leanTodo containedin=leanComment TODO FIXME BUG FIX
|
||||
|
||||
syn region leanComment start=+/-+ end=+-/+ contains=leanTodo
|
||||
syn match leanComment contains=leanTodo +--.*+
|
||||
|
||||
" Define the default highlighting.
|
||||
" For version 5.7 and earlier: only when not done already
|
||||
" For version 5.8 and later: only when an item doesn't have highlighting yet
|
||||
if version >= 508 || !exists("did_lean_syntax_inits")
|
||||
if version < 508
|
||||
let did_lean_syntax_inits = 1
|
||||
command -nargs=+ HiLink hi link <args>
|
||||
else
|
||||
command -nargs=+ HiLink hi def link <args>
|
||||
endif
|
||||
|
||||
HiLink leanTodo Todo
|
||||
|
||||
HiLink leanComment Comment
|
||||
|
||||
HiLink leanKeyword Keyword
|
||||
HiLink leanConstant Constant
|
||||
HiLink leanModifier Special
|
||||
HiLink leanDelim Keyword " Delimiter is bad
|
||||
HiLink leanOp Keyword
|
||||
|
||||
HiLink leanBraceError Error
|
||||
HiLink leanParenError Error
|
||||
HiLink leanBracketError Error
|
||||
|
||||
delcommand HiLink
|
||||
end
|
||||
|
||||
let b:current_syntax = "lean"
|
||||
|
||||
" vim: ts=8 sw=8
|
Loading…
Reference in a new issue