feat: import and configure smartcolumn

This commit is contained in:
NotAShelf 2023-04-05 16:58:56 +03:00
parent d5a8587517
commit a924958762
No known key found for this signature in database
GPG key ID: F0D14CCB5ED5AA22
4 changed files with 80 additions and 0 deletions

View file

@ -3,5 +3,6 @@ _: {
./noice
./modes
./notifications
./smartcolumn
];
}

View file

@ -0,0 +1,32 @@
{
pkgs,
config,
lib,
...
}:
with lib;
with builtins; let
cfg = config.vim.ui.smartcolumn;
in {
config = mkIf cfg.enable {
vim.startPlugins = [
"smartcolumn"
];
vim.luaConfigRC.smartcolumn = nvim.dag.entryAnywhere ''
require("smartcolumn").setup({
colorcolumn = "${toString cfg.showColumnAt}",
disabled_filetypes = { ${concatStringsSep ", " (map (x: "\"" + x + "\"") cfg.disabledFiletypes)} },
-- { "help", "text", "markdown", "NvimTree", "alpha"},
custom_colorcolumn = {
-- TODO: use cfg.languages.<language>.columnAt when it's fixed to dynamically define per-language length
ruby = "120",
java = "120",
nix = "120",
markdown = "80",
},
scope = "file",
})
'';
};
}

View file

@ -0,0 +1,6 @@
_: {
imports = [
./smartcolumn.nix
./config.nix
];
}

View file

@ -0,0 +1,41 @@
{
config,
lib,
...
}:
with lib;
with builtins; let
languageOpts = {
columnAt = mkOption {
type = types.nullOr types.int;
default = 80;
};
};
in {
options.vim.ui.smartcolumn = {
enable = mkEnableOption "Enable smartcolumn line length indicator";
showColumnAt = mkOption {
type = types.nullOr types.int;
default = 120;
description = "The position at which the column will be displayed. Set to null to disable";
};
disabledFiletypes = mkOption {
type = types.listOf types.str;
default = ["help" "text" "markdown" "NvimTree" "alpha"];
description = "The filetypes smartcolumn will be disabled for.";
};
/*
languages = mkOption {
default = {};
description = "Language specific configuration.";
type = with types;
attrsOf (submodule {
options = attrsOf (submodule langOptions);
});
};
*/
};
}