aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--init.lua153
-rw-r--r--lazy-lock.json9
2 files changed, 83 insertions, 79 deletions
diff --git a/init.lua b/init.lua
index 389f8ab..f91aa0f 100644
--- a/init.lua
+++ b/init.lua
@@ -19,48 +19,69 @@ vim.opt.smartindent = true
19vim.opt.ruler = false 19vim.opt.ruler = false
20vim.opt.wrap = false 20vim.opt.wrap = false
21vim.opt.swapfile = false 21vim.opt.swapfile = false
22vim.opt.wildmenu = true
23vim.opt.path:append("**")
22vim.opt.hlsearch = true 24vim.opt.hlsearch = true
23vim.opt.incsearch = true 25vim.opt.incsearch = true
24vim.opt.updatetime = 50 26vim.opt.updatetime = 50
25vim.opt.laststatus = 0 27vim.opt.laststatus = 0
28-- vim.opt.termguicolors = true
26vim.opt.signcolumn = "number" 29vim.opt.signcolumn = "number"
27vim.opt.clipboard = "unnamedplus" 30vim.opt.clipboard = "unnamedplus"
28vim.opt.termguicolors = true
29vim.opt.fillchars = "eob: " 31vim.opt.fillchars = "eob: "
30vim.opt.autoindent = true 32vim.opt.autoindent = true
31vim.opt.lazyredraw = false 33vim.opt.lazyredraw = false
32vim.opt.updatetime = 300 34vim.opt.updatetime = 300
33vim.opt.timeoutlen = 500 35vim.opt.timeoutlen = 500
34 36
37-- -- Format on save if any attached LSP supports formatting
38vim.api.nvim_create_autocmd("BufWritePre", {
39 callback = function()
40 local buf = vim.api.nvim_get_current_buf()
41 local clients = vim.lsp.get_clients({ bufnr = buf })
35 42
43 for _, client in ipairs(clients) do
44 if client.server_capabilities.documentFormattingProvider then
45 vim.lsp.buf.format({ silent = true })
46 return
47 end
48 end
49 -- No formatting-capable client: do nothing
50 end,
51})
36 52
37-- Format on save 53
38vim.api.nvim_create_autocmd( 54local run_on_save = vim.api.nvim_create_augroup("RunPfOnSave", { clear = true })
39 "BufWritePre", 55local formatters = {
40 { 56 {
41 callback = function() 57 patterns = { "*.js", "*.ts", "*.jsx", "*.json", "*.tsx", "*.css", "*.html", "*.yaml", "*.md", "*.svelte", "*.lua" },
42 vim.lsp.buf.format({silent = true}) 58 command = function(file)
59 vim.fn.system({ "prettier", "--write", file })
43 end 60 end
44 } 61 },
45)
46
47vim.api.nvim_create_augroup("RunPfOnSave", {clear = true})
48vim.api.nvim_create_autocmd(
49 "BufWritePost",
50 { 62 {
51 group = "RunPfOnSave", 63 patterns = { "*.tex" },
52 pattern = {"*.js", "*.ts", "*.jsx", "*.json", "*.tsx", "*.css", "*.html", "*.yaml", "*.md", "*.svelte, *.lua"}, 64 command = function(file)
53 command = "silent! !prettier --write %" 65 vim.fn.system({ "pdflatex", "--shell-escape", file })
54 } 66 end
55) 67 },
56vim.api.nvim_create_autocmd(
57 "BufWritePost",
58 { 68 {
59 group = "RunPfOnSave", 69 patterns = { "*.c", "*.h" },
60 pattern = "*.tex", 70 command = function(file)
61 command = "silent! !pdflatex --shell-escape %" 71 vim.fn.system({ "clang-format", "-i", file })
72 end
62 } 73 }
63) 74}
75for _, fmt in ipairs(formatters) do
76 vim.api.nvim_create_autocmd("BufWritePost", {
77 group = run_on_save,
78 pattern = fmt.patterns,
79 callback = function(args)
80 local filepath = args.match or args.file
81 pcall(fmt.command, filepath)
82 end,
83 })
84end
64 85
65-- Auto-delete Netrw hidden buffers 86-- Auto-delete Netrw hidden buffers
66vim.api.nvim_create_augroup("AutoDeleteNetrwHiddenBuffers", {clear = true}) 87vim.api.nvim_create_augroup("AutoDeleteNetrwHiddenBuffers", {clear = true})
@@ -76,31 +97,20 @@ vim.api.nvim_create_autocmd(
76 } 97 }
77) 98)
78 99
79-- Toggle VExplorer
80function ToggleVExplorer() 100function ToggleVExplorer()
81 if vim.t.expl_buf_num then 101 local expl_buf = vim.t.expl_buf_num
82 local expl_win_num = vim.fn.bufwinnr(vim.t.expl_buf_num) 102 local expl_win = expl_buf and vim.fn.bufwinnr(expl_buf) or -1
83 if expl_win_num ~= -1 then 103
84 if vim.fn.winnr('$') > 1 then 104 if expl_win ~= -1 then
85 local cur_win_id = vim.fn.win_getid() 105 vim.cmd(expl_win .. "wincmd c")
86 vim.cmd(expl_win_num .. "windo close")
87 local prev_win_num = vim.fn.win_id2win(cur_win_id)
88 if prev_win_num ~= 0 then
89 vim.cmd(prev_win_num .. "wincmd w")
90 end
91 else
92 vim.cmd("enew")
93 end
94 end
95 vim.t.expl_buf_num = nil 106 vim.t.expl_buf_num = nil
96 else 107 else
97 vim.cmd("topleft " .. vim.g.netrw_winsize .. "vsplit") 108 vim.cmd("topleft " .. (vim.g.netrw_winsize or 30) .. "vsplit")
98 vim.cmd("Explore") 109 vim.cmd("Explore")
99 vim.t.expl_buf_num = vim.fn.bufnr("%") 110 vim.t.expl_buf_num = vim.fn.bufnr('%')
100 vim.cmd("wincmd h")
101 end 111 end
102end 112end
103local function setup_autopairs() 113
104 local autopairs = { 114 local autopairs = {
105 ["("] = ")", 115 ["("] = ")",
106 ["["] = "]", 116 ["["] = "]",
@@ -111,7 +121,6 @@ local function setup_autopairs()
111 for open, close in pairs(autopairs) do 121 for open, close in pairs(autopairs) do
112 vim.api.nvim_set_keymap("i", open, open .. close .. "<Left>", {noremap = true, silent = true}) 122 vim.api.nvim_set_keymap("i", open, open .. close .. "<Left>", {noremap = true, silent = true})
113 end 123 end
114end
115 124
116function set_highlights() 125function set_highlights()
117 local highlights = { 126 local highlights = {
@@ -152,7 +161,7 @@ function set_highlights()
152 end 161 end
153end 162end
154 163
155vim.cmd("colorscheme default") 164vim.cmd("colorscheme quiet")
156vim.api.nvim_set_hl(0, "Normal", { bg = "#000c18" }) 165vim.api.nvim_set_hl(0, "Normal", { bg = "#000c18" })
157 166
158vim.o.background = "dark" 167vim.o.background = "dark"
@@ -166,7 +175,6 @@ function color_mode()
166 set_highlights() 175 set_highlights()
167end 176end
168 177
169setup_autopairs()
170 178
171local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" 179local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
172if not vim.loop.fs_stat(lazypath) then 180if not vim.loop.fs_stat(lazypath) then
@@ -191,7 +199,6 @@ require("lazy").setup(
191 opts = {} 199 opts = {}
192 }, 200 },
193 {"airblade/vim-gitgutter"}, 201 {"airblade/vim-gitgutter"},
194 {"norcalli/nvim-colorizer.lua"},
195 { 202 {
196 "neovim/nvim-lspconfig", 203 "neovim/nvim-lspconfig",
197 lazy = false, 204 lazy = false,
@@ -201,51 +208,49 @@ require("lazy").setup(
201 }, 208 },
202 init = function() 209 init = function()
203 vim.g.coq_settings = { 210 vim.g.coq_settings = {
204 auto_start = "shut-up" 211 auto_start = "shut-up",
212 display = {
213 icons = {
214 mode="none"
215 },
216 ghost_text = {
217 enabled = false
218 }
219 }
205 } 220 }
206 end 221 end
207 } 222 }
208 } 223 }
209) 224)
210 225
211require("colorizer").setup()
212
213vim.api.nvim_create_autocmd(
214 "BufWritePre",
215 {
216 callback = function()
217 vim.lsp.buf.format()
218 end
219 }
220)
221
222 226
223local lsp_servers = { 227local lsp_servers = {
224 clangd = { filetypes = {"c", "cpp", "objc", "objcpp"} }, 228 clangd = { filetypes = { "c", "h" } },
225 svelte = { filetypes = {"svelte"} }, 229 svelte = { filetypes = { "svelte" } },
226 ts_ls = { filetypes = {"typescript", "typescriptreact", "javascript", "javascriptreact"} }, 230 ts_ls = { filetypes = { "typescript", "typescriptreact", "javascript", "javascriptreact" } },
227 rust_analyzer = { filetypes = {"rust"} } 231 rust_analyzer = { filetypes = { "rust" } },
228} 232}
229 233
230local server_maps = function(opts) 234local function server_maps(opts)
235 local buf = opts.buffer
231end 236end
232 237
233for lsp, settings in pairs(lsp_servers) do 238for server_name, config in pairs(lsp_servers) do
234 require("lspconfig")[lsp].setup( 239 require("lspconfig")[server_name].setup(
235 coq.lsp_ensure_capabilities({ 240 coq.lsp_ensure_capabilities({
236 on_attach = function(_, buffer) 241 on_attach = function(client, bufnr)
237 server_maps({buffer = buffer}) 242 server_maps({ buffer = bufnr })
238 end, 243 end,
239 settings = settings 244 filetypes = config.filetypes,
245 settings = config.settings or {},
240 }) 246 })
241 ) 247 )
242end 248end
243 249
250
244set_highlights() 251set_highlights()
245 252
246vim.g.mapleader = " " 253vim.g.mapleader = " "
247
248
249vim.keymap.set("n", "<leader>e", ToggleVExplorer, {desc = "Toggle VExplorer"}) 254vim.keymap.set("n", "<leader>e", ToggleVExplorer, {desc = "Toggle VExplorer"})
250vim.keymap.set("n", "<leader>z", [[:%s/\<<C-r><C-w>\>/<C-r><C-w>/gI<Left><Left><Left>]]) 255vim.keymap.set("n", "<leader>z", [[:%s/\<<C-r><C-w>\>/<C-r><C-w>/gI<Left><Left><Left>]])
251vim.keymap.set("n", "<leader>a", "ggVG") 256vim.keymap.set("n", "<leader>a", "ggVG")
@@ -258,10 +263,10 @@ vim.keymap.set("n", "k", "5k")
258vim.keymap.set("n", "<leader>f", "<cmd>FzfLua files<cr>") 263vim.keymap.set("n", "<leader>f", "<cmd>FzfLua files<cr>")
259vim.keymap.set("n", "<leader>F", "<cmd>FzfLua live_grep<cr>", {noremap = true, silent = true}) 264vim.keymap.set("n", "<leader>F", "<cmd>FzfLua live_grep<cr>", {noremap = true, silent = true})
260vim.keymap.set("n", "<leader>b", "<cmd>FzfLua buffers<cr>") 265vim.keymap.set("n", "<leader>b", "<cmd>FzfLua buffers<cr>")
261vim.keymap.set("n", "<leader>d", vim.lsp.buf.definition, opts) 266vim.keymap.set("n", "<leader>d", vim.lsp.buf.definition, {silent=true})
262vim.keymap.set("n", "<leader>df", function() vim.diagnostic.open_float() end, opts) 267vim.keymap.set("n", "<leader>df", function() vim.diagnostic.open_float() end, {silent=true})
263vim.keymap.set("n", "<leader>k", vim.lsp.buf.hover, opts) 268vim.keymap.set("n", "<leader>k", vim.lsp.buf.hover, {silent=true})
264vim.keymap.set("n", "<leader>ca", function() vim.lsp.buf.code_action() end, opts) 269vim.keymap.set("n", "<leader>ca", function() vim.lsp.buf.code_action() end, {silent=true})
265vim.keymap.set("n", "<leader>r", color_mode, {desc = "Change mode light/dark"}) 270vim.keymap.set("n", "<leader>r", color_mode, {desc = "Change mode light/dark"})
266vim.keymap.set("n", "<leader>t", function() 271vim.keymap.set("n", "<leader>t", function()
267 vim.cmd("terminal") 272 vim.cmd("terminal")
diff --git a/lazy-lock.json b/lazy-lock.json
index 336f4b2..1c6069e 100644
--- a/lazy-lock.json
+++ b/lazy-lock.json
@@ -1,9 +1,8 @@
1{ 1{
2 "coq.artifacts": { "branch": "artifacts", "commit": "ef5f21d638ccc456cfa5b8d0ab37093cefe48c8b" }, 2 "coq.artifacts": { "branch": "artifacts", "commit": "ef5f21d638ccc456cfa5b8d0ab37093cefe48c8b" },
3 "coq_nvim": { "branch": "coq", "commit": "d83bc18d044cfcd65e91dc49740a353546bc143b" }, 3 "coq_nvim": { "branch": "coq", "commit": "2732cfa52fffd32d535c782f418da6fb8bf331ea" },
4 "fzf-lua": { "branch": "main", "commit": "47b85a25c0c0b2c20b4e75199ed01bb71e7814f5" }, 4 "fzf-lua": { "branch": "main", "commit": "ce5a5fa2902933e7b4563ca78210254169463cb6" },
5 "lazy.nvim": { "branch": "main", "commit": "6c3bda4aca61a13a9c63f1c1d1b16b9d3be90d7a" }, 5 "lazy.nvim": { "branch": "main", "commit": "6c3bda4aca61a13a9c63f1c1d1b16b9d3be90d7a" },
6 "nvim-colorizer.lua": { "branch": "master", "commit": "a065833f35a3a7cc3ef137ac88b5381da2ba302e" }, 6 "nvim-lspconfig": { "branch": "master", "commit": "c8b90ae5cbe21d547b342b05c9266dcb8ca0de8f" },
7 "nvim-lspconfig": { "branch": "master", "commit": "94dda50b2d9a29d0b76562a9027029538840e2d7" }, 7 "vim-gitgutter": { "branch": "main", "commit": "488c0555e47e2aabe273c635f7dd233e985311a6" }
8 "vim-gitgutter": { "branch": "main", "commit": "6620e5fbbe6a28de0bfed081f5bd2767023b7eea" }
9} 8}