refactor(nvim): rework whole configuration
This commit is contained in:
parent
64c6149fde
commit
710e8f6395
6 changed files with 90 additions and 45 deletions
|
@ -65,7 +65,7 @@ in
|
||||||
python3Packages.python-lsp-server
|
python3Packages.python-lsp-server
|
||||||
shellcheck
|
shellcheck
|
||||||
|
|
||||||
terraform-lsp
|
tofu-ls
|
||||||
tflint
|
tflint
|
||||||
vscode-langservers-extracted
|
vscode-langservers-extracted
|
||||||
yaml-language-server
|
yaml-language-server
|
||||||
|
@ -120,7 +120,7 @@ in
|
||||||
{
|
{
|
||||||
plugin = gitsigns-nvim;
|
plugin = gitsigns-nvim;
|
||||||
type = "lua";
|
type = "lua";
|
||||||
config = (builtins.readFile ./files/plugins/luasnip.lua);
|
config = (builtins.readFile ./files/plugins/gitsign.lua);
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
plugin = indent-blankline-nvim;
|
plugin = indent-blankline-nvim;
|
||||||
|
|
|
@ -1,6 +1,15 @@
|
||||||
|
local opts = { noremap = true, silent = true}
|
||||||
|
|
||||||
|
vim.api.nvim_set_keymap('n', '<leader>/', ':nohlsearch<CR>', opts)
|
||||||
|
vim.api.nvim_set_keymap('n', '<leader>l', ':set list!<CR>', {silent = true})
|
||||||
|
|
||||||
-- clear search
|
-- clear search
|
||||||
vim.keymap.set('n', '<leader>l', ':nohlsearch<CR>', { desc = 'Clear search', remap = true, silent = true })
|
vim.keymap.set('n', '<leader>l', ':nohlsearch<CR>', { desc = 'Clear search', remap = true, silent = true })
|
||||||
|
|
||||||
|
-- Move tabs with \[ and \]
|
||||||
|
vim.api.nvim_set_keymap('n', '<Leader>]', ':tabnext<CR>', opts)
|
||||||
|
vim.api.nvim_set_keymap('n', '<Leader>[', ':tabprev<CR>', opts)
|
||||||
|
|
||||||
-- Switch between windows.
|
-- Switch between windows.
|
||||||
vim.keymap.set('n', '<C-h>', '<C-w>h', { desc = 'Move to the left window', remap = true })
|
vim.keymap.set('n', '<C-h>', '<C-w>h', { desc = 'Move to the left window', remap = true })
|
||||||
vim.keymap.set('n', '<C-j>', '<C-w>j', { desc = 'Move to the bottom window', remap = true })
|
vim.keymap.set('n', '<C-j>', '<C-w>j', { desc = 'Move to the bottom window', remap = true })
|
||||||
|
@ -19,31 +28,3 @@ vim.keymap.set('n', '<Leader>tn', ':tabnew<CR>', { desc = "Tab [n]ew", remap = t
|
||||||
|
|
||||||
-- Show all caracters
|
-- Show all caracters
|
||||||
vim.keymap.set('n', '<leader>l', ':set list!<CR>', { desc = "Show a[l]l caraters", remap = true, silent = true})
|
vim.keymap.set('n', '<leader>l', ':set list!<CR>', { desc = "Show a[l]l caraters", remap = true, silent = true})
|
||||||
|
|
||||||
-- neotree
|
|
||||||
-- -------
|
|
||||||
vim.keymap.set('n', '<leader>nc', ':Neotree close<cr>', {desc='Neotree [c]lose'})
|
|
||||||
vim.keymap.set('n', '<leader>nf', ':Neotree focus filesystem<cr>', {desc='Neotree [f]ocus'})
|
|
||||||
vim.keymap.set('n', '<leader>nb', ':Neotree focus buffers<cr>', {desc='Neotree Nvim [b]uffers'})
|
|
||||||
vim.keymap.set('n', '<leader>ng', ':Neotree focus git_status<cr>', {desc='Neotree [g]it status'})
|
|
||||||
|
|
||||||
-- fzf-lua
|
|
||||||
-- ------
|
|
||||||
vim.keymap.set('n', '<leader>fb', function() require('fzf-lua').buffers() end, {desc='open [b]uffers'})
|
|
||||||
vim.keymap.set('n', '<leader>ff', function() require('fzf-lua').files() end, {desc='[r]esume last command'})
|
|
||||||
vim.keymap.set('n', '<leader>fr', function() require('fzf-lua').files() end, {desc='[f]iles'})
|
|
||||||
|
|
||||||
-- git related keymaps
|
|
||||||
vim.keymap.set('n', '<leader>fgb', function() require('fzf-lua').git_branches() end, {desc='Git [b]ranches'})
|
|
||||||
vim.keymap.set('n', '<leader>fgc', function() require('fzf-lua').git_commits() end, {desc='Git [c]ommits'})
|
|
||||||
vim.keymap.set('n', '<leader>fgC', function() require('fzf-lua').git_bcommits() end, {desc='Git current buffer [C]ommits'})
|
|
||||||
vim.keymap.set('n', '<leader>fgf', function() require('fzf-lua').git_files() end, {desc='Git [f]iles'})
|
|
||||||
vim.keymap.set('n', '<leader>fgs', function() require('fzf-lua').git_stash() end, {desc='Git [s]tash'})
|
|
||||||
vim.keymap.set('n', '<leader>fgS', function() require('fzf-lua').git_status() end, {desc='Git [S]tash'})
|
|
||||||
|
|
||||||
-- grep related keymaps
|
|
||||||
vim.keymap.set('n', '<leader>fGb', function() require('fzf-lua').grep_curbuf() end, {desc='grep in current [b]uffer'})
|
|
||||||
vim.keymap.set('n', '<leader>fGc', function() require('fzf-lua').grep_cword() end, {desc='grep word under the [c]ursor'})
|
|
||||||
vim.keymap.set('n', '<leader>fGg', function() require('fzf-lua').grep() end, {desc='[g]rep'})
|
|
||||||
vim.keymap.set('n', '<leader>fGl', function() require('fzf-lua').live_grep() end, {desc='[l]ive grep'})
|
|
||||||
vim.keymap.set('n', '<leader>fGr', function() require('fzf-lua').grep_last() end, {desc='[r]erun last grep'})
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
return {
|
return {
|
||||||
cmd = { 'terraform-ls', 'serve' },
|
cmd = { 'tofu-ls', 'serve' },
|
||||||
filetypes = { 'terraform', 'terraform-vars' },
|
filetypes = { 'terraform', 'terraform-vars' },
|
||||||
root_markers = { '.terraform', '.git' },
|
root_markers = { '.terraform', '.git' },
|
||||||
}
|
}
|
|
@ -52,7 +52,7 @@ vim.opt.wildmode = 'lastused:full,list' -- enhance menu
|
||||||
vim.opt.pumheight = 10
|
vim.opt.pumheight = 10
|
||||||
vim.opt.pumwidth = 50
|
vim.opt.pumwidth = 50
|
||||||
vim.opt.pumblend = 10
|
vim.opt.pumblend = 10
|
||||||
|
vim.o.winborder = 'none'
|
||||||
-- manage line break smartly
|
-- manage line break smartly
|
||||||
vim.opt.wrap = true
|
vim.opt.wrap = true
|
||||||
vim.opt.breakindent = true
|
vim.opt.breakindent = true
|
||||||
|
@ -103,24 +103,13 @@ vim.opt.wildignore = {
|
||||||
'*.sw?'
|
'*.sw?'
|
||||||
}
|
}
|
||||||
|
|
||||||
-- Key biding
|
|
||||||
-- " ----------
|
|
||||||
local opts = { noremap = true, silent = true}
|
|
||||||
|
|
||||||
vim.api.nvim_set_keymap('n', '<leader>/', ':nohlsearch<CR>', opts)
|
|
||||||
|
|
||||||
-- Move tabs with \[ and \]
|
|
||||||
vim.api.nvim_set_keymap('n', '<Leader>]', ':tabnext<CR>', opts)
|
|
||||||
vim.api.nvim_set_keymap('n', '<Leader>[', ':tabprev<CR>', opts)
|
|
||||||
vim.api.nvim_set_keymap('n', '<leader>l', ':set list!<CR>', {silent = true})
|
|
||||||
|
|
||||||
-- disable lsplog
|
-- disable lsplog
|
||||||
-- This is not usefull on a daily basis and should positively impact performance
|
-- This is not usefull on a daily basis and should positively impact performance
|
||||||
vim.lsp.set_log_level("off")
|
vim.lsp.set_log_level("off")
|
||||||
|
|
||||||
-- define a timeout for match parens
|
-- define a timeout for match parens
|
||||||
vim.g.matchparen_timeout = 2
|
vim.g.matchparen_timeout = 10
|
||||||
vim.g.matchparen_insert_timeout = 2
|
vim.g.matchparen_insert_timeout = 10
|
||||||
|
|
||||||
-- activate virtual lines for diagnistics
|
-- activate virtual lines for diagnistics
|
||||||
-- no more plugins needed
|
-- no more plugins needed
|
||||||
|
@ -134,3 +123,73 @@ vim.diagnostic.config({
|
||||||
-- },
|
-- },
|
||||||
signs = { text = { [x.ERROR] = "", [x.WARN] = "", [x.INFO] = "", [x.HINT] = "" } },
|
signs = { text = { [x.ERROR] = "", [x.WARN] = "", [x.INFO] = "", [x.HINT] = "" } },
|
||||||
})
|
})
|
||||||
|
|
||||||
|
-- LSP
|
||||||
|
vim.api.nvim_create_autocmd("LspAttach", {
|
||||||
|
group = vim.api.nvim_create_augroup("UserLspConfig", {}),
|
||||||
|
callback = function(ev)
|
||||||
|
vim.bo[ev.buf].omnifunc = "v:lua.vim.lsp.omnifunc"
|
||||||
|
|
||||||
|
local opts = { buffer = ev.buf }
|
||||||
|
local client = vim.lsp.get_client_by_id(ev.data.client_id)
|
||||||
|
local bufnr = ev.buf
|
||||||
|
local function desc(description)
|
||||||
|
return { noremap = true, silent = true, buffer = bufnr, desc = description }
|
||||||
|
end
|
||||||
|
|
||||||
|
vim.keymap.set("n", "gD", vim.lsp.buf.declaration, { buffer = ev.buf, desc = "Go to [D]eclaration" })
|
||||||
|
vim.keymap.set("n", "gd", vim.lsp.buf.definition, { buffer = ev.buf, desc = "Go to [d]efinition" })
|
||||||
|
vim.keymap.set("n", "gi", vim.lsp.buf.implementation, { buffer = ev.buf, desc = "Go to [i]mplementation" })
|
||||||
|
vim.keymap.set("n", "gr", vim.lsp.buf.references, { buffer = ev.buf, desc = "Go to [r]eferences" })
|
||||||
|
|
||||||
|
vim.keymap.set(
|
||||||
|
"n",
|
||||||
|
"K",
|
||||||
|
function()
|
||||||
|
vim.lsp.buf.hover
|
||||||
|
{ border = "rounded", max_width = 250 }
|
||||||
|
end,
|
||||||
|
opts)
|
||||||
|
|
||||||
|
vim.keymap.set(
|
||||||
|
"n",
|
||||||
|
"<C-k>",
|
||||||
|
function()
|
||||||
|
vim.lsp.buf.signature_help
|
||||||
|
{ border = "rounded", max_width = 250 }
|
||||||
|
end,
|
||||||
|
{buffer = ev.buf, desc = "Signature help"}
|
||||||
|
)
|
||||||
|
|
||||||
|
vim.keymap.set("n", "<leader>wa", vim.lsp.buf.add_workspace_folder, opts)
|
||||||
|
vim.keymap.set("n", "<leader>wr", vim.lsp.buf.remove_workspace_folder, opts)
|
||||||
|
|
||||||
|
vim.keymap.set(
|
||||||
|
"n",
|
||||||
|
"<leader>wl",
|
||||||
|
function()
|
||||||
|
print(vim.inspect(vim.lsp.buf.list_workspace_folders()))
|
||||||
|
end,
|
||||||
|
opts
|
||||||
|
)
|
||||||
|
|
||||||
|
vim.keymap.set("n", "<leader>D", vim.lsp.buf.type_definition, { buffer = ev.buf, desc = "Type [D]efinition" })
|
||||||
|
vim.keymap.set("n", "<leader>rn", vim.lsp.buf.rename, { buffer = ev.buf, desc = "LSP [r]e[n]ame" })
|
||||||
|
vim.keymap.set("n", "<leader>ca", vim.lsp.buf.code_action, { buffer = ev.buf, desc = "Show [c]ode [a]ction"})
|
||||||
|
|
||||||
|
vim.keymap.set(
|
||||||
|
"n",
|
||||||
|
"<leader>F",
|
||||||
|
function()
|
||||||
|
require("conform").format({ bufnr = bufnr })
|
||||||
|
end,
|
||||||
|
{ buffer = ev.buf, desc = "[F]ormat file" }
|
||||||
|
)
|
||||||
|
|
||||||
|
if client.server_capabilities.inlayHintProvider then
|
||||||
|
vim.keymap.set("n", "<space>h", function()
|
||||||
|
vim.lsp.inlay_hint.enable(not vim.lsp.inlay_hint.is_enabled())
|
||||||
|
end, desc("LSP toggle inlay [h]ints"))
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
|
@ -18,3 +18,8 @@ neotree.setup({
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
vim.keymap.set('n', '<leader>nc', ':Neotree close<cr>', {desc='Neotree [c]lose'})
|
||||||
|
vim.keymap.set('n', '<leader>nf', ':Neotree focus filesystem<cr>', {desc='Neotree [f]ocus'})
|
||||||
|
vim.keymap.set('n', '<leader>nb', ':Neotree focus buffers<cr>', {desc='Neotree Nvim [b]uffers'})
|
||||||
|
vim.keymap.set('n', '<leader>ng', ':Neotree focus git_status<cr>', {desc='Neotree [g]it status'})
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue