Compare commits
6 commits
build/nix-
...
feat/merma
| Author | SHA1 | Date | |
|---|---|---|---|
| 22ffea117c | |||
| 8501656546 | |||
| 8c04cf19ea | |||
| 59419e6003 | |||
|
|
8c9847e321 | ||
| 28dda6515e |
2 changed files with 23 additions and 15 deletions
|
|
@ -19,7 +19,8 @@
|
|||
{
|
||||
formatter = forEachSystem (pkgs: pkgs.nixfmt-tree);
|
||||
|
||||
devShells = forEachSystem (pkgs:
|
||||
devShells = forEachSystem (
|
||||
pkgs:
|
||||
let
|
||||
devTools = [
|
||||
(pkgs.luajit.withPackages (
|
||||
|
|
@ -50,6 +51,7 @@
|
|||
pkgs.mermaid-cli
|
||||
];
|
||||
};
|
||||
});
|
||||
}
|
||||
);
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -115,6 +115,24 @@ local function parse_asciidoctor(output)
|
|||
return diagnostics
|
||||
end
|
||||
|
||||
---@param output string
|
||||
---@return preview.Diagnostic[]
|
||||
local function parse_mermaid(output)
|
||||
local lnum = output:match('Parse error on line (%d+)')
|
||||
if not lnum then
|
||||
return {}
|
||||
end
|
||||
local msg = output:match('(Expecting .+)') or 'parse error'
|
||||
return {
|
||||
{
|
||||
lnum = tonumber(lnum) - 1,
|
||||
col = 0,
|
||||
message = msg,
|
||||
severity = vim.diagnostic.severity.ERROR,
|
||||
},
|
||||
}
|
||||
end
|
||||
|
||||
---@type preview.ProviderConfig
|
||||
M.typst = {
|
||||
ft = 'typst',
|
||||
|
|
@ -313,19 +331,7 @@ M.mermaid = {
|
|||
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
|
||||
return parse_mermaid(output)
|
||||
end,
|
||||
clean = function(ctx)
|
||||
return { 'rm', '-f', (ctx.file:gsub('%.mmd$', '.svg')) }
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue