aboutsummaryrefslogtreecommitdiffstats
path: root/modules/by-name/nv/nvim/plgs/lualine
diff options
context:
space:
mode:
authorBenedikt Peetz <benedikt.peetz@b-peetz.de>2024-11-09 12:35:44 +0100
committerBenedikt Peetz <benedikt.peetz@b-peetz.de>2024-11-09 12:54:51 +0100
commit2122a01f99c6da466b8f0f55c965c11a9043d117 (patch)
tree6c1697afc30a5bb72635bda7db9b5610386a5b71 /modules/by-name/nv/nvim/plgs/lualine
parentfix(pkgs/stamp): Fallback to `dot-license` (diff)
downloadnixos-config-2122a01f99c6da466b8f0f55c965c11a9043d117.zip
refactor(modules/legacy/conf/nvim): Move to `by-name`
Diffstat (limited to 'modules/by-name/nv/nvim/plgs/lualine')
-rw-r--r--modules/by-name/nv/nvim/plgs/lualine/default.nix128
1 files changed, 128 insertions, 0 deletions
diff --git a/modules/by-name/nv/nvim/plgs/lualine/default.nix b/modules/by-name/nv/nvim/plgs/lualine/default.nix
new file mode 100644
index 00000000..2f3bb552
--- /dev/null
+++ b/modules/by-name/nv/nvim/plgs/lualine/default.nix
@@ -0,0 +1,128 @@
+{
+ config,
+ lib,
+ ...
+}: let
+ cfg = config.soispha.programs.nvim;
+in {
+ home-manager.users.soispha.programs.nixvim.plugins.lualine = let
+ get_location_of_file = {
+ __raw = ''
+ function()
+ local file_lines = vim.fn.line('$');
+ local file_current_cursor_positon = vim.fn.getcurpos();
+ return file_current_cursor_positon[3] .. ":" .. file_current_cursor_positon[2] .. "/" .. file_lines
+ end
+ '';
+ };
+
+ get_trailing_whitespace = {
+ __raw = ''
+ function()
+ local space = vim.fn.search([[\s\+$]], 'nwc')
+ return space ~= 0 and "TW:" .. space or ""
+ end
+ '';
+ };
+ get_mixed_indent = {
+ __raw =
+ /*
+ lua
+ */
+ ''
+ function()
+ local space_pat = [[\v^ +]]
+ local tab_pat = [[\v^\t+]]
+ local space_indent = vim.fn.search(space_pat, 'nwc')
+ local tab_indent = vim.fn.search(tab_pat, 'nwc')
+ local mixed = (space_indent > 0 and tab_indent > 0)
+ local mixed_same_line
+ if not mixed then
+ mixed_same_line = vim.fn.search([[\v^(\t+ | +\t)]], 'nwc')
+ mixed = mixed_same_line > 0
+ end
+ if not mixed then return "" end
+ if mixed_same_line ~= nil and mixed_same_line > 0 then
+ return 'MI:' .. mixed_same_line
+ end
+ local space_indent_cnt = vim.fn.searchcount({ pattern = space_pat, max_count = 1e3 }).total
+ local tab_indent_cnt = vim.fn.searchcount({ pattern = tab_pat, max_count = 1e3 }).total
+ if space_indent_cnt > tab_indent_cnt then
+ return 'MI:' .. tab_indent
+ else
+ return 'MI:' .. space_indent
+ end
+ end
+ '';
+ };
+ in
+ lib.mkIf cfg.enable {
+ enable = true;
+
+ settings = {
+ options = {
+ iconsEnabled = true;
+ theme = "nightfox";
+ };
+
+ # TODO: add all installed and supported extensions here
+ extensions = [
+ "toggleterm"
+ #"fugitive" # TODO: maybe add this?
+ ];
+
+ componentSeparators = {
+ left = "";
+ right = "";
+ };
+ sectionSeparators = {
+ left = "";
+ right = "";
+ };
+ disabledFiletypes = {
+ statusline = [];
+ winbar = [];
+ };
+ ignoreFocus = [];
+ alwaysDivideMiddle = true;
+ globalstatus = false;
+ refresh = {
+ statusline = 1000;
+ tabline = 1000;
+ winbar = 1000;
+ };
+ sections = {
+ lualine_a = ["mode"];
+ lualine_b = [
+ {
+ __raw = ''
+ {'FugitiveHead', icon = ""}
+ '';
+ }
+ "diff"
+ "diagnostics"
+ ];
+ lualine_c = ["filename"];
+ lualine_x = ["searchcount" "filetype"];
+ lualine_y = [
+ "encoding"
+ "fileformat"
+ get_mixed_indent
+ get_trailing_whitespace
+ ];
+ lualine_z = [get_location_of_file];
+ };
+ inactiveSections = {
+ lualine_a = [];
+ lualine_b = [];
+ lualine_c = ["filename"];
+ lualine_x = [get_location_of_file];
+ lualine_y = [];
+ lualine_z = [];
+ };
+ tabline = {};
+ winbar = {};
+ inactiveWinbar = {};
+ };
+ };
+}