blob: 7a69519bb3a55285c7bd25144283de16d2e4c39f (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
|
# nixos-config - My current NixOS configuration
#
# Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de>
# SPDX-License-Identifier: GPL-3.0-or-later
#
# This file is part of my nixos-config.
#
# You should have received a copy of the License along with this program.
# If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>.
{
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 = {};
};
};
}
|