1
0
mirror of https://github.com/jdhao/nvim-config.git synced 2025-06-08 14:14:33 +02:00

Compare commits

..

10 Commits

Author SHA1 Message Date
WombleWoo7547
f0794e7f58
Merge 994b0d4c84dcf9e780d5887c7527a9ab04ef2d8b into 8dfae271d020e198e385382c4f31b15ad4d10405 2024-11-07 21:48:13 -03:00
jdhao
8dfae271d0 use plaintext for pyright hover request
see my comment here for the details: https://www.reddit.com/r/neovim/comments/1gdv1rc/comment/lvt9nlm/
2024-11-07 21:53:32 +01:00
jdhao
1141a18c5f update config for pyright 2024-11-06 23:19:55 +01:00
jdhao
fe3d5e5922 remove plugin committia.vim 2024-11-05 22:16:54 +01:00
jdhao
9769c24633 Switch Python LSP for completion and add ruff
pyright servers type checking, completion, and ruff servers linting and
diagnostics (ruff can also format Python files, but it is slightly
different from black)
2024-11-05 22:09:33 +01:00
jdhao
97f72936ac Enable LSP format also for visual selection 2024-11-05 22:04:49 +01:00
jdhao
94cade03be enable inlayhint for lua_ls server
The client side inlayhint can be enabled by uncommentting the code in
this PR.
2024-11-05 22:01:23 +01:00
jdhao
590bd6c7e6 use stylua to format lua files 2024-11-05 21:56:18 +01:00
jdhao
4171f190f2 Add plugin nvim-lightbulb to hint code actions 2024-11-05 21:47:34 +01:00
jdhao
5426c88a90 update Leaderf setting
Only search file content and not file name when using Leaderf rg
2024-11-05 21:44:34 +01:00
4 changed files with 97 additions and 51 deletions

View File

@ -3,3 +3,5 @@ set formatoptions-=o
set formatoptions-=r set formatoptions-=r
nnoremap <buffer><silent> <F9> :luafile %<CR> nnoremap <buffer><silent> <F9> :luafile %<CR>
nnoremap <buffer><silent> <space>f <cmd>!stylua %<CR>

View File

@ -3,6 +3,7 @@ local api = vim.api
local keymap = vim.keymap local keymap = vim.keymap
local lsp = vim.lsp local lsp = vim.lsp
local diagnostic = vim.diagnostic local diagnostic = vim.diagnostic
local lspconfig = require("lspconfig")
local utils = require("utils") local utils = require("utils")
@ -48,9 +49,13 @@ local custom_attach = function(client, bufnr)
-- Set some key bindings conditional on server capabilities -- Set some key bindings conditional on server capabilities
if client.server_capabilities.documentFormattingProvider then if client.server_capabilities.documentFormattingProvider then
map("n", "<space>f", vim.lsp.buf.format, { desc = "format code" }) map({"n", "x"}, "<space>f", vim.lsp.buf.format, { desc = "format code" })
end end
-- Uncomment code below to enable inlay hint from language server, some LSP server supports inlay hint,
-- but disable this feature by default, so you may need to enable inlay hint in the LSP server config.
-- vim.lsp.inlay_hint.enable(true, {buffer=bufnr})
api.nvim_create_autocmd("CursorHold", { api.nvim_create_autocmd("CursorHold", {
buffer = bufnr, buffer = bufnr,
callback = function() callback = function()
@ -110,69 +115,100 @@ local custom_attach = function(client, bufnr)
end end
local capabilities = require('cmp_nvim_lsp').default_capabilities() local capabilities = require('cmp_nvim_lsp').default_capabilities()
-- required by nvim-ufo -- required by nvim-ufo
capabilities.textDocument.foldingRange = { capabilities.textDocument.foldingRange = {
dynamicRegistration = false, dynamicRegistration = false,
lineFoldingOnly = true lineFoldingOnly = true
} }
local lspconfig = require("lspconfig") -- For what diagnostic is enabled in which type checking mode, check doc:
-- https://github.com/microsoft/pyright/blob/main/docs/configuration.md#diagnostic-settings-defaults
-- Currently, the pyright also has some issues displaying hover documentation:
-- https://www.reddit.com/r/neovim/comments/1gdv1rc/what_is_causeing_the_lsp_hover_docs_to_looks_like/
if utils.executable("pylsp") then if utils.executable('pyright') then
local venv_path = os.getenv('VIRTUAL_ENV') local new_capability = {
local py_path = nil -- this will remove some of the diagnostics that duplicates those from ruff, idea taken and adapted from
-- decide which python executable to use for mypy -- here: https://github.com/astral-sh/ruff-lsp/issues/384#issuecomment-1989619482
if venv_path ~= nil then textDocument = {
py_path = venv_path .. "/bin/python3" publishDiagnostics = {
else tagSupport = {
py_path = vim.g.python3_host_prog valueSet = { 2 }
end }
},
hover = {
contentFormat = { "plaintext" },
dynamicRegistration = true,
},
}
}
local merged_capability = vim.tbl_deep_extend("force", capabilities, new_capability)
lspconfig.pylsp.setup { lspconfig.pyright.setup {
cmd = { "delance-langserver", "--stdio" },
on_attach = custom_attach, on_attach = custom_attach,
capabilities = merged_capability,
settings = { settings = {
pylsp = { pyright = {
plugins = { -- disable import sorting and use Ruff for this
-- formatter options disableOrganizeImports = true,
black = { enabled = true }, disableTaggedHints = false,
autopep8 = { enabled = false }, },
yapf = { enabled = false }, python = {
-- linter options analysis = {
pylint = { enabled = true, executable = "pylint" }, autoSearchPaths = true,
ruff = { enabled = false }, diagnosticMode = "workspace",
pyflakes = { enabled = false }, typeCheckingMode = "standard",
pycodestyle = { enabled = false }, useLibraryCodeForTypes = true,
-- type checker -- we can this setting below to redefine some diagnostics
pylsp_mypy = { diagnosticSeverityOverrides = {
enabled = true, deprecateTypingAliases = false,
overrides = { "--python-executable", py_path, true }, },
report_progress = true, -- inlay hint settings are provided by pylance?
live_mode = false inlayHints = {
callArgumentNames = "partial",
functionReturnTypes = true,
pytestParameters = true,
variableTypes = true,
}, },
-- auto-completion options
jedi_completion = { fuzzy = true },
-- import sorting
isort = { enabled = true },
}, },
}, },
}, },
flags = {
debounce_text_changes = 200,
},
capabilities = capabilities,
} }
else else
vim.notify("pylsp not found!", vim.log.levels.WARN, { title = "Nvim-config" }) vim.notify("pyright not found!", vim.log.levels.WARN, { title = 'Nvim-config' })
end end
-- if utils.executable('pyright') then if utils.executable("ruff") then
-- lspconfig.pyright.setup{ require('lspconfig').ruff.setup({
-- on_attach = custom_attach, on_attach = custom_attach,
-- capabilities = capabilities capabilities = capabilities,
-- } init_options = {
-- else -- the settings can be found here: https://docs.astral.sh/ruff/editors/settings/
-- vim.notify("pyright not found!", vim.log.levels.WARN, {title = 'Nvim-config'}) settings = {
-- end organizeImports = true,
}
}
})
end
-- Disable ruff hover feature in favor of Pyright
vim.api.nvim_create_autocmd("LspAttach", {
group = vim.api.nvim_create_augroup('lsp_attach_disable_ruff_hover', { clear = true }),
callback = function(args)
local client = vim.lsp.get_client_by_id(args.data.client_id)
-- vim.print(client.name, client.server_capabilities)
if client == nil then
return
end
if client.name == 'ruff' then
client.server_capabilities.hoverProvider = false
end
end,
desc = 'LSP: Disable hover capability from Ruff',
})
if utils.executable("ltex-ls") then if utils.executable("ltex-ls") then
lspconfig.ltex.setup { lspconfig.ltex.setup {
@ -220,8 +256,8 @@ if utils.executable("bash-language-server") then
} }
end end
-- settings for lua-language-server can be found on https://luals.github.io/wiki/settings/
if utils.executable("lua-language-server") then if utils.executable("lua-language-server") then
-- settings for lua-language-server can be found on https://github.com/LuaLS/lua-language-server/wiki/Settings .
lspconfig.lua_ls.setup { lspconfig.lua_ls.setup {
on_attach = custom_attach, on_attach = custom_attach,
settings = { settings = {
@ -230,6 +266,9 @@ if utils.executable("lua-language-server") then
-- Tell the language server which version of Lua you're using (most likely LuaJIT in the case of Neovim) -- Tell the language server which version of Lua you're using (most likely LuaJIT in the case of Neovim)
version = "LuaJIT", version = "LuaJIT",
}, },
hint = {
enable = true
}
}, },
}, },
capabilities = capabilities, capabilities = capabilities,

View File

@ -357,9 +357,6 @@ local plugin_specs = {
end, end,
}, },
-- Better git commit experience
{ "rhysd/committia.vim", lazy = true },
{ {
"sindrets/diffview.nvim", "sindrets/diffview.nvim",
}, },
@ -573,6 +570,14 @@ local plugin_specs = {
end, end,
event = "VeryLazy", event = "VeryLazy",
}, },
{
-- show hint for code actions, the user can also implement code actions themselves,
-- see discussion here: https://github.com/neovim/neovim/issues/14869
"kosayoda/nvim-lightbulb",
config = function()
require("nvim-lightbulb").setup { autocmd = { enabled = true } }
end,
},
} }
require("lazy").setup { require("lazy").setup {

View File

@ -79,7 +79,7 @@ let g:Lf_WorkingDirectoryMode = 'a'
nnoremap <silent> <leader>ff :<C-U>Leaderf file --popup<CR> nnoremap <silent> <leader>ff :<C-U>Leaderf file --popup<CR>
" Grep project files in popup window " Grep project files in popup window
nnoremap <silent> <leader>fg :<C-U>Leaderf rg --no-messages --popup<CR> nnoremap <silent> <leader>fg :<C-U>Leaderf rg --no-messages --popup --nameOnly<CR>
" Search vim help files " Search vim help files
nnoremap <silent> <leader>fh :<C-U>Leaderf help --popup<CR> nnoremap <silent> <leader>fh :<C-U>Leaderf help --popup<CR>