summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAdam Stankiewicz <sheerun@sher.pl>2021-09-09 12:42:18 +0200
committerAdam Stankiewicz <sheerun@sher.pl>2021-09-09 12:42:18 +0200
commitb147123070e5d7418fe67e315a53599cfde38d58 (patch)
treeb4ed260a622235d320310094d329fc6604a47345
parent7f98e949d4922ba2109304bd4cabe9578a8062fb (diff)
downloadvim-polyglot-b147123070e5d7418fe67e315a53599cfde38d58.tar.gz
vim-polyglot-b147123070e5d7418fe67e315a53599cfde38d58.zip
Ensure some files are compied from each package
-rw-r--r--README.md10
-rw-r--r--autoload/polyglot/init.vim34
-rw-r--r--autoload/polyglot/sleuth.vim10
-rw-r--r--compiler/lilypond.vim40
-rw-r--r--ftplugin/lilypond.vim79
-rw-r--r--ftplugin/swayconfig.vim5
-rw-r--r--ftplugin/toml.vim25
-rw-r--r--indent/lilypond.vim81
-rw-r--r--indent/mermaid.vim64
-rw-r--r--packages.yaml85
-rwxr-xr-xscripts/build7
-rw-r--r--syntax/lilypond-words.vim7
-rw-r--r--syntax/lilypond.vim108
-rw-r--r--syntax/mermaid.vim65
-rw-r--r--syntax/swayconfig.vim285
-rw-r--r--syntax/toml.vim80
-rw-r--r--tests/filetypes.vim10
17 files changed, 861 insertions, 134 deletions
diff --git a/README.md b/README.md
index 7d33b9cf..7b66e496 100644
--- a/README.md
+++ b/README.md
@@ -7,7 +7,7 @@ A collection of language packs for Vim.
> One to rule them all, one to find them, one to bring them all and in the darkness bind them.
- It **won't affect your startup time**, as scripts are loaded only on demand\*.
-- It **installs and updates 120+ times faster** than the <!--Package Count-->606<!--/Package Count--> packages it consists of.
+- It **installs and updates 120+ times faster** than the <!--Package Count-->598<!--/Package Count--> packages it consists of.
- It is also more secure (scripts loaded for every filetype are generated by vim-polyglot)
- Best syntax and indentation support (no other features). Hand-selected language packs.
- Automatically detects indentation (includes performance-optimized version of [vim-sleuth](https://github.com/tpope/vim-sleuth), can be disabled)
@@ -119,7 +119,7 @@ On top of all language packs from [vim repository](https://github.com/vim/vim/tr
- [just](https://github.com/NoahTheDuke/vim-just) (Syntax highlighting for just files)
- [kotlin](https://github.com/udalov/kotlin-vim) (Kotlin syntax highlighting for kt, ktm and kts files)
- [ledger](https://github.com/ledger/vim-ledger) (Syntax highlighting for ldg, ledger and journal files)
-- [lilypond](https://github.com/anowlcalledjosh/vim-lilypond) (LilyPond syntax highlighting for ly and ily files)
+- [lilypond](https://github.com/anowlcalledjosh/vim-lilypond/tree/main) (LilyPond syntax highlighting for ly and ily files)
- [livescript](https://github.com/gkz/vim-ls) (LiveScript syntax highlighting for ls files)
- [llvm](https://github.com/rhysd/vim-llvm) (LLVM syntax highlighting for ll and td files)
- [log](https://github.com/MTDL9/vim-log-highlighting) (Syntax highlighting for log and LOG files)
@@ -128,7 +128,7 @@ On top of all language packs from [vim repository](https://github.com/vim/vim/tr
- [markdown](https://github.com/plasticboy/vim-markdown) (Markdown syntax highlighting for md, markdown, mdown, mdwn, mkd, mkdn, mkdown, ronn, scd and workbook files)
- [mathematica](https://github.com/voldikss/vim-mma) (Mathematica syntax highlighting for mathematica, cdf, m, ma, mt and 6 more files)
- [mdx](https://github.com/jxnblk/vim-mdx-js) (Syntax highlighting for mdx files)
-- [mermaid](https://github.com/mracos/mermaid.vim) (Syntax highlighting for mermaid, mm and mmd files)
+- [mermaid](https://github.com/mracos/mermaid.vim/tree/main) (Syntax highlighting for mermaid, mm and mmd files)
- [meson](https://github.com/mesonbuild/meson/tree/master/data/syntax-highlighting/vim) (Meson syntax highlighting for wrap files)
- [mint](https://github.com/IrenejMarc/vim-mint) (Syntax highlighting for mint files)
- [moonscript](https://github.com/leafo/moonscript-vim) (MoonScript syntax highlighting for moon files)
@@ -182,7 +182,7 @@ On top of all language packs from [vim repository](https://github.com/vim/vim/tr
- [svelte](https://github.com/leafOfTree/vim-svelte-plugin) (Svelte syntax highlighting for svelte files)
- [svg-indent](https://github.com/jasonshell/vim-svg-indent)
- [svg](https://github.com/vim-scripts/svg.vim) (SVG syntax highlighting for svg files)
-- [sway](https://github.com/jamespeapen/swayconfig.vim/tree/i3sway) (Syntax highlighting for i3config, i3.config, swayconfig and sway.config files)
+- [sway](https://github.com/jamespeapen/swayconfig.vim) (Syntax highlighting for swayconfig and sway.config files)
- [swift](https://github.com/keith/swift.vim) (Swift syntax highlighting for swift files)
- [sxhkd](https://github.com/baskerville/vim-sxhkdrc) (Syntax highlighting for sxhkdrc files)
- [systemd](https://github.com/wgwoods/vim-systemd-syntax) (Syntax highlighting for automount, dnssd, link, mount, netdev and 9 more files)
@@ -190,7 +190,7 @@ On top of all language packs from [vim repository](https://github.com/vim/vim/tr
- [textile](https://github.com/timcharper/textile.vim) (Textile syntax highlighting for textile files)
- [thrift](https://github.com/solarnz/thrift.vim) (Thrift syntax highlighting for thrift files)
- [tmux](https://github.com/ericpruitt/tmux.vim/tree/master/vim)
-- [toml](https://github.com/cespare/vim-toml) (TOML syntax highlighting for toml files)
+- [toml](https://github.com/cespare/vim-toml/tree/main) (TOML syntax highlighting for toml files)
- [tptp](https://github.com/c-cube/vim-tptp) (Syntax highlighting for p, tptp and ax files)
- [twig](https://github.com/lumiliet/vim-twig) (Twig syntax highlighting for twig and xml.twig files)
- [typescript](https://github.com/HerringtonDarkholme/yats.vim) (TypeScript and TSX syntax highlighting for ts and tsx files)
diff --git a/autoload/polyglot/init.vim b/autoload/polyglot/init.vim
index d739ae7b..0f324453 100644
--- a/autoload/polyglot/init.vim
+++ b/autoload/polyglot/init.vim
@@ -190,7 +190,7 @@ if !has_key(g:polyglot_is_disabled, 'just')
endif
if !has_key(g:polyglot_is_disabled, 'sway')
- au BufNewFile,BufRead *.i3.config,*.i3config,*.sway.config,*.swayconfig,*sway/config,i3.config,sway.config setf i3config
+ au BufNewFile,BufRead *.sway.config,*.swayconfig,*sway/config,swayconfig setf swayconfig
endif
if !has_key(g:polyglot_is_disabled, 'hjson')
@@ -228,10 +228,6 @@ if !has_key(g:polyglot_is_disabled, 'xf86conf')
au BufNewFile,BufRead XF86Config* call s:StarSetf('xf86conf')
endif
-if !has_key(g:polyglot_is_disabled, 'pullrequest')
- au BufNewFile,BufRead PULLREQ_EDITMSG setf pullrequest
-endif
-
if !has_key(g:polyglot_is_disabled, 'text')
au BufNewFile,BufRead *.text,README setf text
endif
@@ -276,10 +272,6 @@ if !has_key(g:polyglot_is_disabled, 'z8a')
au BufNewFile,BufRead *.z8a setf z8a
endif
-if !has_key(g:polyglot_is_disabled, 'zimbutempl')
- au BufNewFile,BufRead *.zut setf zimbutempl
-endif
-
if !has_key(g:polyglot_is_disabled, 'zimbu')
au BufNewFile,BufRead *.zu setf zimbu
endif
@@ -801,10 +793,6 @@ if !has_key(g:polyglot_is_disabled, 'privoxy')
au BufNewFile,BufRead *.action setf privoxy
endif
-if !has_key(g:polyglot_is_disabled, 'proc')
- au BufNewFile,BufRead *.pc setf proc
-endif
-
if !has_key(g:polyglot_is_disabled, 'obj')
au BufNewFile,BufRead *.obj setf obj
endif
@@ -877,10 +865,6 @@ if !has_key(g:polyglot_is_disabled, 'pike')
au BufNewFile,BufRead *.pike,*.pmod setf pike
endif
-if !has_key(g:polyglot_is_disabled, 'pcmk')
- au BufNewFile,BufRead *.pcmk setf pcmk
-endif
-
if !has_key(g:polyglot_is_disabled, 'pdf')
au BufNewFile,BufRead *.pdf setf pdf
endif
@@ -1062,10 +1046,6 @@ if !has_key(g:polyglot_is_disabled, 'mel')
au BufNewFile,BufRead *.mel setf mel
endif
-if !has_key(g:polyglot_is_disabled, 'map')
- au BufNewFile,BufRead *.map setf map
-endif
-
if !has_key(g:polyglot_is_disabled, 'maple')
au BufNewFile,BufRead *.mpl,*.mv,*.mws setf maple
endif
@@ -1316,10 +1296,6 @@ if !has_key(g:polyglot_is_disabled, 'icon')
au BufNewFile,BufRead *.icn setf icon
endif
-if !has_key(g:polyglot_is_disabled, 'httest')
- au BufNewFile,BufRead *.htb,*.htt setf httest
-endif
-
if !has_key(g:polyglot_is_disabled, 'hb')
au BufNewFile,BufRead *.hb setf hb
endif
@@ -1452,10 +1428,6 @@ if !has_key(g:polyglot_is_disabled, 'fetchmail')
au BufNewFile,BufRead {.,}fetchmailrc setf fetchmail
endif
-if !has_key(g:polyglot_is_disabled, 'factor')
- au BufNewFile,BufRead *.factor setf factor
-endif
-
if !has_key(g:polyglot_is_disabled, 'fan')
au BufNewFile,BufRead *.fan,*.fwt setf fan
endif
@@ -1704,10 +1676,6 @@ if !has_key(g:polyglot_is_disabled, 'chaiscript')
au BufNewFile,BufRead *.chai setf chaiscript
endif
-if !has_key(g:polyglot_is_disabled, 'cfengine')
- au BufNewFile,BufRead cfengine.conf setf cfengine
-endif
-
if !has_key(g:polyglot_is_disabled, 'cdrdaoconf')
au BufNewFile,BufRead */etc/cdrdao.conf,*/etc/default/cdrdao,*/etc/defaults/cdrdao,{.,}cdrdao setf cdrdaoconf
endif
diff --git a/autoload/polyglot/sleuth.vim b/autoload/polyglot/sleuth.vim
index a7a5b86a..e3c0752e 100644
--- a/autoload/polyglot/sleuth.vim
+++ b/autoload/polyglot/sleuth.vim
@@ -66,7 +66,6 @@ let s:globs = {
\ 'cdrdaoconf': '.cdrdao',
\ 'cdrtoc': '*.toc',
\ 'cf': '*.cfm,*.cfi,*.cfc',
- \ 'cfengine': 'cfengine.conf',
\ 'cfg': '*.cfg,*.hgrc,*hgrc',
\ 'ch': '*.chf',
\ 'chaiscript': '*.chai',
@@ -162,7 +161,6 @@ let s:globs = {
\ 'exim': 'exim.conf',
\ 'expect': '*.exp',
\ 'exports': 'exports',
- \ 'factor': '*.factor',
\ 'falcon': '*.fal',
\ 'fan': '*.fan,*.fwt',
\ 'fbs': '*.fbs',
@@ -235,9 +233,7 @@ let s:globs = {
\ 'html.twig': '*.twig',
\ 'htmldjango': '*.jinja,*.j2,*.jinja2',
\ 'htmlm4': '*.html.m4',
- \ 'httest': '*.htt,*.htb',
\ 'hxml': '*.hxml',
- \ 'i3config': '*.i3config,*.i3.config,*.swayconfig,*.sway.config,i3.config,sway.config',
\ 'ibasic': '*.iba,*.ibi',
\ 'icalendar': '*.ics',
\ 'icemenu': '',
@@ -321,7 +317,6 @@ let s:globs = {
\ 'mako': '*.mako,*.mao',
\ 'mallard': '*.page',
\ 'manconf': 'man.config',
- \ 'map': '*.map',
\ 'maple': '*.mv,*.mpl,*.mws',
\ 'markdown': '*.md,*.markdown,*.mdown,*.mdwn,*.mkd,*.mkdn,*.mkdown,*.ronn,*.scd,*.workbook,contents.lr',
\ 'markdown.mdx': '*.mdx',
@@ -395,7 +390,6 @@ let s:globs = {
\ 'pascal': '*.pas,*.pp,*.dpr,*.lpr',
\ 'passwd': '',
\ 'pccts': '*.g',
- \ 'pcmk': '*.pcmk',
\ 'pdf': '*.pdf',
\ 'perl': '*.pl,*.al,*.cgi,*.fcgi,*.perl,*.ph,*.plx,*.pm,*.psgi,*.t,Makefile.PL,Rexfile,ack,cpanfile,example.gitolite.rc,.gitolite.rc',
\ 'pest': '*.pest',
@@ -420,7 +414,6 @@ let s:globs = {
\ 'ppd': '*.ppd',
\ 'ppwiz': '*.it,*.ih',
\ 'privoxy': '*.action',
- \ 'proc': '*.pc',
\ 'procmail': '.procmail,.procmailrc',
\ 'prolog': '*.pl,*.pro,*.prolog,*.yap,*.pdb',
\ 'promela': '*.pml',
@@ -430,7 +423,6 @@ let s:globs = {
\ 'ps1xml': '*.ps1xml',
\ 'psf': '*.psf',
\ 'pug': '*.jade,*.pug',
- \ 'pullrequest': 'PULLREQ_EDITMSG',
\ 'puppet': '*.pp,Modulefile',
\ 'purescript': '*.purs',
\ 'pyrex': '*.pyx,*.pxd',
@@ -531,6 +523,7 @@ let s:globs = {
\ 'svelte': '*.svelte',
\ 'svg': '*.svg',
\ 'svn': 'svn-commit*.tmp',
+ \ 'swayconfig': '*.swayconfig,*.sway.config,swayconfig',
\ 'swift': '*.swift',
\ 'swiftgyb': '*.swift.gyb',
\ 'sxhkdrc': '*.sxhkdrc,sxhkdrc',
@@ -636,7 +629,6 @@ let s:globs = {
\ 'zephir': '*.zep',
\ 'zig': '*.zig,*.zir',
\ 'zimbu': '*.zu',
- \ 'zimbutempl': '*.zut',
\ 'zir': '*.zir',
\ 'zsh': '*.zsh,.zshrc,.zshenv,.zlogin,.zprofile,.zlogout,.zlog*,.zcompdump*,.zfbfmarks,.zsh*',
\}
diff --git a/compiler/lilypond.vim b/compiler/lilypond.vim
new file mode 100644
index 00000000..d672b723
--- /dev/null
+++ b/compiler/lilypond.vim
@@ -0,0 +1,40 @@
+if polyglot#init#is_disabled(expand('<sfile>:p'), 'lilypond', 'compiler/lilypond.vim')
+ finish
+endif
+
+" LilyPond compiler file
+" Language: LilyPond
+" Maintainer: Heikki Junes <hjunes@cc.hut.fi>
+" License: This file is part of LilyPond, the GNU music typesetter.
+"
+" Copyright (C) 2004, 2007 Heikki Junes <hjunes@cc.hut.fi>
+"
+" LilyPond is free software: you can redistribute it and/or modify
+" it under the terms of the GNU General Public License as published by
+" the Free Software Foundation, either version 3 of the License, or
+" (at your option) any later version.
+"
+" LilyPond is distributed in the hope that it will be useful,
+" but WITHOUT ANY WARRANTY; without even the implied warranty of
+" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+" GNU General Public License for more details.
+"
+" You should have received a copy of the GNU General Public License
+" along with LilyPond. If not, see <http://www.gnu.org/licenses/>.
+"
+" Last Change: 2007 Aug 19
+"
+" Installed As: vim/compiler/lilypond.vim
+"
+" Only load this indent file when no other was loaded.
+if exists("current_compiler")
+ finish
+endif
+let current_compiler = "lilypond"
+
+" default make
+setlocal makeprg=lilypond\ $*
+" errorformat for lily (with columns) and gcc
+" (how to see multiple-line error messages?)
+setlocal errorformat=%f:%l:%c:\ %m,%f:%l:\ %m,In\ file\ included\ from\ %f:%l:,\^I\^Ifrom\ %f:%l%m
+"
diff --git a/ftplugin/lilypond.vim b/ftplugin/lilypond.vim
new file mode 100644
index 00000000..afc73eaf
--- /dev/null
+++ b/ftplugin/lilypond.vim
@@ -0,0 +1,79 @@
+if polyglot#init#is_disabled(expand('<sfile>:p'), 'lilypond', 'ftplugin/lilypond.vim')
+ finish
+endif
+
+" LilyPond filetype plugin
+" Language: LilyPond (ft=ly)
+" Maintainer: Heikki Junes <hjunes@cc.hut.fi>
+" License: This file is part of LilyPond, the GNU music typesetter.
+"
+" Copyright (C) 1998, 2002, 2004, 2010, 2016
+" Han-Wen Nienhuys <hanwen@xs4all.nl>
+"
+" LilyPond is free software: you can redistribute it and/or modify
+" it under the terms of the GNU General Public License as published by
+" the Free Software Foundation, either version 3 of the License, or
+" (at your option) any later version.
+"
+" LilyPond is distributed in the hope that it will be useful,
+" but WITHOUT ANY WARRANTY; without even the implied warranty of
+" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+" GNU General Public License for more details.
+"
+" You should have received a copy of the GNU General Public License
+" along with LilyPond. If not, see <http://www.gnu.org/licenses/>.
+"
+" Last Change: 2016 May 21
+"
+" Installed As: vim/ftplugin/lilypond.vim
+" Uses Generated File: vim/syntax/lilypond-words.vim
+"
+" Only do this when not done yet for this buffer
+if exists("b:did_ftplugin")
+ finish
+endif
+
+" Don't load another plugin for this buffer
+let b:did_ftplugin = 1
+
+setlocal autoindent
+setlocal shiftwidth=2
+"
+" some handy key mappings
+"
+" <F4> save & make and play midi with timidity
+noremap <buffer> <F4> :w<Return>:setl makeprg=lilypond\ \"%<\"<Return>:make<Return>:!timidity "%<.midi"<Return>
+"
+" <F5> save & make
+noremap <buffer> <F5> :w<Return>:setl makeprg=lilypond\ \"%<\"<Return>:make<Return>
+"
+" <F6> view pdf with ghostview
+noremap <buffer> <F6> :!gv --watch "%<.pdf" &<Return>
+"
+" <F7> prev error
+noremap <buffer> <F7> :cp<Return>
+"
+" <F8> next error
+noremap <buffer> <F8> :cn<Return>
+"
+" <F9> make
+noremap <buffer> <F9> :w<Return>:setl makeprg=make\ -k<Return>:make<Return>
+"
+" <F10> menu
+source $VIMRUNTIME/menu.vim
+setlocal wildmenu
+setlocal cpo-=<
+setlocal wcm=<C-Z>
+noremap <buffer> <F10> :emenu <C-Z>
+"
+" <F12> comment region
+noremap <buffer> <F12> :g!/%.*/normal 0i%<Return>
+"
+" <S-F12> remove comments in region
+noremap <buffer> <S-F12> :g/%.*/normal 0x<Return>
+"
+" Completions in Insert/Replace-mode with <Ctrl-N>
+setlocal dictionary-=$VIM/syntax/lilypond-words dictionary+=$VIM/syntax/lilypond-words
+setlocal complete-=k complete+=k
+"
+setlocal showmatch
diff --git a/ftplugin/swayconfig.vim b/ftplugin/swayconfig.vim
new file mode 100644
index 00000000..b45edd30
--- /dev/null
+++ b/ftplugin/swayconfig.vim
@@ -0,0 +1,5 @@
+if polyglot#init#is_disabled(expand('<sfile>:p'), 'sway', 'ftplugin/swayconfig.vim')
+ finish
+endif
+
+setlocal commentstring=#\ %s
diff --git a/ftplugin/toml.vim b/ftplugin/toml.vim
new file mode 100644
index 00000000..8d45ea77
--- /dev/null
+++ b/ftplugin/toml.vim
@@ -0,0 +1,25 @@
+if polyglot#init#is_disabled(expand('<sfile>:p'), 'toml', 'ftplugin/toml.vim')
+ finish
+endif
+
+" File: ftplugin/toml.vim
+" Author: Kevin Ballard <kevin@sb.org>
+" Description: FileType Plugin for Toml
+" Last Change: Feb 12, 2019
+
+if exists('b:did_ftplugin')
+ finish
+endif
+let b:did_ftplugin = 1
+
+let s:save_cpo = &cpo
+set cpo&vim
+let b:undo_ftplugin = 'setlocal commentstring< comments<'
+
+setlocal commentstring=#\ %s
+setlocal comments=:#
+
+let &cpo = s:save_cpo
+unlet s:save_cpo
+
+" vim: set et sw=4 ts=4:
diff --git a/indent/lilypond.vim b/indent/lilypond.vim
new file mode 100644
index 00000000..da836dbb
--- /dev/null
+++ b/indent/lilypond.vim
@@ -0,0 +1,81 @@
+if polyglot#init#is_disabled(expand('<sfile>:p'), 'lilypond', 'indent/lilypond.vim')
+ finish
+endif
+
+" LilyPond indent file
+" Language: LilyPond
+" Maintainer: Heikki Junes <hjunes@cc.hut.fi>
+" License: This file is part of LilyPond, the GNU music typesetter.
+"
+" Copyright (C) 2004, 2010 Heikki Junes <hjunes@cc.hut.fi>
+"
+" LilyPond is free software: you can redistribute it and/or modify
+" it under the terms of the GNU General Public License as published by
+" the Free Software Foundation, either version 3 of the License, or
+" (at your option) any later version.
+"
+" LilyPond is distributed in the hope that it will be useful,
+" but WITHOUT ANY WARRANTY; without even the implied warranty of
+" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+" GNU General Public License for more details.
+"
+" You should have received a copy of the GNU General Public License
+" along with LilyPond. If not, see <http://www.gnu.org/licenses/>.
+"
+" Last Change: 2010 Jul 26
+"
+" Installed As: vim/indent/lilypond.vim
+"
+" Only load this indent file when no other was loaded.
+if exists("b:did_indent")
+ finish
+endif
+let b:did_indent = 1
+
+setlocal indentexpr=GetLilyPondIndent()
+setlocal indentkeys=o,O,},>>,!^F
+
+" Only define the function once.
+if exists("*GetLilyPondIndent")
+ finish
+endif
+
+function GetLilyPondIndent()
+ if v:lnum == 1
+ return 0
+ endif
+
+ "Find a non-blank line above the current line.
+ let lnum = prevnonblank(v:lnum - 1)
+ "Check if a block was started: '{' or '<<' is the last non-blank character of the previous line.
+ if getline(lnum) =~ '^.*\({\|<<\)\s*$'
+ let ind = indent(lnum) + &sw
+ else
+ let ind = indent(lnum)
+ endif
+
+ "Check if a block was ended: '}' or '>>' is the first non-blank character of the current line.
+ if getline(v:lnum) =~ '^\s*\(}\|>>\)'
+ let ind = ind - &sw
+ endif
+
+ " Check if the first character from the previous line is within
+ " a `lilyScheme' region, and if so, use lisp-style indentation
+ " for the current line.
+ "
+ " TODO:
+ " - Only works in version 7.1.215 or later, though it should
+ " silently fail in older versions.
+ " - We should support `lilyScheme' regions that begin in the
+ " middle of the line, too.
+ for id in synstack(lnum, 1)
+ if synIDattr(id, "name") == "lilyScheme"
+ let ind = lispindent(v:lnum)
+ endif
+ endfor
+
+ return ind
+endfunction
+"
+"
+"
diff --git a/indent/mermaid.vim b/indent/mermaid.vim
new file mode 100644
index 00000000..e1ade711
--- /dev/null
+++ b/indent/mermaid.vim
@@ -0,0 +1,64 @@
+if polyglot#init#is_disabled(expand('<sfile>:p'), 'mermaid', 'indent/mermaid.vim')
+ finish
+endif
+
+let s:indent_next_line_keywords = [
+ \ '^classDiagram',
+ \ '^classDiagram-v2',
+ \ '^erDiagram',
+ \ '^gantt',
+ \ '^graph',
+ \ '^flowchart',
+ \ '^pie',
+ \ '^sequenceDiagram',
+ \ '^stateDiagram',
+ \ '^stateDiagram-v2',
+ \ 'class.*{',
+ \ 'subgraph',
+ \ 'loop',
+ \ 'alt',
+ \ 'else',
+ \ 'opt',
+ \ 'par',
+ \ 'and',
+ \ 'rect',
+ \ '[^a-z]activate',
+ \ ]
+
+let s:deindent_current_line_keywords = [
+ \ '^\s\+classDiagram',
+ \ '^\s\+classDiagram-v2',
+ \ '^\s\+erDiagram',
+ \ '^\s\+gantt',
+ \ '^\s\+graph',
+ \ '^\s\+flowchart',
+ \ '^\s\+pie',
+ \ '^\s\+sequenceDiagram',
+ \ '^\s\+stateDiagram',
+ \ '^\s\+stateDiagram-v2',
+ \ '^\s\+end$',
+ \ '^\s\+}$',
+ \ '^\s\+deactivate$'
+ \ ]
+
+function! s:matches_any_word_in(text, list)
+ return empty(filter(copy(a:list), {_idx, val -> matchstr(a:text, val) != ""})) == v:false
+endfunction
+
+function! MermaidIndent()
+ let sw = shiftwidth()
+ let indent_level = indent(v:lnum - 1) / sw
+ let current_line = getline(v:lnum)
+ let line_above = getline(v:lnum - 1)
+
+ " TODO don't incorrect indent when has empty lines inside graph
+ if s:matches_any_word_in(current_line, s:deindent_current_line_keywords)
+ return (indent_level - 1) * sw
+ endif
+
+ if s:matches_any_word_in(line_above, s:indent_next_line_keywords)
+ return (indent_level + 1) * sw
+ endif
+
+ return indent_level * sw
+endfunction
diff --git a/packages.yaml b/packages.yaml
index 4c4fa9dd..524f7708 100644
--- a/packages.yaml
+++ b/packages.yaml
@@ -961,7 +961,7 @@ filetypes:
linguist: Less
---
name: lilypond
-remote: anowlcalledjosh/vim-lilypond
+remote: anowlcalledjosh/vim-lilypond@main
filetypes:
- name: lilypond
linguist: LilyPond
@@ -1651,7 +1651,7 @@ filetypes:
- '.tmux*.conf'
---
name: toml
-remote: cespare/vim-toml
+remote: cespare/vim-toml@main
filetypes:
- name: toml
linguist: TOML
@@ -2155,15 +2155,6 @@ filetypes:
- pattern: "*/etc/cdrdao.conf,*/etc/defaults/cdrdao,*/etc/default/cdrdao,.cdrdao"
description: Cdrdao config
---
-name: cfengine
-remote: vim/vim:runtime
-glob: "**/cfengine.vim"
-filetypes:
-- name: cfengine
- patterns:
- - pattern: cfengine.conf
- description: Cfengine
----
name: chaiscript
remote: vim/vim:runtime
glob: "**/chaiscript.vim"
@@ -2728,15 +2719,6 @@ filetypes:
- pattern: "*.fan,*.fwt"
description: Fantom
---
-name: factor
-remote: vim/vim:runtime
-glob: "**/factor.vim"
-filetypes:
-- name: factor
- patterns:
- - pattern: "*.factor"
- description: Factor
----
name: fetchmail
remote: vim/vim:runtime
glob: "**/fetchmail.vim"
@@ -3037,15 +3019,6 @@ filetypes:
- pattern: "*.hb"
description: Hyper Builder
---
-name: httest
-remote: vim/vim:runtime
-glob: "**/httest.vim"
-filetypes:
-- name: httest
- patterns:
- - pattern: "*.htt,*.htb"
- description: Httest
----
name: icon
remote: vim/vim:runtime
glob: "**/icon.vim"
@@ -3596,15 +3569,6 @@ filetypes:
- pattern: "*.mv,*.mpl,*.mws"
description: Maple V
---
-name: map
-remote: vim/vim:runtime
-glob: "**/map.vim"
-filetypes:
-- name: map
- patterns:
- - pattern: "*.map"
- description: Map (UMN mapserver config file)
----
name: mel
remote: vim/vim:runtime
glob: "**/mel.vim"
@@ -4010,15 +3974,6 @@ filetypes:
- pattern: "*.pdf"
description: PDF
---
-name: pcmk
-remote: vim/vim:runtime
-glob: "**/pcmk.vim"
-filetypes:
-- name: pcmk
- patterns:
- - pattern: "*.pcmk"
- description: PCMK - HAE - crm configure edit
----
name: pike
remote: vim/vim:runtime
glob: "**/pike.vim"
@@ -4183,15 +4138,6 @@ filetypes:
- pattern: "*.obj"
description: 'TODO: is there a way to avoid MS-Windows Object files?'
---
-name: proc
-remote: vim/vim:runtime
-glob: "**/proc.vim"
-filetypes:
-- name: proc
- patterns:
- - pattern: "*.pc"
- description: Oracle Pro*C/C++
----
name: privoxy
remote: vim/vim:runtime
glob: "**/privoxy.vim"
@@ -5394,15 +5340,6 @@ filetypes:
- pattern: "*.zu"
description: Zimbu
---
-name: zimbutempl
-remote: vim/vim:runtime
-glob: "**/zimbutempl.vim"
-filetypes:
-- name: zimbutempl
- patterns:
- - pattern: "*.zut"
- description: Zimbu Templates
----
name: z8a
remote: vim/vim:runtime
glob: "**/z8a.vim"
@@ -5487,14 +5424,6 @@ filetypes:
- pattern: "*.text,README"
description: the "conf" type being used if there is a line starting with '#'.
---
-name: pullrequest
-remote: vim/vim:runtime
-glob: "**/pullrequest.vim"
-filetypes:
-- name: pullrequest
- patterns:
- - pattern: PULLREQ_EDITMSG
----
name: autodoc
remote: vim/vim:runtime
glob: "**/autodoc.vim"
@@ -5569,12 +5498,12 @@ filetypes:
description: Hjson (https://hjson.github.io)
---
name: sway
-remote: jamespeapen/swayconfig.vim/tree/i3sway
+remote: jamespeapen/swayconfig.vim
filetypes:
-- name: i3config
+- name: swayconfig
patterns:
- - pattern: 'i3.config,*.i3config,*.i3.config,*sway/config,*.swayconfig,*.sway.config,sway.config'
- description: Sway/i3 Configuration
+ - pattern: '*sway/config,*.swayconfig,*.sway.config,swayconfig'
+ description: Sway Configuration
---
name: just
remote: NoahTheDuke/vim-just
@@ -5603,7 +5532,7 @@ filetypes:
description: OpenSCAD 3D modeling language
---
name: mermaid
-remote: mracos/mermaid.vim
+remote: mracos/mermaid.vim@main
filetypes:
- name: mermaid
patterns:
diff --git a/scripts/build b/scripts/build
index 77d71cdd..c0a80b4f 100755
--- a/scripts/build
+++ b/scripts/build
@@ -491,6 +491,7 @@ def extract(packages)
output = []
packages.map do |package|
+ copied_something = false
if !package["remote"]
next
end
@@ -516,14 +517,20 @@ def extract(packages)
if package["extract_in_after"] == true
target = "after/#{target}"
end
+ copied_something = true
copy_file(package["name"], "#{subtree}#{p}", target)
end
end
elsif File.exist?(subpath)
+ copied_something = true
copy_file(package["name"], subpath, subdir)
end
end
+ if !copied_something
+ raise StandardError.new("No files in: #{package["name"]}")
+ end
+
if repo == "vim/vim"
next
end
diff --git a/syntax/lilypond-words.vim b/syntax/lilypond-words.vim
new file mode 100644
index 00000000..cb137b8f
--- /dev/null
+++ b/syntax/lilypond-words.vim
@@ -0,0 +1,7 @@
+if polyglot#init#is_disabled(expand('<sfile>:p'), 'lilypond', 'syntax/lilypond-words.vim')
+ finish
+endif
+
+syn match lilyKeyword "[-_^]\?\\\(xNotesOn\|xNotesOff\|xNote\|wordwrap-string-internal\|wordwrap-string\|wordwrap-lines\|wordwrap-internal\|wordwrap-field\|wordwrap\|withMusicProperty\|with-url\|with-outline\|with-link\|with-dimensions-from\|with-dimensions\|with-color\|whiteout\|whiteTriangleMarkup\|whiteCircleMarkup\|walkerHeadsMinor\|walkerHeads\|vspace\|vowelTransition\|void\|voices\|voiceTwoStyle\|voiceTwo\|voiceThreeStyle\|voiceThree\|voiceOneStyle\|voiceOne\|voiceNeutralStyle\|voiceFourStyle\|voiceFour\|vocalName\|virgula\|virga\|veryshortfermata\|verylongfermata\|versus\|version\|verbatim-file\|vcenter\|varcoda\|upright\|upprall\|upmordent\|upbow\|up\|unset\|unit\|unfoldRepeats\|undo\|undertie\|underline\|unaCorda\|unHideNotes\|typewriter\|type\|tweak\|turn\|tupletUp\|tupletSpan\|tupletNeutral\|tupletDown\|tuplet\|trill\|triangle\|treCorde\|transposition\|transposedCueDuring\|transpose\|transparent\|translate-scaled\|translate\|topLevelAlignment\|tocTitleMarkup\|tocItemWithDotsMarkup\|tocItemMarkup\|tocItem\|tocIndentMarkup\|tocFormatMarkup\|tiny\|timing\|times\|timeSignatureSettings\|timeSignatureFraction\|time\|tied-lyric\|tieWaitForNote\|tieUp\|tieSolid\|tieNeutral\|tieHalfSolid\|tieHalfDashed\|tieDown\|tieDotted\|tieDashed\|tieDashPattern\|tie\|thumb\|textSpannerUp\|textSpannerNeutral\|textSpannerDown\|textLengthOn\|textLengthOff\|text\|tenuto\|temporary\|tempoWholesPerMinute\|tempo\|teeny\|tagGroup\|tag\|table-of-contents\|table\|tablatureFormat\|tabStaffLineLayoutFunction\|tabFullNotation\|systemStartDelimiter\|sustainOn\|sustainOff\|super\|subdivideBeams\|sub\|styledNoteHeads\|strut\|stropha\|strokeFingerOrientations\|stringTunings\|stringOneTopmost\|stringNumberOrientations\|stopped\|stopTrillSpan\|stopTextSpan\|stopStaff\|stopSlashedGraceMusic\|stopMeasureSpanner\|stopMeasureCount\|stopGroup\|stopGraceSlur\|stopGraceMusic\|stopAppoggiaturaMusic\|stopAcciaccaturaMusic\|stop\|stencil\|stemUp\|stemNeutral\|stemDown\|startTrillSpan\|startTextSpan\|startStaff\|startSlashedGraceMusic\|startRepeatType\|startMeasureSpanner\|startMeasureCount\|startGroup\|startGraceSlur\|startGraceMusic\|startAppoggiaturaMusic\|startAcciaccaturaMusic\|start\|staccato\|staccatissimo\|squashedPosition\|spp\|spacingTweaks\|sp\|southernHarmonyHeadsMinor\|southernHarmonyHeads\|sostenutoOn\|sostenutoOff\|soloText\|soloIIText\|snappizzicato\|smaller\|smallCaps\|small\|slurUp\|slurSolid\|slurNeutral\|slurHalfSolid\|slurHalfDashed\|slurDown\|slurDotted\|slurDashed\|slurDashPattern\|slashturn\|slashedGrace\|slashed-digit\|slashChordSeparator\|skipTypesetting\|skip\|single\|simultaneous\|simple\|signumcongruentiae\|showStaffSwitch\|showSplitTiedTabNotes\|shortfermata\|shortVocalName\|shortInstrumentName\|shiftOnnn\|shiftOnn\|shiftOn\|shiftOff\|shiftDurations\|sharp\|shape\|sfz\|sfp\|sff\|sf\|settingsFrom\|setDefaultDurationToQuarter\|set\|sesquisharp\|sesquiflat\|sequential\|semisharp\|semiflat\|semicirculus\|semiGermanChords\|segno\|searchForVoice\|scriptDefinitions\|score-lines\|score\|scaleDurations\|scale\|sans\|sacredHarpHeadsMinor\|sacredHarpHeads\|rtoe\|rounded-box\|rotate\|romanStringNumbers\|roman\|rightHandFinger\|right-column\|right-brace\|right-align\|right\|rheel\|rfz\|revertTimeSignatureSettings\|revert\|reverseturn\|retrograde\|restrainOpenStrings\|restNumberThreshold\|rest-by-number\|rest\|responsum\|resetRelativeOctave\|replace\|repeatTie\|repeatCountVisibility\|repeat\|removeWithTag\|remove\|relative\|rehearsalMark\|reduceChords\|raiseNote\|raise\|quotedEventTypes\|quotedCueEventTypes\|quoteDuring\|quilisma\|put-adjacent\|pushToTag\|pt\|propertyUnset\|propertyTweak\|propertySet\|propertyRevert\|propertyOverride\|property-recursive\|printPartCombineTexts\|printOctaveNames\|printKeyCancellation\|printAccidentalNames\|predefinedFretboardsOn\|predefinedFretboardsOff\|predefinedDiagramTable\|prallup\|prallprall\|prallmordent\|pralldown\|prall\|ppppp\|pppp\|ppp\|pp\|postscript\|portato\|pointAndClickTypes\|pointAndClickOn\|pointAndClickOff\|pitchedTrill\|phrygian\|phrasingSlurUp\|phrasingSlurSolid\|phrasingSlurNeutral\|phrasingSlurHalfSolid\|phrasingSlurHalfDashed\|phrasingSlurDown\|phrasingSlurDotted\|phrasingSlurDashed\|phrasingSlurDashPattern\|pes\|pedalUnaCordaStyle\|pedalUnaCordaStrings\|pedalSustainStyle\|pedalSustainStrings\|pedalSostenutoStyle\|pedalSostenutoStrings\|pattern\|path\|partial\|partCombineUp\|partCombineUnisono\|partCombineTextsOnNote\|partCombineSoloII\|partCombineSoloI\|partCombineListener\|partCombineForce\|partCombineDown\|partCombineChords\|partCombineAutomatic\|partCombineApart\|partCombine\|parenthesize\|parallelMusic\|paper\|palmMuteOn\|palmMuteOff\|palmMute\|pageTurn\|pageBreak\|page-ref\|page-link\|pad-x\|pad-to-box\|pad-markup\|pad-around\|p\|overtie\|overrideTimeSignatureSettings\|overrideProperty\|override-lines\|override\|overlay\|oval\|ottavationMarkups\|ottava\|oriscus\|open\|oneVoice\|once\|on-the-fly\|omit\|offset\|octaveCheck\|numericTimeSignature\|number\|nullAccidentals\|null\|notemode\|noteToFretFunction\|noteNameSeparator\|noteNameFunction\|note-by-number\|note\|normalsize\|normal-text\|normal-size-super\|normal-size-sub\|noPageTurn\|noPageBreak\|noChordSymbol\|noBreak\|noBeam\|newSpacingSection\|new\|neumeDemoLayout\|natural\|name\|n\|musicglyph\|musicMap\|mp\|mordent\|modalTranspose\|modalInversion\|mm\|mixolydian\|minorChordModifier\|minor\|midiInstrument\|midiChannelMapping\|midi\|middleCPosition\|middleCClefPosition\|mf\|metronomeMarkFormatter\|mergeDifferentlyHeadedOn\|mergeDifferentlyHeadedOff\|mergeDifferentlyDottedOn\|mergeDifferentlyDottedOff\|melismaEnd\|melismaBusyProperties\|melisma\|medium\|measurePosition\|maxima\|markuplist\|markupMap\|markup\|markletter\|markalphabet\|markLengthOn\|markLengthOff\|markFormatter\|mark\|marcato\|map-markup-commands\|makeClusters\|majorSevenSymbol\|major\|maininput\|magnifyStaff\|magnifyMusic\|magnify\|lyricsto\|lyrics\|lyricmode\|lyricMelismaAlignment\|lydian\|ltoe\|lower\|lookup\|longfermata\|longa\|locrian\|localAlterations\|lineprall\|linea\|line\|ligature\|lheel\|left-column\|left-brace\|left-align\|left\|layout\|larger\|large\|languageSaveAndChange\|languageRestore\|language\|laissezVibrer\|label\|killCues\|kievanOn\|kievanOff\|keyAlterationOrder\|key\|keepWithTag\|keepAliveInterfaces\|justify-string\|justify-line\|justify-field\|justify\|justified-lines\|italic\|italianChords\|ionian\|invertChords\|inversion\|instrumentTransposition\|instrumentSwitch\|instrumentName\|instrumentEqualizer\|initialTimeSignatureVisibility\|indent\|include\|inclinatum\|incipit\|inStaffSegno\|in\|improvisationOn\|improvisationOff\|ij\|iij\|ignoreFiguredBassRest\|ignoreBarNumberChecks\|ignoreBarChecks\|ignatzekExceptions\|ignatzekExceptionMusic\|ictus\|huge\|hspace\|highStringOne\|hideStaffSwitch\|hideSplitTiedTabNotes\|hideNotes\|hide\|henzeshortfermata\|henzelongfermata\|header\|hcenter-in\|hbracket\|haydnturn\|harp-pedal\|harmonicsOn\|harmonicsOff\|harmonicNote\|harmonicByRatio\|harmonicByFret\|harmonicAccidentals\|harmonic\|handleNegativeFrets\|halign\|halfopen\|grobdescriptions\|graceSettings\|grace\|glissando\|germanChords\|general-align\|fz\|funkHeadsMinor\|funkHeads\|fromproperty\|fret-diagram-verbose\|fret-diagram-terse\|fret-diagram\|frenchChords\|fraction\|fp\|footnote\|fontsize\|fontSize\|fontCaps\|flexa\|flat\|flageolet\|fixed\|firstClef\|first-visible\|fingeringOrientations\|finger\|finalis\|filled-box\|fill-with-pattern\|fill-line\|figures\|figuremode\|figuredBassFormatter\|fffff\|ffff\|fff\|ff\|fermata\|featherDurations\|f\|eyeglasses\|extraNatural\|extendersOverRests\|explicitKeySignatureVisibility\|explicitCueClefVisibility\|explicitClefVisibility\|expandEmptyMeasures\|eventChords\|etc\|espressivo\|epsfile\|episemInitium\|episemFinis\|enddim\|enddecresc\|enddecr\|endcresc\|endcr\|endSpanners\|endRepeatType\|ellipse\|easyHeadsOn\|easyHeadsOff\|dynamicUp\|dynamicNeutral\|dynamicDown\|dynamicAbsoluteVolumeFunction\|dynamic\|drums\|drummode\|drumStyleTable\|drumPitchTable\|dropNote\|draw-squiggle-line\|draw-line\|draw-hline\|draw-dotted-line\|draw-dashed-line\|draw-circle\|downprall\|downmordent\|downbow\|down\|doublesharp\|doubleflat\|doubleRepeatType\|dotsUp\|dotsNeutral\|dotsDown\|dorian\|divisioMinima\|divisioMaxima\|divisioMaior\|displayScheme\|displayMusic\|displayLilyMusic\|dir-column\|dimTextDim\|dimTextDecresc\|dimTextDecr\|dimHairpin\|dim\|description\|descendens\|deprecatedenddim\|deprecatedendcresc\|deprecateddim\|deprecatedcresc\|denies\|deminutum\|defineBarLine\|defaultchild\|defaultTimeSignature\|defaultNoteHeads\|defaultBarType\|default\|decrescendoSpanner\|decresc\|decr\|deadNotesOn\|deadNotesOff\|deadNote\|dashUnderscore\|dashPlus\|dashLarger\|dashHat\|dashDot\|dashDash\|dashBang\|cueDuringWithClef\|cueDuring\|cueClefUnset\|cueClefTranspositionFormatter\|cueClef\|crossStaff\|crescendoSpanner\|crescTextCresc\|crescHairpin\|cresc\|createSpacing\|cr\|context\|consists\|concat\|compressMMRests\|compressEmptyMeasures\|compoundMeter\|completionFactor\|command-name\|combine\|column-lines\|column\|coda\|cm\|clefTranspositionFormatter\|clefTransposition\|clefPosition\|clefGlyph\|clef\|circulus\|circle\|chords\|chordmodifiers\|chordmode\|chordRootNamer\|chordPrefixSpacer\|chordNoteNamer\|chordNameSeparator\|chordNameLowercaseMinor\|chordNameFunction\|chordNameExceptions\|char\|change\|center-column\|center-align\|center\|cavum\|caps\|caesura\|cadenzaOn\|cadenzaOff\|breve\|breathe\|breakDynamicSpan\|break\|bracket\|box\|bookpart\|bookOutputSuffix\|bookOutputName\|book\|bold\|blackTriangleMarkup\|bigger\|bendAfter\|beamHalfMeasure\|beamExceptions\|beam\|bassFigureStaffAlignmentUp\|bassFigureStaffAlignmentNeutral\|bassFigureStaffAlignmentDown\|bassFigureExtendersOn\|bassFigureExtendersOff\|barNumberVisibility\|barNumberFormatter\|barNumberCheck\|barCheckSynchronize\|barAlways\|bar\|balloonText\|balloonLengthOn\|balloonLengthOff\|balloonGrobText\|backslashed-digit\|automaticBars\|autoPageBreaksOn\|autoPageBreaksOff\|autoLineBreaksOn\|autoLineBreaksOff\|autoChange\|autoCautionaries\|autoBreaksOn\|autoBreaksOff\|autoBeaming\|autoBeamOn\|autoBeamOff\|autoBeamCheck\|autoAccidentals\|auto-footnote\|augmentum\|auctum\|associatedVoiceType\|assertBeamSlope\|assertBeamQuant\|ascendens\|arrow-head\|arpeggioParenthesisDashed\|arpeggioParenthesis\|arpeggioNormal\|arpeggioBracket\|arpeggioArrowUp\|arpeggioArrowDown\|arpeggio\|arabicStringNumbers\|appoggiatura\|applyOutput\|applyMusic\|applyContext\|appendToTag\|ambitusAfter\|alternativeRestores\|alternative\|alterBroken\|allowVoltaHook\|allowPageTurn\|alias\|aikenThinHeadsMinor\|aikenThinHeads\|aikenHeadsMinor\|aikenHeads\|afterGraceFraction\|afterGrace\|aeolian\|addlyrics\|additionalPitchPrefix\|addQuote\|addInstrumentDefinition\|accidentalStyle\|acciaccatura\|accepts\|accentus\|accent\|absolute\|abs-fontsize\|aDueText\|RemoveEmptyTabStaffContext\|RemoveEmptyStaffContext\|RemoveEmptyRhythmicStaffContext\|RemoveEmptyDrumStaffContext\|IJ\|IIJ\|C\|B\|AncientRemoveEmptyStaffContext\|A\|n\)\(\A\|\n\)"me=e-1
+syn match lilyReservedWord "\(\A\|\n\)\(staff\|spacing\|signature\|routine\|notes\|handler\|corrected\|beams\|arpeggios\|Volta_engraver\|Voice\|Vertical_align_engraver\|Vaticana_ligature_engraver\|VaticanaVoice\|VaticanaStaff\|Tweak_engraver\|Tuplet_engraver\|Trill_spanner_engraver\|Timing_translator\|Time_signature_performer\|Time_signature_engraver\|Tie_performer\|Tie_engraver\|Text_spanner_engraver\|Text_engraver\|Tempo_performer\|Tab_tie_follow_engraver\|Tab_staff_symbol_engraver\|Tab_note_heads_engraver\|TabVoice\|TabStaff\|System_start_delimiter_engraver\|Stem_engraver\|Stanza_number_engraver\|Stanza_number_align_engraver\|Staff_symbol_engraver\|Staff_performer\|Staff_collecting_engraver\|StaffGroup\|Staff\|Spanner_break_forbid_engraver\|Span_bar_stub_engraver\|Span_bar_engraver\|Span_arpeggio_engraver\|Spacing_engraver\|Slur_performer\|Slur_engraver\|Slash_repeat_engraver\|Separating_line_group_engraver\|Script_row_engraver\|Script_engraver\|Script_column_engraver\|Score\|Rhythmic_column_engraver\|RhythmicStaff\|Rest_engraver\|Rest_collision_engraver\|Repeat_tie_engraver\|Repeat_acknowledge_engraver\|Pure_from_neighbor_engraver\|Pitched_trill_engraver\|Pitch_squash_engraver\|Piano_pedal_performer\|Piano_pedal_engraver\|Piano_pedal_align_engraver\|PianoStaff\|Phrasing_slur_engraver\|PetrucciVoice\|PetrucciStaff\|Percent_repeat_engraver\|Part_combine_engraver\|Parenthesis_engraver\|Paper_column_engraver\|Output_property_engraver\|Ottava_spanner_engraver\|OneStaff\|NullVoice\|Note_spacing_engraver\|Note_performer\|Note_name_engraver\|Note_heads_engraver\|Note_head_line_engraver\|NoteNames\|NoteHead\|New_fingering_engraver\|Multi_measure_rest_engraver\|Midi_control_change_performer\|Metronome_mark_engraver\|Merge_mmrest_numbers_engraver\|Mensural_ligature_engraver\|MensuralVoice\|MensuralStaff\|Mark_engraver\|Lyrics\|Lyric_performer\|Lyric_engraver\|Ligature_bracket_engraver\|Ledger_line_engraver\|Laissez_vibrer_engraver\|Kievan_ligature_engraver\|KievanVoice\|KievanStaff\|Key_performer\|Key_engraver\|Keep_alive_together_engraver\|Instrument_switch_engraver\|Instrument_name_engraver\|Hyphen_engraver\|Grob_pq_engraver\|GregorianTranscriptionVoice\|GregorianTranscriptionStaff\|GrandStaff\|Grace_spacing_engraver\|Grace_engraver\|Grace_beam_engraver\|Grace_auto_beam_engraver\|Global\|Glissando_engraver\|Fretboard_engraver\|FretBoards\|Forbid_line_break_engraver\|Footnote_engraver\|Font_size_engraver\|Fingering_engraver\|Fingering_column_engraver\|Figured_bass_position_engraver\|Figured_bass_engraver\|FiguredBass\|Extender_engraver\|Episema_engraver\|Dynamics\|Dynamic_performer\|Dynamic_engraver\|Dynamic_align_engraver\|Drum_notes_engraver\|Drum_note_performer\|DrumVoice\|DrumStaff\|Double_percent_repeat_engraver\|Dots_engraver\|Dot_column_engraver\|Devnull\|Default_bar_line_engraver\|Custos_engraver\|Cue_clef_engraver\|CueVoice\|Control_track_performer\|Concurrent_hairpin_engraver\|Collision_engraver\|Cluster_spanner_engraver\|Clef_engraver\|Chord_tremolo_engraver\|Chord_name_engraver\|ChordNames\|ChoirStaff\|Breathing_sign_engraver\|Break_align_engraver\|Bend_engraver\|Beam_performer\|Beam_engraver\|Beam_collision_engraver\|Bar_number_engraver\|Bar_engraver\|Axis_group_engraver\|Auto_beam_engraver\|Arpeggio_engraver\|Accidental_engraver\|Score\)\(\A\|\n\)"ms=s+1,me=e-1
+syn match lilyNote "\<\(\(\(solx\|soltqs\|soltqd\|soltqb\|soltcs\|soltcb\|solstqt\|solss\|solsqt\|solsd\|solsb\|sols\|solqs\|solqd\|solqb\|solkk\|solkhk\|solk\|solhk\|solhb\|soldsd\|soldd\|sold\|solcs\|solcb\|solbtqt\|solbsb\|solbqt\|solbhb\|solbb\|solb\|sol\|six\|sitqs\|sitqd\|sitqb\|sitcs\|sitcb\|sistqt\|siss\|sisqt\|sisd\|sisb\|sis\|siqs\|siqd\|siqb\|sikk\|sikhk\|sik\|sihk\|sihb\|sidsd\|sidd\|sid\|sics\|sicb\|sibtqt\|sibsb\|sibqt\|sibhb\|sibb\|sib\|si\|rex\|retqs\|retqd\|retqb\|retcs\|retcb\|restqt\|ress\|resqt\|resd\|resb\|res\|reqs\|reqd\|reqb\|rekk\|rekhk\|rek\|rehk\|rehb\|redsd\|redd\|red\|recs\|recb\|rebtqt\|rebsb\|rebqt\|rebhb\|rebb\|reb\|re\|mix\|mitqs\|mitqd\|mitqb\|mitcs\|mitcb\|mistqt\|miss\|misqt\|misd\|misb\|mis\|miqs\|miqd\|miqb\|mikk\|mikhk\|mik\|mihk\|mihb\|midsd\|midd\|mid\|mics\|micb\|mibtqt\|mibsb\|mibqt\|mibhb\|mibb\|mib\|mi\|lax\|latqs\|latqd\|latqb\|latcs\|latcb\|lastqt\|lass\|lasqt\|lasd\|lasb\|las\|laqs\|laqd\|laqb\|lakk\|lakhk\|lak\|lahk\|lahb\|ladsd\|ladd\|lad\|lacs\|lacb\|labtqt\|labsb\|labqt\|labhb\|labb\|lab\|la\|hississ\|hissih\|hiss\|hisis\|hisih\|his\|hih\|hessess\|hesseh\|heses\|heseh\|heh\|h\|gx\|gtqs\|gtqf\|gtqd\|gtqb\|gss\|gshd\|gshb\|gs\|gqs\|gqf\|gississ\|gissih\|giss\|gisis\|gisih\|gis\|gih\|gfhd\|gfhb\|gff\|gf\|gessess\|gesseh\|gess\|geses\|geseh\|ges\|geh\|gdd\|gdb\|gd\|gb\|g\|fx\|ftqs\|ftqf\|ftqd\|ftqb\|fss\|fshd\|fshb\|fs\|fqs\|fqf\|fississ\|fissih\|fiss\|fisis\|fisih\|fis\|fih\|ffhd\|ffhb\|fff\|ff\|fessess\|fesseh\|fess\|feses\|feseh\|fes\|feh\|fdd\|fdb\|fd\|fb\|fax\|fatqs\|fatqd\|fatqb\|fatcs\|fatcb\|fastqt\|fass\|fasqt\|fasd\|fasb\|fas\|faqs\|faqd\|faqb\|fakk\|fakhk\|fak\|fahk\|fahb\|fadsd\|fadd\|fad\|facs\|facb\|fabtqt\|fabsb\|fabqt\|fabhb\|fabb\|fab\|fa\|f\|ex\|etqs\|etqf\|etqd\|etqb\|essess\|esseh\|ess\|eshd\|eshb\|eses\|eseh\|es\|eqs\|eqf\|eississ\|eissih\|eiss\|eisis\|eisih\|eis\|eih\|eh\|efhd\|efhb\|eff\|ef\|eessess\|eesseh\|eess\|eeses\|eeseh\|ees\|eeh\|edd\|edb\|ed\|eb\|e\|dx\|dtqs\|dtqf\|dtqd\|dtqb\|dss\|dshd\|dshb\|ds\|dqs\|dqf\|dox\|dotqs\|dotqd\|dotqb\|dotcs\|dotcb\|dostqt\|doss\|dosqt\|dosd\|dosb\|dos\|doqs\|doqd\|doqb\|dokk\|dokhk\|dok\|dohk\|dohb\|dodsd\|dodd\|dod\|docs\|docb\|dobtqt\|dobsb\|dobqt\|dobhb\|dobb\|dob\|do\|dississ\|dissih\|diss\|disis\|disih\|dis\|dih\|dfhd\|dfhb\|dff\|df\|dessess\|desseh\|dess\|deses\|deseh\|des\|deh\|ddd\|ddb\|dd\|db\|d\|cx\|ctqs\|ctqf\|ctqd\|ctqb\|css\|cshd\|cshb\|cs\|cqs\|cqf\|cississ\|cissih\|ciss\|cisis\|cisih\|cis\|cih\|cfhd\|cfhb\|cff\|cf\|cessess\|cesseh\|cess\|ceses\|ceseh\|ces\|ceh\|cdd\|cdb\|cd\|cb\|c\|bx\|btqs\|btqf\|btqd\|btqb\|bss\|bshd\|bshb\|bs\|bqs\|bqf\|bisis\|bisih\|bis\|bih\|bfhd\|bfhb\|bff\|bf\|bess\|beses\|beseh\|bes\|beh\|bdd\|bdb\|bd\|bb\|b\|ax\|atqs\|atqf\|atqd\|atqb\|assess\|asseh\|ass\|ashd\|ashb\|ases\|aseh\|asas\|asah\|as\|aqs\|aqf\|aississ\|aissih\|aiss\|aisis\|aisih\|ais\|aih\|ah\|afhd\|afhb\|aff\|af\|aessess\|aesseh\|aess\|aeses\|aeseh\|aes\|aeh\|add\|adb\|ad\|ab\|a\|a\)\([,']\)\{,4}\([?!]\)\?\)\|s\|r\|R\|q\)\(\(128\|64\|32\|16\|8\|4\|2\|1\|\\breve\|\\longa\|\\maxima\)[.]\{,8}\)\?\(\A\|\n\)"me=e-1
diff --git a/syntax/lilypond.vim b/syntax/lilypond.vim
new file mode 100644
index 00000000..b2c674e8
--- /dev/null
+++ b/syntax/lilypond.vim
@@ -0,0 +1,108 @@
+if polyglot#init#is_disabled(expand('<sfile>:p'), 'lilypond', 'syntax/lilypond.vim')
+ finish
+endif
+
+" LilyPond syntax file
+" Language: LilyPond
+" Maintainer: Heikki Junes <hjunes@cc.hut.fi>
+" License: This file is part of LilyPond, the GNU music typesetter.
+"
+" Copyright (C) 2002-2004, 2008-2010 Han-Wen Nienhuys <hanwen@xs4all.nl>
+"
+" LilyPond is free software: you can redistribute it and/or modify
+" it under the terms of the GNU General Public License as published by
+" the Free Software Foundation, either version 3 of the License, or
+" (at your option) any later version.
+"
+" LilyPond is distributed in the hope that it will be useful,
+" but WITHOUT ANY WARRANTY; without even the implied warranty of
+" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+" GNU General Public License for more details.
+"
+" You should have received a copy of the GNU General Public License
+" along with LilyPond. If not, see <http://www.gnu.org/licenses/>.
+"
+" Last Change: 2010 Jul 26
+"
+" Installed As: vim/syntax/lilypond.vim
+" Uses Generated File: vim/syntax/lilypond-words.vim
+"
+" 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
+
+" Read the LilyPond syntax match groups:
+" lilyKeyword, lilyReservedWord, lilyNote
+if version < 600
+ so <sfile>:p:h/lilypond-words.vim
+else
+ runtime! syntax/lilypond-words.vim
+ if exists("b:current_syntax")
+ unlet b:current_syntax
+ endif
+endif
+
+" Match also parethesis of angle type
+setlocal mps+=<:>
+
+" Case matters
+syn case match
+
+syn cluster lilyMatchGroup contains=lilyMatcher,lilyString,lilyComment,lilyStatement,lilyNumber,lilySlur,lilySpecial,lilyNote,lilyKeyword,lilyArticulation,lilyReservedWord,lilyScheme
+
+syn region lilyMatcher matchgroup=Delimiter start="{" skip="\\\\\|\\[<>]" end="}" contains=@lilyMatchGroup fold
+syn region lilyMatcher matchgroup=Delimiter start="\[" end="]" contains=@lilyMatchGroup fold
+syn region lilyMatcher matchgroup=Delimiter start="<" skip="\\\\\|\\[{<>}]" end=">" contains=@lilyMatchGroup fold
+
+syn region lilyString start=/"/ end=/"/ skip=/\\"/
+syn region lilyComment start="%{" skip="%$" end="%}"
+syn region lilyComment start="%\([^{]\|$\)" end="$"
+
+syn match lilyNumber "[-_^.]\?\d\+[.]\?"
+syn match lilySlur "[(~)]"
+syn match lilySlur "\\[()]"
+syn match lilySpecial "\\[<!>\\]"
+" avoid highlighting the extra character in situations like
+" c--\mf c^^\mf c__\mf
+syn match lilyArticulation "[-_^][-_^+|>.]"
+
+" Include Scheme syntax highlighting, where appropriate
+syn include @embeddedScheme syntax/scheme.vim
+unlet b:current_syntax
+syn region lilyScheme matchgroup=Delimiter start="#['`]\?(" matchgroup=Delimiter end=")" contains=@embeddedScheme
+
+" Rest of syntax highlighting rules start here
+"
+" " 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_lily_syn_inits")
+ if version < 508
+ let did_lily_syn_inits = 1
+ command -nargs=+ HiLink hi link <args>
+ else
+ command -nargs=+ HiLink hi def link <args>
+ endif
+
+ HiLink Delimiter Identifier
+
+ HiLink lilyString String
+ HiLink lilyComment Comment
+
+ HiLink lilyNote Identifier
+ HiLink lilyArticulation PreProc
+ HiLink lilyKeyword Keyword
+ HiLink lilyReservedWord Type
+
+ HiLink lilyNumber Constant
+ HiLink lilySpecial Special
+ HiLink lilySlur ModeMsg
+
+ delcommand HiLink
+endif
+
+let b:current_syntax = "lilypond"
diff --git a/syntax/mermaid.vim b/syntax/mermaid.vim
new file mode 100644
index 00000000..91b8658e
--- /dev/null
+++ b/syntax/mermaid.vim
@@ -0,0 +1,65 @@
+if polyglot#init#is_disabled(expand('<sfile>:p'), 'mermaid', 'syntax/mermaid.vim')
+ finish
+endif
+
+setlocal iskeyword+=-
+
+syntax keyword mermaidDiagramType classDiagram classDiagram-v2 erDiagram gantt graph flowchart pie sequenceDiagram stateDiagram stateDiagram-v2
+syntax match mermaidOperator /\v(-|\<|\>|\+|\||\=)/
+syntax match mermaidComment /\v^(\s?)+\%\%.*$/
+syntax region mermaidString start=/"/ end=/"/ skip=/\\"/
+" is used in both class and state diagrams
+syntax match mermaidSpecialAnnotation /\v\<\<\w+\>\>/
+syntax match mermaidKeyword /\v^\s+(subgraph|loop|alt|else|opt|par[^a-z]|and|rect|end|participant|activate|deactivate)/
+
+syntax match mermaidGraphOperator /\v(\.-|-\.|\&|o-|-o|x-|-x)/
+syntax keyword mermaidGraphClickKeyword click
+
+syntax match mermaidNote /\v^\s+(note[^s]|Note[^s]|end note)/ nextgroup=mermaidNoteDirection
+syntax match mermaidNoteDirection /\v(left of|right of|over[^a-z])/
+
+syntax keyword mermaidSequenceFunction rgb
+
+" TODO: support class dashed link operator: `..`
+syntax match mermaidClassOperator /\v(\*-|-\*|\<\.\.|\.\.\>|\|\.\.|\.\.\|)/
+syntax keyword mermaidClassClassKeyword class
+syntax keyword mermaidClassType
+ \ int[eger] bool[ean] string float bigdec[imal] char[cter] double symbol
+syntax match mermaidClassGenericType /\v\w+\~\w+\~/
+ \ contains=ALLBUT,mermaidClassGenericType
+" TODO Fix matching on graph/flowchart round shape: `SecondStep(Go Shopping)`
+syntax match mermaidClassFunction /\v\w+\(((\w+|\s+|\~)?,?)+\)/ contains=ALLBUT,mermaidClassFunction
+" TODO support class visibility operators
+" https://mermaid-js.github.io/mermaid/#/classDiagram?id=visibility
+
+syntax match mermaidStateFinalKeyword /\[\*\]/
+syntax match mermaidStateKeyword /\v(\s+as[^a-z]|^\s+state)/
+
+" TODO highlight gantt keywords
+
+" TODO improve er operators
+syntax match mermaidErOperator /\v(\}\||\|\{|o\{)/
+
+highlight link mermaidDiagramType Constant
+highlight link mermaidOperator Operator
+highlight link mermaidComment Comment
+highlight link mermaidString String
+highlight link mermaidSpecialAnnotation Label
+highlight link mermaidNote Keyword
+highlight link mermaidNoteDirection Keyword
+
+highlight link mermaidGraphOperator Operator
+highlight link mermaidGraphClickKeyword Keyword
+
+highlight link mermaidKeyword Keyword
+highlight link mermaidSequenceFunction Function
+
+highlight link mermaidClassClassKeyword Keyword
+highlight link mermaidClassOperator Operator
+highlight link mermaidClassType Type
+highlight link mermaidClassGenericType Type
+
+highlight link mermaidStateFinalKeyword Keyword
+highlight link mermaidStateKeyword Keyword
+
+highlight link mermaidErOperator Operator
diff --git a/syntax/swayconfig.vim b/syntax/swayconfig.vim
new file mode 100644
index 00000000..96259665
--- /dev/null
+++ b/syntax/swayconfig.vim
@@ -0,0 +1,285 @@
+if polyglot#init#is_disabled(expand('<sfile>:p'), 'sway', 'syntax/swayconfig.vim')
+ finish
+endif
+
+" Vim syntax file
+" Language: sway config file
+" Original Author: Mohamed Boughaba <mohamed dot bgb at gmail dot com>
+" Maintainer: James Eapen <jamespeapen at gmail dot com>
+" Version: 1.0
+" Last Change: 2020-10-07
+
+" References:
+" http://i3wm.org/docs/userguide.html#configuring
+" http://vimdoc.sourceforge.net/htmldoc/syntax.html
+"
+"
+" For version 5.x: Clear all syntax items
+" For version 6.x: Quit when a syntax file was already loaded
+if version < 600
+ syn clear
+elsei exists("b:current_syntax")
+ fini
+en
+
+scriptencoding utf-8
+
+" Error
+syn match swayConfigError /.*/
+
+" Todo
+syn keyword swayConfigTodo TODO FIXME XXX contained
+
+" Comment
+" Comments are started with a # and can only be used at the beginning of a line
+syn match swayConfigComment /^\s*#.*$/ contains=swayConfigTodo
+
+" Font
+" A FreeType font description is composed by:
+" a font family, a style, a weight, a variant, a stretch and a size.
+syn match swayConfigFontSeparator /,/ contained
+syn match swayConfigFontSeparator /:/ contained
+syn keyword swayConfigFontKeyword font contained
+syn match swayConfigFontNamespace /\w\+:/ contained contains=swayConfigFontSeparator
+syn match swayConfigFontContent /-\?\w\+\(-\+\|\s\+\|,\)/ contained contains=swayConfigFontNamespace,swayConfigFontSeparator,swayConfigFontKeyword
+syn match swayConfigFontSize /\s\=\d\+\(px\)\?\s\?$/ contained
+syn match swayConfigFont /^\s*font\s\+.*$/ contains=swayConfigFontContent,swayConfigFontSeparator,swayConfigFontSize,swayConfigFontNamespace
+syn match swayConfigFont /^\s*font\s\+.*\(\\\_.*\)\?$/ contains=swayConfigFontContent,swayConfigFontSeparator,swayConfigFontSize,swayConfigFontNamespace
+syn match swayConfigFont /^\s*font\s\+.*\(\\\_.*\)\?[^\\]\+$/ contains=swayConfigFontContent,swayConfigFontSeparator,swayConfigFontSize,swayConfigFontNamespace
+syn match swayConfigFont /^\s*font\s\+\(\(.*\\\_.*\)\|\(.*[^\\]\+$\)\)/ contains=swayConfigFontContent,swayConfigFontSeparator,swayConfigFontSize,swayConfigFontNamespace
+
+" variables
+syn match swayConfigString /\(['"]\)\(.\{-}\)\1/ contained
+syn match swayConfigColor /#\w\{6}/ contained
+syn match swayConfigVariableModifier /+/ contained
+syn match swayConfigVariableAndModifier /+\w\+/ contained contains=swayConfigVariableModifier
+syn match swayConfigVariable /\$\w\+\(\(-\w\+\)\+\)\?\(\s\|+\)\?/ contains=swayConfigVariableModifier,swayConfigVariableAndModifier
+syn keyword swayConfigInitializeKeyword set contained
+syn match swayConfigInitialize /^\s*set\s\+.*$/ contains=swayConfigVariable,swayConfigInitializeKeyword,swayConfigColor,swayConfigString
+
+" Gaps
+syn keyword swayConfigGapStyleKeyword inner outer horizontal vertical top right bottom left current all set plus minus toggle up down contained
+syn match swayConfigGapStyle /^\s*\(gaps\)\s\+\(inner\|outer\|horizontal\|vertical\|left\|top\|right\|bottom\)\(\s\+\(current\|all\)\)\?\(\s\+\(set\|plus\|minus\|toggle\)\)\?\(\s\+\(-\?\d\+\|\$.*\)\)$/ contains=swayConfigGapStyleKeyword,swayConfigNumber,swayConfigVariable
+syn keyword swayConfigSmartGapKeyword on inverse_outer contained
+syn match swayConfigSmartGap /^\s*smart_gaps\s\+\(on\|inverse_outer\)\s\?$/ contains=swayConfigSmartGapKeyword
+syn keyword swayConfigSmartBorderKeyword on no_gaps contained
+syn match swayConfigSmartBorder /^\s*smart_borders\s\+\(on\|no_gaps\)\s\?$/ contains=swayConfigSmartBorderKeyword
+
+" Keyboard bindings
+syn keyword swayConfigAction toggle fullscreen restart key import kill shrink grow contained
+syn keyword swayConfigAction focus move grow height width split layout resize restore reload mute unmute exit mode workspace container to output contained
+syn match swayConfigModifier /\w\++\w\+\(\(+\w\+\)\+\)\?/ contained contains=swayConfigVariableModifier
+syn match swayConfigNumber /\s\d\+/ contained
+syn match swayConfigUnit /\sp\(pt\|x\)/ contained
+syn match swayConfigUnitOr /\sor/ contained
+syn keyword swayConfigBindKeyword bindsym bindcode exec gaps border contained
+syn match swayConfigBindArgument /--\w\+\(\(-\w\+\)\+\)\?\s/ contained
+syn match swayConfigBind /^\s*\(bindsym\|bindcode\)\s\+.*$/ contains=swayConfigVariable,swayConfigBindKeyword,swayConfigVariableAndModifier,swayConfigNumber,swayConfigUnit,swayConfigUnitOr,swayConfigBindArgument,swayConfigModifier,swayConfigAction,swayConfigString,swayConfigGapStyleKeyword,swayConfigBorderStyleKeyword
+
+" Floating
+syn keyword swayConfigFloatingModifier floating_modifier contained
+syn match swayConfigFloatingMouseAction /^\s\?.*floating_modifier\s.*\(normal\|inverted\)$/ contains=swayConfigFloatingModifier,swayConfigVariable
+
+syn keyword swayConfigSizeSpecial x contained
+syn match swayConfigNegativeSize /-/ contained
+syn match swayConfigSize /-\?\d\+\s\?x\s\?-\?\d\+/ contained contains=swayConfigSizeSpecial,swayConfigNumber,swayConfigNegativeSize
+syn match swayConfigFloating /^\s*floating_\(maximum\|minimum\)_size\s\+-\?\d\+\s\?x\s\?-\?\d\+/ contains=swayConfigSize
+
+" Orientation
+syn keyword swayConfigOrientationKeyword vertical horizontal auto contained
+syn match swayConfigOrientation /^\s*default_orientation\s\+\(vertical\|horizontal\|auto\)\s\?$/ contains=swayConfigOrientationKeyword
+
+" Layout
+syn keyword swayConfigLayoutKeyword default stacking tabbed contained
+syn match swayConfigLayout /^\s*workspace_layout\s\+\(default\|stacking\|tabbed\)\s\?$/ contains=swayConfigLayoutKeyword
+
+" Border style
+syn keyword swayConfigBorderStyleKeyword none normal pixel contained
+syn match swayConfigBorderStyle /^\s*\(new_window\|new_float\|default_border\|default_floating_border\)\s\+\(none\|\(normal\|pixel\)\(\s\+\d\+\)\?\(\s\+\$\w\+\(\(-\w\+\)\+\)\?\(\s\|+\)\?\)\?\)\s\?$/ contains=swayConfigBorderStyleKeyword,swayConfigNumber,swayConfigVariable
+
+" Hide borders and edges
+syn keyword swayConfigEdgeKeyword none vertical horizontal both smart smart_no_gaps contained
+syn match swayConfigEdge /^\s*hide_edge_borders\s\+\(none\|vertical\|horizontal\|both\|smart\|smart_no_gaps\)\s\?$/ contains=swayConfigEdgeKeyword
+
+" Arbitrary commands for specific windows (for_window)
+syn keyword swayConfigCommandKeyword for_window contained
+syn region swayConfigWindowStringSpecial start=+"+ skip=+\\"+ end=+"+ contained contains=swayConfigString
+syn region swayConfigWindowCommandSpecial start="\[" end="\]" contained contains=swayConfigWindowStringSpacial,swayConfigString
+syn match swayConfigArbitraryCommand /^\s*for_window\s\+.*$/ contains=swayConfigWindowCommandSpecial,swayConfigCommandKeyword,swayConfigBorderStyleKeyword,swayConfigLayoutKeyword,swayConfigOrientationKeyword,Size,swayConfigNumber
+
+" Disable focus open opening
+syn keyword swayConfigNoFocusKeyword no_focus contained
+syn match swayConfigDisableFocus /^\s*no_focus\s\+.*$/ contains=swayConfigWindowCommandSpecial,swayConfigNoFocusKeyword
+
+" Move client to specific workspace automatically
+syn keyword swayConfigAssignKeyword assign contained
+syn match swayConfigAssignSpecial /→/ contained
+syn match swayConfigAssign /^\s*assign\s\+.*$/ contains=swayConfigAssignKeyword,swayConfigWindowCommandSpecial,swayConfigAssignSpecial
+
+" X resources
+syn keyword swayConfigResourceKeyword set_from_resource contained
+syn match swayConfigResource /^\s*set_from_resource\s\+.*$/ contains=swayConfigResourceKeyword,swayConfigWindowCommandSpecial,swayConfigColor,swayConfigVariable
+
+" Auto start applications
+syn keyword swayConfigExecKeyword exec exec_always contained
+syn match swayConfigNoStartupId /--no-startup-id/ contained " We are not using swayConfigBindArgument as only no-startup-id is supported here
+syn match swayConfigExec /^\s*exec\(_always\)\?\s\+.*$/ contains=swayConfigExecKeyword,swayConfigNoStartupId,swayConfigString
+
+" Automatically putting workspaces on specific screens
+syn keyword swayConfigWorkspaceKeyword workspace contained
+syn keyword swayConfigOutputKeyword output contained
+syn match swayConfigWorkspace /^\s*workspace\s\+.*$/ contains=swayConfigWorkspaceKeyword,swayConfigNumber,swayConfigString,swayConfigOutputKeyword
+
+" set display outputs
+syn match swayConfigOutput /^\s*output\s\+.*$/ contains=swayConfigOutputKeyword
+
+" set display focus
+syn keyword swayConfigFocusKeyword focus contained
+syn keyword swayConfigFocusType output contained
+syn match swayConfigFocus /^\s*focus\soutput\s.*$/ contains=swayConfigFocusKeyword,swayConfigFocusType
+
+" Changing colors
+syn keyword swayConfigClientColorKeyword client focused focused_inactive unfocused urgent placeholder background contained
+syn match swayConfigClientColor /^\s*client.\w\+\s\+.*$/ contains=swayConfigClientColorKeyword,swayConfigColor,swayConfigVariable
+
+syn keyword swayConfigTitleAlignKeyword left center right contained
+syn match swayConfigTitleAlign /^\s*title_align\s\+.*$/ contains=swayConfigTitleAlignKeyword
+
+" Interprocess communication
+syn match swayConfigInterprocessKeyword /ipc-socket/ contained
+syn match swayConfigInterprocess /^\s*ipc-socket\s\+.*$/ contains=swayConfigInterprocessKeyword
+
+" Mouse warping
+syn keyword swayConfigMouseWarpingKeyword mouse_warping contained
+syn keyword swayConfigMouseWarpingType output none contained
+syn match swayConfigMouseWarping /^\s*mouse_warping\s\+\(output\|none\)\s\?$/ contains=swayConfigMouseWarpingKeyword,swayConfigMouseWarpingType
+
+" Focus follows mouse
+syn keyword swayConfigFocusFollowsMouseKeyword focus_follows_mouse contained
+syn keyword swayConfigFocusFollowsMouseType yes no contained
+syn match swayConfigFocusFollowsMouse /^\s*focus_follows_mouse\s\+\(yes\|no\)\s\?$/ contains=swayConfigFocusFollowsMouseKeyword,swayConfigFocusFollowsMouseType
+
+" Popups during fullscreen mode
+syn keyword swayConfigPopupOnFullscreenKeyword popup_during_fullscreen contained
+syn keyword swayConfigPopuponFullscreenType smart ignore leave_fullscreen contained
+syn match swayConfigPopupOnFullscreen /^\s*popup_during_fullscreen\s\+\w\+\s\?$/ contains=swayConfigPopupOnFullscreenKeyword,swayConfigPopupOnFullscreenType
+
+" Focus wrapping
+syn keyword swayConfigFocusWrappingKeyword force_focus_wrapping focus_wrapping contained
+syn keyword swayConfigFocusWrappingType yes no contained
+syn match swayConfigFocusWrapping /^\s*\(force_\)\?focus_wrapping\s\+\(yes\|no\)\s\?$/ contains=swayConfigFocusWrappingType,swayConfigFocusWrappingKeyword
+
+" Forcing Xinerama
+syn keyword swayConfigForceXineramaKeyword force_xinerama contained
+syn match swayConfigForceXinerama /^\s*force_xinerama\s\+\(yes\|no\)\s\?$/ contains=swayConfigFocusWrappingType,swayConfigForceXineramaKeyword
+
+" Automatic back-and-forth when switching to the current workspace
+syn keyword swayConfigAutomaticSwitchKeyword workspace_auto_back_and_forth contained
+syn match swayConfigAutomaticSwitch /^\s*workspace_auto_back_and_forth\s\+\(yes\|no\)\s\?$/ contains=swayConfigFocusWrappingType,swayConfigAutomaticSwitchKeyword
+
+" Delay urgency hint
+syn keyword swayConfigTimeUnit ms contained
+syn keyword swayConfigDelayUrgencyKeyword force_display_urgency_hint contained
+syn match swayConfigDelayUrgency /^\s*force_display_urgency_hint\s\+\d\+\s\+ms\s\?$/ contains=swayConfigFocusWrappingType,swayConfigDelayUrgencyKeyword,swayConfigNumber,swayConfigTimeUnit
+
+" Focus on window activation
+syn keyword swayConfigFocusOnActivationKeyword focus_on_window_activation contained
+syn keyword swayConfigFocusOnActivationType smart urgent focus none contained
+syn match swayConfigFocusOnActivation /^\s*focus_on_window_activation\s\+\(smart\|urgent\|focus\|none\)\s\?$/ contains=swayConfigFocusOnActivationKeyword,swayConfigFocusOnActivationType
+
+" Automatic back-and-forth when switching to the current workspace
+syn keyword swayConfigDrawingMarksKeyword show_marks contained
+syn match swayConfigDrawingMarks /^\s*show_marks\s\+\(yes\|no\)\s\?$/ contains=swayConfigFocusWrappingType,swayConfigDrawingMarksKeyword
+
+" Group mode/bar
+syn keyword swayConfigBlockKeyword mode bar colors i3bar_command status_command position exec mode hidden_state modifier id position output background statusline tray_output tray_padding separator separator_symbol workspace_buttons strip_workspace_numbers binding_mode_indicator focused_workspace active_workspace inactive_workspace urgent_workspace binding_mode contained
+syn region swayConfigBlock start=+.*s\?{$+ end=+^}$+ contains=swayConfigBlockKeyword,swayConfigString,swayConfigBind,swayConfigComment,swayConfigFont,swayConfigFocusWrappingType,swayConfigColor,swayConfigVariable transparent keepend extend
+
+" Line continuation
+syn region swayConfigLineCont start=/^.*\\$/ end=/^.*$/ contains=swayConfigBlockKeyword,swayConfigString,swayConfigBind,swayConfigComment,swayConfigFont,swayConfigFocusWrappingType,swayConfigColor,swayConfigVariable transparent keepend extend
+
+" Includes with relative paths to config files
+syn keyword swayConfigInclude include contained
+syn match swayConfigFile /^include\s\(\~\?\/.*$\|\.\{0,2}\/.*$\)/ contains=swayConfigInclude
+
+" Define the highlighting.
+let b:current_syntax = "swayconfig"
+hi! def link swayConfigError Error
+hi! def link swayConfigTodo Todo
+hi! def link swayConfigComment Comment
+hi! def link swayConfigFontContent Type
+hi! def link swayConfigFocusOnActivationType Type
+hi! def link swayConfigPopupOnFullscreenType Type
+hi! def link swayConfigOrientationKeyword Type
+hi! def link swayConfigMouseWarpingType Type
+hi! def link swayConfigFocusFollowsMouseType Type
+hi! def link swayConfigGapStyleKeyword Type
+hi! def link swayConfigTitleAlignKeyword Type
+hi! def link swayConfigSmartGapKeyword Type
+hi! def link swayConfigSmartBorderKeyword Type
+hi! def link swayConfigLayoutKeyword Type
+hi! def link swayConfigBorderStyleKeyword Type
+hi! def link swayConfigEdgeKeyword Type
+hi! def link swayConfigAction Type
+hi! def link swayConfigCommand Type
+hi! def link swayConfigOutputKeyword Type
+hi! def link swayConfigWindowCommandSpecial Type
+hi! def link swayConfigFocusWrappingType Type
+hi! def link swayConfigUnitOr Type
+hi! def link swayConfigFontSize Constant
+hi! def link swayConfigColor Constant
+hi! def link swayConfigNumber Constant
+hi! def link swayConfigUnit Constant
+hi! def link swayConfigVariableAndModifier Constant
+hi! def link swayConfigTimeUnit Constant
+hi! def link swayConfigModifier Constant
+hi! def link swayConfigString Constant
+hi! def link swayConfigNegativeSize Constant
+hi! def link swayConfigFontSeparator Special
+hi! def link swayConfigVariableModifier Special
+hi! def link swayConfigSizeSpecial Special
+hi! def link swayConfigWindowSpecial Special
+hi! def link swayConfigAssignSpecial Special
+hi! def link swayConfigFontNamespace PreProc
+hi! def link swayConfigBindArgument PreProc
+hi! def link swayConfigNoStartupId PreProc
+hi! def link swayConfigFontKeyword Identifier
+hi! def link swayConfigBindKeyword Identifier
+hi! def link swayConfigOrientation Identifier
+hi! def link swayConfigGapStyle Identifier
+hi! def link swayConfigTitleAlign Identifier
+hi! def link swayConfigSmartGap Identifier
+hi! def link swayConfigSmartBorder Identifier
+hi! def link swayConfigLayout Identifier
+hi! def link swayConfigBorderStyle Identifier
+hi! def link swayConfigEdge Identifier
+hi! def link swayConfigFloating Identifier
+hi! def link swayConfigCommandKeyword Identifier
+hi! def link swayConfigNoFocusKeyword Identifier
+hi! def link swayConfigInitializeKeyword Identifier
+hi! def link swayConfigAssignKeyword Identifier
+hi! def link swayConfigResourceKeyword Identifier
+hi! def link swayConfigExecKeyword Identifier
+hi! def link swayConfigWorkspaceKeyword Identifier
+hi! def link swayConfigClientColorKeyword Identifier
+hi! def link swayConfigInterprocessKeyword Identifier
+hi! def link swayConfigMouseWarpingKeyword Identifier
+hi! def link swayConfigFocusFollowsMouseKeyword Identifier
+hi! def link swayConfigPopupOnFullscreenKeyword Identifier
+hi! def link swayConfigFocusWrappingKeyword Identifier
+hi! def link swayConfigForceXineramaKeyword Identifier
+hi! def link swayConfigAutomaticSwitchKeyword Identifier
+hi! def link swayConfigDelayUrgencyKeyword Identifier
+hi! def link swayConfigFocusOnActivationKeyword Identifier
+hi! def link swayConfigDrawingMarksKeyword Identifier
+hi! def link swayConfigBlockKeyword Identifier
+hi! def link swayConfigVariable Statement
+hi! def link swayConfigArbitraryCommand Type
+hi! def link swayConfigInclude Identifier
+hi! def link swayConfigFile Constant
+hi! def link swayConfigFloatingModifier Identifier
+hi! def link swayConfigFloatingMouseAction Type
+hi! def link swayConfigFocusKeyword Type
+hi! def link swayConfigFocusType Identifier
+
+
diff --git a/syntax/toml.vim b/syntax/toml.vim
new file mode 100644
index 00000000..9540d2c5
--- /dev/null
+++ b/syntax/toml.vim
@@ -0,0 +1,80 @@
+if polyglot#init#is_disabled(expand('<sfile>:p'), 'toml', 'syntax/toml.vim')
+ finish
+endif
+
+" Language: TOML
+" Maintainer: Caleb Spare <cespare@gmail.com>
+" URL: https://github.com/cespare/vim-toml
+" LICENSE: MIT
+
+if exists('b:current_syntax')
+ finish
+endif
+
+syn match tomlEscape /\\[btnfr"/\\]/ display contained
+syn match tomlEscape /\\u\x\{4}/ contained
+syn match tomlEscape /\\U\x\{8}/ contained
+hi def link tomlEscape SpecialChar
+
+syn match tomlLineEscape /\\$/ contained
+hi def link tomlLineEscape SpecialChar
+
+" Basic strings
+syn region tomlString oneline start=/"/ skip=/\\\\\|\\"/ end=/"/ contains=tomlEscape
+" Multi-line basic strings
+syn region tomlString start=/"""/ end=/"""/ contains=tomlEscape,tomlLineEscape
+" Literal strings
+syn region tomlString oneline start=/'/ end=/'/
+" Multi-line literal strings
+syn region tomlString start=/'''/ end=/'''/
+hi def link tomlString String
+
+syn match tomlInteger /[+-]\=\<[1-9]\(_\=\d\)*\>/ display
+syn match tomlInteger /[+-]\=\<0\>/ display
+syn match tomlInteger /[+-]\=\<0x[[:xdigit:]]\(_\=[[:xdigit:]]\)*\>/ display
+syn match tomlInteger /[+-]\=\<0o[0-7]\(_\=[0-7]\)*\>/ display
+syn match tomlInteger /[+-]\=\<0b[01]\(_\=[01]\)*\>/ display
+syn match tomlInteger /[+-]\=\<\(inf\|nan\)\>/ display
+hi def link tomlInteger Number
+
+syn match tomlFloat /[+-]\=\<\d\(_\=\d\)*\.\d\+\>/ display
+syn match tomlFloat /[+-]\=\<\d\(_\=\d\)*\(\.\d\(_\=\d\)*\)\=[eE][+-]\=\d\(_\=\d\)*\>/ display
+hi def link tomlFloat Float
+
+syn match tomlBoolean /\<\%(true\|false\)\>/ display
+hi def link tomlBoolean Boolean
+
+" https://tools.ietf.org/html/rfc3339
+syn match tomlDate /\d\{4\}-\d\{2\}-\d\{2\}/ display
+syn match tomlDate /\d\{2\}:\d\{2\}:\d\{2\}\%(\.\d\+\)\?/ display
+syn match tomlDate /\d\{4\}-\d\{2\}-\d\{2\}[T ]\d\{2\}:\d\{2\}:\d\{2\}\%(\.\d\+\)\?\%(Z\|[+-]\d\{2\}:\d\{2\}\)\?/ display
+hi def link tomlDate Constant
+
+syn match tomlKey /\v(^|[{,])\s*\zs[[:alnum:]._-]+\ze\s*\=/ display
+hi def link tomlKey Identifier
+
+syn region tomlKeyDq oneline start=/\v(^|[{,])\s*\zs"/ end=/"\ze\s*=/ contains=tomlEscape
+hi def link tomlKeyDq Identifier
+
+syn region tomlKeySq oneline start=/\v(^|[{,])\s*\zs'/ end=/'\ze\s*=/
+hi def link tomlKeySq Identifier
+
+syn region tomlTable oneline start=/^\s*\[[^\[]/ end=/\]/ contains=tomlKey,tomlKeyDq,tomlKeySq
+hi def link tomlTable Title
+
+syn region tomlTableArray oneline start=/^\s*\[\[/ end=/\]\]/ contains=tomlKey,tomlKeyDq,tomlKeySq
+hi def link tomlTableArray Title
+
+syn cluster tomlValue contains=tomlArray,tomlString,tomlInteger,tomlFloat,tomlBoolean,tomlDate,tomlComment
+syn region tomlKeyValueArray start=/=\s*\[\zs/ end=/\]/ contains=@tomlValue
+syn region tomlArray start=/\[/ end=/\]/ contains=@tomlValue contained
+
+syn keyword tomlTodo TODO FIXME XXX BUG contained
+hi def link tomlTodo Todo
+
+syn match tomlComment /#.*/ contains=@Spell,tomlTodo
+hi def link tomlComment Comment
+
+syn sync minlines=500
+
+let b:current_syntax = 'toml'
diff --git a/tests/filetypes.vim b/tests/filetypes.vim
index 15bd60e9..0d72c727 100644
--- a/tests/filetypes.vim
+++ b/tests/filetypes.vim
@@ -279,7 +279,6 @@ call TestFiletype('csdl')
call TestFiletype('cabal')
call TestFiletype('cdrtoc')
call TestFiletype('cdrdaoconf')
-call TestFiletype('cfengine')
call TestFiletype('chaiscript')
call TestFiletype('cdl')
call TestFiletype('conaryrecipe')
@@ -341,7 +340,6 @@ call TestFiletype('expect')
call TestFiletype('exports')
call TestFiletype('falcon')
call TestFiletype('fan')
-call TestFiletype('factor')
call TestFiletype('fetchmail')
call TestFiletype('focexec')
call TestFiletype('reva')
@@ -374,7 +372,6 @@ call TestFiletype('template')
call TestFiletype('hostconf')
call TestFiletype('hostsaccess')
call TestFiletype('hb')
-call TestFiletype('httest')
call TestFiletype('icon')
call TestFiletype('msidl')
call TestFiletype('icemenu')
@@ -436,7 +433,6 @@ call TestFiletype('ist')
call TestFiletype('mallard')
call TestFiletype('manconf')
call TestFiletype('maple')
-call TestFiletype('map')
call TestFiletype('mel')
call TestFiletype('hgcommit')
call TestFiletype('messages')
@@ -480,7 +476,6 @@ call TestFiletype('papp')
call TestFiletype('passwd')
call TestFiletype('pascal')
call TestFiletype('pdf')
-call TestFiletype('pcmk')
call TestFiletype('pike')
call TestFiletype('cmod')
call TestFiletype('pinfo')
@@ -499,7 +494,6 @@ call TestFiletype('povini')
call TestFiletype('pccts')
call TestFiletype('ppwiz')
call TestFiletype('obj')
-call TestFiletype('proc')
call TestFiletype('privoxy')
call TestFiletype('procmail')
call TestFiletype('psf')
@@ -628,7 +622,6 @@ call TestFiletype('xsd')
call TestFiletype('xslt')
call TestFiletype('yacc')
call TestFiletype('zimbu')
-call TestFiletype('zimbutempl')
call TestFiletype('z8a')
call TestFiletype('apachestyle')
call TestFiletype('asterisk')
@@ -639,7 +632,6 @@ call TestFiletype('fvwm')
call TestFiletype('logcheck')
call TestFiletype('svn')
call TestFiletype('text')
-call TestFiletype('pullrequest')
call TestFiletype('xf86conf')
call TestFiletype('xpm')
call TestFiletype('xpm2')
@@ -648,7 +640,7 @@ call TestFiletype('mint')
call TestFiletype('jsonc')
call TestFiletype('gleam')
call TestFiletype('hjson')
-call TestFiletype('i3config')
+call TestFiletype('swayconfig')
call TestFiletype('just')
call TestFiletype('nftables')
call TestFiletype('openscad')