Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix update python lsp #24

Merged
merged 2 commits into from
Jan 23, 2025
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Next Next commit
fix: 💫 update Python LSP
rodneylab committed Jan 22, 2025

Verified

This commit was signed with the committer’s verified signature.
jorisv Joris Vaillant
commit a6e7cc6f657acfc28e428f52672a350b994fc1b7
16 changes: 11 additions & 5 deletions nvim/init.vim
Original file line number Diff line number Diff line change
@@ -50,7 +50,7 @@ set smartcase
" hide inbuilt mode (using lightline for this)
set noshowmode

set guifont=Iosevka\ Custom,JetBrains\ Mono,IosevkaTerm\ NF:h13.5:#e-subpixelantialias
set guifont=Iosevka\ Custom,JetBrains\ Mono,IosevkaTerm\ NFM:h13.5:#e-subpixelantialias
set linespace=5
" set neovide_scale_factor=1.0

@@ -109,16 +109,19 @@ Plug 'rafamadriz/friendly-snippets'

" Linting
Plug 'mfussenegger/nvim-lint'
Plug 'microsoft/pyright'

" Treesitter
Plug 'nvim-treesitter/nvim-treesitter', { 'do': ':TSUpdate' }
Plug 'windwp/nvim-ts-autotag'

" Theme
Plug 'zaldih/themery.nvim'
Plug 'joshdick/onedark.vim', { 'as': 'onedark' }
Plug 'catppuccin/nvim', { 'as': 'catppuccin' }
Plug 'rebelot/kanagawa.nvim', { 'as': 'kanagawa'}
Plug 'sainnhe/sonokai', { 'as': 'sonokai'}
Plug '0xstepit/flow.nvim', { 'as': 'flow'}

" Glow Markdown previews
Plug 'ellisonleao/glow.nvim'
@@ -160,16 +163,19 @@ Plug 'sakhnik/nvim-gdb'
Plug 'stevearc/dressing.nvim'
Plug 'ziontee113/icon-picker.nvim'

" Glow Makrkdown preview
" Glow Markdown preview
Plug 'ellisonleao/glow.nvim'

call plug#end()

lua require('rodneylab.plugins')

set notermguicolors
set background=dark
colorscheme onedark

if exists("g:neovide")
colorscheme catppuccin
lua << END
require("themery").setThemeByName("Rust", false)
END
endif

lua require('rodneylab.plugins')
316 changes: 170 additions & 146 deletions nvim/lua/rodneylab/plugins/lsp.lua
Original file line number Diff line number Diff line change
@@ -2,162 +2,186 @@ local nvim_lsp = require("lspconfig")
local cmp_nvim_lsp = require("cmp_nvim_lsp")

local on_attach = function(_, bufnr)
local function buf_set_keymap(...)
vim.api.nvim_buf_set_keymap(bufnr, ...)
end
local opts = { noremap = true, silent = true }
local function buf_set_keymap(...)
vim.api.nvim_buf_set_keymap(bufnr, ...)
end
local opts = { noremap = true, silent = true }

opts.desc = "Go to declaration"
buf_set_keymap("n", "gD", "<cmd>lua vim.lsp.buf.declaration()<CR>", opts)
opts.desc = "Go to declaration"
buf_set_keymap("n", "gD", "<cmd>lua vim.lsp.buf.declaration()<CR>", opts)

opts.desc = ""
buf_set_keymap("n", "1gD", "<cmd>lua vim.lsp.buf.type_definition()<CR>", opts)
opts.desc = ""
buf_set_keymap("n", "1gD", "<cmd>lua vim.lsp.buf.type_definition()<CR>", opts)

opts.desc = "Show LSP definitions"
buf_set_keymap("n", "gd", "<cmd>lua vim.lsp.buf.definition()<CR>", opts)
opts.desc = "Show LSP definitions"
buf_set_keymap("n", "gd", "<cmd>lua vim.lsp.buf.definition()<CR>", opts)

opts.desc = ""
buf_set_keymap("n", "g0", "<cmd>lua vim.lsp.buf.document_symbol()<CR>", opts)
opts.desc = ""
buf_set_keymap("n", "g0", "<cmd>lua vim.lsp.buf.document_symbol()<CR>", opts)

opts.desc = "Show LSP type definitions"
buf_set_keymap("n", "gt", "<cmd>Telescope lsp_type_definitions<CR>", opts)
opts.desc = "Show LSP type definitions"
buf_set_keymap("n", "gt", "<cmd>Telescope lsp_type_definitions<CR>", opts)

opts.desc = "Show documentation for what is under cursor"
buf_set_keymap("n", "K", "<cmd>lua vim.lsp.buf.hover()<CR>", opts)
opts.desc = "Show documentation for what is under cursor"
buf_set_keymap("n", "K", "<cmd>lua vim.lsp.buf.hover()<CR>", opts)

opts.desc = ""
buf_set_keymap("n", "<space>a", "<cmd>lua vim.lsp.buf.hover()<CR>", opts)
opts.desc = ""
buf_set_keymap("n", "<space>a", "<cmd>lua vim.lsp.buf.hover()<CR>", opts)

opts.desc = "Show implementations"
buf_set_keymap("n", "gi", "<cmd>lua vim.lsp.buf.implementation()<CR>", opts)
opts.desc = "Show implementations"
buf_set_keymap("n", "gi", "<cmd>lua vim.lsp.buf.implementation()<CR>", opts)

opts.desc = "Show LSP references"
buf_set_keymap("n", "gR", "<cmd>Telescope lsp_references<CR>", opts)
opts.desc = "Show LSP references"
buf_set_keymap("n", "gR", "<cmd>Telescope lsp_references<CR>", opts)

opts.desc = ""
buf_set_keymap("n", "<C-k>", "<cmd>lua vim.lsp.buf.signature_help()<CR>", opts)
opts.desc = ""
buf_set_keymap("n", "<C-k>", "<cmd>lua vim.lsp.buf.signature_help()<CR>", opts)

buf_set_keymap("n", "<space>wa", "<cmd>lua vim.lsp.buf.add_workspace_folder()<CR>", opts)
buf_set_keymap("n", "<space>wa", "<cmd>lua vim.lsp.buf.add_workspace_folder()<CR>", opts)

buf_set_keymap("n", "<space>wr", "<cmd>lua vim.lsp.buf.remove_workspace_folder()<CR>", opts)
buf_set_keymap("n", "<space>wr", "<cmd>lua vim.lsp.buf.remove_workspace_folder()<CR>", opts)

buf_set_keymap("n", "<space>wl", "<cmd>lua print(vim.inspect(vim.lsp.buf.list_workspace_folders()))<CR>", opts)
buf_set_keymap("n", "<space>wl", "<cmd>lua print(vim.inspect(vim.lsp.buf.list_workspace_folders()))<CR>", opts)

opts.desc = "Show buffer diagnostics"
buf_set_keymap("n", "<leader>D", "<cmd>Telescope diagnostics bufnr=0<CR>", opts)
opts.desc = "Show buffer diagnostics"
buf_set_keymap("n", "<leader>D", "<cmd>Telescope diagnostics bufnr=0<CR>", opts)

opts.desc = "Show line diagnostics"
buf_set_keymap("n", "<leader>d", "<cmd>lua vim.diagnostic.open_float<CR>", opts)
opts.desc = "Show line diagnostics"
buf_set_keymap("n", "<leader>d", "<cmd>lua vim.diagnostic.open_float<CR>", opts)

opts.desc = "Go to previous diagnostic"
buf_set_keymap("n", "[d", "<cmd>lua vim.diagnostic.goto_prev", opts)
opts.desc = "Go to previous diagnostic"
buf_set_keymap("n", "[d", "<cmd>lua vim.diagnostic.goto_prev", opts)

opts.desc = "Go to next diagnostic"
buf_set_keymap("n", "]d", "<cmd>lua vim.diagnostic.goto_next", opts)
opts.desc = "Go to next diagnostic"
buf_set_keymap("n", "]d", "<cmd>lua vim.diagnostic.goto_next", opts)

opts.desc = ""
buf_set_keymap("n", "<space>D", "<cmd>lua vim.lsp.buf.type_definition<CR>", opts)
opts.desc = ""
buf_set_keymap("n", "<space>D", "<cmd>lua vim.lsp.buf.type_definition<CR>", opts)

opts.desc = "Smart rename"
buf_set_keymap("n", "<space>rn", "<cmd>lua vim.lsp.buf.rename()<CR>", opts)
opts.desc = "Smart rename"
buf_set_keymap("n", "<space>rn", "<cmd>lua vim.lsp.buf.rename()<CR>", opts)

opts.desc = "See available code actions"
buf_set_keymap("n", "<space>ca", "<cmd>lua vim.lsp.buf.code_action()<CR>", opts)
opts.desc = "See available code actions"
buf_set_keymap("n", "<space>ca", "<cmd>lua vim.lsp.buf.code_action()<CR>", opts)

opts.desc = ""
buf_set_keymap("n", "gr", "<cmd>lua vim.lsp.buf.references()<CR>", opts)
buf_set_keymap("n", "<space>e", "<cmd>lua vim.lsp.diagnostic.show_line_diagnostics()<CR>", opts)
buf_set_keymap("n", "[d", "<cmd>lua vim.diagnostic.goto_prev()<CR>", opts)
buf_set_keymap("n", "]d", "<cmd>lua vim.diagnostic.goto_next()<CR>", opts)
buf_set_keymap("n", "<space>q", "<cmd>lua vim.lsp.diagnostic.set_loclist()<CR>", opts)
buf_set_keymap("n", "<space>f", "<cmd>lua vim.lsp.buf.format{ async = true }<CR>", opts)
opts.desc = ""
buf_set_keymap("n", "gr", "<cmd>lua vim.lsp.buf.references()<CR>", opts)
buf_set_keymap("n", "<space>e", "<cmd>lua vim.lsp.diagnostic.show_line_diagnostics()<CR>", opts)
buf_set_keymap("n", "[d", "<cmd>lua vim.diagnostic.goto_prev()<CR>", opts)
buf_set_keymap("n", "]d", "<cmd>lua vim.diagnostic.goto_next()<CR>", opts)
buf_set_keymap("n", "<space>q", "<cmd>lua vim.lsp.diagnostic.set_loclist()<CR>", opts)
buf_set_keymap("n", "<space>f", "<cmd>lua vim.lsp.buf.format{ async = true }<CR>", opts)
end

local capabilities = vim.lsp.protocol.make_client_capabilities()
capabilities = cmp_nvim_lsp.default_capabilities(capabilities)

local signs = { Error = "", Warn = "", Hint = "󰠠 ", Info = "" }
for type, icon in pairs(signs) do
local hl = "DiagnosticSign" .. type
vim.fn.sign_define(hl, { text = icon, texthl = hl, numhl = "" })
local hl = "DiagnosticSign" .. type
vim.fn.sign_define(hl, { text = icon, texthl = hl, numhl = "" })
end

local servers = {
"ansiblels",
"astro",
"clangd",
"cmake",
"csharp_ls",
"cssls",
"docker_compose_language_service",
"dockerls",
-- "dprint", -- initialised individually below
-- "elixirls",
"gdscript",
"graphql",
"html",
-- "lua_ls", -- initialised individually below
-- "marksman", -- initialised individually below
"prismals",
"protols",
"ruff",
"sqlls",
"svelte",
-- "ts_ls", -- initialised individually below
"wgsl_analyzer",
"ansiblels",
"astro",
"clangd",
"cmake",
"csharp_ls",
"cssls",
"docker_compose_language_service",
"dockerls",
-- "dprint", -- initialised individually below
-- "elixirls",
"gdscript",
"graphql",
"html",
-- "lua_ls", -- initialised individually below
-- "marksman", -- initialised individually below
"prismals",
"protols",
"ruff",
"sqlls",
"svelte",
-- "ts_ls", -- initialised individually below
"wgsl_analyzer",
}

for _, lsp in ipairs(servers) do
nvim_lsp[lsp].setup({
capabilities = capabilities,
on_attach = on_attach,
})
nvim_lsp[lsp].setup({
capabilities = capabilities,
on_attach = on_attach,
})
end

nvim_lsp.denols.setup({
capabilities = capabilities,
on_attach = on_attach,
root_dir = nvim_lsp.util.root_pattern("deno.json", "deno.jsonc"),
capabilities = capabilities,
on_attach = on_attach,
root_dir = nvim_lsp.util.root_pattern("deno.json", "deno.jsonc"),
})

nvim_lsp.ts_ls.setup({
capabilities = capabilities,
on_attach = on_attach,
root_dir = nvim_lsp.util.root_pattern("package.json"),
single_file_support = false,
capabilities = capabilities,
on_attach = on_attach,
root_dir = nvim_lsp.util.root_pattern("package.json"),
single_file_support = false,
})

nvim_lsp.dprint.setup({
capabilities = capabilities,
on_attach = on_attach,
fileypes = nvim_lsp.util.root_pattern("dockerfile", "json", "jsonc", "markdown", "toml"),
capabilities = capabilities,
on_attach = on_attach,
fileypes = nvim_lsp.util.root_pattern("dockerfile", "json", "jsonc", "markdown", "toml"),
})

nvim_lsp.elixirls.setup({
capabilities = capabilities,
on_attach = on_attach,
cmd = { "/usr/local/Cellar/elixir-ls/0.26.0/libexec/language_server.sh" },
capabilities = capabilities,
on_attach = on_attach,
cmd = { "/usr/local/Cellar/elixir-ls/0.26.2/libexec/language_server.sh" },
})

nvim_lsp.lua_ls.setup({
capabilities = capabilities,
on_attach = on_attach,
settings = {
Lua = {
diagnostics = {
globals = { "vim" },
},
completion = {
callSnippet = "Replace",
},
},
},
capabilities = capabilities,
on_attach = on_attach,
settings = {
Lua = {
diagnostics = {
globals = { "vim" },
},
completion = {
callSnippet = "Replace",
},
},
},
})

nvim_lsp.marksman.setup({
capabilities = capabilities,
on_attach = on_attach,
filetypes = { "markdown", "markdown.mdx" },
capabilities = capabilities,
on_attach = on_attach,
filetypes = { "markdown", "markdown.mdx" },
})

nvim_lsp.pyright.setup({
capabilities = capabilities,
on_attach = on_attach,
settings = {
pyright = {
disableOrganizeImports = true,
},
},
})

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)
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",
})

-- autoformat on save
@@ -183,46 +207,46 @@ vim.o.completeopt = "menuone,noinsert,noselect"
vim.opt.shortmess = vim.opt.shortmess + "c"

cmp.setup({
preselect = cmp.PreselectMode.None,
-- Format the autocomplete menu
formatting = {
format = lspkind.cmp_format(),
},
mapping = {
-- Use Tab and shift-Tab to navigate autocomplete menu
["<Tab>"] = function(fallback)
if cmp.visible() then
cmp.select_next_item()
elseif luasnip.expand_or_jumpable() then
luasnip.expand_or_jump()
else
fallback()
end
end,
["<S-Tab>"] = function(fallback)
if cmp.visible() then
cmp.select_prev_item()
elseif luasnip.jumpable(-1) then
luasnip.jump(-1)
else
fallback()
end
end,
["<CR>"] = cmp.mapping.confirm({
behavior = cmp.ConfirmBehavior.Replace,
select = true,
}),
},
snippet = {
expand = function(args)
luasnip.lsp_expand(args.body)
end,
},
source = {
{ name = "nvim_lsp" },
{ name = "vsnip" },
{ name = "luasnip" },
{ name = "path" },
{ name = "buffer" },
},
preselect = cmp.PreselectMode.None,
-- Format the autocomplete menu
formatting = {
format = lspkind.cmp_format(),
},
mapping = {
-- Use Tab and shift-Tab to navigate autocomplete menu
["<Tab>"] = function(fallback)
if cmp.visible() then
cmp.select_next_item()
elseif luasnip.expand_or_jumpable() then
luasnip.expand_or_jump()
else
fallback()
end
end,
["<S-Tab>"] = function(fallback)
if cmp.visible() then
cmp.select_prev_item()
elseif luasnip.jumpable(-1) then
luasnip.jump(-1)
else
fallback()
end
end,
["<CR>"] = cmp.mapping.confirm({
behavior = cmp.ConfirmBehavior.Replace,
select = true,
}),
},
snippet = {
expand = function(args)
luasnip.lsp_expand(args.body)
end,
},
source = {
{ name = "nvim_lsp" },
{ name = "vsnip" },
{ name = "luasnip" },
{ name = "path" },
{ name = "buffer" },
},
})