Skip to content

Commit

Permalink
Merge pull request #173 from ksonj/lualine-options
Browse files Browse the repository at this point in the history
statusline/lualine: extensible sections
  • Loading branch information
NotAShelf authored Oct 25, 2023
2 parents 2b48b6d + ed6e3f1 commit 30552a9
Show file tree
Hide file tree
Showing 4 changed files with 146 additions and 65 deletions.
4 changes: 4 additions & 0 deletions docs/release-notes/rl-0.5.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -89,3 +89,7 @@ https://github.com/ksonj[ksonj]:
* Removed redundant "Enable ..." in `mkEnableOption` descriptions

* Add options to modify LSP key bindings and add proper whichkey descriptions

* Changed type of `statusline.lualine.activeSection` and `statusline.lualine.inactiveSection` from `attrsOf str` to `attrsOf (listOf str)`

* Added `statusline.lualine.extraActiveSection` and `statusline.lualine.extraInactiveSection`
2 changes: 2 additions & 0 deletions lib/lua.nix
Original file line number Diff line number Diff line change
Expand Up @@ -44,4 +44,6 @@
)
)
+ " }";
# Convert a list of lua expressions to a lua table. The difference to listToLuaTable is that the elements here are expected to be lua expressions already, whereas listToLuaTable converts from nix types to lua first
luaTable = items: ''{${builtins.concatStringsSep "," items}}'';
}
25 changes: 13 additions & 12 deletions modules/statusline/lualine/config.nix
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
}:
with lib; let
cfg = config.vim.statusline.lualine;
inherit (nvim.lua) luaTable;
in {
config = (mkIf cfg.enable) {
vim.startPlugins = [
Expand Down Expand Up @@ -32,21 +33,21 @@ in {
},
-- active sections
sections = {
lualine_a = ${cfg.activeSection.a},
lualine_b = ${cfg.activeSection.b},
lualine_c = ${cfg.activeSection.c},
lualine_x = ${cfg.activeSection.x},
lualine_y = ${cfg.activeSection.y},
lualine_z = ${cfg.activeSection.z},
lualine_a = ${luaTable (cfg.activeSection.a ++ cfg.extraActiveSection.a)},
lualine_b = ${luaTable (cfg.activeSection.b ++ cfg.extraActiveSection.b)},
lualine_c = ${luaTable (cfg.activeSection.c ++ cfg.extraActiveSection.c)},
lualine_x = ${luaTable (cfg.activeSection.x ++ cfg.extraActiveSection.x)},
lualine_y = ${luaTable (cfg.activeSection.y ++ cfg.extraActiveSection.y)},
lualine_z = ${luaTable (cfg.activeSection.z ++ cfg.extraActiveSection.z)},
},
--
inactive_sections = {
lualine_a = ${cfg.inactiveSection.a},
lualine_b = ${cfg.inactiveSection.b},
lualine_c = ${cfg.inactiveSection.c},
lualine_x = ${cfg.inactiveSection.x},
lualine_y = ${cfg.inactiveSection.y},
lualine_z = ${cfg.inactiveSection.z},
lualine_a = ${luaTable (cfg.inactiveSection.a ++ cfg.extraInactiveSection.a)},
lualine_b = ${luaTable (cfg.inactiveSection.b ++ cfg.extraInactiveSection.b)},
lualine_c = ${luaTable (cfg.inactiveSection.c ++ cfg.extraInactiveSection.c)},
lualine_x = ${luaTable (cfg.inactiveSection.x ++ cfg.extraInactiveSection.x)},
lualine_y = ${luaTable (cfg.inactiveSection.y ++ cfg.extraInactiveSection.y)},
lualine_z = ${luaTable (cfg.inactiveSection.z ++ cfg.extraInactiveSection.z)},
},
tabline = {},
Expand Down
180 changes: 127 additions & 53 deletions modules/statusline/lualine/lualine.nix
Original file line number Diff line number Diff line change
Expand Up @@ -117,48 +117,50 @@ in {

activeSection = {
a = mkOption {
type = types.str;
type = with types; listOf str;
description = "active config for: | (A) | B | C X | Y | Z |";
default = ''
{
default = [
''
{
"mode",
icons_enabled = true,
separator = {
left = '▎',
right = ''
},
},
}
'';
}
''
];
};

b = mkOption {
type = types.str;
type = with types; listOf str;
description = "active config for: | A | (B) | C X | Y | Z |";
default = ''
{
default = [
''
{
"filetype",
colored = true,
icon_only = true,
icon = { align = 'left' },
color = {bg='${colorPuccin}', fg='lavender'},
},
}
''
''
{
"filename",
color = {bg='${colorPuccin}'},
symbols = {modified = '', readonly = ''},
},
}
'';
}
''
];
};

c = mkOption {
type = types.str;
type = with types; listOf str;
description = "active config for: | A | B | (C) X | Y | Z |";
default = ''
{
default = [
''
{
"diff",
colored = false,
Expand All @@ -173,16 +175,16 @@ in {
bg='${colorPuccin}',
fg='lavender'
},
},
}
'';
}
''
];
};

x = mkOption {
type = types.str;
type = with types; listOf str;
description = "active config for: | A | B | C (X) | Y | Z |";
default = ''
{
default = [
''
{
-- Lsp server name
function()
Expand Down Expand Up @@ -218,7 +220,9 @@ in {
end,
icon = ' ',
color = {bg='${colorPuccin}', fg='lavender'},
},
}
''
''
{
"diagnostics",
sources = {'nvim_lsp', 'nvim_diagnostic', 'coc'},
Expand All @@ -229,45 +233,51 @@ in {
color_warn = { fg = 'yellow' },
color_info = { fg = 'cyan' },
},
},
}
'';
}
''
];
};

y = mkOption {
type = types.str;
type = with types; listOf str;
description = "active config for: | A | B | C X | (Y) | Z |";
default = ''
{
default = [
''
{
'searchcount',
maxcount = 999,
timeout = 120,
color = {bg='${colorPuccin}', fg='lavender'}
},
}
''
''
{
"branch",
icon = ' •',
color = {bg='${colorPuccin}', fg='lavender'},
},
}
'';
}
''
];
};

z = mkOption {
type = types.str;
type = with types; listOf str;
description = "active config for: | A | B | C X | Y | (Z) |";
default = ''
{
default = [
''
{
"progress",
separator = {
left = '',
},
},
}
''
''
{
"location",
},
}
''
''
{
"fileformat",
color = {fg='black'},
Expand All @@ -276,47 +286,111 @@ in {
dos = '', -- e70f
mac = '', -- e711
},
},
}
'';
}
''
];
};
};
extraActiveSection = {
a = mkOption {
type = with types; listOf str;
description = "Extra entries for activeSection.a";
default = [];
};
b = mkOption {
type = with types; listOf str;
description = "Extra entries for activeSection.b";
default = [];
};
c = mkOption {
type = with types; listOf str;
description = "Extra entries for activeSection.c";
default = [];
};
x = mkOption {
type = with types; listOf str;
description = "Extra entries for activeSection.x";
default = [];
};
y = mkOption {
type = with types; listOf str;
description = "Extra entries for activeSection.y";
default = [];
};
z = mkOption {
type = with types; listOf str;
description = "Extra entries for activeSection.z";
default = [];
};
};

inactiveSection = {
a = mkOption {
type = types.str;
type = with types; listOf str;
description = "inactive config for: | (A) | B | C X | Y | Z |";
default = "{}";
default = [];
};

b = mkOption {
type = types.str;
type = with types; listOf str;
description = "inactive config for: | A | (B) | C X | Y | Z |";
default = "{}";
default = [];
};

c = mkOption {
type = types.str;
type = with types; listOf str;
description = "inactive config for: | A | B | (C) X | Y | Z |";
default = "{'filename'}";
default = ["'filename'"];
};

x = mkOption {
type = types.str;
type = with types; listOf str;
description = "inactive config for: | A | B | C (X) | Y | Z |";
default = "{'location'}";
default = ["'location'"];
};

y = mkOption {
type = types.str;
type = with types; listOf str;
description = "inactive config for: | A | B | C X | (Y) | Z |";
default = "{}";
default = [];
};

z = mkOption {
type = types.str;
type = with types; listOf str;
description = "inactive config for: | A | B | C X | Y | (Z) |";
default = "{}";
default = [];
};
};
extraInactiveSection = {
a = mkOption {
type = with types; listOf str;
description = "Extra entries for inactiveSection.a";
default = [];
};
b = mkOption {
type = with types; listOf str;
description = "Extra entries for inactiveSection.b";
default = [];
};
c = mkOption {
type = with types; listOf str;
description = "Extra entries for inactiveSection.c";
default = [];
};
x = mkOption {
type = with types; listOf str;
description = "Extra entries for inactiveSection.x";
default = [];
};
y = mkOption {
type = with types; listOf str;
description = "Extra entries for inactiveSection.y";
default = [];
};
z = mkOption {
type = with types; listOf str;
description = "Extra entries for inactiveSection.z";
default = [];
};
};
};
Expand Down

0 comments on commit 30552a9

Please sign in to comment.