feat: implement freeform smartcolumn column positions

This commit is contained in:
NotAShelf 2023-06-04 14:12:08 +03:00
parent c6bcc873a6
commit 2cfeb22764
No known key found for this signature in database
GPG key ID: F0D14CCB5ED5AA22
5 changed files with 48 additions and 38 deletions

View file

@ -178,7 +178,15 @@ inputs: let
vim.ui = {
noice.enable = true;
smartcolumn.enable = true;
smartcolumn = {
enable = true;
columnAt.languages = {
# this is a freeform module, it's `buftype = int;` for configuring column position
nix = 110;
ruby = 120;
java = 130;
};
};
colorizer.enable = true;
};

View file

@ -1,12 +1,32 @@
# Helpers for converting values to lua
{lib}: {
{lib}: rec {
# yes? no.
yesNo = value:
if value
then "yes"
else "no";
# Convert a null value to lua's nil
nullString = value:
if value == null
then "nil"
else "'${value}'";
# Helper function to convert an attribute name to a Lua table key
attrToKey = name: name;
# Function to convert a Nix attrset to a Lua table
attrsetToLuaTable = attrset:
"{ "
+ (
builtins.concatStringsSep ", "
(builtins.attrValues (
builtins.mapAttrs (
name: value:
attrToKey name + " = " + ("\"" + builtins.toJSON value + "\"")
)
attrset
))
)
+ " }";
}

View file

@ -18,13 +18,7 @@ in {
colorcolumn = "${toString cfg.showColumnAt}",
-- { "help", "text", "markdown", "NvimTree", "alpha"},
disabled_filetypes = { ${concatStringsSep ", " (map (x: "\"" + x + "\"") cfg.disabledFiletypes)} },
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",
},
custom_colorcolumn = ${nvim.lua.attrsetToLuaTable cfg.columnAt.languages},
scope = "file",
})
'';

View file

@ -1,19 +1,8 @@
{
config,
lib,
...
}:
{lib, ...}:
with lib;
with builtins; let
languageOpts = {
columnAt = mkOption {
type = types.nullOr types.int;
default = 80;
};
};
in {
with builtins; {
options.vim.ui.smartcolumn = {
enable = mkEnableOption "Enable smartcolumn line length indicator";
enable = mkEnableOption "Enable Smartcolumn line length indicator";
showColumnAt = mkOption {
type = types.nullOr types.int;
@ -27,15 +16,15 @@ in {
description = "The filetypes smartcolumn will be disabled for.";
};
/*
languages = mkOption {
default = {};
description = "Language specific configuration.";
type = with types;
attrsOf (submodule {
options = languageOpts;
});
columnAt = {
# TODO: the current implementation only allows for options such as { ruby = "120", java = "120" }
# whereas the lua config would allow { ruby = "120", java = { "180", "200"} }, this needs to be fixed in the custom lib
languages = lib.mkOption {
description = "The position at which smart column should be displayed for each individual buffer type";
type = lib.types.submodule {
freeformType = with lib.types; attrsOf int;
};
};
};
*/
};
}

View file

@ -16,12 +16,6 @@ in {
"ccc"
];
vim.maps.normal = mkMerge [
(mkSetLuaBinding mappings.quit "require('ccc').mapping.quit")
(mkSetLuaBinding mappings.increase10 "require('ccc').mapping.increase10")
(mkSetLuaBinding mappings.decrease10 "require('ccc').mapping.decrease10")
];
vim.luaConfigRC.ccc = nvim.dag.entryAnywhere ''
local ccc = require("ccc")
ccc.setup {
@ -52,6 +46,11 @@ in {
{ ccc.picker.css_rgb, ccc.output.css_hsl },
{ ccc.picker.css_hsl, ccc.output.hex },
},
mappings = {
["q"] = ccc.mapping.quit,
["L"] = ccc.mapping.increase10,
["H"] = ccc.mapping.decrease10,
},
}
'';
};