aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--init.lua175
1 files changed, 107 insertions, 68 deletions
diff --git a/init.lua b/init.lua
index f91aa0f..b42faf2 100644
--- a/init.lua
+++ b/init.lua
@@ -35,52 +35,69 @@ vim.opt.updatetime = 300
35vim.opt.timeoutlen = 500 35vim.opt.timeoutlen = 500
36 36
37-- -- Format on save if any attached LSP supports formatting 37-- -- Format on save if any attached LSP supports formatting
38vim.api.nvim_create_autocmd("BufWritePre", { 38vim.api.nvim_create_autocmd(
39 callback = function() 39 "BufWritePre",
40 local buf = vim.api.nvim_get_current_buf() 40 {
41 local clients = vim.lsp.get_clients({ bufnr = buf }) 41 callback = function()
42 local buf = vim.api.nvim_get_current_buf()
43 local clients = vim.lsp.get_clients({bufnr = buf})
42 44
43 for _, client in ipairs(clients) do 45 for _, client in ipairs(clients) do
44 if client.server_capabilities.documentFormattingProvider then 46 if client.server_capabilities.documentFormattingProvider then
45 vim.lsp.buf.format({ silent = true }) 47 vim.lsp.buf.format({silent = true})
46 return 48 return
49 end
47 end 50 end
51 -- No formatting-capable client: do nothing
48 end 52 end
49 -- No formatting-capable client: do nothing 53 }
50 end, 54)
51})
52
53 55
54local run_on_save = vim.api.nvim_create_augroup("RunPfOnSave", { clear = true }) 56local run_on_save = vim.api.nvim_create_augroup("RunPfOnSave", {clear = true})
55local formatters = { 57local formatters = {
56 { 58 {
57 patterns = { "*.js", "*.ts", "*.jsx", "*.json", "*.tsx", "*.css", "*.html", "*.yaml", "*.md", "*.svelte", "*.lua" }, 59 patterns = {
60 "*.js",
61 "*.ts",
62 "*.jsx",
63 "*.json",
64 "*.tsx",
65 "*.css",
66 "*.html",
67 "*.yaml",
68 "*.md",
69 "*.svelte",
70 "*.lua"
71 },
58 command = function(file) 72 command = function(file)
59 vim.fn.system({ "prettier", "--write", file }) 73 vim.fn.system({"prettier", "--write", file})
60 end 74 end
61 }, 75 },
62 { 76 {
63 patterns = { "*.tex" }, 77 patterns = {"*.tex"},
64 command = function(file) 78 command = function(file)
65 vim.fn.system({ "pdflatex", "--shell-escape", file }) 79 vim.fn.system({"pdflatex", "--shell-escape", file})
66 end 80 end
67 }, 81 },
68 { 82 {
69 patterns = { "*.c", "*.h" }, 83 patterns = {"*.c", "*.h"},
70 command = function(file) 84 command = function(file)
71 vim.fn.system({ "clang-format", "-i", file }) 85 vim.fn.system({"clang-format", "-i", file})
72 end 86 end
73 } 87 }
74} 88}
75for _, fmt in ipairs(formatters) do 89for _, fmt in ipairs(formatters) do
76 vim.api.nvim_create_autocmd("BufWritePost", { 90 vim.api.nvim_create_autocmd(
77 group = run_on_save, 91 "BufWritePost",
78 pattern = fmt.patterns, 92 {
79 callback = function(args) 93 group = run_on_save,
80 local filepath = args.match or args.file 94 pattern = fmt.patterns,
81 pcall(fmt.command, filepath) 95 callback = function(args)
82 end, 96 local filepath = args.match or args.file
83 }) 97 pcall(fmt.command, filepath)
98 end
99 }
100 )
84end 101end
85 102
86-- Auto-delete Netrw hidden buffers 103-- Auto-delete Netrw hidden buffers
@@ -107,20 +124,20 @@ function ToggleVExplorer()
107 else 124 else
108 vim.cmd("topleft " .. (vim.g.netrw_winsize or 30) .. "vsplit") 125 vim.cmd("topleft " .. (vim.g.netrw_winsize or 30) .. "vsplit")
109 vim.cmd("Explore") 126 vim.cmd("Explore")
110 vim.t.expl_buf_num = vim.fn.bufnr('%') 127 vim.t.expl_buf_num = vim.fn.bufnr("%")
111 end 128 end
112end 129end
113 130
114 local autopairs = { 131local autopairs = {
115 ["("] = ")", 132 ["("] = ")",
116 ["["] = "]", 133 ["["] = "]",
117 ["{"] = "}", 134 ["{"] = "}",
118 ["<"] = ">" 135 ["<"] = ">"
119 } 136}
120 137
121 for open, close in pairs(autopairs) do 138for open, close in pairs(autopairs) do
122 vim.api.nvim_set_keymap("i", open, open .. close .. "<Left>", {noremap = true, silent = true}) 139 vim.api.nvim_set_keymap("i", open, open .. close .. "<Left>", {noremap = true, silent = true})
123 end 140end
124 141
125function set_highlights() 142function set_highlights()
126 local highlights = { 143 local highlights = {
@@ -134,7 +151,6 @@ function set_highlights()
134 {"SignColumn", {bg = "none"}}, 151 {"SignColumn", {bg = "none"}},
135 {"StatusLine", {bg = "none", fg = "none"}}, 152 {"StatusLine", {bg = "none", fg = "none"}},
136 {"StatusLineNc", {bg = "none", fg = "none"}}, 153 {"StatusLineNc", {bg = "none", fg = "none"}},
137 {"NvimTreeWinSeparator", {fg = "none"}},
138 {"CursorColumn", {fg = "none"}}, 154 {"CursorColumn", {fg = "none"}},
139 {"CursorLine", {bg = "none"}}, 155 {"CursorLine", {bg = "none"}},
140 {"VertSplit", {bg = "none"}}, 156 {"VertSplit", {bg = "none"}},
@@ -162,20 +178,19 @@ function set_highlights()
162end 178end
163 179
164vim.cmd("colorscheme quiet") 180vim.cmd("colorscheme quiet")
165vim.api.nvim_set_hl(0, "Normal", { bg = "#000c18" })
166
167vim.o.background = "dark" 181vim.o.background = "dark"
182
168function color_mode() 183function color_mode()
169 if vim.o.background == "dark" then 184 if vim.o.background == "dark" then
170 vim.o.background = "light" 185 vim.o.background = "light"
171 vim.api.nvim_set_hl(0, "Normal", {bg = "none"}) 186 vim.cmd("colorscheme zellner")
172 else 187 else
173 vim.o.background = "dark" 188 vim.o.background = "dark"
189 vim.cmd("colorscheme quiet")
174 end 190 end
175 set_highlights() 191 set_highlights()
176end 192end
177 193
178
179local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" 194local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
180if not vim.loop.fs_stat(lazypath) then 195if not vim.loop.fs_stat(lazypath) then
181 vim.fn.system( 196 vim.fn.system(
@@ -211,7 +226,7 @@ require("lazy").setup(
211 auto_start = "shut-up", 226 auto_start = "shut-up",
212 display = { 227 display = {
213 icons = { 228 icons = {
214 mode="none" 229 mode = "none"
215 }, 230 },
216 ghost_text = { 231 ghost_text = {
217 enabled = false 232 enabled = false
@@ -223,12 +238,11 @@ require("lazy").setup(
223 } 238 }
224) 239)
225 240
226
227local lsp_servers = { 241local lsp_servers = {
228 clangd = { filetypes = { "c", "h" } }, 242 clangd = {filetypes = {"c", "h"}},
229 svelte = { filetypes = { "svelte" } }, 243 svelte = {filetypes = {"svelte"}},
230 ts_ls = { filetypes = { "typescript", "typescriptreact", "javascript", "javascriptreact" } }, 244 ts_ls = {filetypes = {"typescript", "typescriptreact", "javascript", "javascriptreact"}},
231 rust_analyzer = { filetypes = { "rust" } }, 245 rust_analyzer = {filetypes = {"rust"}}
232} 246}
233 247
234local function server_maps(opts) 248local function server_maps(opts)
@@ -237,17 +251,18 @@ end
237 251
238for server_name, config in pairs(lsp_servers) do 252for server_name, config in pairs(lsp_servers) do
239 require("lspconfig")[server_name].setup( 253 require("lspconfig")[server_name].setup(
240 coq.lsp_ensure_capabilities({ 254 coq.lsp_ensure_capabilities(
241 on_attach = function(client, bufnr) 255 {
242 server_maps({ buffer = bufnr }) 256 on_attach = function(client, bufnr)
243 end, 257 server_maps({buffer = bufnr})
244 filetypes = config.filetypes, 258 end,
245 settings = config.settings or {}, 259 filetypes = config.filetypes,
246 }) 260 settings = config.settings or {}
261 }
262 )
247 ) 263 )
248end 264end
249 265
250
251set_highlights() 266set_highlights()
252 267
253vim.g.mapleader = " " 268vim.g.mapleader = " "
@@ -263,20 +278,44 @@ vim.keymap.set("n", "k", "5k")
263vim.keymap.set("n", "<leader>f", "<cmd>FzfLua files<cr>") 278vim.keymap.set("n", "<leader>f", "<cmd>FzfLua files<cr>")
264vim.keymap.set("n", "<leader>F", "<cmd>FzfLua live_grep<cr>", {noremap = true, silent = true}) 279vim.keymap.set("n", "<leader>F", "<cmd>FzfLua live_grep<cr>", {noremap = true, silent = true})
265vim.keymap.set("n", "<leader>b", "<cmd>FzfLua buffers<cr>") 280vim.keymap.set("n", "<leader>b", "<cmd>FzfLua buffers<cr>")
266vim.keymap.set("n", "<leader>d", vim.lsp.buf.definition, {silent=true}) 281vim.keymap.set("n", "<leader>d", vim.lsp.buf.definition, {silent = true})
267vim.keymap.set("n", "<leader>df", function() vim.diagnostic.open_float() end, {silent=true}) 282vim.keymap.set(
268vim.keymap.set("n", "<leader>k", vim.lsp.buf.hover, {silent=true}) 283 "n",
269vim.keymap.set("n", "<leader>ca", function() vim.lsp.buf.code_action() end, {silent=true}) 284 "<leader>df",
285 function()
286 vim.diagnostic.open_float()
287 end,
288 {silent = true}
289)
290vim.keymap.set("n", "<leader>k", vim.lsp.buf.hover, {silent = true})
291vim.keymap.set(
292 "n",
293 "<leader>ca",
294 function()
295 vim.lsp.buf.code_action()
296 end,
297 {silent = true}
298)
270vim.keymap.set("n", "<leader>r", color_mode, {desc = "Change mode light/dark"}) 299vim.keymap.set("n", "<leader>r", color_mode, {desc = "Change mode light/dark"})
271vim.keymap.set("n", "<leader>t", function() 300vim.keymap.set(
272 vim.cmd("terminal") 301 "n",
273 vim.cmd("startinsert") 302 "<leader>t",
274end, {desc = "Open terminal in current window"}) 303 function()
304 vim.cmd("terminal")
305 vim.cmd("startinsert")
306 end,
307 {desc = "Open terminal in current window"}
308)
275 309
276vim.keymap.set("v", "J", ":m '>+1<CR>gv=gv") 310vim.keymap.set("v", "J", ":m '>+1<CR>gv=gv")
277vim.keymap.set("v", "K", ":m '<-2<CR>gv=gv") 311vim.keymap.set("v", "K", ":m '<-2<CR>gv=gv")
278 312
279vim.keymap.set("t", "<Esc>", function() 313vim.keymap.set(
280 vim.cmd([[stopinsert]]) 314 "t",
281 vim.cmd([[b#]]) 315 "<Esc>",
282end, {noremap = true, silent = true}) 316 function()
317 vim.cmd([[stopinsert]])
318 vim.cmd([[b#]])
319 end,
320 {noremap = true, silent = true}
321)