Skip to content

Commit

Permalink
Refactor lsp (#23)
Browse files Browse the repository at this point in the history
  • Loading branch information
mosheavni authored Apr 21, 2024
1 parent f29c59d commit 2f95c33
Show file tree
Hide file tree
Showing 10 changed files with 295 additions and 351 deletions.
20 changes: 10 additions & 10 deletions .config/nvim/lazy-lock.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
"CursorLineCurrentWindow": { "branch": "master", "commit": "b4eeea98b0d139772969fd243a8802a9883fd2a8" },
"LuaSnip": { "branch": "master", "commit": "03c8e67eb7293c404845b3982db895d59c0d1538" },
"ReplaceWithRegister": { "branch": "master", "commit": "832efc23111d19591d495dc72286de2fb0b09345" },
"SchemaStore.nvim": { "branch": "main", "commit": "f660f74bcaae950a77c69dda91270063c8cbd692" },
"SchemaStore.nvim": { "branch": "main", "commit": "f7cae6f1b38cb296f48ce1a9c5ed1a419d912a42" },
"ansible-snippets": { "branch": "master", "commit": "ceb5a528a36c41eb55cd58b79fe4954b94929c05" },
"auto-indent.nvim": { "branch": "main", "commit": "46801cf8857d42a20a73c40b0a5d3dfe8b2b6192" },
"better-escape.nvim": { "branch": "master", "commit": "7e86edafb8c7e73699e0320f225464a298b96d12" },
Expand All @@ -25,7 +25,7 @@
"dressing.nvim": { "branch": "master", "commit": "18e5beb3845f085b6a33c24112b37988f3f93c06" },
"fidget.nvim": { "branch": "main", "commit": "1ba38e4cbb24683973e00c2e36f53ae64da38ef5" },
"friendly-snippets": { "branch": "main", "commit": "ea068f1becd91bcd4591fceb6420d4335e2e14d3" },
"fzf-lua": { "branch": "main", "commit": "62cb8f37b3a017e6b2401726c96e02498f332b70" },
"fzf-lua": { "branch": "main", "commit": "213da0b65bf81e8849d1ebf2a3d47f32a7dc9000" },
"git-conflict.nvim": { "branch": "main", "commit": "4c8e252b87d54d944c1e56bfb477f78b6fdaf661" },
"global-note.nvim": { "branch": "main", "commit": "1e0d4bba425d971ed3ce40d182c574a25507115c" },
"indent-blankline.nvim": { "branch": "master", "commit": "3d08501caef2329aba5121b753e903904088f7e6" },
Expand All @@ -49,35 +49,35 @@
"neogen": { "branch": "main", "commit": "0daffcec249bf42275e322361fe55b89a05ff278" },
"nginx.vim": { "branch": "master", "commit": "cffaec54f0c7f9518de053634413a20e90eac825" },
"none-ls-shellcheck.nvim": { "branch": "main", "commit": "0f84461241e76e376a95fb7391deac82dc3efdbf" },
"none-ls.nvim": { "branch": "main", "commit": "09a7c58e9283dda582d9805f6b182b5b9f137ec7" },
"none-ls.nvim": { "branch": "main", "commit": "88821b67e6007041f43b802f58e3d9fa9bfce684" },
"nvim-autopairs": { "branch": "master", "commit": "4f41e5940bc0443fdbe5f995e2a596847215cd2a" },
"nvim-bqf": { "branch": "main", "commit": "52703d7adc3be3f7c09eea9a80c5b8caa615fb25" },
"nvim-cmp": { "branch": "main", "commit": "ce16de5665c766f39c271705b17fff06f7bcb84f" },
"nvim-colorizer.lua": { "branch": "master", "commit": "85855b38011114929f4058efc97af1059ab3e41d" },
"nvim-dap": { "branch": "master", "commit": "405df1dcc2e395ab5173a9c3d00e03942c023074" },
"nvim-dap": { "branch": "master", "commit": "6ae8a14828b0f3bff1721a35a1dfd604b6a933bb" },
"nvim-dap-python": { "branch": "master", "commit": "3dffa58541d1f52c121fe58ced046268c838d802" },
"nvim-dap-ui": { "branch": "master", "commit": "edfa93f60b189e5952c016eee262d0685d838450" },
"nvim-dap-virtual-text": { "branch": "master", "commit": "3e8e207513e6ef520894950acd76b79902714103" },
"nvim-dap-vscode-js": { "branch": "main", "commit": "03bd29672d7fab5e515fc8469b7d07cc5994bbf6" },
"nvim-hlslens": { "branch": "main", "commit": "3e8fceb2b030100857ee72741a8f48c9a1d8595e" },
"nvim-jdtls": { "branch": "master", "commit": "8eb5f0dbe6e126b392ddcaf45893358619893e45" },
"nvim-lsp-basics": { "branch": "main", "commit": "632714bd3ab355eb6e725b5a78cd8730f12d14d2" },
"nvim-lspconfig": { "branch": "master", "commit": "9266dc26862d8f3556c2ca77602e811472b4c5b8" },
"nvim-lspconfig": { "branch": "master", "commit": "ed8b8a15acc441aec669f97d75f2c1f2ac8c8aa5" },
"nvim-lua-gf": { "branch": "main", "commit": "ca712497b2bab6351518917be219e9bfd8d63e4f" },
"nvim-luaref": { "branch": "main", "commit": "9cd3ed50d5752ffd56d88dd9e395ddd3dc2c7127" },
"nvim-nio": { "branch": "master", "commit": "5800f585def265d52f1d8848133217c800bcb25d" },
"nvim-notify": { "branch": "master", "commit": "5371f4bfc1f6d3adf4fe9d62cd3a9d44356bfd15" },
"nvim-pqf": { "branch": "main", "commit": "ba0e291cb5c0249838132e197dac082777bdc7d6" },
"nvim-tree.lua": { "branch": "master", "commit": "81eb8d519233c105f30dc0a278607e62b20502fd" },
"nvim-treesitter": { "branch": "master", "commit": "b350369740e885c85f0f62dd8fe645c6f887ddc6" },
"nvim-treesitter-context": { "branch": "master", "commit": "c24a7a6dc5fde325af844d165323aa6f7082866e" },
"nvim-tree.lua": { "branch": "master", "commit": "ae8e46e8fabb32fa3ae5319383ea2c8763f14caa" },
"nvim-treesitter": { "branch": "master", "commit": "ea4f6d5175812a3f48302d638a766bc18fcbb04a" },
"nvim-treesitter-context": { "branch": "master", "commit": "ba4289ad345ececd335a9cdd7b9616fd0bb6be92" },
"nvim-treesitter-endwise": { "branch": "master", "commit": "60e8c288e011403f248b5f6478dde12bed8a6c55" },
"nvim-treesitter-refactor": { "branch": "master", "commit": "65ad2eca822dfaec2a3603119ec3cc8826a7859e" },
"nvim-treesitter-textobjects": { "branch": "master", "commit": "23b820146956b3b681c19e10d3a8bc0cbd9a1d4c" },
"nvim-ts-autotag": { "branch": "main", "commit": "531f48334c422222aebc888fd36e7d109cb354cd" },
"nvim-ts-context-commentstring": { "branch": "main", "commit": "a6382f744f584bbf71d0a563af789af7190aabda" },
"nvim-ufo": { "branch": "main", "commit": "a5390706f510d39951dd581f6d2a972741b3fa26" },
"nvim-web-devicons": { "branch": "master", "commit": "b3468391470034353f0e5110c70babb5c62967d3" },
"nvim-web-devicons": { "branch": "master", "commit": "beb6367ab8496c9e43f22e0252735fdadae1872d" },
"plenary.nvim": { "branch": "master", "commit": "8aad4396840be7fc42896e3011751b7609ca4119" },
"promise-async": { "branch": "main", "commit": "93540c168c5ed2b030ec3e6c40ab8bbb85e36355" },
"sonokai": { "branch": "master", "commit": "da162343354fbd9bf9cd49293a856f0e3761e8ac" },
Expand All @@ -97,7 +97,7 @@
"vim-easy-align": { "branch": "master", "commit": "9815a55dbcd817784458df7a18acacc6f82b1241" },
"vim-floaterm": { "branch": "master", "commit": "4e28c8dd0271e10a5f55142fb6fe9b1599ee6160" },
"vim-fugitive": { "branch": "master", "commit": "dac8e5c2d85926df92672bf2afb4fc48656d96c7" },
"vim-illuminate": { "branch": "master", "commit": "305bf07b919ac526deb5193280379e2f8b599926" },
"vim-illuminate": { "branch": "master", "commit": "e522e0dd742a83506db0a72e1ced68c9c130f185" },
"vim-kubernetes": { "branch": "master", "commit": "f477818c30efe4914e9a047ba1105b524d78e1b5" },
"vim-lister": { "branch": "master", "commit": "ec903e615f867f910cd8adc73f5906d521f3f214" },
"vim-matchup": { "branch": "master", "commit": "2d660e4aa7c566014c667af2cda0458043527902" },
Expand Down
6 changes: 2 additions & 4 deletions .config/nvim/lua/plugins/fzf.lua
Original file line number Diff line number Diff line change
Expand Up @@ -48,10 +48,9 @@ return {
require('fzf-lua.utils').info('Renamed branch ' .. selected[1] .. ' to ' .. new_name)
return
else
local msg = string.format('Error when renaming branch: %s. Git returned:\n%s', branch, table.concat(stderr, '\n'))
local msg = string.format('Error when renaming branch: %s. Git returned:\n%s', branch, table.concat(stderr or {}, '\n'))
require('fzf-lua.utils').err(msg)
end
return ret == 0
end)
end,
['ctrl-d'] = function(selected)
Expand All @@ -67,10 +66,9 @@ return {
require('fzf-lua.utils').info('Deleted branch ' .. selected[1])
return
else
local msg = string.format('Error when deleting branch: %s. Git returned:\n%s', branch, table.concat(stderr, '\n'))
local msg = string.format('Error when deleting branch: %s. Git returned:\n%s', branch, table.concat(stderr or {}, '\n'))
require('fzf-lua.utils').err(msg)
end
return ret == 0
end)
end,
},
Expand Down
218 changes: 5 additions & 213 deletions .config/nvim/lua/plugins/lsp/init.lua
Original file line number Diff line number Diff line change
@@ -1,218 +1,16 @@
local actions = function()
return {
['Format (<leader>lp)'] = function()
require('user.lsp.formatting').format()
end,
['Code Actions (<leader>la)'] = function()
vim.lsp.buf.code_action()
end,
['Code Lens (<leader>lx)'] = function()
vim.lsp.codelens.run()
end,
['Show Definition (gd)'] = function()
vim.cmd 'Lspsaga peek_definition'
end,
['Show Declaration (gD)'] = function()
vim.lsp.buf.declaration()
end,
['Show Type Definition (gy)'] = function()
vim.lsp.buf.type_definition()
end,
['Show Implementation (gi)'] = function()
vim.lsp.buf.implementation()
end,
['Find References (gr)'] = function()
vim.cmd 'Lspsaga finder'
end,
['Signature Help (<leader>lk)'] = function()
vim.lsp.buf.signature_help()
end,
['Signature Documentation (K)'] = function()
-- vim.lsp.buf.hover()
vim.cmd 'Lspsaga hover_doc'
end,
['Rename symbol (<leader>lrn)'] = function()
vim.cmd 'Lspsaga rename ++project'
end,
['Diagnostics quickfix list (<leader>lq)'] = function()
vim.diagnostic.setqflist()
end,
['Clear Diagnostics'] = function()
vim.diagnostic.reset()
end,
['Delete Log'] = function()
vim.system { 'rm', '-rf', vim.lsp.get_log_path() }
end,
}
end

local M = {
'neovim/nvim-lspconfig',
event = { 'BufReadPre', 'BufNewFile' },
opts = {
inlay_hints = { enabled = true },
capabilities = {
textDocument = {
completion = {
completionItem = {
snippetSupport = true,
},
},
-- codeAction = {
-- dynamicRegistration = true,
-- codeActionLiteralSupport = {
-- codeActionKind = {
-- valueSet = (function()
-- local res = vim.tbl_values(vim.lsp.protocol.CodeActionKind)
-- table.sort(res)
-- return res
-- end)(),
-- },
-- },
-- },
foldingRange = {
dynamicRegistration = false,
lineFoldingOnly = true,
},
},
},
setup = {
tsserver = function(_, opts)
require('typescript').setup {
server = opts,
}
return true
end,

yamlls = function(_, opts)
local yaml_cfg = require('yaml-companion').setup {
schemas = opts.settings.yaml.schemas or {},
builtin_matchers = {
-- Detects Kubernetes files based on content
kubernetes = { enabled = true },
},
lspconfig = opts,
}
require('lspconfig')['yamlls'].setup(yaml_cfg)
return true
end,

helm_ls = function()
local configs = require 'lspconfig.configs'
local util = require 'lspconfig.util'

if not configs.helm_ls then
configs.helm_ls = {
default_config = {
cmd = { 'helm_ls', 'serve' },
filetypes = { 'helm', 'gotmpl' },
root_dir = function(fname)
return util.root_pattern 'Chart.yaml'(fname)
end,
},
}
end
end,
docker_compose_language_service = function() end,
},
},
}

M.init = function()
local start_ls = function()
_G.tmp_write { should_delete = false, new = false }
-- load lsp
require 'lspconfig'
end
vim.keymap.set('n', '<leader>ls', start_ls)
require('user.menu').add_actions('LSP', {
['Start LSP (<leader>ls)'] = function()
start_ls()
end,
})
end

M.config = function(_, opts)
require('user.menu').add_actions('LSP', actions())
require('user.lsp.handlers').setup()

require('lspconfig.ui.windows').default_options.border = require('user.utils').borders.single_rounded
M.init = require('user.lsp.config').init

-- Set formatting of lsp log
require('vim.lsp.log').set_format_func(vim.inspect)

local servers = require 'user.lsp.servers'
------------------
-- Capabilities --
------------------
local capabilities = vim.tbl_deep_extend(
'force',
{},
vim.lsp.protocol.make_client_capabilities(),
has_cmp and cmp_nvim_lsp.default_capabilities() or {},
opts.capabilities or {}
)

-----------------
-- Diagnostics --
-----------------
-- show icons in the sidebar
local signs = {
[vim.diagnostic.severity.ERROR] = '',
[vim.diagnostic.severity.WARN] = '',
[vim.diagnostic.severity.HINT] = '',
[vim.diagnostic.severity.INFO] = '',
}
vim.diagnostic.config {
signs = { text = signs },
update_in_insert = false,
virtual_text = {
severity = { min = vim.diagnostic.severity.WARN },
},
float = { border = require('user.utils').float_border },
}

local function setup(server)
local server_opts = vim.tbl_deep_extend('force', {
capabilities = vim.deepcopy(capabilities),
}, servers[server] or {})

if opts.setup[server] then
if opts.setup[server](server, server_opts) then
return
end
elseif opts.setup['*'] then
if opts.setup['*'](server, server_opts) then
return
end
end
require('lspconfig')[server].setup(server_opts)
end

-- get all the servers that are available thourgh mason-lspconfig
local have_mason, mlsp = pcall(require, 'mason-lspconfig')
local all_mslp_servers = {}
if have_mason then
all_mslp_servers = vim.tbl_keys(require('mason-lspconfig.mappings.server').lspconfig_to_package)
end

local ensure_installed = {} ---@type string[]
for server, server_opts in pairs(servers) do
if server_opts then
server_opts = server_opts == true and {} or server_opts
-- run manual setup if mason=false or if this is a server that cannot be installed with mason-lspconfig
if server_opts.mason == false or not vim.tbl_contains(all_mslp_servers, server) then
setup(server)
else
ensure_installed[#ensure_installed + 1] = server
end
end
end

if have_mason then
mlsp.setup { ensure_installed = ensure_installed, handlers = { setup } }
end
end
M.config = require('user.lsp.config').setup

M.dependencies = {
'nvimtools/none-ls.nvim',
Expand Down Expand Up @@ -288,10 +86,7 @@ M.dependencies = {
}

local language_specific_plugins = {
{
'mfussenegger/nvim-jdtls',
ft = { 'java' },
},
{ 'mfussenegger/nvim-jdtls', ft = 'java' },
{
'jose-elias-alvarez/typescript.nvim',
ft = { 'typescript', 'typescriptreact', 'typescript.tsx', 'javascript' },
Expand All @@ -316,7 +111,7 @@ local language_specific_plugins = {
},
{
'someone-stole-my-name/yaml-companion.nvim',
ft = { 'yaml' },
ft = 'yaml',
config = function()
local nnoremap = require('user.utils').nnoremap
nnoremap('<leader>cc', ":lua require('yaml-companion').open_ui_select()<cr>", true)
Expand All @@ -327,10 +122,7 @@ local language_specific_plugins = {
})
end,
},
{
'b0o/SchemaStore.nvim',
ft = { 'yaml' },
},
{ 'b0o/SchemaStore.nvim', ft = 'yaml' },
}

return {
Expand Down
Loading

0 comments on commit 2f95c33

Please sign in to comment.