|
|
|
@ -300,57 +300,55 @@ require('lazy').setup({
|
|
|
|
|
{ -- Useful plugin to show you pending keybinds.
|
|
|
|
|
'folke/which-key.nvim',
|
|
|
|
|
event = 'VimEnter', -- Sets the loading event to 'VimEnter'
|
|
|
|
|
config = function() -- This is the function that runs, AFTER loading
|
|
|
|
|
require('which-key').setup {
|
|
|
|
|
icons = {
|
|
|
|
|
-- set icon mappings to true if you have a Nerd Font
|
|
|
|
|
mappings = vim.g.have_nerd_font,
|
|
|
|
|
-- If you are using a Nerd Font: set icons.keys to an empty table which will use the
|
|
|
|
|
-- default whick-key.nvim defined Nerd Font icons, otherwise define a string table
|
|
|
|
|
keys = vim.g.have_nerd_font and {} or {
|
|
|
|
|
Up = '<Up> ',
|
|
|
|
|
Down = '<Down> ',
|
|
|
|
|
Left = '<Left> ',
|
|
|
|
|
Right = '<Right> ',
|
|
|
|
|
C = '<C-…> ',
|
|
|
|
|
M = '<M-…> ',
|
|
|
|
|
D = '<D-…> ',
|
|
|
|
|
S = '<S-…> ',
|
|
|
|
|
CR = '<CR> ',
|
|
|
|
|
Esc = '<Esc> ',
|
|
|
|
|
ScrollWheelDown = '<ScrollWheelDown> ',
|
|
|
|
|
ScrollWheelUp = '<ScrollWheelUp> ',
|
|
|
|
|
NL = '<NL> ',
|
|
|
|
|
BS = '<BS> ',
|
|
|
|
|
Space = '<Space> ',
|
|
|
|
|
Tab = '<Tab> ',
|
|
|
|
|
F1 = '<F1>',
|
|
|
|
|
F2 = '<F2>',
|
|
|
|
|
F3 = '<F3>',
|
|
|
|
|
F4 = '<F4>',
|
|
|
|
|
F5 = '<F5>',
|
|
|
|
|
F6 = '<F6>',
|
|
|
|
|
F7 = '<F7>',
|
|
|
|
|
F8 = '<F8>',
|
|
|
|
|
F9 = '<F9>',
|
|
|
|
|
F10 = '<F10>',
|
|
|
|
|
F11 = '<F11>',
|
|
|
|
|
F12 = '<F12>',
|
|
|
|
|
},
|
|
|
|
|
opts = {
|
|
|
|
|
icons = {
|
|
|
|
|
-- set icon mappings to true if you have a Nerd Font
|
|
|
|
|
mappings = vim.g.have_nerd_font,
|
|
|
|
|
-- If you are using a Nerd Font: set icons.keys to an empty table which will use the
|
|
|
|
|
-- default whick-key.nvim defined Nerd Font icons, otherwise define a string table
|
|
|
|
|
keys = vim.g.have_nerd_font and {} or {
|
|
|
|
|
Up = '<Up> ',
|
|
|
|
|
Down = '<Down> ',
|
|
|
|
|
Left = '<Left> ',
|
|
|
|
|
Right = '<Right> ',
|
|
|
|
|
C = '<C-…> ',
|
|
|
|
|
M = '<M-…> ',
|
|
|
|
|
D = '<D-…> ',
|
|
|
|
|
S = '<S-…> ',
|
|
|
|
|
CR = '<CR> ',
|
|
|
|
|
Esc = '<Esc> ',
|
|
|
|
|
ScrollWheelDown = '<ScrollWheelDown> ',
|
|
|
|
|
ScrollWheelUp = '<ScrollWheelUp> ',
|
|
|
|
|
NL = '<NL> ',
|
|
|
|
|
BS = '<BS> ',
|
|
|
|
|
Space = '<Space> ',
|
|
|
|
|
Tab = '<Tab> ',
|
|
|
|
|
F1 = '<F1>',
|
|
|
|
|
F2 = '<F2>',
|
|
|
|
|
F3 = '<F3>',
|
|
|
|
|
F4 = '<F4>',
|
|
|
|
|
F5 = '<F5>',
|
|
|
|
|
F6 = '<F6>',
|
|
|
|
|
F7 = '<F7>',
|
|
|
|
|
F8 = '<F8>',
|
|
|
|
|
F9 = '<F9>',
|
|
|
|
|
F10 = '<F10>',
|
|
|
|
|
F11 = '<F11>',
|
|
|
|
|
F12 = '<F12>',
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
-- Document existing key chains
|
|
|
|
|
require('which-key').add {
|
|
|
|
|
{ '<leader>c', group = '[C]ode' },
|
|
|
|
|
spec = {
|
|
|
|
|
{ '<leader>c', group = '[C]ode', mode = { 'n', 'x' } },
|
|
|
|
|
{ '<leader>d', group = '[D]ocument' },
|
|
|
|
|
{ '<leader>r', group = '[R]ename' },
|
|
|
|
|
{ '<leader>s', group = '[S]earch' },
|
|
|
|
|
{ '<leader>w', group = '[W]orkspace' },
|
|
|
|
|
{ '<leader>t', group = '[T]oggle' },
|
|
|
|
|
{ '<leader>h', group = 'Git [H]unk', mode = { 'n', 'v' } },
|
|
|
|
|
}
|
|
|
|
|
end,
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
-- NOTE: Plugins can specify dependencies.
|
|
|
|
@ -533,8 +531,9 @@ require('lazy').setup({
|
|
|
|
|
--
|
|
|
|
|
-- In this case, we create a function that lets us more easily define mappings specific
|
|
|
|
|
-- for LSP related items. It sets the mode, buffer and description for us each time.
|
|
|
|
|
local map = function(keys, func, desc)
|
|
|
|
|
vim.keymap.set('n', keys, func, { buffer = event.buf, desc = 'LSP: ' .. desc })
|
|
|
|
|
local map = function(keys, func, desc, mode)
|
|
|
|
|
mode = mode or 'n'
|
|
|
|
|
vim.keymap.set(mode, keys, func, { buffer = event.buf, desc = 'LSP: ' .. desc })
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
-- Jump to the definition of the word under your cursor.
|
|
|
|
@ -568,7 +567,7 @@ require('lazy').setup({
|
|
|
|
|
|
|
|
|
|
-- Execute a code action, usually your cursor needs to be on top of an error
|
|
|
|
|
-- or a suggestion from your LSP for this to activate.
|
|
|
|
|
map('<leader>ca', vim.lsp.buf.code_action, '[C]ode [A]ction')
|
|
|
|
|
map('<leader>ca', vim.lsp.buf.code_action, '[C]ode [A]ction', { 'n', 'x' })
|
|
|
|
|
|
|
|
|
|
-- WARN: This is not Goto Definition, this is Goto Declaration.
|
|
|
|
|
-- For example, in C this would take you to the header.
|
|
|
|
@ -703,8 +702,8 @@ require('lazy').setup({
|
|
|
|
|
-- Some languages (like typescript) have entire language plugins that can be useful:
|
|
|
|
|
-- https://github.com/pmizio/typescript-tools.nvim
|
|
|
|
|
--
|
|
|
|
|
-- But for many setups, the LSP (`tsserver`) will work just fine
|
|
|
|
|
-- tsserver = {},
|
|
|
|
|
-- But for many setups, the LSP (`ts_ls`) will work just fine
|
|
|
|
|
-- ts_ls = {},
|
|
|
|
|
--
|
|
|
|
|
|
|
|
|
|
ruff = {},
|
|
|
|
@ -789,7 +788,7 @@ require('lazy').setup({
|
|
|
|
|
local server = servers[server_name] or {}
|
|
|
|
|
-- This handles overriding only values explicitly passed
|
|
|
|
|
-- by the server configuration above. Useful when disabling
|
|
|
|
|
-- certain features of an LSP (for example, turning off formatting for tsserver)
|
|
|
|
|
-- certain features of an LSP (for example, turning off formatting for ts_ls)
|
|
|
|
|
server.capabilities = vim.tbl_deep_extend('force', {}, capabilities, server.capabilities or {})
|
|
|
|
|
require('lspconfig')[server_name].setup(server)
|
|
|
|
|
end,
|
|
|
|
@ -806,7 +805,7 @@ require('lazy').setup({
|
|
|
|
|
{
|
|
|
|
|
'<leader>f',
|
|
|
|
|
function()
|
|
|
|
|
require('conform').format { async = true, lsp_fallback = true }
|
|
|
|
|
require('conform').format { async = true, lsp_format = 'fallback' }
|
|
|
|
|
end,
|
|
|
|
|
mode = '',
|
|
|
|
|
desc = '[F]ormat buffer',
|
|
|
|
@ -819,9 +818,15 @@ require('lazy').setup({
|
|
|
|
|
-- have a well standardized coding style. You can add additional
|
|
|
|
|
-- languages here or re-enable it for the disabled ones.
|
|
|
|
|
local disable_filetypes = { c = true, cpp = true }
|
|
|
|
|
local lsp_format_opt
|
|
|
|
|
if disable_filetypes[vim.bo[bufnr].filetype] then
|
|
|
|
|
lsp_format_opt = 'never'
|
|
|
|
|
else
|
|
|
|
|
lsp_format_opt = 'fallback'
|
|
|
|
|
end
|
|
|
|
|
return {
|
|
|
|
|
timeout_ms = 500,
|
|
|
|
|
lsp_fallback = not disable_filetypes[vim.bo[bufnr].filetype],
|
|
|
|
|
lsp_format = lsp_format_opt,
|
|
|
|
|
}
|
|
|
|
|
end,
|
|
|
|
|
formatters_by_ft = {
|
|
|
|
|