The Neovim plugin for Enter-tainer/typst-preview.
trimmed.mp4
- Low latency preview: preview your document instantly on type. The incremental rendering technique makes the preview latency as low as possible.
- Cross jump between code and preview. You can click on the preview to jump to the corresponding code location and have the preview follow your cursor in Neovim.
Lazy.nvim:
{
'chomosuke/typst-preview.nvim',
lazy = false, -- or ft = 'typst'
version = '0.1.*',
build = function() require 'typst-preview'.update() end,
}
Packer.nvim:
use {
'chomosuke/typst-preview.nvim',
tag = 'v0.1.*',
run = function() require 'typst-preview'.update() end,
}
vim-plug:
Plug 'chomosuke/typst-preview.nvim', {'tag': 'v0.1.*', do: ':TypstPreviewUpdate'}
:TypstPreviewUpdate
orrequire 'typst-preview'.update()
:- Download the necessary binaries to
vim.fn.fnamemodify(vim.fn.stdpath 'data' .. '/typst-preview/', ':p')
. - This must be run before any other commands can be run.
- If you followed the installation instructions, your package manager should automatically run this for you.
- Download the necessary binaries to
:TypstPreview
:- Start the preview.
:TypstPreviewStop
:- Stop the preview.
:TypstPreviewToggle
:- Toggle the preview.
:TypstPreviewFollowCursor
orrequire 'typst-preview'.set_follow_cursor(true)
:- Scroll preview as cursor moves.
- This is on by default.
:TypstPreviewNoFollowCursor
orrequire 'typst-preview'.set_follow_cursor(false)
:- Don't scroll preview as cursor moves.
:TypstPreviewFollowCursorToggle
orrequire 'typst-preview'.set_follow_cursor(not init.get_follow_cursor())
.:TypstPreviewSyncCursor
orrequire 'typst-preview'.sync_with_cursor()
:- Scroll preview to the current cursor position. This can be used in combination with
:TypstPreviewNoFollowCursor
so that the preview only scroll to the current cursor position when you want it to.
- Scroll preview to the current cursor position. This can be used in combination with
This plugin should work out of the box with no configuration. Call to setup()
is not required.
require 'typst-preview'.setup {
-- Setting this true will enable printing debug information with print()
debug = false,
-- Custom format string to open the output link provided with %s
-- Example: open_cmd = 'firefox %s -P typst-preview --class typst-preview'
open_cmd = nil,
-- Provide the path to binaries for dependencies.
-- Setting this will skip the download of the binary by the plugin.
-- Warning: Be aware that your version might be older than the one
-- required.
dependencies_bin = {
['typst-preview'] = nil,
['websocat'] = nil
},
-- Setting this to 'always' will invert black and white in the preview
-- Setting this to 'auto' will invert depending if the browser has enable
-- dark mode
invert_colors = 'never',
-- This function will be called to determine the root of the typst project
get_root = function(bufnr_of_typst_buffer)
return vim.fn.getcwd()
end,
}
The author of Enter-tainer/typst-preview wrote a good comparison here.
- niuiic/typst-preview.nvim: Since niuiic/typst-preview.nvim uses
typst-lsp, it has similar advantages and
disadvantages of typst-lsp mentioned
here:
- Higher latency due to the PDF reader having a delay.
- Does not support cross jump between code and preview.
All PRs are welcome.
This plugin wouldn't be possible without the work of Enter-tainer/typst-preview. If you like this plugin enough to star it, please consider starring Enter-tainer/typst-preview as well.