|
|
|
@ -198,6 +198,10 @@ vim.g.undotree_ShortIndicators = 1
|
|
|
|
|
vim.opt.hidden = false
|
|
|
|
|
-- local set = vim.opt
|
|
|
|
|
-- set.hidden = false
|
|
|
|
|
-- if performing an operation that would fail due to unsaved changes in the buffer (like `:q`),
|
|
|
|
|
-- instead raise a dialog asking if you wish to save the current file(s)
|
|
|
|
|
-- See `:help 'confirm'`
|
|
|
|
|
vim.opt.confirm = true
|
|
|
|
|
|
|
|
|
|
-- [[ Basic Keymaps ]]
|
|
|
|
|
-- See `:help vim.keymap.set()`
|
|
|
|
@ -262,6 +266,12 @@ vim.keymap.set('i', '<C-k>', vim.lsp.buf.signature_help)
|
|
|
|
|
-- Enable number in netrw
|
|
|
|
|
vim.g.netrw_bufsettings = 'noma nomod nu rnu nobl nowrap ro'
|
|
|
|
|
|
|
|
|
|
-- NOTE: Some terminals have coliding keymaps or are not able to send distinct keycodes
|
|
|
|
|
-- vim.keymap.set("n", "<C-S-h>", "<C-w>H", { desc = "Move window to the left" })
|
|
|
|
|
-- vim.keymap.set("n", "<C-S-l>", "<C-w>L", { desc = "Move window to the right" })
|
|
|
|
|
-- vim.keymap.set("n", "<C-S-j>", "<C-w>J", { desc = "Move window to the lower" })
|
|
|
|
|
-- vim.keymap.set("n", "<C-S-k>", "<C-w>K", { desc = "Move window to the upper" })
|
|
|
|
|
|
|
|
|
|
-- [[ Basic Autocommands ]]
|
|
|
|
|
-- See `:help lua-guide-autocommands`
|
|
|
|
|
|
|
|
|
@ -635,13 +645,26 @@ require('lazy').setup({
|
|
|
|
|
-- For example, in C this would take you to the header.
|
|
|
|
|
map('gD', vim.lsp.buf.declaration, '[G]oto [D]eclaration')
|
|
|
|
|
|
|
|
|
|
-- This function resolves a difference between neovim nightly (version 0.11) and stable (version 0.10)
|
|
|
|
|
---@param client vim.lsp.Client
|
|
|
|
|
---@param method vim.lsp.protocol.Method
|
|
|
|
|
---@param bufnr? integer some lsp support methods only in specific files
|
|
|
|
|
---@return boolean
|
|
|
|
|
local function client_supports_method(client, method, bufnr)
|
|
|
|
|
if vim.fn.has 'nvim-0.11' == 1 then
|
|
|
|
|
return client:supports_method(method, bufnr)
|
|
|
|
|
else
|
|
|
|
|
return client.supports_method(method, { bufnr = bufnr })
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
-- The following two autocommands are used to highlight references of the
|
|
|
|
|
-- word under your cursor when your cursor rests there for a little while.
|
|
|
|
|
-- See `:help CursorHold` for information about when this is executed
|
|
|
|
|
--
|
|
|
|
|
-- When you move your cursor, the highlights will be cleared (the second autocommand).
|
|
|
|
|
local client = vim.lsp.get_client_by_id(event.data.client_id)
|
|
|
|
|
if client and client.supports_method(vim.lsp.protocol.Methods.textDocument_documentHighlight) then
|
|
|
|
|
if client and client_supports_method(client, vim.lsp.protocol.Methods.textDocument_documentHighlight, event.buf) then
|
|
|
|
|
local highlight_augroup = vim.api.nvim_create_augroup('kickstart-lsp-highlight', { clear = false })
|
|
|
|
|
vim.api.nvim_create_autocmd({ 'CursorHold', 'CursorHoldI' }, {
|
|
|
|
|
buffer = event.buf,
|
|
|
|
@ -668,7 +691,7 @@ require('lazy').setup({
|
|
|
|
|
-- code, if the language server you are using supports them
|
|
|
|
|
--
|
|
|
|
|
-- This may be unwanted, since they displace some of your code
|
|
|
|
|
if client and client.supports_method(vim.lsp.protocol.Methods.textDocument_inlayHint) then
|
|
|
|
|
if client and client_supports_method(client, vim.lsp.protocol.Methods.textDocument_inlayHint, event.buf) then
|
|
|
|
|
map('<leader>th', function()
|
|
|
|
|
vim.lsp.inlay_hint.enable(not vim.lsp.inlay_hint.is_enabled { bufnr = event.buf })
|
|
|
|
|
end, '[T]oggle Inlay [H]ints')
|
|
|
|
@ -676,15 +699,34 @@ require('lazy').setup({
|
|
|
|
|
end,
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
-- Change diagnostic symbols in the sign column (gutter)
|
|
|
|
|
-- if vim.g.have_nerd_font then
|
|
|
|
|
-- local signs = { ERROR = '', WARN = '', INFO = '', HINT = '' }
|
|
|
|
|
-- local diagnostic_signs = {}
|
|
|
|
|
-- for type, icon in pairs(signs) do
|
|
|
|
|
-- diagnostic_signs[vim.diagnostic.severity[type]] = icon
|
|
|
|
|
-- end
|
|
|
|
|
-- vim.diagnostic.config { signs = { text = diagnostic_signs } }
|
|
|
|
|
-- end
|
|
|
|
|
-- Diagnostic Config
|
|
|
|
|
-- See :help vim.diagnostic.Opts
|
|
|
|
|
vim.diagnostic.config {
|
|
|
|
|
severity_sort = true,
|
|
|
|
|
float = { border = 'rounded', source = 'if_many' },
|
|
|
|
|
underline = { severity = vim.diagnostic.severity.ERROR },
|
|
|
|
|
signs = vim.g.have_nerd_font and {
|
|
|
|
|
text = {
|
|
|
|
|
[vim.diagnostic.severity.ERROR] = ' ',
|
|
|
|
|
[vim.diagnostic.severity.WARN] = ' ',
|
|
|
|
|
[vim.diagnostic.severity.INFO] = ' ',
|
|
|
|
|
[vim.diagnostic.severity.HINT] = ' ',
|
|
|
|
|
},
|
|
|
|
|
} or {},
|
|
|
|
|
virtual_text = {
|
|
|
|
|
source = 'if_many',
|
|
|
|
|
spacing = 2,
|
|
|
|
|
format = function(diagnostic)
|
|
|
|
|
local diagnostic_message = {
|
|
|
|
|
[vim.diagnostic.severity.ERROR] = diagnostic.message,
|
|
|
|
|
[vim.diagnostic.severity.WARN] = diagnostic.message,
|
|
|
|
|
[vim.diagnostic.severity.INFO] = diagnostic.message,
|
|
|
|
|
[vim.diagnostic.severity.HINT] = diagnostic.message,
|
|
|
|
|
}
|
|
|
|
|
return diagnostic_message[diagnostic.severity]
|
|
|
|
|
end,
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
-- LSP servers and clients are able to communicate to each other what features they support.
|
|
|
|
|
-- By default, Neovim doesn't support everything that is in the LSP specification.
|
|
|
|
@ -851,6 +893,8 @@ require('lazy').setup({
|
|
|
|
|
require('mason-tool-installer').setup { ensure_installed = ensure_installed }
|
|
|
|
|
|
|
|
|
|
require('mason-lspconfig').setup {
|
|
|
|
|
ensure_installed = {}, -- explicitly set to an empty table (Kickstart populates installs via mason-tool-installer)
|
|
|
|
|
automatic_installation = false,
|
|
|
|
|
handlers = {
|
|
|
|
|
function(server_name)
|
|
|
|
|
local server = servers[server_name] or {}
|
|
|
|
@ -891,16 +935,14 @@ 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'
|
|
|
|
|
return nil
|
|
|
|
|
else
|
|
|
|
|
lsp_format_opt = 'fallback'
|
|
|
|
|
return {
|
|
|
|
|
timeout_ms = 500,
|
|
|
|
|
lsp_format = 'fallback',
|
|
|
|
|
}
|
|
|
|
|
end
|
|
|
|
|
return {
|
|
|
|
|
timeout_ms = 500,
|
|
|
|
|
lsp_format = lsp_format_opt,
|
|
|
|
|
}
|
|
|
|
|
end,
|
|
|
|
|
formatters_by_ft = {
|
|
|
|
|
lua = { 'stylua' },
|
|
|
|
@ -948,7 +990,7 @@ require('lazy').setup({
|
|
|
|
|
-- into multiple repos for maintenance purposes.
|
|
|
|
|
'hrsh7th/cmp-nvim-lsp',
|
|
|
|
|
'hrsh7th/cmp-path',
|
|
|
|
|
-- 'hrsh7th/cmp-nvim-lsp-signature-help',
|
|
|
|
|
'hrsh7th/cmp-nvim-lsp-signature-help',
|
|
|
|
|
},
|
|
|
|
|
config = function()
|
|
|
|
|
-- See `:help cmp`
|
|
|
|
@ -1028,7 +1070,7 @@ require('lazy').setup({
|
|
|
|
|
{ name = 'nvim_lsp' },
|
|
|
|
|
{ name = 'luasnip' },
|
|
|
|
|
{ name = 'path' },
|
|
|
|
|
-- { name = 'nvim_lsp_signature_help' },
|
|
|
|
|
{ name = 'nvim_lsp_signature_help' },
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
end,
|
|
|
|
@ -1041,14 +1083,18 @@ require('lazy').setup({
|
|
|
|
|
-- If you want to see what colorschemes are already installed, you can use `:Telescope colorscheme`.
|
|
|
|
|
'folke/tokyonight.nvim',
|
|
|
|
|
priority = 1000, -- Make sure to load this before all the other start plugins.
|
|
|
|
|
init = function()
|
|
|
|
|
config = function()
|
|
|
|
|
---@diagnostic disable-next-line: missing-fields
|
|
|
|
|
require('tokyonight').setup {
|
|
|
|
|
styles = {
|
|
|
|
|
comments = { italic = false }, -- Disable italics in comments
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
-- Load the colorscheme here.
|
|
|
|
|
-- Like many other themes, this one has different styles, and you could load
|
|
|
|
|
-- any other, such as 'tokyonight-storm', 'tokyonight-moon', or 'tokyonight-day'.
|
|
|
|
|
vim.cmd.colorscheme 'tokyonight-night'
|
|
|
|
|
|
|
|
|
|
-- You can configure highlights by doing something like:
|
|
|
|
|
vim.cmd.hi 'Comment gui=none'
|
|
|
|
|
end,
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
@ -1171,6 +1217,7 @@ require('lazy').setup({
|
|
|
|
|
-- This is the easiest way to modularize your config.
|
|
|
|
|
--
|
|
|
|
|
-- Uncomment the following line and add your plugins to `lua/custom/plugins/*.lua` to get going.
|
|
|
|
|
-- For additional information, see `:help lazy.nvim-lazy.nvim-structuring-your-plugins`
|
|
|
|
|
{ import = 'custom.plugins' },
|
|
|
|
|
--
|
|
|
|
|
-- For additional information with loading, sourcing and examples see `:help lazy.nvim-🔌-plugin-spec`
|
|
|
|
|