mirror of
https://github.com/sheerun/vim-polyglot.git
synced 2025-11-08 11:33:52 -05:00
Add fennel support, closes #514
This commit is contained in:
287
syntax/fennel.vim
Normal file
287
syntax/fennel.vim
Normal file
@@ -0,0 +1,287 @@
|
||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'fennel') == -1
|
||||
|
||||
" Vim syntax file
|
||||
" Language: FENNEL
|
||||
" Maintainer: Calvin Rose
|
||||
|
||||
if exists("b:current_syntax")
|
||||
finish
|
||||
endif
|
||||
|
||||
let s:cpo_sav = &cpo
|
||||
set cpo&vim
|
||||
|
||||
if has("folding") && exists("g:fennel_fold") && g:fennel_fold > 0
|
||||
setlocal foldmethod=syntax
|
||||
endif
|
||||
|
||||
syntax keyword FennelCommentTodo contained FIXME XXX TODO FIXME: XXX: TODO:
|
||||
|
||||
" FENNEL comments
|
||||
syn match FennelComment ";.*$" contains=FennelCommentTodo,@Spell
|
||||
|
||||
syntax match FennelStringEscape '\v\\%([abfnrtv'"\\]|x[[0-9a-fA-F]]\{2}|25[0-5]|2[0-4][0-9]|[0-1][0-9][0-9])' contained
|
||||
syntax region FennelString matchgroup=FennelStringDelimiter start=/"/ skip=/\\\\\|\\"/ end=/"/ contains=FennelStringEscape,@Spell
|
||||
syntax region FennelString matchgroup=FennelStringDelimiter start=/'/ skip=/\\\\\|\\'/ end=/'/ contains=FennelStringEscape,@Spell
|
||||
|
||||
syn keyword FennelConstant nil
|
||||
|
||||
syn keyword FennelBoolean true
|
||||
syn keyword FennelBoolean false
|
||||
|
||||
" Fennel special forms
|
||||
syn keyword FennelSpecialForm #
|
||||
syn keyword FennelSpecialForm %
|
||||
syn keyword FennelSpecialForm *
|
||||
syn keyword FennelSpecialForm +
|
||||
syn keyword FennelSpecialForm -
|
||||
syn keyword FennelSpecialForm ->
|
||||
syn keyword FennelSpecialForm ->>
|
||||
syn keyword FennelSpecialForm -?>
|
||||
syn keyword FennelSpecialForm -?>>
|
||||
syn keyword FennelSpecialForm .
|
||||
syn keyword FennelSpecialForm ..
|
||||
syn keyword FennelSpecialForm /
|
||||
syn keyword FennelSpecialForm //
|
||||
syn keyword FennelSpecialForm :
|
||||
syn keyword FennelSpecialForm <
|
||||
syn keyword FennelSpecialForm <=
|
||||
syn keyword FennelSpecialForm =
|
||||
syn keyword FennelSpecialForm >
|
||||
syn keyword FennelSpecialForm >=
|
||||
syn keyword FennelSpecialForm ^
|
||||
syn keyword FennelSpecialForm and
|
||||
syn keyword FennelSpecialForm comment
|
||||
syn keyword FennelSpecialForm do
|
||||
syn keyword FennelSpecialForm doc
|
||||
syn keyword FennelSpecialForm doto
|
||||
syn keyword FennelSpecialForm each
|
||||
syn keyword FennelSpecialForm eval-compiler
|
||||
syn keyword FennelSpecialForm fn
|
||||
syn keyword FennelSpecialForm for
|
||||
syn keyword FennelSpecialForm global
|
||||
syn keyword FennelSpecialForm hashfn
|
||||
syn keyword FennelSpecialForm if
|
||||
syn keyword FennelSpecialForm include
|
||||
syn keyword FennelSpecialForm lambda
|
||||
syn keyword FennelSpecialForm length
|
||||
syn keyword FennelSpecialForm let
|
||||
syn keyword FennelSpecialForm local
|
||||
syn keyword FennelSpecialForm lua
|
||||
syn keyword FennelSpecialForm macro
|
||||
syn keyword FennelSpecialForm macros
|
||||
syn keyword FennelSpecialForm match
|
||||
syn keyword FennelSpecialForm not
|
||||
syn keyword FennelSpecialForm not=
|
||||
syn keyword FennelSpecialForm or
|
||||
syn keyword FennelSpecialForm partial
|
||||
syn keyword FennelSpecialForm quote
|
||||
syn keyword FennelSpecialForm require-macros
|
||||
syn keyword FennelSpecialForm set
|
||||
syn keyword FennelSpecialForm set-forcibly!
|
||||
syn keyword FennelSpecialForm tset
|
||||
syn keyword FennelSpecialForm values
|
||||
syn keyword FennelSpecialForm var
|
||||
syn keyword FennelSpecialForm when
|
||||
syn keyword FennelSpecialForm while
|
||||
syn keyword FennelSpecialForm ~=
|
||||
syn keyword FennelSpecialForm λ
|
||||
|
||||
" Lua keywords
|
||||
syntax keyword LuaSpecialValue
|
||||
\ _G
|
||||
\ _VERSION
|
||||
\ assert
|
||||
\ collectgarbage
|
||||
\ dofile
|
||||
\ error
|
||||
\ getmetatable
|
||||
\ ipairs
|
||||
\ load
|
||||
\ loadfile
|
||||
\ next
|
||||
\ pairs
|
||||
\ pcall
|
||||
\ print
|
||||
\ rawequal
|
||||
\ rawget
|
||||
\ rawlen
|
||||
\ rawset
|
||||
\ require
|
||||
\ select
|
||||
\ setmetatable
|
||||
\ tonumber
|
||||
\ tostring
|
||||
\ type
|
||||
\ xpcall
|
||||
\ coroutine
|
||||
\ coroutine.create
|
||||
\ coroutine.isyieldable
|
||||
\ coroutine.resume
|
||||
\ coroutine.running
|
||||
\ coroutine.status
|
||||
\ coroutine.wrap
|
||||
\ coroutine.yield
|
||||
\ debug
|
||||
\ debug.debug
|
||||
\ debug.gethook
|
||||
\ debug.getinfo
|
||||
\ debug.getlocal
|
||||
\ debug.getmetatable
|
||||
\ debug.getregistry
|
||||
\ debug.getupvalue
|
||||
\ debug.getuservalue
|
||||
\ debug.sethook
|
||||
\ debug.setlocal
|
||||
\ debug.setmetatable
|
||||
\ debug.setupvalue
|
||||
\ debug.setuservalue
|
||||
\ debug.traceback
|
||||
\ debug.upvalueid
|
||||
\ debug.upvaluejoin
|
||||
\ io
|
||||
\ io.close
|
||||
\ io.flush
|
||||
\ io.input
|
||||
\ io.lines
|
||||
\ io.open
|
||||
\ io.output
|
||||
\ io.popen
|
||||
\ io.read
|
||||
\ io.stderr
|
||||
\ io.stdin
|
||||
\ io.stdout
|
||||
\ io.tmpfile
|
||||
\ io.type
|
||||
\ io.write
|
||||
\ math
|
||||
\ math.abs
|
||||
\ math.acos
|
||||
\ math.asin
|
||||
\ math.atan
|
||||
\ math.ceil
|
||||
\ math.cos
|
||||
\ math.deg
|
||||
\ math.exp
|
||||
\ math.floor
|
||||
\ math.fmod
|
||||
\ math.huge
|
||||
\ math.log
|
||||
\ math.max
|
||||
\ math.maxinteger
|
||||
\ math.min
|
||||
\ math.mininteger
|
||||
\ math.modf
|
||||
\ math.pi
|
||||
\ math.rad
|
||||
\ math.random
|
||||
\ math.randomseed
|
||||
\ math.sin
|
||||
\ math.sqrt
|
||||
\ math.tan
|
||||
\ math.tointeger
|
||||
\ math.type
|
||||
\ math.ult
|
||||
\ os
|
||||
\ os.clock
|
||||
\ os.date
|
||||
\ os.difftime
|
||||
\ os.execute
|
||||
\ os.exit
|
||||
\ os.getenv
|
||||
\ os.remove
|
||||
\ os.rename
|
||||
\ os.setlocale
|
||||
\ os.time
|
||||
\ os.tmpname
|
||||
\ package
|
||||
\ package.config
|
||||
\ package.cpath
|
||||
\ package.loaded
|
||||
\ package.loadlib
|
||||
\ package.path
|
||||
\ package.preload
|
||||
\ package.searchers
|
||||
\ package.searchpath
|
||||
\ string
|
||||
\ string.byte
|
||||
\ string.char
|
||||
\ string.dump
|
||||
\ string.find
|
||||
\ string.format
|
||||
\ string.gmatch
|
||||
\ string.gsub
|
||||
\ string.len
|
||||
\ string.lower
|
||||
\ string.match
|
||||
\ string.pack
|
||||
\ string.packsize
|
||||
\ string.rep
|
||||
\ string.reverse
|
||||
\ string.sub
|
||||
\ string.unpack
|
||||
\ string.upper
|
||||
\ table
|
||||
\ table.concat
|
||||
\ table.insert
|
||||
\ table.move
|
||||
\ table.pack
|
||||
\ table.remove
|
||||
\ table.sort
|
||||
\ table.unpack
|
||||
\ utf8
|
||||
\ utf8.char
|
||||
\ utf8.charpattern
|
||||
\ utf8.codepoint
|
||||
\ utf8.codes
|
||||
\ utf8.len
|
||||
\ utf8.offset
|
||||
|
||||
" Fennel Symbols
|
||||
let s:symcharnodig = '\!\$%\&\#\*\+\-./:<=>?A-Z^_a-z|\x80-\U10FFFF'
|
||||
let s:symchar = '0-9' . s:symcharnodig
|
||||
execute 'syn match FennelSymbol "\v<%([' . s:symcharnodig . '])%([' . s:symchar . '])*>"'
|
||||
execute 'syn match FennelKeyword "\v<:%([' . s:symchar . '])*>"'
|
||||
unlet! s:symchar s:symcharnodig
|
||||
|
||||
syn match FennelQuote "`"
|
||||
syn match FennelQuote "@"
|
||||
|
||||
" FENNEL numbers
|
||||
syntax match FennelNumber "\v\c<[-+]?\d*\.?\d*%([eE][-+]?\d+)?>"
|
||||
syntax match FennelNumber "\v\c<[-+]?0x[0-9A-F]*\.?[0-9A-F]*>"
|
||||
|
||||
" Grammar root
|
||||
syntax cluster FennelTop contains=@Spell,FennelComment,FennelConstant,FennelQuote,FennelKeyword,LuaSpecialValue,FennelSymbol,FennelNumber,FennelString,FennelList,FennelArray,FennelTable,FennelSpecialForm,FennelBoolean
|
||||
|
||||
syntax region FennelList matchgroup=FennelParen start="(" end=")" contains=@FennelTop fold
|
||||
syntax region FennelArray matchgroup=FennelParen start="\[" end="]" contains=@FennelTop fold
|
||||
syntax region FennelTable matchgroup=FennelParen start="{" end="}" contains=@FennelTop fold
|
||||
|
||||
" Highlight superfluous closing parens, brackets and braces.
|
||||
syntax match FennelError "]\|}\|)"
|
||||
|
||||
syntax sync fromstart
|
||||
|
||||
" Highlighting
|
||||
hi def link FennelComment Comment
|
||||
hi def link FennelSymbol Identifier
|
||||
hi def link FennelNumber Number
|
||||
hi def link FennelConstant Constant
|
||||
hi def link FennelKeyword Keyword
|
||||
hi def link FennelSpecialForm Special
|
||||
hi def link LuaSpecialValue Special
|
||||
hi def link FennelString String
|
||||
hi def link FennelBuffer String
|
||||
hi def link FennelStringDelimiter String
|
||||
hi def link FennelBoolean Boolean
|
||||
|
||||
hi def link FennelQuote SpecialChar
|
||||
hi def link FennelParen Delimiter
|
||||
|
||||
let b:current_syntax = "fennel"
|
||||
|
||||
let &cpo = s:cpo_sav
|
||||
unlet! s:cpo_sav
|
||||
|
||||
endif
|
||||
Reference in New Issue
Block a user