diff options
| author | Filip Wandzio <contact@philw.dev> | 2025-10-30 19:45:37 +0100 |
|---|---|---|
| committer | Filip Wandzio <contact@philw.dev> | 2025-10-30 19:45:37 +0100 |
| commit | b9255a95e280ff1a23aa01689e5261ed205cf18f (patch) | |
| tree | aa030f5373e6dd8d4f74eb9d32bb89e86ac94254 /init.lua | |
| parent | 1cebfd8c89a469abc06420293f879427337a138e (diff) | |
| download | neovim-b9255a95e280ff1a23aa01689e5261ed205cf18f.tar.gz neovim-b9255a95e280ff1a23aa01689e5261ed205cf18f.zip | |
Signed-off-by: Filip Wandzio <contact@philw.dev>
Diffstat (limited to 'init.lua')
| -rw-r--r-- | init.lua | 373 |
1 files changed, 135 insertions, 238 deletions
| @@ -1,6 +1,7 @@ | |||
| 1 | --@diagnostic disable: undefined-global, | 1 | --@diagnostic disable: undefined-global |
| 2 | vim.loader.enable() | 2 | vim.loader.enable() |
| 3 | 3 | ||
| 4 | |||
| 4 | vim.g.netrw_banner = 0 | 5 | vim.g.netrw_banner = 0 |
| 5 | vim.g.netrw_liststyle = 3 | 6 | vim.g.netrw_liststyle = 3 |
| 6 | vim.g.netrw_altv = 0 | 7 | vim.g.netrw_altv = 0 |
| @@ -25,7 +26,6 @@ vim.opt.hlsearch = true | |||
| 25 | vim.opt.incsearch = true | 26 | vim.opt.incsearch = true |
| 26 | vim.opt.updatetime = 50 | 27 | vim.opt.updatetime = 50 |
| 27 | vim.opt.laststatus = 0 | 28 | vim.opt.laststatus = 0 |
| 28 | -- vim.opt.termguicolors = true | ||
| 29 | vim.opt.signcolumn = "number" | 29 | vim.opt.signcolumn = "number" |
| 30 | vim.opt.clipboard = "unnamedplus" | 30 | vim.opt.clipboard = "unnamedplus" |
| 31 | vim.opt.fillchars = "eob: " | 31 | vim.opt.fillchars = "eob: " |
| @@ -34,90 +34,44 @@ vim.opt.lazyredraw = false | |||
| 34 | vim.opt.updatetime = 300 | 34 | vim.opt.updatetime = 300 |
| 35 | vim.opt.timeoutlen = 500 | 35 | vim.opt.timeoutlen = 500 |
| 36 | 36 | ||
| 37 | -- -- Format on save if any attached LSP supports formatting | 37 | vim.api.nvim_create_autocmd("BufWritePre", { |
| 38 | vim.api.nvim_create_autocmd( | 38 | callback = function() |
| 39 | "BufWritePre", | 39 | local buf = vim.api.nvim_get_current_buf() |
| 40 | { | 40 | local clients = vim.lsp.get_clients({bufnr = buf}) |
| 41 | callback = function() | 41 | for _, client in ipairs(clients) do |
| 42 | local buf = vim.api.nvim_get_current_buf() | 42 | if client.server_capabilities.documentFormattingProvider then |
| 43 | local clients = vim.lsp.get_clients({bufnr = buf}) | 43 | vim.lsp.buf.format({async = false}) |
| 44 | 44 | return | |
| 45 | for _, client in ipairs(clients) do | ||
| 46 | if client.server_capabilities.documentFormattingProvider then | ||
| 47 | vim.lsp.buf.format({silent = true}) | ||
| 48 | return | ||
| 49 | end | ||
| 50 | end | 45 | end |
| 51 | -- No formatting-capable client: do nothing | ||
| 52 | end | 46 | end |
| 53 | } | 47 | end |
| 54 | ) | 48 | }) |
| 55 | 49 | ||
| 56 | local run_on_save = vim.api.nvim_create_augroup("RunPfOnSave", {clear = true}) | 50 | local run_on_save = vim.api.nvim_create_augroup("RunPfOnSave", {clear = true}) |
| 57 | local formatters = { | 51 | local formatters = { |
| 58 | { | 52 | { |
| 59 | patterns = { | 53 | patterns = {"*.js","*.ts","*.jsx","*.json","*.tsx","*.css","*.html","*.yaml","*.md","*.svelte","*.lua"}, |
| 60 | "*.js", | 54 | command = function(file) vim.fn.system({"prettier", "--write", file}) end |
| 61 | "*.ts", | ||
| 62 | "*.jsx", | ||
| 63 | "*.json", | ||
| 64 | "*.tsx", | ||
| 65 | "*.css", | ||
| 66 | "*.html", | ||
| 67 | "*.yaml", | ||
| 68 | "*.md", | ||
| 69 | "*.svelte", | ||
| 70 | "*.lua" | ||
| 71 | }, | ||
| 72 | command = function(file) | ||
| 73 | vim.fn.system({"prettier", "--write", file}) | ||
| 74 | end | ||
| 75 | }, | 55 | }, |
| 76 | { | 56 | {patterns = {"*.tex"}, command = function(file) vim.fn.system({"pdflatex", "--shell-escape", file}) end}, |
| 77 | patterns = {"*.tex"}, | 57 | {patterns = {"*.c","*.h"}, command = function(file) vim.fn.system({"clang-format", "-i", file}) end} |
| 78 | command = function(file) | ||
| 79 | vim.fn.system({"pdflatex", "--shell-escape", file}) | ||
| 80 | end | ||
| 81 | }, | ||
| 82 | { | ||
| 83 | patterns = {"*.c", "*.h"}, | ||
| 84 | command = function(file) | ||
| 85 | vim.fn.system({"clang-format", "-i", file}) | ||
| 86 | end | ||
| 87 | } | ||
| 88 | } | 58 | } |
| 89 | for _, fmt in ipairs(formatters) do | 59 | for _, fmt in ipairs(formatters) do |
| 90 | vim.api.nvim_create_autocmd( | 60 | vim.api.nvim_create_autocmd("BufWritePost", { |
| 91 | "BufWritePost", | 61 | group = run_on_save, pattern = fmt.patterns, |
| 92 | { | 62 | callback = function(args) pcall(fmt.command, args.match or args.file) end |
| 93 | group = run_on_save, | 63 | }) |
| 94 | pattern = fmt.patterns, | ||
| 95 | callback = function(args) | ||
| 96 | local filepath = args.match or args.file | ||
| 97 | pcall(fmt.command, filepath) | ||
| 98 | end | ||
| 99 | } | ||
| 100 | ) | ||
| 101 | end | 64 | end |
| 102 | 65 | ||
| 103 | -- Auto-delete Netrw hidden buffers | ||
| 104 | vim.api.nvim_create_augroup("AutoDeleteNetrwHiddenBuffers", {clear = true}) | 66 | vim.api.nvim_create_augroup("AutoDeleteNetrwHiddenBuffers", {clear = true}) |
| 105 | vim.api.nvim_create_autocmd( | 67 | vim.api.nvim_create_autocmd("FileType", { |
| 106 | "FileType", | 68 | group = "AutoDeleteNetrwHiddenBuffers", pattern = "netrw", |
| 107 | { | 69 | callback = function() vim.opt_local.bufhidden = "wipe"; vim.opt_local.buflisted = false end |
| 108 | group = "AutoDeleteNetrwHiddenBuffers", | 70 | }) |
| 109 | pattern = "netrw", | ||
| 110 | callback = function() | ||
| 111 | vim.opt_local.bufhidden = "wipe" | ||
| 112 | vim.opt_local.buflisted = false | ||
| 113 | end | ||
| 114 | } | ||
| 115 | ) | ||
| 116 | 71 | ||
| 117 | function ToggleVExplorer() | 72 | function ToggleVExplorer() |
| 118 | local expl_buf = vim.t.expl_buf_num | 73 | local expl_buf = vim.t.expl_buf_num |
| 119 | local expl_win = expl_buf and vim.fn.bufwinnr(expl_buf) or -1 | 74 | local expl_win = expl_buf and vim.fn.bufwinnr(expl_buf) or -1 |
| 120 | |||
| 121 | if expl_win ~= -1 then | 75 | if expl_win ~= -1 then |
| 122 | vim.cmd(expl_win .. "wincmd c") | 76 | vim.cmd(expl_win .. "wincmd c") |
| 123 | vim.t.expl_buf_num = nil | 77 | vim.t.expl_buf_num = nil |
| @@ -128,58 +82,26 @@ function ToggleVExplorer() | |||
| 128 | end | 82 | end |
| 129 | end | 83 | end |
| 130 | 84 | ||
| 131 | local autopairs = { | 85 | local autopairs = { ["("]=")", ["["]="]", ["{"]="}", ["<"]=">" } |
| 132 | ["("] = ")", | ||
| 133 | ["["] = "]", | ||
| 134 | ["{"] = "}", | ||
| 135 | ["<"] = ">" | ||
| 136 | } | ||
| 137 | |||
| 138 | for open, close in pairs(autopairs) do | 86 | for open, close in pairs(autopairs) do |
| 139 | vim.api.nvim_set_keymap("i", open, open .. close .. "<Left>", {noremap = true, silent = true}) | 87 | vim.api.nvim_set_keymap("i", open, open..close.."<Left>", {noremap=true, silent=true}) |
| 140 | end | 88 | end |
| 141 | 89 | ||
| 142 | function set_highlights() | 90 | function set_highlights() |
| 143 | local highlights = { | 91 | local highlights = { |
| 144 | {"GitGutterAdd", {bg = "none"}}, | 92 | {"GitGutterAdd",{bg="none"}},{"GitGutterDelete",{bg="none"}},{"GitGutterChange",{bg="none"}}, |
| 145 | {"GitGutterDelete", {bg = "none"}}, | 93 | {"NonText",{fg="none"}},{"EndOfBuffer",{fg="none",bg="none"}},{"SignColumn",{bg="none"}}, |
| 146 | {"GitGutterChange", {bg = "none"}}, | 94 | {"StatusLine",{bg="none",fg="none"}},{"StatusLineNc",{bg="none",fg="none"}}, |
| 147 | {"GitGutterChangeAdd", {bg = "none"}}, | 95 | {"CursorColumn",{fg="none"}},{"CursorLine",{bg="none"}},{"VertSplit",{bg="none"}}, |
| 148 | {"GitGutterChangeDelete", {bg = "none"}}, | 96 | {"DiagnosticError",{bg="none"}},{"DiagnosticWarn",{bg="none"}},{"DiagnosticInfo",{bg="none"}}, |
| 149 | {"NonText", {fg = "none"}}, | 97 | {"DiagnosticHint",{bg="none"}},{"Pmenu",{bg="none"}},{"LspFloatWinNormal",{bg="none"}}, |
| 150 | {"EndOfBuffer", {fg = "none", bg = "none"}}, | 98 | {"NormalFloat",{bg="none"}},{"LineNr",{bg="none"}} |
| 151 | {"SignColumn", {bg = "none"}}, | ||
| 152 | {"StatusLine", {bg = "none", fg = "none"}}, | ||
| 153 | {"StatusLineNc", {bg = "none", fg = "none"}}, | ||
| 154 | {"CursorColumn", {fg = "none"}}, | ||
| 155 | {"CursorLine", {bg = "none"}}, | ||
| 156 | {"VertSplit", {bg = "none"}}, | ||
| 157 | {"DiagnosticError", {bg = "none"}}, | ||
| 158 | {"DiagnosticWarn", {bg = "none"}}, | ||
| 159 | {"DiagnosticInfo", {bg = "none"}}, | ||
| 160 | {"DiagnosticHint", {bg = "none"}}, | ||
| 161 | {"Pmenu", {bg = "none"}}, | ||
| 162 | {"DiagnosticVirtualTextError", {bg = "none"}}, | ||
| 163 | {"DiagnosticVirtualTextWarn", {bg = "none"}}, | ||
| 164 | {"DiagnosticVirtualTextInfo", {bg = "none"}}, | ||
| 165 | {"DiagnosticVirtualTextHint", {bg = "none"}}, | ||
| 166 | {"LspFloatWinNormal", {bg = "none"}}, | ||
| 167 | {"NormalFloat", {bg = "none"}}, | ||
| 168 | {"LineNr", {bg = "none"}}, | ||
| 169 | {"DiagnosticVirtualError", {bg = "none"}}, | ||
| 170 | {"DiagnosticVirtualWarn", {bg = "none"}}, | ||
| 171 | {"DiagnosticVirtualInfo", {bg = "none"}}, | ||
| 172 | {"DiagnosticVirtualHint", {bg = "none"}} | ||
| 173 | } | 99 | } |
| 174 | 100 | for _, hl in ipairs(highlights) do vim.api.nvim_set_hl(0, hl[1], hl[2]) end | |
| 175 | for _, hl in ipairs(highlights) do | ||
| 176 | vim.api.nvim_set_hl(0, hl[1], hl[2]) | ||
| 177 | end | ||
| 178 | end | 101 | end |
| 179 | 102 | ||
| 180 | vim.cmd("colorscheme quiet") | 103 | vim.cmd("colorscheme quiet") |
| 181 | vim.o.background = "dark" | 104 | vim.o.background = "dark" |
| 182 | |||
| 183 | function color_mode() | 105 | function color_mode() |
| 184 | if vim.o.background == "dark" then | 106 | if vim.o.background == "dark" then |
| 185 | vim.o.background = "light" | 107 | vim.o.background = "light" |
| @@ -193,109 +115,107 @@ end | |||
| 193 | 115 | ||
| 194 | local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" | 116 | local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" |
| 195 | if not vim.loop.fs_stat(lazypath) then | 117 | if not vim.loop.fs_stat(lazypath) then |
| 196 | vim.fn.system( | 118 | vim.fn.system({"git","clone","--filter=blob:none","https://github.com/folke/lazy.nvim.git","--branch=stable",lazypath}) |
| 197 | { | ||
| 198 | "git", | ||
| 199 | "clone", | ||
| 200 | "--filter=blob:none", | ||
| 201 | "https://github.com/folke/lazy.nvim.git", | ||
| 202 | "--branch=stable", | ||
| 203 | lazypath | ||
| 204 | } | ||
| 205 | ) | ||
| 206 | end | 119 | end |
| 207 | |||
| 208 | vim.opt.rtp:prepend(lazypath) | 120 | vim.opt.rtp:prepend(lazypath) |
| 209 | 121 | ||
| 210 | require("lazy").setup( | 122 | require("lazy").setup({ |
| 123 | {"ibhagwan/fzf-lua", opts = {}}, | ||
| 124 | {"airblade/vim-gitgutter"}, | ||
| 125 | |||
| 211 | { | 126 | { |
| 212 | { | 127 | "neovim/nvim-lspconfig", |
| 213 | "ibhagwan/fzf-lua", | 128 | config = function() |
| 214 | opts = {} | 129 | local capabilities = require("cmp_nvim_lsp").default_capabilities() |
| 215 | }, | 130 | local function get_root(patterns) |
| 216 | {"airblade/vim-gitgutter"}, | 131 | local root = vim.fs.dirname(vim.fs.find(patterns, { upward = true })[1]) |
| 217 | { | 132 | return root or vim.fn.getcwd() |
| 218 | "neovim/nvim-lspconfig", | 133 | end |
| 219 | lazy = false, | 134 | local on_attach = function(_, bufnr) |
| 220 | dependencies = { | 135 | local opts = {buffer = bufnr, silent = true} |
| 221 | {"ms-jpq/coq_nvim", branch = "coq"}, | 136 | vim.keymap.set("n", "gd", vim.lsp.buf.definition, opts) |
| 222 | {"ms-jpq/coq.artifacts", branch = "artifacts"} | 137 | vim.keymap.set("n", "K", vim.lsp.buf.hover, opts) |
| 223 | }, | 138 | vim.keymap.set("n", "gr", vim.lsp.buf.references, opts) |
| 224 | init = function() | 139 | vim.keymap.set("n", "<leader>ca", vim.lsp.buf.code_action, opts) |
| 225 | vim.g.coq_settings = { | ||
| 226 | auto_start = "shut-up", | ||
| 227 | display = { | ||
| 228 | icons = { | ||
| 229 | mode = "none" | ||
| 230 | }, | ||
| 231 | ghost_text = { | ||
| 232 | enabled = false | ||
| 233 | } | ||
| 234 | } | ||
| 235 | } | ||
| 236 | end | 140 | end |
| 237 | } | ||
| 238 | } | ||
| 239 | ) | ||
| 240 | |||
| 241 | local lsp_servers = { | ||
| 242 | clangd = {filetypes = {"c", "h"}}, | ||
| 243 | svelte = {filetypes = {"svelte"}}, | ||
| 244 | ts_ls = {filetypes = { | ||
| 245 | "typescript", | ||
| 246 | "typescriptreact", | ||
| 247 | "javascript", | ||
| 248 | "javascriptreact"} | ||
| 249 | }, | ||
| 250 | rust_analyzer = { | ||
| 251 | filetypes = {"rust"}, | ||
| 252 | imports = { | ||
| 253 | granularity = { | ||
| 254 | group = "module", | ||
| 255 | }, | ||
| 256 | prefix = "self", | ||
| 257 | }, | ||
| 258 | cargo = { | ||
| 259 | buildScripts = { | ||
| 260 | enable = true, | ||
| 261 | }, | ||
| 262 | }, | ||
| 263 | procMacro = { | ||
| 264 | enable = true | ||
| 265 | }, | ||
| 266 | } | ||
| 267 | } | ||
| 268 | |||
| 269 | local function server_maps(opts) | ||
| 270 | local buf = opts.buffer | ||
| 271 | end | ||
| 272 | |||
| 273 | |||
| 274 | |||
| 275 | local capabilities = vim.lsp.protocol.make_client_capabilities() | ||
| 276 | capabilities = require("coq").lsp_ensure_capabilities(capabilities) | ||
| 277 | 141 | ||
| 278 | for server_name, config in pairs(lsp_servers) do | 142 | vim.lsp.config.clangd = { |
| 279 | vim.api.nvim_create_autocmd("FileType", { | 143 | cmd = {"clangd"}, |
| 280 | pattern = config.filetypes, | 144 | root_dir = get_root({"compile_commands.json", ".git", "Makefile"}), |
| 281 | callback = function() | 145 | capabilities = capabilities, |
| 282 | vim.lsp.start({ | 146 | on_attach = on_attach, |
| 283 | name = server_name, | 147 | } |
| 284 | cmd = vim.lsp.get_server_capabilities(server_name).cmd or { server_name }, | 148 | vim.lsp.config.rust_analyzer = { |
| 285 | root_dir = vim.fs.dirname(vim.api.nvim_buf_get_name(0)), | 149 | cmd = {"rust-analyzer"}, |
| 150 | root_dir = get_root({"Cargo.toml", ".git"}), | ||
| 151 | capabilities = capabilities, | ||
| 152 | on_attach = on_attach, | ||
| 153 | } | ||
| 154 | vim.lsp.config.ts_ls = { | ||
| 155 | cmd = {"typescript-language-server","--stdio"}, | ||
| 156 | root_dir = get_root({"package.json", ".git"}), | ||
| 286 | capabilities = capabilities, | 157 | capabilities = capabilities, |
| 287 | settings = config.settings, | 158 | on_attach = on_attach, |
| 288 | on_attach = function(client, bufnr) | 159 | } |
| 289 | server_maps({buffer = bufnr}) | 160 | |
| 161 | vim.api.nvim_create_autocmd("FileType", { | ||
| 162 | pattern = {"c","cpp","h","rs","typescript","javascript"}, | ||
| 163 | callback = function() | ||
| 164 | local ft = vim.bo.filetype | ||
| 165 | if ft == "c" or ft == "cpp" or ft == "h" then | ||
| 166 | vim.lsp.start(vim.lsp.config.clangd) | ||
| 167 | elseif ft == "rust" then | ||
| 168 | vim.lsp.start(vim.lsp.config.rust_analyzer) | ||
| 169 | elseif ft == "typescript" or ft == "javascript" then | ||
| 170 | vim.lsp.start(vim.lsp.config.ts_ls) | ||
| 171 | end | ||
| 290 | end | 172 | end |
| 291 | }) | 173 | }) |
| 292 | end | 174 | end |
| 293 | }) | 175 | }, |
| 294 | end | ||
| 295 | |||
| 296 | |||
| 297 | set_highlights() | ||
| 298 | 176 | ||
| 177 | { | ||
| 178 | "hrsh7th/nvim-cmp", | ||
| 179 | dependencies = { | ||
| 180 | "hrsh7th/cmp-nvim-lsp","hrsh7th/cmp-buffer","hrsh7th/cmp-path", | ||
| 181 | "L3MON4D3/LuaSnip","saadparwaiz1/cmp_luasnip","onsails/lspkind.nvim", | ||
| 182 | { | ||
| 183 | "rafamadriz/friendly-snippets", | ||
| 184 | config = function() require("luasnip.loaders.from_vscode").lazy_load() end | ||
| 185 | }, | ||
| 186 | }, | ||
| 187 | config = function() | ||
| 188 | local cmp = require("cmp") | ||
| 189 | local luasnip = require("luasnip") | ||
| 190 | local lspkind = require("lspkind") | ||
| 191 | cmp.setup({ | ||
| 192 | snippet = {expand = function(args) luasnip.lsp_expand(args.body) end}, | ||
| 193 | mapping = cmp.mapping.preset.insert({ | ||
| 194 | ["<C-Space>"] = cmp.mapping.complete(), | ||
| 195 | ["<CR>"] = cmp.mapping.confirm({select=true}), | ||
| 196 | ["<Tab>"] = cmp.mapping(function(fb) | ||
| 197 | if cmp.visible() then cmp.select_next_item() | ||
| 198 | elseif luasnip.expand_or_jumpable() then luasnip.expand_or_jump() | ||
| 199 | else fb() end | ||
| 200 | end, {"i","s"}), | ||
| 201 | ["<S-Tab>"] = cmp.mapping(function(fb) | ||
| 202 | if cmp.visible() then cmp.select_prev_item() | ||
| 203 | elseif luasnip.jumpable(-1) then luasnip.jump(-1) | ||
| 204 | else fb() end | ||
| 205 | end, {"i","s"}), | ||
| 206 | }), | ||
| 207 | sources = cmp.config.sources({ | ||
| 208 | {name="nvim_lsp", keyword_length = 2},{name="luasnip"},{name="buffer", keyword_length = 3},{name="path"} | ||
| 209 | }), | ||
| 210 | formatting = { | ||
| 211 | format = lspkind.cmp_format({ | ||
| 212 | mode = "symbol_text", maxwidth = 50, ellipsis_char = "..." | ||
| 213 | }) | ||
| 214 | } | ||
| 215 | }) | ||
| 216 | end | ||
| 217 | } | ||
| 218 | }) | ||
| 299 | vim.g.mapleader = " " | 219 | vim.g.mapleader = " " |
| 300 | vim.keymap.set("n", "<leader>e", ToggleVExplorer, {desc = "Toggle VExplorer"}) | 220 | vim.keymap.set("n", "<leader>e", ToggleVExplorer, {desc = "Toggle VExplorer"}) |
| 301 | vim.keymap.set("n", "<leader>z", [[:%s/\<<C-r><C-w>\>/<C-r><C-w>/gI<Left><Left><Left>]]) | 221 | vim.keymap.set("n", "<leader>z", [[:%s/\<<C-r><C-w>\>/<C-r><C-w>/gI<Left><Left><Left>]]) |
| @@ -310,43 +230,20 @@ vim.keymap.set("n", "<leader>f", "<cmd>FzfLua files<cr>") | |||
| 310 | vim.keymap.set("n", "<leader>F", "<cmd>FzfLua live_grep<cr>", {noremap = true, silent = true}) | 230 | vim.keymap.set("n", "<leader>F", "<cmd>FzfLua live_grep<cr>", {noremap = true, silent = true}) |
| 311 | vim.keymap.set("n", "<leader>b", "<cmd>FzfLua buffers<cr>") | 231 | vim.keymap.set("n", "<leader>b", "<cmd>FzfLua buffers<cr>") |
| 312 | vim.keymap.set("n", "<leader>d", vim.lsp.buf.definition, {silent = true}) | 232 | vim.keymap.set("n", "<leader>d", vim.lsp.buf.definition, {silent = true}) |
| 313 | vim.keymap.set( | 233 | vim.keymap.set("n", "<leader>df", vim.diagnostic.open_float, {silent = true}) |
| 314 | "n", | ||
| 315 | "<leader>df", | ||
| 316 | function() | ||
| 317 | vim.diagnostic.open_float() | ||
| 318 | end, | ||
| 319 | {silent = true} | ||
| 320 | ) | ||
| 321 | vim.keymap.set("n", "<leader>k", vim.lsp.buf.hover, {silent = true}) | 234 | vim.keymap.set("n", "<leader>k", vim.lsp.buf.hover, {silent = true}) |
| 322 | vim.keymap.set( | 235 | vim.keymap.set("n", "<leader>ca", vim.lsp.buf.code_action, {silent = true}) |
| 323 | "n", | ||
| 324 | "<leader>ca", | ||
| 325 | function() | ||
| 326 | vim.lsp.buf.code_action() | ||
| 327 | end, | ||
| 328 | {silent = true} | ||
| 329 | ) | ||
| 330 | vim.keymap.set("n", "<leader>r", color_mode, {desc = "Change mode light/dark"}) | 236 | vim.keymap.set("n", "<leader>r", color_mode, {desc = "Change mode light/dark"}) |
| 331 | vim.keymap.set( | 237 | vim.keymap.set("n", "<leader>t", function() |
| 332 | "n", | 238 | vim.cmd("terminal") |
| 333 | "<leader>t", | 239 | vim.cmd("startinsert") |
| 334 | function() | 240 | end, {desc = "Open terminal"}) |
| 335 | vim.cmd("terminal") | ||
| 336 | vim.cmd("startinsert") | ||
| 337 | end, | ||
| 338 | {desc = "Open terminal in current window"} | ||
| 339 | ) | ||
| 340 | 241 | ||
| 341 | vim.keymap.set("v", "J", ":m '>+1<CR>gv=gv") | 242 | vim.keymap.set("v", "J", ":m '>+1<CR>gv=gv") |
| 342 | vim.keymap.set("v", "K", ":m '<-2<CR>gv=gv") | 243 | vim.keymap.set("v", "K", ":m '<-2<CR>gv=gv") |
| 244 | vim.keymap.set("t", "<Esc>", function() | ||
| 245 | vim.cmd([[stopinsert]]) | ||
| 246 | vim.cmd([[b#]]) | ||
| 247 | end, {noremap = true, silent = true}) | ||
| 248 | set_highlights() | ||
| 343 | 249 | ||
| 344 | vim.keymap.set( | ||
| 345 | "t", | ||
| 346 | "<Esc>", | ||
| 347 | function() | ||
| 348 | vim.cmd([[stopinsert]]) | ||
| 349 | vim.cmd([[b#]]) | ||
| 350 | end, | ||
| 351 | {noremap = true, silent = true} | ||
| 352 | ) | ||
