Add lilypond support, closes #278
This commit is contained in:
parent
6f7257ade2
commit
86721731c7
@ -8,7 +8,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 100+ times faster** than the <!--Package Count-->128<!--/Package Count--> packages it consists of.
|
||||
- It **installs and updates 100+ times faster** than the <!--Package Count-->129<!--/Package Count--> packages it consists of.
|
||||
- Solid syntax and indentation support (other features skipped). Only the best language packs.
|
||||
- All unnecessary files are ignored (like enormous documentation from php support).
|
||||
- No support for esoteric languages, only most popular ones (modern too, like `slim`).
|
||||
@ -103,6 +103,7 @@ If you need full functionality of any plugin, please use it directly with your p
|
||||
- [kotlin](https://github.com/udalov/kotlin-vim) (syntax, indent, ftplugin)
|
||||
- [latex](https://github.com/LaTeX-Box-Team/LaTeX-Box) (syntax, indent, ftplugin)
|
||||
- [less](https://github.com/groenewege/vim-less) (syntax, indent, ftplugin)
|
||||
- [lilypond](https://github.com/anowlcalledjosh/vim-lilypond) (syntax, indent, compiler, ftplugin)
|
||||
- [liquid](https://github.com/tpope/vim-liquid) (syntax, indent, ftplugin)
|
||||
- [livescript](https://github.com/gkz/vim-ls) (syntax, indent, compiler, ftplugin)
|
||||
- [lua](https://github.com/tbastos/vim-lua) (syntax, indent)
|
||||
|
1
build
1
build
@ -212,6 +212,7 @@ PACKS="
|
||||
latex:LaTeX-Box-Team/LaTeX-Box
|
||||
less:groenewege/vim-less
|
||||
liquid:tpope/vim-liquid
|
||||
lilypond:anowlcalledjosh/vim-lilypond
|
||||
livescript:gkz/vim-ls
|
||||
lua:tbastos/vim-lua
|
||||
mako:sophacles/vim-bundle-mako
|
||||
|
23
compiler/lilypond.vim
Normal file
23
compiler/lilypond.vim
Normal file
@ -0,0 +1,23 @@
|
||||
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'lilypond') != -1
|
||||
finish
|
||||
endif
|
||||
|
||||
" LilyPond compiler file
|
||||
" Language: LilyPond
|
||||
" Maintainer: Heikki Junes <hjunes@cc.hut.fi>
|
||||
" Last Change: 2004 Mar 01
|
||||
"
|
||||
" 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
|
||||
"
|
@ -667,6 +667,16 @@ au BufNewFile,BufRead */templates/**.liquid,*/layout/**.liquid,*/snippets/**.liq
|
||||
augroup end
|
||||
endif
|
||||
|
||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'lilypond') == -1
|
||||
augroup filetypedetect
|
||||
" lilypond, from lilypond.vim in anowlcalledjosh/vim-lilypond
|
||||
"
|
||||
" Installed As: vim/ftdetect/lilypond.vim
|
||||
"
|
||||
au! BufNewFile,BufRead *.ly,*.ily set ft=lilypond
|
||||
augroup end
|
||||
endif
|
||||
|
||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'livescript') == -1
|
||||
augroup filetypedetect
|
||||
" livescript, from ls.vim in gkz/vim-ls
|
||||
|
61
ftplugin/lilypond.vim
Normal file
61
ftplugin/lilypond.vim
Normal file
@ -0,0 +1,61 @@
|
||||
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'lilypond') != -1
|
||||
finish
|
||||
endif
|
||||
|
||||
" LilyPond filetype plugin
|
||||
" Language: LilyPond (ft=ly)
|
||||
" Maintainer: Heikki Junes <hjunes@cc.hut.fi>
|
||||
" Last Change: 2010 Jul 26
|
||||
"
|
||||
" 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
|
||||
map <buffer> <F4> :w<Return>:se makeprg=lilypond\ \"%<\"<Return>:make<Return>:!timidity "%<.midi"<Return>
|
||||
"
|
||||
" <F5> save & make
|
||||
map <buffer> <F5> :w<Return>:se makeprg=lilypond\ \"%<\"<Return>:make<Return>
|
||||
"
|
||||
" <F6> view ps with ghostview
|
||||
map <buffer> <F6> :!gv --watch "%<.ps" &<Return>
|
||||
"
|
||||
" <F7> prev error
|
||||
map <buffer> <F7> :cp<Return>
|
||||
"
|
||||
" <F8> next error
|
||||
map <buffer> <F8> :cn<Return>
|
||||
"
|
||||
" <F9> make
|
||||
map <buffer> <F9> :w<Return>:se makeprg=make\ -k<Return>:make<Return>
|
||||
"
|
||||
" <F10> menu
|
||||
source $VIMRUNTIME/menu.vim
|
||||
setlocal wildmenu
|
||||
setlocal cpo-=<
|
||||
setlocal wcm=<C-Z>
|
||||
map <buffer> <F10> :emenu <C-Z>
|
||||
"
|
||||
" <F12> comment region
|
||||
map <buffer> <F12> :g!/%.*/normal 0i%<Return>
|
||||
"
|
||||
" <S-F12> remove comments in region
|
||||
map <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
|
64
indent/lilypond.vim
Normal file
64
indent/lilypond.vim
Normal file
@ -0,0 +1,64 @@
|
||||
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'lilypond') != -1
|
||||
finish
|
||||
endif
|
||||
|
||||
" LilyPond indent file
|
||||
" Language: LilyPond
|
||||
" Maintainer: Heikki Junes <hjunes@cc.hut.fi>
|
||||
" 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
|
||||
"
|
||||
"
|
||||
"
|
7
syntax/lilypond-words.vim
Normal file
7
syntax/lilypond-words.vim
Normal file
File diff suppressed because one or more lines are too long
91
syntax/lilypond.vim
Normal file
91
syntax/lilypond.vim
Normal file
@ -0,0 +1,91 @@
|
||||
if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'lilypond') != -1
|
||||
finish
|
||||
endif
|
||||
|
||||
" LilyPond syntax file
|
||||
" Language: LilyPond
|
||||
" Maintainer: Heikki Junes <hjunes@cc.hut.fi>
|
||||
" 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"
|
Loading…
Reference in New Issue
Block a user