Files
nvim-config/lua/lsp.lua
2025-09-14 01:38:21 -04:00

185 lines
4.8 KiB
Lua
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

local vim = vim
-- Enable LSP servers with proper configuration
vim.lsp.enable('lua_ls')
vim.lsp.enable('gopls', {
settings = {
gopls = {
analyses = {
unusedparams = true,
unusedwrite = true,
shadow = true,
},
staticcheck = true,
usePlaceholders = true,
hints = {
assignVariableTypes = true,
compositeLiteralFields = true,
compositeLiteralTypes = true,
functionTypeParameters = true,
parameterNames = true,
rangeVariableTypes = true,
},
},
},
})
vim.lsp.enable('nim_langserver')
-- Fix: Add proper configuration for pyright/basedpyright
-- For NixOS with basedpyright:
vim.lsp.enable('basedpyright', {
settings = {
basedpyright = {
analysis = {
typeCheckingMode = "basic",
autoSearchPaths = true,
useLibraryCodeForTypes = true,
diagnosticMode = "workspace",
},
}
}
})
-- Alternative: If you have regular pyright installed
-- vim.lsp.enable('pyright', {
-- settings = {
-- python = {
-- analysis = {
-- typeCheckingMode = "basic",
-- autoSearchPaths = true,
-- useLibraryCodeForTypes = true,
-- diagnosticMode = "workspace",
-- }
-- }
-- }
-- })
-- Alternative: Manual LSP start if vim.lsp.enable doesn't work
-- vim.api.nvim_create_autocmd('FileType', {
-- pattern = 'python',
-- callback = function()
-- -- Check if basedpyright is available first
-- if vim.fn.executable('basedpyright-langserver') == 1 then
-- vim.lsp.start({
-- name = 'basedpyright',
-- cmd = { 'basedpyright-langserver', '--stdio' },
-- root_dir = vim.fs.dirname(
-- vim.fs.find({ 'pyproject.toml', 'setup.py', '.git' }, { upward = true })[1]
-- ),
-- settings = {
-- basedpyright = {
-- analysis = {
-- typeCheckingMode = "basic",
-- autoSearchPaths = true,
-- useLibraryCodeForTypes = true,
-- }
-- }
-- }
-- })
-- elseif vim.fn.executable('pyright-langserver') == 1 then
-- vim.lsp.start({
-- name = 'pyright',
-- cmd = { 'pyright-langserver', '--stdio' },
-- root_dir = vim.fs.dirname(
-- vim.fs.find({ 'pyproject.toml', 'setup.py', '.git' }, { upward = true })[1]
-- ),
-- settings = {
-- python = {
-- analysis = {
-- typeCheckingMode = "basic",
-- autoSearchPaths = true,
-- useLibraryCodeForTypes = true,
-- }
-- }
-- }
-- })
-- else
-- print("Neither basedpyright-langserver nor pyright-langserver found")
-- end
-- end,
-- })
require("lsp_signature").setup({
debug = false,
bind = true,
doc_lines = 10,
max_height = 12,
max_width = function() return math.floor(vim.api.nvim_win_get_width(0) * 0.8) end,
wrap = true,
floating_window = true,
floating_window_above_cur_line = true,
floating_window_off_x = 1,
floating_window_off_y = 0,
hint_enable = true,
hint_inline = function() return false end,
hint_prefix = "🐼 ",
hint_scheme = "String",
hi_parameter = "LspSignatureActiveParameter",
handler_opts = { border = "rounded" },
always_trigger = false,
extra_trigger_chars = { "(", "," },
zindex = 200,
padding = "",
timer_interval = 200,
})
-- local vim = vim
-- -- vim.cmd [[
-- -- augroup LspCompletion
-- -- autocmd!
-- -- autocmd InsertEnter * setlocal omnifunc=v:lua.vim.lsp.omnifunc
-- -- autocmd TextChangedI * if pumvisible() == 0 | silent! lua vim.fn.complete(vim.fn.col('.'), vim.fn["vim.lsp.omnifunc"]()) | endif
-- -- augroup END
-- -- ]]
-- vim.lsp.enable('lua_ls')
-- vim.lsp.enable('gopls', {
-- settings = {
-- gopls = {
-- analyses = {
-- unusedparams = true,
-- unusedwrite = true,
-- shadow = true,
-- },
-- staticcheck = true,
-- usePlaceholders = true,
-- hints = {
-- assignVariableTypes = true,
-- compositeLiteralFields = true,
-- compositeLiteralTypes = true,
-- functionTypeParameters = true,
-- parameterNames = true,
-- rangeVariableTypes = true,
-- },
-- },
-- },
-- })
-- vim.lsp.enable('nim_langserver')
-- require("lsp_signature").setup({
-- debug = false,
-- bind = true, -- registers signature handler
-- doc_lines = 10,
-- max_height = 12,
-- max_width = function() return math.floor(vim.api.nvim_win_get_width(0) * 0.8) end,
-- wrap = true,
-- floating_window = true, -- show the popup
-- floating_window_above_cur_line = true,
-- floating_window_off_x = 1,
-- floating_window_off_y = 0,
--
-- -- IMPORTANT: dont inline (you can change later if you want)
-- hint_enable = true,
-- hint_inline = function() return false end,
--
-- hint_prefix = "🐼 ",
-- hint_scheme = "String",
-- hi_parameter = "LspSignatureActiveParameter",
-- handler_opts = { border = "rounded" },
--
-- always_trigger = false,
-- extra_trigger_chars = { "(", "," }, -- good default
-- zindex = 200,
-- padding = "",
-- timer_interval = 200,
-- })