summaryrefslogtreecommitdiffstats
path: root/syntax
diff options
context:
space:
mode:
authorAdam Stankiewicz <sheerun@sher.pl>2020-08-18 23:09:35 +0200
committerAdam Stankiewicz <sheerun@sher.pl>2020-08-18 23:09:35 +0200
commite521ba3ae205b2c79df9030a3db767405caf0457 (patch)
tree931693221fcf94669bfa1f69ac4fe65eb48b4a20 /syntax
parentee4f51587d8e306b2d9a4b0067c572a447b34b60 (diff)
downloadvim-polyglot-e521ba3ae205b2c79df9030a3db767405caf0457.tar.gz
vim-polyglot-e521ba3ae205b2c79df9030a3db767405caf0457.zip
Add fennel support, closes #514
Diffstat (limited to 'syntax')
-rw-r--r--syntax/fennel.vim287
1 files changed, 287 insertions, 0 deletions
diff --git a/syntax/fennel.vim b/syntax/fennel.vim
new file mode 100644
index 00000000..ec6f8084
--- /dev/null
+++ b/syntax/fennel.vim
@@ -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