⚠ This plugin is not maintened anymore, if you use NeoVim, I recommend you to use nvim-lilypond-suite instead.
This is a filetype plugin for LilyPond, with updated syntax and dictionary for auto-completion. This repository also contains an ftplugin for TeX files which allows embedded LilyPond syntax highlighting, and makeprg which support lilypond-book or lyluatex package out of the box.
- Features
- Installation
- Mappings
- Settings
- Lighter syntax highlighting
- QuickFix mode
- Recommended highlightings
- Recommended settings for Auto-completion
- Point & click configuration
- LaTex
- Clean log files on exit
- Overfull messages in QuickFix
- Tricks for lilypond-book
- License
- Updated syntax file using the last Pygments syntax highlighter for LilyPond
- Simple ftplugin for LilyPond with
makeprg, correcterrorformat - ftplugin fo TeX files whith detect and allows embedded LilyPond syntax, adaptive
makeprgfunction forlyluatexorlilypond-book, correcterrorformat
If you use vim-plug, then add the following line to your .vimrc file:
Plug 'martineausimon/vim-lilypond-suite'Or use some other plugin manager:
F3: toggle LilyPond syntax (LaTeX only)F4: insert current version (LilyPond only)F5: save & makeF6: view pdf (xdg-open)
Since the last big update c5ee51b, I changed my method for syntax highlighting and avoided word lists as much as possible, for more lightness.
For now only default, français, english and nohl (no highlight) are available for pitches highlighting. You can change language adding this line to your config :
let g:lilypond_language="français"TODO : create pitches pattern for other languages
By default this plugin uses :cw after compile. To display only a result message in vim's message line after make, add this line to your .vimrc :
let g:vls_qf_mode='1'highlight Keyword
\ cterm=bold ctermfg=yellow
\ gui=bold guifg=yellow
highlight Tag
\ ctermfg=blue
\ guifg=blue
highlight Label
\ ctermfg=lightyellow
\ guifg=lightyellow
highlight SpecialComment
\ ctermfg=lightcyan
\ guifg=lightcyan
highlight SpecialChar
\ cterm=bold ctermfg=lightmagenta
\ gui=bold guifg=lightcyan
highlight PreCondit
\ ctermfg=cyan
\ guifg=cyan
install coc.nvim and coc-dictionary & coc-tabnine : works out of the box !
function! s:check_back_space() abort
let col = col('.') - 1
return !col || getline('.')[col - 1] =~ '\s'
endfunction
inoremap <silent><expr> <TAB>
\ coc#pum#visible() ? coc#pum#next(1):
\ <SID>check_back_space() ? "\<Tab>" :
\ coc#refresh()
inoremap <expr><S-TAB> coc#pum#visible() ? coc#pum#prev(1) : "\<C-h>"
inoremap <silent><expr> <cr> coc#pum#visible() && coc#pum#info()['index'] != -1 ? coc#pum#confirm() : "\<C-g>u\<CR>"If you want to use another completion plugin like hrsh7th/nvim-cmp with uga-rosa/cmp-dictionary, vim-lilypond-suite uses the following dictionary files :
$LILYDICTPATH/grobs
$LILYDICTPATH/keywords
$LILYDICTPATH/musicFunctions
$LILYDICTPATH/articulations
$LILYDICTPATH/grobProperties
$LILYDICTPATH/paperVariables
$LILYDICTPATH/headerVariables
$LILYDICTPATH/contextProperties
$LILYDICTPATH/clefs
$LILYDICTPATH/repeatTypes
$LILYDICTPATH/languageNames
$LILYDICTPATH/accidentalsStyles
$LILYDICTPATH/scales
$LILYDICTPATH/musicCommands
$LILYDICTPATH/markupCommands
$LILYDICTPATH/contextsCmd
$LILYDICTPATH/dynamics
$LILYDICTPATH/contexts
$LILYDICTPATH/translatorsRecommended pdf viewer : zathura with zathura-pdf-mupdf plugin
Add this line to ~/.config/zathura/zathurarc :
set synctex-editor-command "lilypond-invoke-editor %s"
Install neovim-remote and add this line to ~/.profile :
export LYEDITOR="nvr +:'call cursor(%(line)s,%(char)s)' %(file)s"Follow the instructions on the LilyPond website to configure the system and create lilypond-invoke-editor.desktop
Reboot or reload with . ~/.profile
This plugin works with lilypond-book by default if the .tex file contains \begin{lilypond}. To use lyluatex, just add \usepackage{lyluatex} to your preamble.
Syntax highlighting can be slow with embedded LilyPond, you can use <F3> to activate or deactivate it.
Add this line to your .vimrc to remove log files on exit :
let g:vls_clean_tex_files='1'Add this line to your .vimrc :
let g:vls_tex_qf_overfull='1'Add this lines to your preamble to avoid the padding on the left side and keep the score justified :
\def\preLilyPondExample{\hspace*{-3mm}}
\newcommand{\betweenLilyPondSystem}[1]{\linebreak\hspace*{-3mm}}Adjust space between systems using this line (in \renewcommand or \newcommand) :
{\betweenLilyPondSystem}[1]{\vspace{5mm}\linebreak\hspace*{-3mm}}This program 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.
This program 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 this program. If not, see https://www.gnu.org/licenses/.
