nixos-configs/common/home/neovim/langs/markdown.nix

129 lines
4 KiB
Nix
Raw Permalink Normal View History

{
config,
lib,
pkgs,
self,
vimplugin-easytables-src,
...
}: let
inherit (lib) mkIf;
inherit (config.vars) neovimIde;
inherit (import "${self}/lib" {inherit pkgs;}) buildPlugin;
in
mkIf neovimIde {
programs = {
neovim = {
extraPackages = builtins.attrValues {
inherit
(pkgs)
pandoc
texlab
texliveFull
rubber
;
};
2024-06-01 17:41:48 -04:00
extraLuaConfig =
2024-06-09 22:49:30 -04:00
# lua
2024-06-01 17:41:48 -04:00
''
local lsp = require('lspconfig');
2024-05-11 20:10:45 -04:00
lsp.texlab.setup({
capabilities = require('cmp_nvim_lsp').default_capabilities(),
settings = {
texlab = {
formatterLineLength = 100,
latexFormatter = 'latexindent',
latexindent = {
modifyLineBreaks = false,
["local"] = '.indentconfig.yaml';
},
},
},
});
2024-06-01 17:41:48 -04:00
'';
plugins = [
{
plugin = buildPlugin "easytables-nvim" vimplugin-easytables-src;
type = "lua";
config =
2024-06-09 22:49:30 -04:00
# lua
''
require('easytables').setup();
'';
}
2024-06-01 17:41:48 -04:00
{
plugin = pkgs.vimPlugins.knap;
2024-06-01 17:41:48 -04:00
type = "lua";
config =
2024-06-09 22:49:30 -04:00
# lua
2024-06-01 17:41:48 -04:00
''
2024-06-09 22:49:30 -04:00
--
vim.api.nvim_create_autocmd('FileType', {
pattern = 'tex',
command = 'setlocal ts=4 sw=4 sts=0 expandtab',
});
vim.g.knap_settings = {
2024-06-01 17:41:48 -04:00
-- HTML
htmloutputext = 'html',
htmltohtml = 'none',
2024-06-01 17:41:48 -04:00
htmltohtmlviewerlaunch = "",
htmltohtmlviewerrefresh = 'none',
2024-06-01 17:41:48 -04:00
-- Markdown
mdoutputext = 'html',
markdownoutputext = 'html',
-- Markdown to PDF
2024-06-01 17:41:48 -04:00
mdtopdf = 'pandoc %docroot% -o /tmp/%outputfile%',
markdowntopdf = 'pandoc %docroot% -o /tmp/%outputfile%',
2024-06-01 17:41:48 -04:00
mdtopdfviewerlaunch = 'sioyek /tmp/%outputfile%',
markdowntopdfviewerlaunch = 'sioyek /tmp/%outputfile%',
2024-06-01 17:41:48 -04:00
mdtopdfviewerrefresh = 'none',
markdowntopdfviewerrefresh = "none",
-- Markdown to HTML
mdtohtml = 'pandoc --standalone %docroot% -o /tmp/%outputfile%',
markdowntohtml = 'pandoc --standalone %docroot% -o /tmp/%outputfile%',
mdtohtmlviewerlaunch = 'firefox -new-window /tmp/%outputfile%',
markdowntohtmlviewerlaunch = 'firefox -new-window /tmp/%outputfile%',
2024-06-01 17:41:48 -04:00
mdtohtmlviewerrefresh = 'none',
markdowntohtmlviewerrefresh = 'none',
-- LaTeX
-- TODO: stop from polluting workspace
};
-- F4 processes the document once, and refreshes the view
vim.keymap.set({ 'n', 'v', 'i' }, '<F4>', function()
2024-06-01 17:41:48 -04:00
require('knap').process_once();
end);
-- F5 closes the viewer application, and
-- allows settings to be reset
vim.keymap.set({ 'n', 'v', 'i' }, '<F5>', function()
2024-06-01 17:41:48 -04:00
require('knap').close_viewer();
end);
-- F6 toggles the auto-processing on and off
vim.keymap.set({ 'n', 'v', 'i' }, '<F6>', function()
2024-06-01 17:41:48 -04:00
require('knap').toggle_autopreviewing();
end);
-- F7 invokes a SyncTeX forward search, or similar,
-- where appropriate
vim.keymap.set({ 'n', 'v', 'i' }, '<F7>', function()
2024-06-01 17:41:48 -04:00
require('knap').forward_jump();
end);
'';
}
];
};
};
}