Skip to content

Neovim plugin for writing LilyPond scores, with asynchronous make, midi/mp3 player, fast syntax highlighting, "hyphenation" function, and support for LaTex and Texinfo files

License

Notifications You must be signed in to change notification settings

suiso67/nvim-lilypond-suite

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

nvim-lilypond-suite

This is a plugin (Neovim only) for writing LilyPond scores, with asynchronous make, midi/MP3 player, "hyphenation" function for lyrics, fast syntax highlighting... This repository also contains ftplugin files for LaTeX and Texinfo files which allows embedded LilyPond syntax highlighting, and makeprg which support lilypond-book or lyluatex package out of the box.

InstallationConfigurationUsageTips & tricks


FEATURES

  • Fast syntax file for LilyPond
  • Asynchronous :make - compile in background without freezing Neovim
  • Audio player in floating window (LilyPond only) - convert (mp3 or wav) and play midi file while writing score (using mpv, timidity or fluidsynth & ffmpeg)
  • QuickPlayer (LilyPond only) - convert and play only visual selection
  • Hyphenation : automatically place hyphens ' -- ' inside texts to make those texts usable as lyrics (LilyPond only)
  • Simple ftplugin for LilyPond with makeprg, correct errorformat, diagnostics (experimental)
  • Multiple files support - Compile only main file when working on multiple files project
  • ftplugin for LaTex and Texinfo files which detects and allows embedded LilyPond syntax, adaptive makeprg function for lyluatex or lilypond-book, correct errorformat
  • Easy auto-completion and Point & Click configuration

QUICK INSTALL

⚠ This plugin requires Nvim >= 0.7

If you want to use all the functions (player, hyphenation for various languages...), please read the installation section in the wiki to install dependencies

{ 
  'martineausimon/nvim-lilypond-suite',
  config = function()
    require('nvls').setup({
      -- edit config here (see "Customize default settings" in wiki)
    })
  end
}
With config (click to expand)
{ 
  'martineausimon/nvim-lilypond-suite',
  config = function()
    require('nvls').setup({
      lilypond = {
        mappings = {
          player = "<F3>",
          compile = "<F5>",
          open_pdf = "<F6>",
          switch_buffers = "<A-Space>",
          insert_version = "<F4>",
          hyphenation = "<F12>",
          hyphenation_change_lang = "<F11>",
          insert_hyphen = "<leader>ih",
          add_hyphen = "<leader>ah",
          del_next_hyphen = "<leader>dh",
          del_prev_hyphen = "<leader>dH",
        },
        options = {
          pitches_language = "default",
          hyphenation_language = "en_DEFAULT",
          output = "pdf",
          backend = nil,
          main_file = "main.ly",
          main_folder = "%:p:h",
          include_dir = nil,
          diagnostics = false,
          pdf_viewer = nil,
        },
      },
      latex = {
        mappings = {
          compile = "<F5>",
          open_pdf = "<F6>",
          lilypond_syntax = "<F3>"
        },
        options = {
          lilypond_book_flags = nil,
          clean_logs = false,
          main_file = "main.tex",
          main_folder = "%:p:h",
          include_dir = nil,
          lilypond_syntax_au = "BufEnter",
          pdf_viewer = nil,
        },
      },
      texinfo = {
        mappings = {
          compile = "<F5>",
          open_pdf = "<F6>",
          lilypond_syntax = "<F3>"
        },
        options = {
          lilypond_book_flags = "--pdf",
          clean_logs = false,
          main_file = "main.texi",
          main_folder = "%:p:h",
          lilypond_syntax_au = "BufEnter",
          pdf_viewer = nil,
        },
      },
      player = {
        mappings = {
          quit = "q",
          play_pause = "p",
          loop = "<A-l>",
          backward = "h",
          small_backward = "<S-h>",
          forward = "l",
          small_forward = "<S-l>",
          decrease_speed = "j",
          increase_speed = "k",
          halve_speed = "<S-j>",
          double_speed = "<S-k>"
        },
        options = {
          row = 1,
          col = "99%",
          width = "37",
          height = "1",
          border_style = "single",
          winhighlight = "Normal:Normal,FloatBorder:Normal",
          midi_synth = "fluidsynth",
          fluidsynth_flags = nil,
          timidity_flags = nil,
          audio_format = "mp3",
          mpv_flags = {
            "--msg-level=cplayer=no,ffmpeg=no,alsa=no",
            "--loop",
            "--config-dir=/dev/null"
          }
        },
      },
    })
  end
}

WIKI INDEX

About

Neovim plugin for writing LilyPond scores, with asynchronous make, midi/mp3 player, fast syntax highlighting, "hyphenation" function, and support for LaTex and Texinfo files

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Lua 99.9%
  • Vim Script 0.1%