summaryrefslogtreecommitdiffstats
path: root/.config/nvim/lua/plugins/lualine.lua
blob: c528b699c11ecb3888e5f0d719689e17790d4614 (plain)
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
return {
    "nvim-lualine/lualine.nvim",
    dependencies = {
        "nvim-tree/nvim-web-devicons"
    },
    config = function()
        local function lualine_spell()
            if vim.wo.spell then
                return "spell"
            else
                return
            end
        end

        local conditions = {
            spell_on = function ()
                return vim.wo.spell
            end,
            filetype_is_tex = function()
                return vim.bo.filetype == "tex"
            end
        }

        -- https://www.reddit.com/r/neovim/comments/u2uc4p/your_lualine_custom_features/i4muvp6/
        -- override 'encoding': don't display if encoding is utf-8.
        local encoding = function()
            local ret, _ = vim.bo.fenc:gsub("^utf%-8$", "")
            return ret
        end

        -- fileformat: don't display if &ff is unix.
        local fileformat = function()
            local ret, _ = vim.bo.fileformat:gsub("^unix$", "")
            return ret
        end

        require("lualine").setup({
            options = {
                icons_enabled = true,
                theme = "catppuccin",
                section_separators = { left = '', right = '' },
                component_separators = { left = '', right = '' },
            },
            sections = {
                lualine_a = {{'mode', fmt = string.lower}},
                lualine_b = {'branch',
                    {
                        'diff',
                        diff_color= {
                            added    = { fg = 'LightGreen' },
                            modified = { fg = 'LightBlue' },
                            removed  = { fg = 'LightRed' },
                        }
                    },
                    {
                        lualine_spell,
                        cond = conditions.spell_on,
                    }},
                lualine_c = {'filename'},
                lualine_x = {encoding, fileformat, 'filetype'},
                lualine_y = {'progress'},
                lualine_z = {
                    'location', {
                        'diagnostics',
                        sources = {'nvim_diagnostic'},
                        sections = {'error', 'warn', 'info', 'hint'},
                        symbols = {error = 'e', warn = 'w', info = 'i', hint = 'h'}
                    }
                }
            },
            inactive_sections = {
                lualine_a = {},
                lualine_b = {},
                lualine_c = {'filename'},
                lualine_x = {},
                lualine_y = {},
                lualine_z = {}
            },
            tabline = {},
            extensions = {}

        })
    end,
}