Skip to content

Commit 375451f

Browse files
committed
fix(lualine)!: rework how lualine components are configured
Signed-off-by: Guennadi Maximov C <g.maxc.fox@protonmail.com>
1 parent a7bc4d6 commit 375451f

File tree

3 files changed

+205
-180
lines changed

3 files changed

+205
-180
lines changed

README.md

Lines changed: 79 additions & 176 deletions
Original file line numberDiff line numberDiff line change
@@ -626,32 +626,7 @@ Add Triforce components to your lualine configuration:
626626
require('lualine').setup({
627627
sections = {
628628
lualine_x = {
629-
-- Add one or more components
630-
require('triforce.lualine').level,
631-
require('triforce.lualine').achievements,
632-
'encoding',
633-
'fileformat',
634-
'filetype',
635-
},
636-
}
637-
})
638-
```
639-
640-
### Quick Setup
641-
642-
Use the `components()` helper to get all components at once:
643-
644-
```lua
645-
local triforce = require('triforce.lualine').components()
646-
647-
require('lualine').setup({
648-
sections = {
649-
lualine_x = {
650-
triforce.level,
651-
triforce.achievements,
652-
triforce.streak,
653-
triforce.session_time,
654-
'encoding', 'fileformat', 'filetype'
629+
'triforce',
655630
},
656631
}
657632
})
@@ -665,6 +640,7 @@ Each component can be customized independently.
665640

666641
Options:
667642

643+
- `enabled` (boolean): Activates this component (default: `true`)
668644
- `prefix` (string): Text prefix before level number (default: `'Lv.'`)
669645
- `show` (table): Toggles for showing different components:
670646
- `level` (boolean): Show level number (default: `true`)
@@ -676,206 +652,133 @@ Options:
676652
- `chars` (table): `{ filled = '█', empty = '░' }` (default)
677653

678654
```lua
679-
-- Default: prefix + level + bar
680-
function()
681-
return require('triforce.lualine').level()
682-
end
683-
-- Result: Lv.27 ████░░
684-
685-
-- Show percentage instead of bar
686-
function()
687-
return require('triforce.lualine').level({
688-
show = { bar = false, percent = true },
689-
})
690-
end
691-
-- Result: Lv.27 90%
692-
693-
-- Show everything (XP numbers + percentage)
694-
function()
695-
return require('triforce.lualine').level({
696-
show = { bar = true, percent = true, xp = true },
697-
bar = { length = 8 },
698-
})
699-
end
700-
-- Result: Lv.27 ████████ 90% 450/500
701-
702-
-- Customize bar style
703-
function()
704-
return require('triforce.lualine').level({
705-
bar = {
706-
chars = { filled = '', empty = '' },
707-
length = 10,
655+
require('lualine').setup({
656+
sections = {
657+
lualine_x = {
658+
{
659+
'triforce',
660+
level = {
661+
enabled = true,
662+
prefix = 'Lv.',
663+
show = { level = true, bar = true, percent = false, xp = false },
664+
bar = { length = 6, chars = { filled = '', empty = '' } },
665+
},
666+
},
708667
},
709-
})
710-
end
711-
-- Result: Lv.27 ●●●●●●●●●○
712-
713-
-- Custom prefix or no prefix
714-
function()
715-
return require('triforce.lualine').level({
716-
prefix = 'Level ', -- or set to '' for no prefix
717-
})
718-
end
719-
-- Result: Level 27 ████░░
668+
}
669+
})
720670
```
721671

722672
#### Achievements Component
723673

724674
Options:
725675

676+
- `enabled` (boolean): Activates this component (default: `false`)
726677
- `icon` (string): Icon to display (default: `''` - trophy)
727678
- `show_count` (boolean): Show unlocked/total count (default: `true`)
728679

729680
```lua
730-
-- Default
731-
function()
732-
return require('triforce.lualine').achievements()
733-
end
734-
-- Result: 12/18
735-
736-
-- Custom icon or no icon
737-
function()
738-
return require('triforce.lualine').achievements({
739-
icon = '', -- or '' for no icon
740-
})
741-
end
742-
-- Result: 12/18
681+
require('lualine').setup({
682+
sections = {
683+
lualine_x = {
684+
{
685+
'triforce',
686+
achievements = { enabled = false, icon = '', show_count = true },
687+
},
688+
},
689+
}
690+
})
743691
```
744692

745693
#### Streak Component
746694

747695
Options:
748696

697+
- `enabled` (boolean): Activates this component (default: `false`)
749698
- `icon` (string): Icon to display (default: `''` - flame)
750699
- `show_days` (boolean): Show day count (default: `true`)
751700

752701
The streak component returns an empty string when streak is 0, so it won't clutter your statusline.
753702

754703
```lua
755-
-- Default
756-
function()
757-
return require('triforce.lualine').streak()
758-
end
759-
-- Result: 5
760-
761-
-- Different icon
762-
function()
763-
return require('triforce.lualine').streak({ icon = '' })
764-
end
765-
-- Result: 5
704+
require('lualine').setup({
705+
sections = {
706+
lualine_x = {
707+
{
708+
'triforce',
709+
streak = { enabled = false, icon = '', show_days = true },
710+
},
711+
},
712+
}
713+
})
766714
```
767715

768716
#### Session Time Component
769717

770718
Options:
771719

720+
- `enabled` (boolean): Activates this component (default: `false`)
772721
- `icon` (string): Icon to display (default: `''` - clock)
773722
- `show_duration` (boolean): Show time duration (default: `true`)
774723
- `format` (string): `'short'` (2h 34m) or `'long'` (2:34:12) (default: `'short'`)
775724

776-
```lua
777-
-- Default (short format)
778-
function()
779-
return require('triforce.lualine').session_time()
780-
end
781-
-- Result: 2h 34m
782-
783-
-- Long format (2:34:12 instead of 2h 34m)
784-
function()
785-
return require('triforce.lualine').session_time({
786-
format = 'long',
787-
})
788-
end
789-
-- Result: 2:34:12
790-
791-
-- Different icon
792-
function()
793-
return require('triforce.lualine').session_time({
794-
icon = '', -- watch icon
795-
})
796-
end
797-
-- Result: 2h 34m
798-
```
799-
800-
### Global Component Configuration
801-
802-
Set defaults for all components:
803-
804-
```lua
805-
-- Configure defaults
806-
require('triforce.lualine').setup({
807-
level = {
808-
prefix = 'Level ',
809-
bar = { length = 8 },
810-
show = { percent = true },
811-
},
812-
achievements = { icon = '' },
813-
streak = { icon = '' },
814-
session_time = { icon = '', format = 'long' },
815-
})
816-
817-
-- Then use components normally
818-
local triforce = require('triforce.lualine').components()
819-
```
820-
821-
### Example Configurations
822-
823-
#### Minimalist Setup
824-
825725
```lua
826726
require('lualine').setup({
827727
sections = {
828728
lualine_x = {
829-
function()
830-
return require('triforce.lualine').level()
831-
end,
729+
{
730+
'triforce',
731+
session_time = { enabled = false, icon = '', show_duration = true, format = 'short' },
732+
},
832733
},
833734
}
834735
})
835-
-- Result: Lv.27 ████░░
836736
```
837737

838-
#### Full Stats Dashboard
738+
### Global Component Configuration
839739

840-
```lua
841-
local triforce = require('triforce.lualine').components()
740+
Set defaults for all components:
842741

742+
```lua
843743
require('lualine').setup({
844744
sections = {
845-
lualine_c = { 'filename' },
846745
lualine_x = {
847-
triforce.session_time,
848-
triforce.streak,
849-
triforce.achievements,
850-
triforce.level,
851-
'encoding',
852-
'filetype',
746+
{
747+
'triforce',
748+
level = {
749+
enabled = true,
750+
prefix = 'Lv.',
751+
show = {
752+
level = true,
753+
bar = true,
754+
percent = false,
755+
xp = false,
756+
},
757+
bar = {
758+
length = 6,
759+
chars = { filled = '', empty = '' },
760+
},
761+
},
762+
achievements = {
763+
enabled = false,
764+
icon = '',
765+
show_count = true,
766+
},
767+
streak = {
768+
enabled = false,
769+
icon = '',
770+
show_days = true,
771+
},
772+
session_time = {
773+
enabled = false,
774+
icon = '',
775+
show_duration = true,
776+
format = 'short',
777+
},
778+
},
853779
},
854780
}
855781
})
856-
-- Result: 2h 34m 5 12/18 Lv.27 ████░░ ...
857-
```
858-
859-
#### Custom Style
860-
861-
```lua
862-
require('triforce.lualine').setup({
863-
level = {
864-
prefix = '', -- No prefix, just number
865-
bar = { chars = { filled = '', empty = '' }, length = 10 },
866-
show = { percent = true },
867-
},
868-
achievements = {
869-
icon = '', -- medal icon
870-
},
871-
streak = {
872-
icon = '', -- bolt icon
873-
},
874-
})
875-
876-
local triforce = require('triforce.lualine').components()
877-
-- Now all components use your custom config
878-
-- Result: 2h 34m 5 12/18 27 ●●●●●●●●●○ 90%
879782
```
880783

881784
---

0 commit comments

Comments
 (0)