Skip to content

Commit a4d9cae

Browse files
committed
doc(statusline): Completed type definitions for the statusline.
Adds the missing type definitions. refactor(statusline): Refactored how `hl` option is applied. `hl` is no longer applied multiple times for a single component.
1 parent dc7a3e0 commit a4d9cae

File tree

3 files changed

+242
-110
lines changed

3 files changed

+242
-110
lines changed

lua/bars/components/statusline.lua

Lines changed: 44 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ local slC = {};
22
local utils = require("bars.utils");
33

44
--- Shows current git branch.
5-
---@param _ any
6-
---@param window any
5+
---@param _ integer
6+
---@param window integer
77
---@param main_config statusline.parts.branch
88
---@return string
99
slC.branch = function (_, window, main_config)
@@ -134,8 +134,8 @@ slC.branch = function (_, window, main_config)
134134
end
135135

136136
--- Shows the buffer name.
137-
---@param buffer any
138-
---@param _ any
137+
---@param buffer integer
138+
---@param _ integer
139139
---@param main_config statusline.parts.bufname
140140
slC.bufname = function (buffer, _, main_config)
141141
---|fS
@@ -153,7 +153,7 @@ slC.bufname = function (buffer, _, main_config)
153153
if vim.fn.strchars(fname) <= name_len then
154154
return fname;
155155
else
156-
local truncate_symbol = main_config.truncate_symbol or ">";
156+
local truncate_symbol = main_config.truncate_symbol or "";
157157

158158
local ext = vim.fn.fnamemodify(fname, ":e");
159159
local name = vim.fn.fnamemodify(fname, ":t:r");
@@ -335,14 +335,15 @@ slC.diagnostics = function (buffer, window, config)
335335

336336
return table.concat({
337337
"%@v:lua.__change_diagnostic_state@",
338+
utils.set_hl(config.hl),
338339

339-
string.format("%s%s", utils.set_hl(config.corner_left_hl or config.hl), config.corner_left or ""),
340-
string.format("%s%s", utils.set_hl(config.padding_left_hl or config.hl), config.padding_left or ""),
340+
string.format("%s%s", utils.set_hl(config.corner_left_hl), config.corner_left or ""),
341+
string.format("%s%s", utils.set_hl(config.padding_left_hl), config.padding_left or ""),
341342

342343
_d or "",
343344

344-
string.format("%s%s", utils.set_hl(config.padding_right_hl or config.hl), config.padding_right or ""),
345-
string.format("%s%s", utils.set_hl(config.corner_right_hl or config.hl), config.corner_right or ""),
345+
string.format("%s%s", utils.set_hl(config.padding_right_hl), config.padding_right or ""),
346+
string.format("%s%s", utils.set_hl(config.corner_right_hl), config.corner_right or ""),
346347

347348
"%X"
348349
});
@@ -358,72 +359,72 @@ slC.empty = function (_, _, config)
358359
end
359360

360361
--- Shows current mode.
361-
---@param _ integer Buffer ID.
362-
---@param window integer Window ID.
363362
---@param main_config statusline.parts.mode
364363
---@return string
365-
slC.mode = function (_, window, main_config)
364+
slC.mode = function (_, _, main_config)
366365
---|fS
367366

368367
local ignore = { "default", "min_width", "kind", "condition", "kind" };
369368

370369
---@type string Current mode shorthand.
371370
local mode = vim.api.nvim_get_mode().mode;
371+
---@type mode.opts
372372
local config = utils.match(main_config, mode, ignore);
373373

374-
local min_width = main_config.min_width or 42;
375-
376-
local w = vim.api.nvim_win_get_width(window)
377-
378-
if window ~= vim.api.nvim_get_current_win() or w <= min_width then
374+
if main_config.compact then
379375
return table.concat({
380-
string.format("%s%s", utils.set_hl(config.corner_left_hl or config.hl), config.corner_left or ""),
381-
string.format("%s%s", utils.set_hl(config.padding_left_hl or config.hl), config.padding_left or ""),
376+
utils.set_hl(config.hl),
377+
378+
string.format("%s%s", utils.set_hl(config.corner_left_hl), config.corner_left or ""),
379+
string.format("%s%s", utils.set_hl(config.padding_left_hl), config.padding_left or ""),
382380

383-
string.format("%s%s", utils.set_hl(config.padding_right_hl or config.hl), config.padding_right or ""),
384-
string.format("%s%s", utils.set_hl(config.corner_right_hl or config.hl), config.corner_right or ""),
381+
string.format("%s%s", utils.set_hl(config.padding_right_hl), config.padding_right or ""),
382+
string.format("%s%s", utils.set_hl(config.corner_right_hl), config.corner_right or ""),
385383
});
386384
else
387385
return table.concat({
388-
string.format("%s%s", utils.set_hl(config.corner_left_hl or config.hl), config.corner_left or ""),
389-
string.format("%s%s", utils.set_hl(config.padding_left_hl or config.hl), config.padding_left or ""),
390-
string.format("%s%s", utils.set_hl(config.icon_hl or config.hl), config.icon or ""),
386+
utils.set_hl(config.hl),
391387

392-
string.format("%s%s", utils.set_hl(config.hl), config.text or mode or ""),
388+
string.format("%s%s", utils.set_hl(config.corner_left_hl), config.corner_left or ""),
389+
string.format("%s%s", utils.set_hl(config.padding_left_hl), config.padding_left or ""),
390+
string.format("%s%s", utils.set_hl(config.icon_hl), config.icon or ""),
393391

394-
string.format("%s%s", utils.set_hl(config.padding_right_hl or config.hl), config.padding_right or ""),
395-
string.format("%s%s", utils.set_hl(config.corner_right_hl or config.hl), config.corner_right or ""),
392+
string.format("%s", config.text or mode or ""),
393+
394+
string.format("%s%s", utils.set_hl(config.padding_right_hl), config.padding_right or ""),
395+
string.format("%s%s", utils.set_hl(config.corner_right_hl), config.corner_right or ""),
396396
});
397397
end
398398

399399
---|fE
400400
end
401401

402-
--- New section.
403-
---@param config statusline.parts.section Configuration.
402+
--- Custom section.
403+
---@param config statusline.parts.section
404404
---@return string
405405
slC.section = function (_, _, config, _)
406406
---|fS
407407

408408
return table.concat({
409409
config.click and string.format("%@%s@", config.click) or "",
410+
utils.set_hl(config.hl),
410411

411-
string.format("%s%s", utils.set_hl(config.corner_left_hl or config.hl), config.corner_left or ""),
412-
string.format("%s%s", utils.set_hl(config.padding_left_hl or config.hl), config.padding_left or ""),
413-
string.format("%s%s", utils.set_hl(config.icon_hl or config.hl), config.icon or ""),
412+
string.format("%s%s", utils.set_hl(config.corner_left_hl), config.corner_left or ""),
413+
string.format("%s%s", utils.set_hl(config.padding_left_hl), config.padding_left or ""),
414+
string.format("%s%s", utils.set_hl(config.icon_hl), config.icon or ""),
414415

415416
string.format("%s%s", utils.set_hl(config.hl), config.text or ""),
416417

417-
string.format("%s%s", utils.set_hl(config.padding_right_hl or config.hl), config.padding_right or ""),
418-
string.format("%s%s", utils.set_hl(config.corner_right_hl or config.hl), config.corner_right or ""),
418+
string.format("%s%s", utils.set_hl(config.padding_right_hl), config.padding_right or ""),
419+
string.format("%s%s", utils.set_hl(config.corner_right_hl), config.corner_right or ""),
419420

420421
config.click and "%X" or "",
421422
});
422423

423424
---|fE
424425
end
425426

426-
--- Custom ruler
427+
--- Ruler.
427428
---@param _ integer
428429
---@param window integer
429430
---@param main_config statusline.parts.ruler
@@ -456,14 +457,16 @@ slC.ruler = function (_, window, main_config)
456457
end
457458

458459
return table.concat({
459-
string.format("%s%s", utils.set_hl(config.corner_left_hl or config.hl), config.corner_left or ""),
460-
string.format("%s%s", utils.set_hl(config.padding_left_hl or config.hl), config.padding_left or ""),
461-
string.format("%s%s", utils.set_hl(config.icon_hl or config.hl), config.icon or ""),
460+
utils.set_hl(config.hl),
461+
462+
string.format("%s%s", utils.set_hl(config.corner_left_hl), config.corner_left or ""),
463+
string.format("%s%s", utils.set_hl(config.padding_left_hl), config.padding_left or ""),
464+
string.format("%s%s", utils.set_hl(config.icon_hl), config.icon or ""),
462465

463466
string.format("%s%s%s", x, config.separator or "", y),
464467

465-
string.format("%s%s", utils.set_hl(config.padding_right_hl or config.hl), config.padding_right or ""),
466-
string.format("%s%s", utils.set_hl(config.corner_right_hl or config.hl), config.corner_right or "")
468+
string.format("%s%s", utils.set_hl(config.padding_right_hl), config.padding_right or ""),
469+
string.format("%s%s", utils.set_hl(config.corner_right_hl), config.corner_right or "")
467470
});
468471

469472
---|fE
@@ -485,7 +488,7 @@ slC.get = function (name, buffer, window, part_config, statusline)
485488
--- Component doesn't exist.
486489
return "";
487490
elseif type(slC[name]) ~= "function" then
488-
--- Attempting to get internal property.
491+
--- Not a valid component.
489492
return "";
490493
else
491494
if part_config.condition ~= nil then

lua/bars/statusline.lua

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,14 @@ statusline.config = {
1212
{
1313
kind = "mode",
1414

15+
compact = function (_, window)
16+
if window ~= vim.api.nvim_get_current_win() then
17+
return true;
18+
else
19+
return vim.api.nvim_win_get_width(window) < math.ceil(vim.o.columns * 0.5);
20+
end
21+
end,
22+
1523
---|fS "Mode configuration"
1624

1725
default = {

0 commit comments

Comments
 (0)