language/markdown: added markdown-previewer.nvim

This commit is contained in:
Donnerinoern 2024-02-12 14:19:27 +01:00
parent d0f8e445ab
commit 7352558623
2 changed files with 73 additions and 1 deletions

View file

@ -4,7 +4,8 @@
lib,
...
}: let
inherit (lib) nvim mkIf mkMerge mkBinding isList;
inherit (lib) nvim mkIf mkMerge mkBinding isList concatMapStringsSep;
inherit (nvim.vim) mkVimBool;
cfg = config.vim.languages.markdown;
self = import ./markdown.nix {
@ -49,6 +50,21 @@ in {
'';
})
(mkIf cfg.markdownPreview.enable {
vim.startPlugins = [pkgs.vimPlugins.markdown-preview-nvim];
vim.configRC.markdown-preview = nvim.dag.entryAnywhere ''
let g:mkdp_auto_start = ${mkVimBool cfg.markdownPreview.autoStart}
let g:mkdp_auto_close = ${mkVimBool cfg.markdownPreview.autoClose}
let g:mkdp_refresh_slow = ${mkVimBool cfg.markdownPreview.lazyRefresh}
let g:mkdp_filetypes = [${concatMapStringsSep ", " (x: "'" + x + "'") cfg.markdownPreview.filetypes}]
let g:mkdp_command_for_global = ${mkVimBool cfg.markdownPreview.alwaysAllowPreview}
let g:mkdp_open_to_the_world = ${mkVimBool cfg.markdownPreview.broadcastServer}
let g:mkdp_open_ip = '${cfg.markdownPreview.customIP}'
let g:mkdp_port = '${cfg.markdownPreview.customPort}'
'';
})
(mkIf cfg.lsp.enable {
vim.lsp.lspconfig.enable = true;

View file

@ -40,6 +40,62 @@ in {
};
};
markdownPreview = {
enable = mkOption {
type = types.bool;
default = false;
description = "Enable markdown preview in neovim with markdown-preview.nvim";
};
autoStart = mkOption {
type = types.bool;
default = false;
description = "Automatically open the preview window after entering a Markdown buffer";
};
autoClose = mkOption {
type = types.bool;
default = true;
description = "Automatically close the preview window after leaving a Markdown buffer";
};
lazyRefresh = mkOption {
type = types.bool;
default = false;
description = "Only update preview when saving or leaving insert mode";
};
filetypes = mkOption {
type = types.listOf types.str;
default = ["markdown"];
description = "Allowed filetypes";
};
alwaysAllowPreview = mkOption {
type = types.bool;
default = false;
description = "Allow preview on all filetypes";
};
broadcastServer = mkOption {
type = types.bool;
default = false;
description = "Allow for outside and network wide connections";
};
customIP = mkOption {
type = types.str;
default = "";
description = "IP-address to use";
};
customPort = mkOption {
type = types.str;
default = "";
description = "Port to use";
};
};
treesitter = {
enable = mkOption {
description = "Enable Markdown treesitter";