Compare commits
1 commit
build/nix-
...
docs/vimdo
| Author | SHA1 | Date | |
|---|---|---|---|
| cb650cd2a8 |
5 changed files with 7 additions and 93 deletions
|
|
@ -11,7 +11,7 @@ Typst, Markdown, etc.)—diagnostics included.
|
||||||
|
|
||||||
- Async compilation via `vim.system()`
|
- Async compilation via `vim.system()`
|
||||||
- Built-in presets for Typst, LaTeX (latexmk, pdflatex, tectonic), Markdown,
|
- Built-in presets for Typst, LaTeX (latexmk, pdflatex, tectonic), Markdown,
|
||||||
GitHub-flavored Markdown, AsciiDoc, PlantUML, Mermaid, and Quarto
|
GitHub-flavored Markdown, AsciiDoc, and Quarto
|
||||||
- Compiler errors via `vim.diagnostic` or quickfix
|
- Compiler errors via `vim.diagnostic` or quickfix
|
||||||
- Previewer auto-close on buffer deletion
|
- Previewer auto-close on buffer deletion
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@ in Neovim. It provides a unified interface for any compilation workflow —
|
||||||
LaTeX, Typst, Markdown, or anything else with a CLI compiler.
|
LaTeX, Typst, Markdown, or anything else with a CLI compiler.
|
||||||
|
|
||||||
The plugin ships with opt-in presets for common tools (Typst, LaTeX, Pandoc,
|
The plugin ships with opt-in presets for common tools (Typst, LaTeX, Pandoc,
|
||||||
AsciiDoc, PlantUML, Mermaid, Quarto) and supports fully custom providers.
|
AsciiDoc, Quarto) and supports fully custom providers.
|
||||||
See |preview-presets|.
|
See |preview-presets|.
|
||||||
|
|
||||||
==============================================================================
|
==============================================================================
|
||||||
|
|
@ -180,8 +180,6 @@ override individual fields by passing a table instead: >lua
|
||||||
`markdown` pandoc → HTML (standalone, embedded)
|
`markdown` pandoc → HTML (standalone, embedded)
|
||||||
`github` pandoc → HTML (GitHub-styled, `-f gfm` input)
|
`github` pandoc → HTML (GitHub-styled, `-f gfm` input)
|
||||||
`asciidoctor` asciidoctor → HTML (AsciiDoc with SSE reload)
|
`asciidoctor` asciidoctor → HTML (AsciiDoc with SSE reload)
|
||||||
`plantuml` plantuml → SVG (UML diagrams, `.puml`)
|
|
||||||
`mermaid` mmdc → SVG (Mermaid diagrams, `.mmd`)
|
|
||||||
`quarto` quarto render → HTML (scientific publishing)
|
`quarto` quarto render → HTML (scientific publishing)
|
||||||
|
|
||||||
==============================================================================
|
==============================================================================
|
||||||
|
|
|
||||||
26
flake.nix
26
flake.nix
|
|
@ -19,9 +19,9 @@
|
||||||
{
|
{
|
||||||
formatter = forEachSystem (pkgs: pkgs.nixfmt-tree);
|
formatter = forEachSystem (pkgs: pkgs.nixfmt-tree);
|
||||||
|
|
||||||
devShells = forEachSystem (pkgs:
|
devShells = forEachSystem (pkgs: {
|
||||||
let
|
default = pkgs.mkShell {
|
||||||
devTools = [
|
packages = [
|
||||||
(pkgs.luajit.withPackages (
|
(pkgs.luajit.withPackages (
|
||||||
ps: with ps; [
|
ps: with ps; [
|
||||||
busted
|
busted
|
||||||
|
|
@ -33,23 +33,7 @@
|
||||||
pkgs.selene
|
pkgs.selene
|
||||||
pkgs.lua-language-server
|
pkgs.lua-language-server
|
||||||
];
|
];
|
||||||
in
|
};
|
||||||
{
|
});
|
||||||
default = pkgs.mkShell {
|
|
||||||
packages = devTools;
|
|
||||||
};
|
|
||||||
presets = pkgs.mkShell {
|
|
||||||
packages = devTools ++ [
|
|
||||||
pkgs.typst
|
|
||||||
pkgs.texliveMedium
|
|
||||||
pkgs.tectonic
|
|
||||||
pkgs.pandoc
|
|
||||||
pkgs.asciidoctor
|
|
||||||
pkgs.quarto
|
|
||||||
pkgs.plantuml
|
|
||||||
pkgs.mermaid-cli
|
|
||||||
];
|
|
||||||
};
|
|
||||||
});
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -105,12 +105,6 @@ function M.setup(opts)
|
||||||
vim.validate(prefix .. '.detach', provider.detach, 'boolean', true)
|
vim.validate(prefix .. '.detach', provider.detach, 'boolean', true)
|
||||||
end
|
end
|
||||||
|
|
||||||
if providers['plantuml'] then
|
|
||||||
vim.filetype.add({
|
|
||||||
extension = { puml = 'plantuml', pu = 'plantuml' },
|
|
||||||
})
|
|
||||||
end
|
|
||||||
|
|
||||||
config = vim.tbl_deep_extend('force', default_config, {
|
config = vim.tbl_deep_extend('force', default_config, {
|
||||||
debug = debug,
|
debug = debug,
|
||||||
providers = providers,
|
providers = providers,
|
||||||
|
|
|
||||||
|
|
@ -271,68 +271,6 @@ M.asciidoctor = {
|
||||||
reload = true,
|
reload = true,
|
||||||
}
|
}
|
||||||
|
|
||||||
---@type preview.ProviderConfig
|
|
||||||
M.plantuml = {
|
|
||||||
ft = 'plantuml',
|
|
||||||
cmd = { 'plantuml' },
|
|
||||||
args = function(ctx)
|
|
||||||
return { '-tsvg', ctx.file }
|
|
||||||
end,
|
|
||||||
output = function(ctx)
|
|
||||||
return (ctx.file:gsub('%.puml$', '.svg'))
|
|
||||||
end,
|
|
||||||
error_parser = function(output)
|
|
||||||
local diagnostics = {}
|
|
||||||
for line in output:gmatch('[^\r\n]+') do
|
|
||||||
local lnum = line:match('^Error line (%d+) in file:')
|
|
||||||
if lnum then
|
|
||||||
table.insert(diagnostics, {
|
|
||||||
lnum = tonumber(lnum) - 1,
|
|
||||||
col = 0,
|
|
||||||
message = line,
|
|
||||||
severity = vim.diagnostic.severity.ERROR,
|
|
||||||
})
|
|
||||||
end
|
|
||||||
end
|
|
||||||
return diagnostics
|
|
||||||
end,
|
|
||||||
clean = function(ctx)
|
|
||||||
return { 'rm', '-f', (ctx.file:gsub('%.puml$', '.svg')) }
|
|
||||||
end,
|
|
||||||
open = true,
|
|
||||||
}
|
|
||||||
|
|
||||||
---@type preview.ProviderConfig
|
|
||||||
M.mermaid = {
|
|
||||||
ft = 'mermaid',
|
|
||||||
cmd = { 'mmdc' },
|
|
||||||
args = function(ctx)
|
|
||||||
return { '-i', ctx.file, '-o', ctx.output }
|
|
||||||
end,
|
|
||||||
output = function(ctx)
|
|
||||||
return (ctx.file:gsub('%.mmd$', '.svg'))
|
|
||||||
end,
|
|
||||||
error_parser = function(output)
|
|
||||||
local diagnostics = {}
|
|
||||||
for line in output:gmatch('[^\r\n]+') do
|
|
||||||
local lnum = line:match('^%s*Parse error on line (%d+)')
|
|
||||||
if lnum then
|
|
||||||
table.insert(diagnostics, {
|
|
||||||
lnum = tonumber(lnum) - 1,
|
|
||||||
col = 0,
|
|
||||||
message = line,
|
|
||||||
severity = vim.diagnostic.severity.ERROR,
|
|
||||||
})
|
|
||||||
end
|
|
||||||
end
|
|
||||||
return diagnostics
|
|
||||||
end,
|
|
||||||
clean = function(ctx)
|
|
||||||
return { 'rm', '-f', (ctx.file:gsub('%.mmd$', '.svg')) }
|
|
||||||
end,
|
|
||||||
open = true,
|
|
||||||
}
|
|
||||||
|
|
||||||
---@type preview.ProviderConfig
|
---@type preview.ProviderConfig
|
||||||
M.quarto = {
|
M.quarto = {
|
||||||
ft = 'quarto',
|
ft = 'quarto',
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue