Skip to content
This repository was archived by the owner on Dec 29, 2022. It is now read-only.

add syntax highlight for Vim #1

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions misc/vim/ftdetect/skylark.vim
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
au BufNewFile,BufRead *.sky setlocal filetype=skylark

11 changes: 11 additions & 0 deletions misc/vim/ftplugin/skylark/comment.vim
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
if exists("b:did_ftplugin")
finish
endif
let b:did_ftplugin = 1

setlocal comments=s1:#
setlocal commentstring=#\ %s

let b:undo_ftplugin = "setl com< cms<"

" vim:ts=4:sw=4:et
92 changes: 92 additions & 0 deletions misc/vim/syntax/skylark.vim
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
if exists("b:current_syntax")
finish
endif

syn case match

syn keyword skylarkStatement return break continue lambda
syn keyword skylarkConditional if else elif not and or
syn keyword skylarkLabel case default
syn keyword skylarkRepeat for in range
syn match skylarkDeclaration /\<def\>/

hi def link skylarkStatement Statement
hi def link skylarkConditional Conditional
hi def link skylarkLabel Label
hi def link skylarkRepeat Repeat
hi def link skylarkDeclaration Type

syn keyword skylarkCast str type freeze bool hash int list set dict tuple

hi def link skylarkCast Type

syn keyword skylarkBuiltins load len print chr ord
syn keyword skylarkConstants True False Inf NaN None

hi def link skylarkBuiltins Keyword
hi def link skylarkConstants Keyword

" Comments; their contents
syn keyword skylarkTodo contained TODO FIXME XXX BUG
syn cluster skylarkCommentGroup contains=skylarkTodo
syn region skylarkComment start="#" end="$" contains=@skylarkCommentGroup,@Spell

hi def link skylarkComment Comment
hi def link skylarkTodo Todo

" skylark escapes
syn match skylarkEscapeOctal display contained "\\[0-7]\{3}"
syn match skylarkEscapeC display contained +\\[abfnrtv\\'"]+
syn match skylarkEscapeX display contained "\\x\x\{2}"
syn match skylarkEscapeU display contained "\\u\x\{4}"
syn match skylarkEscapeBigU display contained "\\U\x\{8}"
syn match skylarkEscapeError display contained +\\[^0-7xuUabfnrtv\\'"]+

hi def link skylarkEscapeOctal skylarkSpecialString
hi def link skylarkEscapeC skylarkSpecialString
hi def link skylarkEscapeX skylarkSpecialString
hi def link skylarkEscapeU skylarkSpecialString
hi def link skylarkEscapeBigU skylarkSpecialString
hi def link skylarkSpecialString Special
hi def link skylarkEscapeError Error

" Strings and their contents
syn cluster skylarkStringGroup contains=skylarkEscapeOctal,skylarkEscapeC,skylarkEscapeX,skylarkEscapeU,skylarkEscapeBigU,skylarkEscapeError
syn region skylarkString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=@skylarkStringGroup
syn region skylarkRawString start=+`+ end=+`+

hi def link skylarkString String
hi def link skylarkRawString String

" Characters; their contents
syn cluster skylarkCharacterGroup contains=skylarkEscapeOctal,skylarkEscapeC,skylarkEscapeX,skylarkEscapeU,skylarkEscapeBigU
syn region skylarkCharacter start=+'+ skip=+\\\\\|\\'+ end=+'+ contains=@skylarkCharacterGroup

hi def link skylarkCharacter Character

" Regions
syn region skylarkBlock start="{" end="}" transparent fold
syn region skylarkParen start='(' end=')' transparent

" Integers
syn match skylarkDecimalInt "\<\d\+\([Ee]\d\+\)\?\>"
syn match skylarkHexadecimalInt "\<0x\x\+\>"
syn match skylarkOctalInt "\<0\o\+\>"
syn match skylarkOctalError "\<0\o*[89]\d*\>"

hi def link skylarkDecimalInt Integer
hi def link skylarkHexadecimalInt Integer
hi def link skylarkOctalInt Integer
hi def link Integer Number

" Floating point
syn match skylarkFloat "\<\d\+\.\d*\([Ee][-+]\d\+\)\?\>"
syn match skylarkFloat "\<\.\d\+\([Ee][-+]\d\+\)\?\>"
syn match skylarkFloat "\<\d\+[Ee][-+]\d\+\>"

hi def link skylarkFloat Float
hi def link skylarkImaginary Number

syn sync minlines=500

let b:current_syntax = "skylark"