diff options
Diffstat (limited to '')
| -rw-r--r-- | init.lua | 153 | ||||
| -rw-r--r-- | lazy-lock.json | 9 |
2 files changed, 83 insertions, 79 deletions
| @@ -19,48 +19,69 @@ vim.opt.smartindent = true | |||
| 19 | vim.opt.ruler = false | 19 | vim.opt.ruler = false |
| 20 | vim.opt.wrap = false | 20 | vim.opt.wrap = false |
| 21 | vim.opt.swapfile = false | 21 | vim.opt.swapfile = false |
| 22 | vim.opt.wildmenu = true | ||
| 23 | vim.opt.path:append("**") | ||
| 22 | vim.opt.hlsearch = true | 24 | vim.opt.hlsearch = true |
| 23 | vim.opt.incsearch = true | 25 | vim.opt.incsearch = true |
| 24 | vim.opt.updatetime = 50 | 26 | vim.opt.updatetime = 50 |
| 25 | vim.opt.laststatus = 0 | 27 | vim.opt.laststatus = 0 |
| 28 | -- vim.opt.termguicolors = true | ||
| 26 | vim.opt.signcolumn = "number" | 29 | vim.opt.signcolumn = "number" |
| 27 | vim.opt.clipboard = "unnamedplus" | 30 | vim.opt.clipboard = "unnamedplus" |
| 28 | vim.opt.termguicolors = true | ||
| 29 | vim.opt.fillchars = "eob: " | 31 | vim.opt.fillchars = "eob: " |
| 30 | vim.opt.autoindent = true | 32 | vim.opt.autoindent = true |
| 31 | vim.opt.lazyredraw = false | 33 | vim.opt.lazyredraw = false |
| 32 | vim.opt.updatetime = 300 | 34 | vim.opt.updatetime = 300 |
| 33 | vim.opt.timeoutlen = 500 | 35 | vim.opt.timeoutlen = 500 |
| 34 | 36 | ||
| 37 | -- -- Format on save if any attached LSP supports formatting | ||
| 38 | vim.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 | |
| 38 | vim.api.nvim_create_autocmd( | 54 | local run_on_save = vim.api.nvim_create_augroup("RunPfOnSave", { clear = true }) |
| 39 | "BufWritePre", | 55 | local 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 | |||
| 47 | vim.api.nvim_create_augroup("RunPfOnSave", {clear = true}) | ||
| 48 | vim.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 | }, |
| 56 | vim.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 | } |
| 75 | for _, 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 | }) | ||
| 84 | end | ||
| 64 | 85 | ||
| 65 | -- Auto-delete Netrw hidden buffers | 86 | -- Auto-delete Netrw hidden buffers |
| 66 | vim.api.nvim_create_augroup("AutoDeleteNetrwHiddenBuffers", {clear = true}) | 87 | vim.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 | ||
| 80 | function ToggleVExplorer() | 100 | function 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 |
| 102 | end | 112 | end |
| 103 | local 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 |
| 114 | end | ||
| 115 | 124 | ||
| 116 | function set_highlights() | 125 | function set_highlights() |
| 117 | local highlights = { | 126 | local highlights = { |
| @@ -152,7 +161,7 @@ function set_highlights() | |||
| 152 | end | 161 | end |
| 153 | end | 162 | end |
| 154 | 163 | ||
| 155 | vim.cmd("colorscheme default") | 164 | vim.cmd("colorscheme quiet") |
| 156 | vim.api.nvim_set_hl(0, "Normal", { bg = "#000c18" }) | 165 | vim.api.nvim_set_hl(0, "Normal", { bg = "#000c18" }) |
| 157 | 166 | ||
| 158 | vim.o.background = "dark" | 167 | vim.o.background = "dark" |
| @@ -166,7 +175,6 @@ function color_mode() | |||
| 166 | set_highlights() | 175 | set_highlights() |
| 167 | end | 176 | end |
| 168 | 177 | ||
| 169 | setup_autopairs() | ||
| 170 | 178 | ||
| 171 | local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" | 179 | local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" |
| 172 | if not vim.loop.fs_stat(lazypath) then | 180 | if 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 | ||
| 211 | require("colorizer").setup() | ||
| 212 | |||
| 213 | vim.api.nvim_create_autocmd( | ||
| 214 | "BufWritePre", | ||
| 215 | { | ||
| 216 | callback = function() | ||
| 217 | vim.lsp.buf.format() | ||
| 218 | end | ||
| 219 | } | ||
| 220 | ) | ||
| 221 | |||
| 222 | 226 | ||
| 223 | local lsp_servers = { | 227 | local 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 | ||
| 230 | local server_maps = function(opts) | 234 | local function server_maps(opts) |
| 235 | local buf = opts.buffer | ||
| 231 | end | 236 | end |
| 232 | 237 | ||
| 233 | for lsp, settings in pairs(lsp_servers) do | 238 | for 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 | ) |
| 242 | end | 248 | end |
| 243 | 249 | ||
| 250 | |||
| 244 | set_highlights() | 251 | set_highlights() |
| 245 | 252 | ||
| 246 | vim.g.mapleader = " " | 253 | vim.g.mapleader = " " |
| 247 | |||
| 248 | |||
| 249 | vim.keymap.set("n", "<leader>e", ToggleVExplorer, {desc = "Toggle VExplorer"}) | 254 | vim.keymap.set("n", "<leader>e", ToggleVExplorer, {desc = "Toggle VExplorer"}) |
| 250 | vim.keymap.set("n", "<leader>z", [[:%s/\<<C-r><C-w>\>/<C-r><C-w>/gI<Left><Left><Left>]]) | 255 | vim.keymap.set("n", "<leader>z", [[:%s/\<<C-r><C-w>\>/<C-r><C-w>/gI<Left><Left><Left>]]) |
| 251 | vim.keymap.set("n", "<leader>a", "ggVG") | 256 | vim.keymap.set("n", "<leader>a", "ggVG") |
| @@ -258,10 +263,10 @@ vim.keymap.set("n", "k", "5k") | |||
| 258 | vim.keymap.set("n", "<leader>f", "<cmd>FzfLua files<cr>") | 263 | vim.keymap.set("n", "<leader>f", "<cmd>FzfLua files<cr>") |
| 259 | vim.keymap.set("n", "<leader>F", "<cmd>FzfLua live_grep<cr>", {noremap = true, silent = true}) | 264 | vim.keymap.set("n", "<leader>F", "<cmd>FzfLua live_grep<cr>", {noremap = true, silent = true}) |
| 260 | vim.keymap.set("n", "<leader>b", "<cmd>FzfLua buffers<cr>") | 265 | vim.keymap.set("n", "<leader>b", "<cmd>FzfLua buffers<cr>") |
| 261 | vim.keymap.set("n", "<leader>d", vim.lsp.buf.definition, opts) | 266 | vim.keymap.set("n", "<leader>d", vim.lsp.buf.definition, {silent=true}) |
| 262 | vim.keymap.set("n", "<leader>df", function() vim.diagnostic.open_float() end, opts) | 267 | vim.keymap.set("n", "<leader>df", function() vim.diagnostic.open_float() end, {silent=true}) |
| 263 | vim.keymap.set("n", "<leader>k", vim.lsp.buf.hover, opts) | 268 | vim.keymap.set("n", "<leader>k", vim.lsp.buf.hover, {silent=true}) |
| 264 | vim.keymap.set("n", "<leader>ca", function() vim.lsp.buf.code_action() end, opts) | 269 | vim.keymap.set("n", "<leader>ca", function() vim.lsp.buf.code_action() end, {silent=true}) |
| 265 | vim.keymap.set("n", "<leader>r", color_mode, {desc = "Change mode light/dark"}) | 270 | vim.keymap.set("n", "<leader>r", color_mode, {desc = "Change mode light/dark"}) |
| 266 | vim.keymap.set("n", "<leader>t", function() | 271 | vim.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 | } |
