⚠ 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
makeprg
function forlyluatex
orlilypond-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/translators
Recommended 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/.