Moved from custom LSP installs to LspInstall

This commit is contained in:
Gabe Venberg 2022-04-21 14:51:01 -05:00
parent 94c37fc66a
commit da38421d7b
5 changed files with 93 additions and 104 deletions

2
.gitignore vendored
View file

@ -8,3 +8,5 @@ __pycache__/
*.pickle
*.spl
neovim/.config/nvim/plugin/
wget-log*
*log*

View file

@ -4,6 +4,9 @@ local opt=vim.opt
local fn=vim.fn
local map=vim.api.nvim_set_keymap
--leader key is set through a variable, for some reason.
vim.g.mapleader = ';'
--do package management
require('packages')
require('LSPconfig')
@ -64,9 +67,6 @@ require('cmp-lsp')
opt.foldenable=true
opt.foldignore=''
--leader key is set through a variable, for some reason.
vim.g.mapleader = ';'
--sets colorscheme. to get a list of avalible options, do colorscheme <Space> <C-d>
vim.cmd 'colorscheme moonfly'

View file

@ -1,7 +1,51 @@
local nvim_lsp = require('lspconfig')
local lsp_installer = require("nvim-lsp-installer")
-- Include the servers you want to have installed by default below
local install_servers=function()
local servers = {
'pyright',
'bashls',
'rust_analyzer',
'sumenko_lua',
'ltex',
'texlab',
}
local flag=false;
for _, name in pairs(servers) do
local server_is_found, server = lsp_installer.get_server(name)
if server_is_found and not server:is_installed() then
print("Installing " .. name)
server:install()
flag=true;
end
end
if flag then
print('All Servers Installed')
end
end
lsp_installer.on_server_ready(function(server)
local opts = {}
if server.name == "rust_analyzer" then
-- Initialize the LSP via rust-tools instead
require("rust-tools").setup {
-- The "server" property provided in rust-tools setup function are the
-- settings rust-tools will provide to lspconfig during init.
-- We merge the necessary settings from nvim-lsp-installer (server:get_default_options())
-- with the user's own settings (opts).
server = vim.tbl_deep_extend("force", server:get_default_options(), opts),
}
server:attach_buffers()
-- Only if standalone support is needed
require("rust-tools").start_standalone_if_required()
else
server:setup(opts)
end
end)
-- Use an on_attach function to only map the following keys
-- after the language server attaches to the current buffer
local on_attach = function()
local function set_keymap(...) vim.api.nvim_set_keymap(...) end
local function set_option(...) vim.api.nvim_set_option(...) end
@ -24,101 +68,11 @@ local on_attach = function()
set_keymap('', ';lt', '<cmd>lua vim.lsp.buf.type_definition()<CR>', opts)
set_keymap('', ';lr', '<cmd>lua vim.lsp.buf.rename()<CR>', opts)
set_keymap('', ';la', '<cmd>lua vim.lsp.buf.code_action()<CR>', opts)
set_keymap('', ';lc', '<cmd>lua vim.lsp.buf.references()<CR>', opts)
set_keymap('', ';le', '<cmd>lua vim.lsp.buf.references()<CR>', opts)
set_keymap('', ';lo', '<cmd>lua vim.diagnostic.open_float()<CR>', opts)
set_keymap('', ';ln', '<cmd>lua vim.diagnostic.goto_prev()<CR>', opts)
set_keymap('', ';lp', '<cmd>lua vim.diagnostic.goto_next()<CR>', opts)
set_keymap('', ';lm', '<cmd>lua vim.lsp.buf.formatting()<CR>', opts)
end
-- Use a loop to conveniently call 'setup' on multiple servers and
-- map buffer local keybindings when the language server attaches
-- the packages for these servers are: pyright, rust-analyzer, texlab, and lua-language-server, deno, den
local servers = { 'pyright', 'texlab', 'denols'}
for _, lsp in ipairs(servers) do
nvim_lsp[lsp].setup {
flags = {
debounce_text_changes = 150,
}
}
end
--deno typescript configuration
vim.g.markdown_fenced_languages = {
"ts=typescript"
}
--angular configuration. To install LS, $ npm install -g @angular/language-server
local project_library_path = "/path/to/project/lib"
local cmd = {"ngserver", "--stdio", "--tsProbeLocations", project_library_path , "--ngProbeLocations", project_library_path}
require'lspconfig'.angularls.setup{
cmd = cmd,
on_new_config = function(new_config,new_root_dir)
new_config.cmd = cmd
end,
}
--rust configuration
local rustOpts = {
tools = { -- rust-tools options
autoSetHints = true,
hover_with_actions = true,
inlay_hints = {
show_parameter_hints = false,
parameter_hints_prefix = "",
other_hints_prefix = "",
},
},
-- all the opts to send to nvim-lspconfig
-- these override the defaults set by rust-tools.nvim
-- see https://github.com/neovim/nvim-lspconfig/blob/master/doc/server_configurations.md#rust_analyzer
server = {
-- on_attach is a callback called when the language server attachs to the buffer
-- on_attach = on_attach,
settings = {
-- to enable rust-analyzer settings visit:
-- https://github.com/rust-analyzer/rust-analyzer/blob/master/docs/user/generated_config.adoc
["rust-analyzer"] = {
-- enable clippy on save
checkOnSave = {
command = "clippy"
},
}
}
},
}
require('rust-tools').setup(rustOpts)
--lua-language-server needs seperate config.
local runtime_path = vim.split(package.path, ';')
table.insert(runtime_path, "lua/?.lua")
table.insert(runtime_path, "lua/?/init.lua")
require'lspconfig'.sumneko_lua.setup {
settings = {
Lua = {
runtime = {
-- Tell the language server which version of Lua you're using (most likely LuaJIT in the case of Neovim)
version = 'LuaJIT',
-- Setup your lua path
path = runtime_path,
},
diagnostics = {
-- Get the language server to recognize the `vim` global
globals = {'vim'},
},
workspace = {
-- Make the server aware of Neovim runtime files
library = vim.api.nvim_get_runtime_file("", true),
},
-- Do not send telemetry data containing a randomized but unique identifier
telemetry = {
enable = false,
},
},
},
}
on_attach()
install_servers()

View file

@ -1,6 +1,5 @@
--configure nvim-cmp for use with lsp and luasnip.
-- Add additional capabilities supported by nvim-cmp
local capabilities = vim.lsp.protocol.make_client_capabilities()
capabilities = require('cmp_nvim_lsp').update_capabilities(capabilities)
@ -10,7 +9,7 @@ local luasnip = require 'luasnip'
local lspconfig = require('lspconfig')
-- Enable some language servers with the additional completion capabilities offered by nvim-cmp
local servers = {'texlab', 'rust_analyzer', 'pyright', 'denols'}
local servers = {'texlab', 'rust_analyzer', 'pyright'}
for _, lsp in ipairs(servers) do
lspconfig[lsp].setup {
-- on_attach = my_custom_on_attach,
@ -61,7 +60,29 @@ cmp.setup {
},
sources = {
{ name = 'nvim_lsp' },
{ name = 'path' },
{ name = 'luasnip' },
{ name = 'buffer' }
{ name = 'buffer' },
{ name = 'dictionary' },
{ name = 'digraphs' },
{ name = 'spell' },
{ name = 'nvim_lsp_signature_help' },
{ name = 'emoji' },
{ name = 'latex_symbols' },
{ name = 'treesitter' },
},
}
cmp.setup.cmdline(':', {
sources = {
{ name = 'cmdline' }
}
})
cmp.setup.cmdline('/', {
sources = cmp.config.sources({
{ name = 'nvim_lsp_document_symbol' }
}, {
{ name = 'buffer' }
})
})

View file

@ -20,17 +20,29 @@ return require('packer').startup(function(use)
indent={enable=true},
incremental_selection={enable=true}
}end,
}
use 'neovim/nvim-lspconfig'
use {
'neovim/nvim-lspconfig',
'williamboman/nvim-lsp-installer',
}
use {'hrsh7th/nvim-cmp',
requires = {
'neovim/nvim-lspconfig',
'hrsh7th/cmp-nvim-lsp',
'saadparwaiz1/cmp_luasnip',
'L3MON4D3/LuaSnip'
'hrsh7th/cmp-buffer',
'hrsh7th/cmp-path',
'hrsh7th/cmp-cmdline',
'L3MON4D3/LuaSnip',
'f3fora/cmp-spell',
'dmitmel/cmp-digraphs',
'hrsh7th/cmp-nvim-lsp-signature-help',
'kdheepak/cmp-latex-symbols',
'hrsh7th/cmp-emoji',
'ray-x/cmp-treesitter',
'uga-rosa/cmp-dictionary',
}
}