The Neovim plugin for Enter-tainer/typst-preview.
https://github.com/chomosuke/typst-preview.nvim/assets/38484873/9f8ecf0f-aa1c-4edb-85a9-96a8005e8f25
Lazy.nvim:
{
'chomosuke/typst-preview.nvim',
lazy = false, -- or ft = 'typst'
version = '0.3.*',
build = function() require 'typst-preview'.update() end,
}
Packer.nvim:
use {
'chomosuke/typst-preview.nvim',
tag = 'v0.3.*',
run = function() require 'typst-preview'.update() end,
}
vim-plug:
Plug 'chomosuke/typst-preview.nvim', {'tag': 'v0.3.*', do: ':TypstPreviewUpdate'}
:TypstPreviewUpdate
or require 'typst-preview'.update()
:vim.fn.fnamemodify(vim.fn.stdpath 'data' .. '/typst-preview/', ':p')
.:TypstPreview
::TypstPreview document
(default) or :TypstPreview slide
for slide mode.:TypstPreviewStop
::TypstPreviewToggle
::TypstPreviewFollowCursor
or require 'typst-preview'.set_follow_cursor(true)
::TypstPreviewNoFollowCursor
or require 'typst-preview'.set_follow_cursor(false)
::TypstPreviewFollowCursorToggle
or
require 'typst-preview'.set_follow_cursor(not init.get_follow_cursor())
.:TypstPreviewSyncCursor
or require 'typst-preview'.sync_with_cursor()
::TypstPreviewNoFollowCursor
so that the preview only scroll to the current cursor position
when you want it to.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,
-- 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
-- Setting this to '{"rest": "<option>","image": "<option>"}' will apply
-- your choice of color inversion to images and everything else
-- separately. Only works with the tinymist binary.
invert_colors = 'never',
-- Whether the preview will follow the cursor in the source file
follow_cursor = true,
-- 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 = {
-- if you are using tinymist, just set ['typst-preview'] = "tinymist".
['typst-preview'] = nil,
['websocat'] = nil
},
-- A list of extra arguments (or nil) to be passed to previewer.
-- For example, extra_args = { "--input=ver=draft", "--ignore-system-fonts" }
extra_args = nil,
-- This function will be called to determine the root of the typst project
get_root = function(path_of_main_file)
return vim.fn.fnamemodify(path_of_main_file, ':p:h')
end,
-- This function will be called to determine the main file of the typst
-- project.
get_main_file = function(path_of_buffer)
return path_of_buffer
end,
}
The author of Enter-tainer/typst-preview wrote a good comparison here.
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.