|
|
@ -1,9 +1,50 @@
|
|
|
|
|
|
|
|
--[[
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
=====================================================================
|
|
|
|
|
|
|
|
==================== READ THIS BEFORE CONTINUING ====================
|
|
|
|
|
|
|
|
=====================================================================
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Kickstart.nvim is *not* a distribution.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Kickstart.nvim is a template for your own configuration.
|
|
|
|
|
|
|
|
The goal is that you can read every line of code, top-to-bottom, understand
|
|
|
|
|
|
|
|
what your configuration is doing, and modify it to suit your needs.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Once you've done that, you should start exploring, configuring and tinkering to
|
|
|
|
|
|
|
|
explore Neovim!
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
If you don't know anything about Lua, I recommend taking some time to read through
|
|
|
|
|
|
|
|
a guide. One possible example:
|
|
|
|
|
|
|
|
- https://learnxinyminutes.com/docs/lua/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
And then you can explore or search through `:help lua-guide`
|
|
|
|
|
|
|
|
- https://neovim.io/doc/user/lua-guide.html
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Kickstart Guide:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
I have left several `:help X` comments throughout the init.lua
|
|
|
|
|
|
|
|
You should run that command and read that help section for more information.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
In addition, I have some `NOTE:` items throughout the file.
|
|
|
|
|
|
|
|
These are for you, the reader to help understand what is happening. Feel free to delete
|
|
|
|
|
|
|
|
them once you know what you're doing, but they should serve as a guide for when you
|
|
|
|
|
|
|
|
are first encountering a few different constructs in your nvim config.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
I hope you enjoy your Neovim journey,
|
|
|
|
|
|
|
|
- TJ
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
P.S. You can delete this when you're done too. It's your config now :)
|
|
|
|
|
|
|
|
--]]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
-- Set <space> as the leader key
|
|
|
|
-- See `:help mapleader`
|
|
|
|
-- See `:help mapleader`
|
|
|
|
-- NOTE: Must happen before plugins are required (otherwise wrong leader will be used)
|
|
|
|
-- NOTE: Must happen before plugins are required (otherwise wrong leader will be used)
|
|
|
|
vim.g.mapleader = ' '
|
|
|
|
vim.g.mapleader = ' '
|
|
|
|
vim.g.maplocalleader = ' '
|
|
|
|
vim.g.maplocalleader = ' '
|
|
|
|
|
|
|
|
|
|
|
|
-- Install package manager
|
|
|
|
-- [[ Install `lazy.nvim` plugin manager ]]
|
|
|
|
-- https://github.com/folke/lazy.nvim
|
|
|
|
-- https://github.com/folke/lazy.nvim
|
|
|
|
-- `:help lazy.nvim.txt` for more info
|
|
|
|
-- `:help lazy.nvim.txt` for more info
|
|
|
|
local lazypath = vim.fn.stdpath 'data' .. '/lazy/lazy.nvim'
|
|
|
|
local lazypath = vim.fn.stdpath 'data' .. '/lazy/lazy.nvim'
|
|
|
@ -19,6 +60,7 @@ if not vim.loop.fs_stat(lazypath) then
|
|
|
|
end
|
|
|
|
end
|
|
|
|
vim.opt.rtp:prepend(lazypath)
|
|
|
|
vim.opt.rtp:prepend(lazypath)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
-- [[ Configure plugins ]]
|
|
|
|
-- NOTE: Here is where you install your plugins.
|
|
|
|
-- NOTE: Here is where you install your plugins.
|
|
|
|
-- You can configure plugins using the `config` key.
|
|
|
|
-- You can configure plugins using the `config` key.
|
|
|
|
--
|
|
|
|
--
|
|
|
@ -46,7 +88,7 @@ require('lazy').setup({
|
|
|
|
|
|
|
|
|
|
|
|
-- Useful status updates for LSP
|
|
|
|
-- Useful status updates for LSP
|
|
|
|
-- NOTE: `opts = {}` is the same as calling `require('fidget').setup({})`
|
|
|
|
-- NOTE: `opts = {}` is the same as calling `require('fidget').setup({})`
|
|
|
|
{ 'j-hui/fidget.nvim', tag = 'legacy', opts = {} },
|
|
|
|
{ 'j-hui/fidget.nvim', opts = {} },
|
|
|
|
|
|
|
|
|
|
|
|
-- Additional lua configuration, makes nvim stuff amazing!
|
|
|
|
-- Additional lua configuration, makes nvim stuff amazing!
|
|
|
|
'folke/neodev.nvim',
|
|
|
|
'folke/neodev.nvim',
|
|
|
@ -63,6 +105,7 @@ require('lazy').setup({
|
|
|
|
|
|
|
|
|
|
|
|
-- Adds LSP completion capabilities
|
|
|
|
-- Adds LSP completion capabilities
|
|
|
|
'hrsh7th/cmp-nvim-lsp',
|
|
|
|
'hrsh7th/cmp-nvim-lsp',
|
|
|
|
|
|
|
|
'hrsh7th/cmp-path',
|
|
|
|
|
|
|
|
|
|
|
|
-- Adds a number of user-friendly snippets
|
|
|
|
-- Adds a number of user-friendly snippets
|
|
|
|
'rafamadriz/friendly-snippets',
|
|
|
|
'rafamadriz/friendly-snippets',
|
|
|
@ -84,11 +127,16 @@ require('lazy').setup({
|
|
|
|
changedelete = { text = '~' },
|
|
|
|
changedelete = { text = '~' },
|
|
|
|
},
|
|
|
|
},
|
|
|
|
on_attach = function(bufnr)
|
|
|
|
on_attach = function(bufnr)
|
|
|
|
vim.keymap.set('n', '<leader>hp', require('gitsigns').preview_hunk, { buffer = bufnr, desc = 'Preview git hunk' })
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
-- don't override the built-in and fugitive keymaps
|
|
|
|
|
|
|
|
local gs = package.loaded.gitsigns
|
|
|
|
local gs = package.loaded.gitsigns
|
|
|
|
vim.keymap.set({ 'n', 'v' }, ']c', function()
|
|
|
|
|
|
|
|
|
|
|
|
local function map(mode, l, r, opts)
|
|
|
|
|
|
|
|
opts = opts or {}
|
|
|
|
|
|
|
|
opts.buffer = bufnr
|
|
|
|
|
|
|
|
vim.keymap.set(mode, l, r, opts)
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
-- Navigation
|
|
|
|
|
|
|
|
map({ 'n', 'v' }, ']c', function()
|
|
|
|
if vim.wo.diff then
|
|
|
|
if vim.wo.diff then
|
|
|
|
return ']c'
|
|
|
|
return ']c'
|
|
|
|
end
|
|
|
|
end
|
|
|
@ -96,8 +144,9 @@ require('lazy').setup({
|
|
|
|
gs.next_hunk()
|
|
|
|
gs.next_hunk()
|
|
|
|
end)
|
|
|
|
end)
|
|
|
|
return '<Ignore>'
|
|
|
|
return '<Ignore>'
|
|
|
|
end, { expr = true, buffer = bufnr, desc = 'Jump to next hunk' })
|
|
|
|
end, { expr = true, desc = 'Jump to next hunk' })
|
|
|
|
vim.keymap.set({ 'n', 'v' }, '[c', function()
|
|
|
|
|
|
|
|
|
|
|
|
map({ 'n', 'v' }, '[c', function()
|
|
|
|
if vim.wo.diff then
|
|
|
|
if vim.wo.diff then
|
|
|
|
return '[c'
|
|
|
|
return '[c'
|
|
|
|
end
|
|
|
|
end
|
|
|
@ -105,7 +154,37 @@ require('lazy').setup({
|
|
|
|
gs.prev_hunk()
|
|
|
|
gs.prev_hunk()
|
|
|
|
end)
|
|
|
|
end)
|
|
|
|
return '<Ignore>'
|
|
|
|
return '<Ignore>'
|
|
|
|
end, { expr = true, buffer = bufnr, desc = 'Jump to previous hunk' })
|
|
|
|
end, { expr = true, desc = 'Jump to previous hunk' })
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
-- Actions
|
|
|
|
|
|
|
|
-- visual mode
|
|
|
|
|
|
|
|
map('v', '<leader>hs', function()
|
|
|
|
|
|
|
|
gs.stage_hunk { vim.fn.line '.', vim.fn.line 'v' }
|
|
|
|
|
|
|
|
end, { desc = 'stage git hunk' })
|
|
|
|
|
|
|
|
map('v', '<leader>hr', function()
|
|
|
|
|
|
|
|
gs.reset_hunk { vim.fn.line '.', vim.fn.line 'v' }
|
|
|
|
|
|
|
|
end, { desc = 'reset git hunk' })
|
|
|
|
|
|
|
|
-- normal mode
|
|
|
|
|
|
|
|
map('n', '<leader>hs', gs.stage_hunk, { desc = 'git stage hunk' })
|
|
|
|
|
|
|
|
map('n', '<leader>hr', gs.reset_hunk, { desc = 'git reset hunk' })
|
|
|
|
|
|
|
|
map('n', '<leader>hS', gs.stage_buffer, { desc = 'git Stage buffer' })
|
|
|
|
|
|
|
|
map('n', '<leader>hu', gs.undo_stage_hunk, { desc = 'undo stage hunk' })
|
|
|
|
|
|
|
|
map('n', '<leader>hR', gs.reset_buffer, { desc = 'git Reset buffer' })
|
|
|
|
|
|
|
|
map('n', '<leader>hp', gs.preview_hunk, { desc = 'preview git hunk' })
|
|
|
|
|
|
|
|
map('n', '<leader>hb', function()
|
|
|
|
|
|
|
|
gs.blame_line { full = false }
|
|
|
|
|
|
|
|
end, { desc = 'git blame line' })
|
|
|
|
|
|
|
|
map('n', '<leader>hd', gs.diffthis, { desc = 'git diff against index' })
|
|
|
|
|
|
|
|
map('n', '<leader>hD', function()
|
|
|
|
|
|
|
|
gs.diffthis '~'
|
|
|
|
|
|
|
|
end, { desc = 'git diff against last commit' })
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
-- Toggles
|
|
|
|
|
|
|
|
map('n', '<leader>tb', gs.toggle_current_line_blame, { desc = 'toggle git blame line' })
|
|
|
|
|
|
|
|
map('n', '<leader>td', gs.toggle_deleted, { desc = 'toggle git show deleted' })
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
-- Text object
|
|
|
|
|
|
|
|
map({ 'o', 'x' }, 'ih', ':<C-U>Gitsigns select_hunk<CR>', { desc = 'select git hunk' })
|
|
|
|
end,
|
|
|
|
end,
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
@ -241,6 +320,12 @@ vim.keymap.set({ 'n', 'v' }, '<Space>', '<Nop>', { silent = true })
|
|
|
|
vim.keymap.set('n', 'k', "v:count == 0 ? 'gk' : 'k'", { expr = true, silent = true })
|
|
|
|
vim.keymap.set('n', 'k', "v:count == 0 ? 'gk' : 'k'", { expr = true, silent = true })
|
|
|
|
vim.keymap.set('n', 'j', "v:count == 0 ? 'gj' : 'j'", { expr = true, silent = true })
|
|
|
|
vim.keymap.set('n', 'j', "v:count == 0 ? 'gj' : 'j'", { expr = true, silent = true })
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
-- Diagnostic keymaps
|
|
|
|
|
|
|
|
vim.keymap.set('n', '[d', vim.diagnostic.goto_prev, { desc = 'Go to previous diagnostic message' })
|
|
|
|
|
|
|
|
vim.keymap.set('n', ']d', vim.diagnostic.goto_next, { desc = 'Go to next diagnostic message' })
|
|
|
|
|
|
|
|
vim.keymap.set('n', '<leader>e', vim.diagnostic.open_float, { desc = 'Open floating diagnostic message' })
|
|
|
|
|
|
|
|
vim.keymap.set('n', '<leader>q', vim.diagnostic.setloclist, { desc = 'Open diagnostics list' })
|
|
|
|
|
|
|
|
|
|
|
|
-- [[ Highlight on yank ]]
|
|
|
|
-- [[ Highlight on yank ]]
|
|
|
|
-- See `:help vim.highlight.on_yank()`
|
|
|
|
-- See `:help vim.highlight.on_yank()`
|
|
|
|
local highlight_group = vim.api.nvim_create_augroup('YankHighlight', { clear = true })
|
|
|
|
local highlight_group = vim.api.nvim_create_augroup('YankHighlight', { clear = true })
|
|
|
@ -268,6 +353,42 @@ require('telescope').setup {
|
|
|
|
-- Enable telescope fzf native, if installed
|
|
|
|
-- Enable telescope fzf native, if installed
|
|
|
|
pcall(require('telescope').load_extension, 'fzf')
|
|
|
|
pcall(require('telescope').load_extension, 'fzf')
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
-- Telescope live_grep in git root
|
|
|
|
|
|
|
|
-- Function to find the git root directory based on the current buffer's path
|
|
|
|
|
|
|
|
local function find_git_root()
|
|
|
|
|
|
|
|
-- Use the current buffer's path as the starting point for the git search
|
|
|
|
|
|
|
|
local current_file = vim.api.nvim_buf_get_name(0)
|
|
|
|
|
|
|
|
local current_dir
|
|
|
|
|
|
|
|
local cwd = vim.fn.getcwd()
|
|
|
|
|
|
|
|
-- If the buffer is not associated with a file, return nil
|
|
|
|
|
|
|
|
if current_file == '' then
|
|
|
|
|
|
|
|
current_dir = cwd
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
-- Extract the directory from the current file's path
|
|
|
|
|
|
|
|
current_dir = vim.fn.fnamemodify(current_file, ':h')
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
-- Find the Git root directory from the current file's path
|
|
|
|
|
|
|
|
local git_root = vim.fn.systemlist('git -C ' .. vim.fn.escape(current_dir, ' ') .. ' rev-parse --show-toplevel')[1]
|
|
|
|
|
|
|
|
if vim.v.shell_error ~= 0 then
|
|
|
|
|
|
|
|
print 'Not a git repository. Searching on current working directory'
|
|
|
|
|
|
|
|
return cwd
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
return git_root
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
-- Custom live_grep function to search in git root
|
|
|
|
|
|
|
|
local function live_grep_git_root()
|
|
|
|
|
|
|
|
local git_root = find_git_root()
|
|
|
|
|
|
|
|
if git_root then
|
|
|
|
|
|
|
|
require('telescope.builtin').live_grep {
|
|
|
|
|
|
|
|
search_dirs = { git_root },
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
vim.api.nvim_create_user_command('LiveGrepGitRoot', live_grep_git_root, {})
|
|
|
|
|
|
|
|
|
|
|
|
-- See `:help telescope.builtin`
|
|
|
|
-- See `:help telescope.builtin`
|
|
|
|
vim.keymap.set('n', '<leader>?', require('telescope.builtin').oldfiles, { desc = '[?] Find recently opened files' })
|
|
|
|
vim.keymap.set('n', '<leader>?', require('telescope.builtin').oldfiles, { desc = '[?] Find recently opened files' })
|
|
|
|
vim.keymap.set('n', '<leader><space>', require('telescope.builtin').buffers, { desc = '[ ] Find existing buffers' })
|
|
|
|
vim.keymap.set('n', '<leader><space>', require('telescope.builtin').buffers, { desc = '[ ] Find existing buffers' })
|
|
|
@ -279,11 +400,20 @@ vim.keymap.set('n', '<leader>/', function()
|
|
|
|
})
|
|
|
|
})
|
|
|
|
end, { desc = '[/] Fuzzily search in current buffer' })
|
|
|
|
end, { desc = '[/] Fuzzily search in current buffer' })
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
local function telescope_live_grep_open_files()
|
|
|
|
|
|
|
|
require('telescope.builtin').live_grep {
|
|
|
|
|
|
|
|
grep_open_files = true,
|
|
|
|
|
|
|
|
prompt_title = 'Live Grep in Open Files',
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
vim.keymap.set('n', '<leader>s/', telescope_live_grep_open_files, { desc = '[S]earch [/] in Open Files' })
|
|
|
|
|
|
|
|
vim.keymap.set('n', '<leader>ss', require('telescope.builtin').builtin, { desc = '[S]earch [S]elect Telescope' })
|
|
|
|
vim.keymap.set('n', '<leader>gf', require('telescope.builtin').git_files, { desc = 'Search [G]it [F]iles' })
|
|
|
|
vim.keymap.set('n', '<leader>gf', require('telescope.builtin').git_files, { desc = 'Search [G]it [F]iles' })
|
|
|
|
vim.keymap.set('n', '<leader>sf', require('telescope.builtin').find_files, { desc = '[S]earch [F]iles' })
|
|
|
|
vim.keymap.set('n', '<leader>sf', require('telescope.builtin').find_files, { desc = '[S]earch [F]iles' })
|
|
|
|
vim.keymap.set('n', '<leader>sh', require('telescope.builtin').help_tags, { desc = '[S]earch [H]elp' })
|
|
|
|
vim.keymap.set('n', '<leader>sh', require('telescope.builtin').help_tags, { desc = '[S]earch [H]elp' })
|
|
|
|
vim.keymap.set('n', '<leader>sw', require('telescope.builtin').grep_string, { desc = '[S]earch current [W]ord' })
|
|
|
|
vim.keymap.set('n', '<leader>sw', require('telescope.builtin').grep_string, { desc = '[S]earch current [W]ord' })
|
|
|
|
vim.keymap.set('n', '<leader>sg', require('telescope.builtin').live_grep, { desc = '[S]earch by [G]rep' })
|
|
|
|
vim.keymap.set('n', '<leader>sg', require('telescope.builtin').live_grep, { desc = '[S]earch by [G]rep' })
|
|
|
|
|
|
|
|
vim.keymap.set('n', '<leader>sG', ':LiveGrepGitRoot<cr>', { desc = '[S]earch by [G]rep on Git Root' })
|
|
|
|
vim.keymap.set('n', '<leader>sd', require('telescope.builtin').diagnostics, { desc = '[S]earch [D]iagnostics' })
|
|
|
|
vim.keymap.set('n', '<leader>sd', require('telescope.builtin').diagnostics, { desc = '[S]earch [D]iagnostics' })
|
|
|
|
vim.keymap.set('n', '<leader>sr', require('telescope.builtin').resume, { desc = '[S]earch [R]esume' })
|
|
|
|
vim.keymap.set('n', '<leader>sr', require('telescope.builtin').resume, { desc = '[S]earch [R]esume' })
|
|
|
|
|
|
|
|
|
|
|
@ -356,12 +486,6 @@ vim.defer_fn(function()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
end, 0)
|
|
|
|
end, 0)
|
|
|
|
|
|
|
|
|
|
|
|
-- Diagnostic keymaps
|
|
|
|
|
|
|
|
vim.keymap.set('n', '[d', vim.diagnostic.goto_prev, { desc = 'Go to previous diagnostic message' })
|
|
|
|
|
|
|
|
vim.keymap.set('n', ']d', vim.diagnostic.goto_next, { desc = 'Go to next diagnostic message' })
|
|
|
|
|
|
|
|
vim.keymap.set('n', '<leader>e', vim.diagnostic.open_float, { desc = 'Open floating diagnostic message' })
|
|
|
|
|
|
|
|
vim.keymap.set('n', '<leader>q', vim.diagnostic.setloclist, { desc = 'Open diagnostics list' })
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
-- [[ Configure LSP ]]
|
|
|
|
-- [[ Configure LSP ]]
|
|
|
|
-- This function gets run when an LSP connects to a particular buffer.
|
|
|
|
-- This function gets run when an LSP connects to a particular buffer.
|
|
|
|
local on_attach = function(_, bufnr)
|
|
|
|
local on_attach = function(_, bufnr)
|
|
|
@ -412,11 +536,18 @@ require('which-key').register {
|
|
|
|
['<leader>c'] = { name = '[C]ode', _ = 'which_key_ignore' },
|
|
|
|
['<leader>c'] = { name = '[C]ode', _ = 'which_key_ignore' },
|
|
|
|
['<leader>d'] = { name = '[D]ocument', _ = 'which_key_ignore' },
|
|
|
|
['<leader>d'] = { name = '[D]ocument', _ = 'which_key_ignore' },
|
|
|
|
['<leader>g'] = { name = '[G]it', _ = 'which_key_ignore' },
|
|
|
|
['<leader>g'] = { name = '[G]it', _ = 'which_key_ignore' },
|
|
|
|
['<leader>h'] = { name = 'More git', _ = 'which_key_ignore' },
|
|
|
|
['<leader>h'] = { name = 'Git [H]unk', _ = 'which_key_ignore' },
|
|
|
|
['<leader>r'] = { name = '[R]ename', _ = 'which_key_ignore' },
|
|
|
|
['<leader>r'] = { name = '[R]ename', _ = 'which_key_ignore' },
|
|
|
|
['<leader>s'] = { name = '[S]earch', _ = 'which_key_ignore' },
|
|
|
|
['<leader>s'] = { name = '[S]earch', _ = 'which_key_ignore' },
|
|
|
|
|
|
|
|
['<leader>t'] = { name = '[T]oggle', _ = 'which_key_ignore' },
|
|
|
|
['<leader>w'] = { name = '[W]orkspace', _ = 'which_key_ignore' },
|
|
|
|
['<leader>w'] = { name = '[W]orkspace', _ = 'which_key_ignore' },
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
-- register which-key VISUAL mode
|
|
|
|
|
|
|
|
-- required for visual <leader>hs (hunk stage) to work
|
|
|
|
|
|
|
|
require('which-key').register({
|
|
|
|
|
|
|
|
['<leader>'] = { name = 'VISUAL <leader>' },
|
|
|
|
|
|
|
|
['<leader>h'] = { 'Git [H]unk' },
|
|
|
|
|
|
|
|
}, { mode = 'v' })
|
|
|
|
|
|
|
|
|
|
|
|
-- mason-lspconfig requires that these setup functions are called in this order
|
|
|
|
-- mason-lspconfig requires that these setup functions are called in this order
|
|
|
|
-- before setting up the servers.
|
|
|
|
-- before setting up the servers.
|
|
|
@ -443,6 +574,8 @@ local servers = {
|
|
|
|
Lua = {
|
|
|
|
Lua = {
|
|
|
|
workspace = { checkThirdParty = false },
|
|
|
|
workspace = { checkThirdParty = false },
|
|
|
|
telemetry = { enable = false },
|
|
|
|
telemetry = { enable = false },
|
|
|
|
|
|
|
|
-- NOTE: toggle below to ignore Lua_LS's noisy `missing-fields` warnings
|
|
|
|
|
|
|
|
-- diagnostics = { disable = { 'missing-fields' } },
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
jdtls = {
|
|
|
|
jdtls = {
|
|
|
@ -493,6 +626,9 @@ cmp.setup {
|
|
|
|
luasnip.lsp_expand(args.body)
|
|
|
|
luasnip.lsp_expand(args.body)
|
|
|
|
end,
|
|
|
|
end,
|
|
|
|
},
|
|
|
|
},
|
|
|
|
|
|
|
|
completion = {
|
|
|
|
|
|
|
|
completeopt = 'menu,menuone,noinsert',
|
|
|
|
|
|
|
|
},
|
|
|
|
mapping = cmp.mapping.preset.insert {
|
|
|
|
mapping = cmp.mapping.preset.insert {
|
|
|
|
['<C-n>'] = cmp.mapping.select_next_item(),
|
|
|
|
['<C-n>'] = cmp.mapping.select_next_item(),
|
|
|
|
['<C-p>'] = cmp.mapping.select_prev_item(),
|
|
|
|
['<C-p>'] = cmp.mapping.select_prev_item(),
|
|
|
@ -525,6 +661,7 @@ cmp.setup {
|
|
|
|
sources = {
|
|
|
|
sources = {
|
|
|
|
{ name = 'nvim_lsp' },
|
|
|
|
{ name = 'nvim_lsp' },
|
|
|
|
{ name = 'luasnip' },
|
|
|
|
{ name = 'luasnip' },
|
|
|
|
|
|
|
|
{ name = 'path' },
|
|
|
|
},
|
|
|
|
},
|
|
|
|
}
|
|
|
|
}
|
|
|
|
vim.wo.relativenumber = true
|
|
|
|
vim.wo.relativenumber = true
|
|
|
|