mirror of
https://github.com/NotAShelf/neovim-flake.git
synced 2024-12-21 17:59:48 +01:00
feat: implement freeform smartcolumn column positions
This commit is contained in:
parent
c6bcc873a6
commit
2cfeb22764
5 changed files with 48 additions and 38 deletions
10
extra.nix
10
extra.nix
|
@ -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;
|
||||
};
|
||||
|
||||
|
|
22
lib/lua.nix
22
lib/lua.nix
|
@ -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
|
||||
))
|
||||
)
|
||||
+ " }";
|
||||
}
|
||||
|
|
|
@ -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",
|
||||
})
|
||||
'';
|
||||
|
|
|
@ -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;
|
||||
};
|
||||
};
|
||||
};
|
||||
*/
|
||||
};
|
||||
}
|
||||
|
|
|
@ -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,
|
||||
},
|
||||
}
|
||||
'';
|
||||
};
|
||||
|
|
Loading…
Reference in a new issue