blob: 2f3bb552bb2ada1967f528720c7f5751f005a859 (
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
|
{
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 = {};
};
};
}
|