summaryrefslogtreecommitdiff
path: root/nvim/lua/autocommands.lua
blob: efdace82724784a376dce34e04dfbad26dff3291 (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
vim.api.nvim_create_autocmd({ "BufWritePre" }, {
	pattern = "*.go",
	callback = function()
		local params = vim.lsp.util.make_range_params(nil, vim.lsp.util._get_offset_encoding())
		params.context = { only = { "source.organizeImports" } }
		local result = vim.lsp.buf_request_sync(0, "textDocument/codeAction", params, 3000)
		for _, res in pairs(result or {}) do
			for _, r in pairs(res.result or {}) do
				if r.edit then
					vim.lsp.util.apply_workspace_edit(r.edit, vim.lsp.util._get_offset_encoding())
				else
					vim.lsp.buf.execute_command(r.command)
				end
			end
		end
	end,
})

vim.api.nvim_create_autocmd({ "BufWritePre" }, {
	pattern = "*.go",
	callback = function()
		vim.lsp.buf.format(nil, 3000)
	end,
})

local TrimWhiteSpaceGrp = vim.api.nvim_create_augroup("TrimWhiteSpaceGrp", {})
vim.api.nvim_create_autocmd("BufWritePre", {
	group = TrimWhiteSpaceGrp,
	pattern = "*",
	command = "%s/\\s\\+$//e",
})

local YankHighlightGrp = vim.api.nvim_create_augroup("YankHighlightGrp", {})
vim.api.nvim_create_autocmd("TextYankPost", {
	group = YankHighlightGrp,
	pattern = "*",
	callback = function()
		vim.highlight.on_yank({
			higroup = "IncSearch",
			timeout = 40,
		})
	end,
})

vim.api.nvim_create_autocmd({ "BufReadPost", "FileReadPost" }, {
	pattern = "*",
	callback = function()
		vim.cmd("normal! zR")
	end,
})

vim.api.nvim_create_autocmd("BufEnter", {
	pattern = "*",
	callback = function()
		vim.defer_fn(function()
			vim.cmd("normal! zR")
		end, 100)
	end,
})

vim.api.nvim_create_autocmd("BufWinEnter", {
	pattern = "*",
	callback = function()
		vim.schedule(function()
			vim.cmd("normal! zR")
		end)
	end,
})

local treeapi = require("nvim-tree.api")

vim.api.nvim_create_autocmd("BufEnter", {
	callback = function()
		if vim.bo.filetype == "NvimTree" or vim.fn.expand("%") == "" then
			return
		end
		vim.schedule(function()
			treeapi.tree.find_file({
				update_root = false,
				focus = false,
			})
		end)
	end,
})

-- vim.api.nvim_create_autocmd("InsertEnter", {
-- 	pattern = "*",
-- 	command = "set norelativenumber",
-- })
--
-- vim.api.nvim_create_autocmd("InsertLeave", {
-- 	pattern = "*",
-- 	command = "set relativenumber",
-- })