summaryrefslogtreecommitdiff
path: root/plugin/12_autocommands.lua
blob: 829ed97b435df4cddc61da791bf7aaf8a134ec9b (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
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
local au = vim.api.nvim_create_autocmd
local group = vim.api.nvim_create_augroup("my_events", {})

au("TextYankPost", {
    group = group,
    callback = function() vim.hl.on_yank() end,
})

au("TermOpen", {
    group = group,
    command = "setl stc= nonumber | startinsert!",
})

au("BufWritePre", {
    group = group,
    callback = function()
        local view = vim.fn.winsaveview()
        vim.cmd([[silent! keepjumps keeppatterns %s/\s\+$//e]])
        vim.fn.winrestview(view)
    end,
    desc = "remove tail space",
})

au("LspAttach", {
    group = group,
    command = "setl signcolumn=yes | redrawstatus",
    desc = "add sign column when LSP is attached and redraw status",
})

au("LspDetach", {
    group = group,
    command = "redrawstatus",
    desc = "redraw status when LSP is dettached",
})

au("FileType", {
    group = group,
    pattern = "fugitive,git,help,man,qf,query,scratch",
    command = 'execute "nnoremap <buffer> q <Cmd>quit<CR>"',
    desc = "Close certain windows by pressing q",
})

au("BufWritePost", {
    group = group,
    desc = "Run shortcuts after updating bookmark files",
    pattern = { "bm-dirs", "bm-files" },
    command = "!shortcuts",
})

au("User", {
    group = group,
    pattern = "VimtexEventViewReverse",
    desc = "VimTeX: Center view on inverse search",
    callback = function()
        vim.cmd([[ normal! zMzvzz ]])
        -- If I want to turn on blink again:
        -- vim.fn["vimtex#ui#blink"]()
    end,
})

au("InsertEnter", {
    group = group,
    desc = "Enable blink.cmp",
    once = true,
    callback = function()
        -- vim.cmd("packadd nvim-cmp")
        -- require("mo.cmp")
        vim.cmd("packadd blink.cmp")
        require("mo.blink").setup()
    end,
})

local function startuptime()
    if vim.g.strive_startup_time ~= nil then return end
    vim.g.strive_startup_time = 0
    local usage = vim.uv.getrusage()
    if usage then
        -- Calculate time in milliseconds (user + system time)
        local user_time = (usage.utime.sec * 1000) + (usage.utime.usec / 1000)
        local sys_time = (usage.stime.sec * 1000) + (usage.stime.usec / 1000)
        vim.g.nvim_startup_time = user_time + sys_time
    end
end

local function show_info()
    local plugins = vim.pack.get()
    local loaded = vim.iter(plugins)
        :map(function(p) return p.active end)
        :totable()
    local startup_time = vim.g.nvim_startup_time or "0"
    local plugin_info_str = string.format(
        "load %d/%d plugins in %sms",
        #loaded or 0,
        #plugins or 0,
        startup_time
    )
    vim.notify(plugin_info_str, vim.log.levels.INFO)
end

au("UIEnter", {
    group = group,
    desc = "Setup Diagnostics and load nohlsearch and undotree package",
    once = true,
    callback = function()
        vim.schedule(function()
            -- startuptime()
            vim.diagnostic.config({
                virtual_text = {
                    virt_text_pos = "eol_right_align",
                    current_line = true,
                    prefix = function(d, _, _)
                        -- stylua: ignore start
                        --- @diagnostic disable-next-line: undefined-field, redundant-return-value
                        return " ■", "DiagnosticPrefix" .. vim.diagnostic.severity[d.severity]
                        -- stylua: ignore end
                    end,
                },
                signs = {
                    text = { "●", "●", "●", "●" },
                    numhl = {
                        "DiagnosticError",
                        "DiagnosticWarn",
                        "DiagnosticInfo",
                        "DiagnosticHint",
                    },
                },
                severity_sort = true,
            })

            vim.cmd([[packadd nohlsearch]])
            vim.cmd([[packadd nvim.undotree]])
            -- show_info()
        end)
    end,
})