No description
Find a file
Barrett Ruth e1d7abf58e
Some checks are pending
luarocks / quality (push) Waiting to run
luarocks / publish (push) Blocked by required conditions
ci: type checking
2026-03-01 17:28:00 -05:00
.github/workflows ci: format 2026-03-01 17:22:59 -05:00
doc ci: format 2026-03-01 17:22:59 -05:00
lua/render ci: type checking 2026-03-01 17:28:00 -05:00
plugin ci: format 2026-03-01 17:22:59 -05:00
spec ci: format 2026-03-01 17:25:34 -05:00
.busted ci: format 2026-03-01 17:22:59 -05:00
.editorconfig ci: format 2026-03-01 17:22:59 -05:00
.gitignore ci: format 2026-03-01 17:22:59 -05:00
.luarc.json ci: format 2026-03-01 17:22:59 -05:00
.prettierrc ci: format 2026-03-01 17:22:59 -05:00
flake.lock ci: format 2026-03-01 17:22:59 -05:00
flake.nix ci: format 2026-03-01 17:22:59 -05:00
LICENSE ci: format 2026-03-01 17:22:59 -05:00
README.md ci: format 2026-03-01 17:25:34 -05:00
render.nvim-scm-1.rockspec ci: format 2026-03-01 17:22:59 -05:00
selene.toml ci: format 2026-03-01 17:25:34 -05:00
stylua.toml ci: format 2026-03-01 17:22:59 -05:00
vim.yaml ci: format 2026-03-01 17:22:59 -05:00

render.nvim

Async document compilation for Neovim.

A framework for compiling documents (LaTeX, Typst, Markdown, etc.) asynchronously with error diagnostics. Ships with zero defaults — you configure your own providers.

Features

  • Async compilation via vim.system()
  • Compiler errors as native vim.diagnostic
  • User events for extensibility (RenderCompileStarted, RenderCompileSuccess, RenderCompileFailed)
  • :checkhealth integration
  • Zero dependencies beyond Neovim 0.10.0+

Requirements

  • Neovim >= 0.10.0
  • A compiler binary for each provider you configure

Installation

-- lazy.nvim
{ 'barrettruth/render.nvim' }
" luarocks
:Rocks install render.nvim

Configuration

vim.g.render = {
  providers = {
    typst = {
      cmd = { 'typst', 'compile' },
      args = function(ctx)
        return { ctx.file }
      end,
      output = function(ctx)
        return ctx.file:gsub('%.typ$', '.pdf')
      end,
    },
    latexmk = {
      cmd = { 'latexmk' },
      args = { '-pdf', '-interaction=nonstopmode' },
      clean = { 'latexmk', '-c' },
    },
  },
  providers_by_ft = {
    typst = 'typst',
    tex = 'latexmk',
  },
}

Documentation

See :help render.nvim for full documentation.