71 lines
1.5 KiB
Markdown
71 lines
1.5 KiB
Markdown
# preview.nvim
|
|
|
|
**Async document compilation for Neovim**
|
|
|
|
An extensible framework for compiling documents (LaTeX, Typst, Markdown, etc.)
|
|
asynchronously with error diagnostics.
|
|
|
|
## Features
|
|
|
|
- Async compilation via `vim.system()`
|
|
- Built-in presets for Typst, LaTeX, Markdown, and GitHub-flavored Markdown
|
|
- Compiler errors as native `vim.diagnostic`
|
|
- User events for extensibility (`PreviewCompileStarted`,
|
|
`PreviewCompileSuccess`, `PreviewCompileFailed`)
|
|
|
|
## Requirements
|
|
|
|
- Neovim 0.11+
|
|
|
|
## Installation
|
|
|
|
Install with your package manager of choice or via
|
|
[luarocks](https://luarocks.org/modules/barrettruth/preview.nvim):
|
|
|
|
```
|
|
luarocks install preview.nvim
|
|
```
|
|
|
|
## Documentation
|
|
|
|
```vim
|
|
:help preview.nvim
|
|
```
|
|
|
|
## FAQ
|
|
|
|
**Q: How do I define a custom provider?**
|
|
|
|
```lua
|
|
require('preview').setup({
|
|
typst = {
|
|
cmd = { 'typst', 'compile' },
|
|
args = function(ctx)
|
|
return { ctx.file }
|
|
end,
|
|
output = function(ctx)
|
|
return ctx.file:gsub('%.typ$', '.pdf')
|
|
end,
|
|
},
|
|
})
|
|
```
|
|
|
|
**Q: How do I override a preset?**
|
|
|
|
```lua
|
|
require('preview').setup({
|
|
typst = { env = { TYPST_FONT_PATHS = '/usr/share/fonts' } },
|
|
})
|
|
```
|
|
|
|
**Q: How do I automatically open the output file?**
|
|
|
|
Set `open = true` on your provider (all built-in presets have this enabled) to
|
|
open the output with `vim.ui.open()` after the first successful compilation. For
|
|
a specific application, pass a command table:
|
|
|
|
```lua
|
|
require('preview').setup({
|
|
typst = { open = { 'sioyek', '--new-instance' } },
|
|
})
|
|
```
|