Skip to content

Commit

Permalink
Merge pull request #217 from Donnerinoern/language/markdown
Browse files Browse the repository at this point in the history
utility/preview: added markdown-previewer.nvim and moved glow
  • Loading branch information
NotAShelf authored Feb 14, 2024
2 parents c0841e0 + 2e07763 commit d2334ca
Show file tree
Hide file tree
Showing 11 changed files with 145 additions and 32 deletions.
20 changes: 1 addition & 19 deletions modules/languages/markdown/config.nix
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,9 @@
lib,
...
}: let
inherit (lib) nvim mkIf mkMerge mkBinding isList;
inherit (lib) nvim mkIf mkMerge isList;

cfg = config.vim.languages.markdown;
self = import ./markdown.nix {
inherit lib config pkgs;
};
mappings = self.options.vim.languages.markdown.glow.mappings;
servers = {
marksman = {
package = pkgs.marksman;
Expand All @@ -35,20 +31,6 @@ in {
vim.treesitter.grammars = [cfg.treesitter.mdPackage cfg.treesitter.mdInlinePackage];
})

(mkIf cfg.glow.enable {
vim.startPlugins = ["glow-nvim"];

vim.maps.normal = mkMerge [
(mkBinding cfg.glow.mappings.openPreview ":Glow<CR>" mappings.openPreview.description)
];

vim.luaConfigRC.glow = nvim.dag.entryAnywhere ''
require('glow').setup({
glow_path = "${pkgs.glow}/bin/glow"
});
'';
})

(mkIf cfg.lsp.enable {
vim.lsp.lspconfig.enable = true;

Expand Down
13 changes: 1 addition & 12 deletions modules/languages/markdown/markdown.nix
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
...
}: let
inherit (builtins) attrNames;
inherit (lib) mkEnableOption mkMappingOption mkOption types nvim isList;
inherit (lib) mkEnableOption mkOption types nvim isList;

cfg = config.vim.languages.markdown;
defaultServer = "marksman";
Expand All @@ -29,17 +29,6 @@ in {
options.vim.languages.markdown = {
enable = mkEnableOption "Markdown markup language support";

glow = {
enable = mkOption {
type = types.bool;
default = true;
description = "Enable markdown preview in neovim with glow";
};
mappings = {
openPreview = mkMappingOption "Open preview" "<leader>p";
};
};

treesitter = {
enable = mkOption {
description = "Enable Markdown treesitter";
Expand Down
2 changes: 1 addition & 1 deletion modules/utility/binds/which-key/config.nix
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,7 @@ in {
}
${
if config.vim.languages.markdown.glow.enable
if config.vim.utility.preview.glow.enable
then ''
-- Markdown
["<leader>pm"] = { name = "+Preview Markdown" },
Expand Down
1 change: 1 addition & 0 deletions modules/utility/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -10,5 +10,6 @@ _: {
./diffview
./wakatime
./surround
./preview
];
}
6 changes: 6 additions & 0 deletions modules/utility/preview/default.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
imports = [
./markdown-preview
./glow
];
}
28 changes: 28 additions & 0 deletions modules/utility/preview/glow/config.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
{
pkgs,
config,
lib,
...
}: let
inherit (lib) nvim mkIf mkMerge mkBinding;

cfg = config.vim.utility.preview.glow;
self = import ./glow.nix {
inherit lib config pkgs;
};
mappings = self.options.vim.utility.preview.glow.mappings;
in {
config = mkIf cfg.enable {
vim.startPlugins = ["glow-nvim"];

vim.maps.normal = mkMerge [
(mkBinding cfg.mappings.openPreview ":Glow<CR>" mappings.openPreview.description)
];

vim.luaConfigRC.glow = nvim.dag.entryAnywhere ''
require('glow').setup({
glow_path = "${pkgs.glow}/bin/glow"
});
'';
};
}
6 changes: 6 additions & 0 deletions modules/utility/preview/glow/default.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
imports = [
./glow.nix
./config.nix
];
}
12 changes: 12 additions & 0 deletions modules/utility/preview/glow/glow.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
{lib, ...}: let
inherit (lib) mkEnableOption mkMappingOption;
in {
options.vim.utility.preview = {
glow = {
enable = mkEnableOption "markdown preview in neovim with glow";
mappings = {
openPreview = mkMappingOption "Open preview" "<leader>p";
};
};
};
}
26 changes: 26 additions & 0 deletions modules/utility/preview/markdown-preview/config.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
{
pkgs,
config,
lib,
...
}: let
inherit (lib) nvim mkIf concatMapStringsSep optionalString stringLength;
inherit (nvim.vim) mkVimBool;

cfg = config.vim.utility.preview.markdownPreview;
in {
config = mkIf cfg.enable {
vim.startPlugins = [pkgs.vimPlugins.markdown-preview-nvim];

vim.configRC.markdown-preview = nvim.dag.entryAnywhere ''
let g:mkdp_auto_start = ${mkVimBool cfg.autoStart}
let g:mkdp_auto_close = ${mkVimBool cfg.autoClose}
let g:mkdp_refresh_slow = ${mkVimBool cfg.lazyRefresh}
let g:mkdp_filetypes = [${concatMapStringsSep ", " (x: "'" + x + "'") cfg.filetypes}]
let g:mkdp_command_for_global = ${mkVimBool cfg.alwaysAllowPreview}
let g:mkdp_open_to_the_world = ${mkVimBool cfg.broadcastServer}
${optionalString (stringLength cfg.customIP > 0) "let g:mkdp_open_ip = '${cfg.customIP}'"}
${optionalString (stringLength cfg.customPort > 0) "let g:mkdp_port = '${cfg.customPort}'"}
'';
};
}
6 changes: 6 additions & 0 deletions modules/utility/preview/markdown-preview/default.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
imports = [
./markdown-preview.nix
./config.nix
];
}
57 changes: 57 additions & 0 deletions modules/utility/preview/markdown-preview/markdown-preview.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
{lib, ...}: let
inherit (lib) types mkEnableOption mkOption;
in {
options.vim.utility.preview = {
markdownPreview = {
enable = mkEnableOption "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 = with types; listOf 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";
};
};
};
}

0 comments on commit d2334ca

Please sign in to comment.