move server config to easy to extend style (#71)
Move servers to new configuration style. I will probably cover this in a new shorter video, or maybe in combination with something else. This should hopefully remove getting so many people making issues about LSPs that they don't want to. I can update documentation if what is happening is not clear.
This commit is contained in:
parent
aa660e64ce
commit
521940693e
3 changed files with 49 additions and 55 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -2,3 +2,4 @@ tags
|
||||||
test.sh
|
test.sh
|
||||||
.luarc.json
|
.luarc.json
|
||||||
nvim
|
nvim
|
||||||
|
plugin/packer_compiled.lua
|
||||||
|
|
|
@ -9,7 +9,7 @@ A starting point for Neovim that is:
|
||||||
|
|
||||||
Kickstart.nvim targets *only* the latest ['stable'](https://github.com/neovim/neovim/releases/tag/stable) and latest ['nightly'](https://github.com/neovim/neovim/releases/tag/nightly) of Neovim. If you are experiencing issues, please make sure you have the latest versions.
|
Kickstart.nvim targets *only* the latest ['stable'](https://github.com/neovim/neovim/releases/tag/stable) and latest ['nightly'](https://github.com/neovim/neovim/releases/tag/nightly) of Neovim. If you are experiencing issues, please make sure you have the latest versions.
|
||||||
|
|
||||||
This repo is meant to be used as a starting point for a user's own configuration; remove the things you don't use and add what you miss. This configuration serves as the reference configuration for the [lspconfig wiki](https://github.com/neovim/nvim-lspconfig/wiki).
|
This repo is meant to be used as a starting point for a user's own configuration; remove the things you don't use and add what you miss. Please refrain from leaving comments about enabling / disabling particular languages out of the box.
|
||||||
|
|
||||||
### Installation
|
### Installation
|
||||||
|
|
||||||
|
@ -65,5 +65,6 @@ Each PR, especially those which increase the line count, should have a descripti
|
||||||
### FAQ
|
### FAQ
|
||||||
|
|
||||||
* What should I do if I already have a pre-existing neovim configuration?
|
* What should I do if I already have a pre-existing neovim configuration?
|
||||||
* You should back it up, then delete all files associated with it. This includes your existing init.lua and the neovim files in .local which can be deleted with `rm -rf ~/.local/share/nvim/`
|
* You should back it up, then delete all files associated with it.
|
||||||
|
* This includes your existing init.lua and the neovim files in `.local` which can be deleted with `rm -rf ~/.local/share/nvim/`
|
||||||
|
|
||||||
|
|
96
init.lua
96
init.lua
|
@ -20,6 +20,9 @@ require('packer').startup(function(use)
|
||||||
|
|
||||||
-- Useful status updates for LSP
|
-- Useful status updates for LSP
|
||||||
'j-hui/fidget.nvim',
|
'j-hui/fidget.nvim',
|
||||||
|
|
||||||
|
-- Additional lua configuration, makes nvim stuff amazing
|
||||||
|
'folke/neodev.nvim',
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -324,71 +327,60 @@ local on_attach = function(_, bufnr)
|
||||||
|
|
||||||
-- Create a command `:Format` local to the LSP buffer
|
-- Create a command `:Format` local to the LSP buffer
|
||||||
vim.api.nvim_buf_create_user_command(bufnr, 'Format', function(_)
|
vim.api.nvim_buf_create_user_command(bufnr, 'Format', function(_)
|
||||||
if vim.lsp.buf.format then
|
|
||||||
vim.lsp.buf.format()
|
vim.lsp.buf.format()
|
||||||
elseif vim.lsp.buf.formatting then
|
|
||||||
vim.lsp.buf.formatting()
|
|
||||||
end
|
|
||||||
end, { desc = 'Format current buffer with LSP' })
|
end, { desc = 'Format current buffer with LSP' })
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Setup mason so it can manage external tooling
|
|
||||||
require('mason').setup()
|
|
||||||
|
|
||||||
-- Enable the following language servers
|
-- Enable the following language servers
|
||||||
-- Feel free to add/remove any LSPs that you want here. They will automatically be installed
|
-- Feel free to add/remove any LSPs that you want here. They will automatically be installed.
|
||||||
local servers = { 'clangd', 'rust_analyzer', 'pyright', 'tsserver', 'sumneko_lua', 'gopls' }
|
|
||||||
|
|
||||||
-- Ensure the servers above are installed
|
|
||||||
require('mason-lspconfig').setup {
|
|
||||||
ensure_installed = servers,
|
|
||||||
}
|
|
||||||
|
|
||||||
-- nvim-cmp supports additional completion capabilities
|
|
||||||
local capabilities = vim.lsp.protocol.make_client_capabilities()
|
|
||||||
capabilities = require('cmp_nvim_lsp').default_capabilities(capabilities)
|
|
||||||
|
|
||||||
for _, lsp in ipairs(servers) do
|
|
||||||
require('lspconfig')[lsp].setup {
|
|
||||||
on_attach = on_attach,
|
|
||||||
capabilities = capabilities,
|
|
||||||
}
|
|
||||||
end
|
|
||||||
|
|
||||||
-- Turn on lsp status information
|
|
||||||
require('fidget').setup()
|
|
||||||
|
|
||||||
-- Example custom configuration for lua
|
|
||||||
--
|
--
|
||||||
-- Make runtime files discoverable to the server
|
-- Add any additional override configuration in the following tables. They will be passed to
|
||||||
local runtime_path = vim.split(package.path, ';')
|
-- the `settings` field of the server config. You must look up that documentation yourself.
|
||||||
table.insert(runtime_path, 'lua/?.lua')
|
local servers = {
|
||||||
table.insert(runtime_path, 'lua/?/init.lua')
|
-- clangd = {},
|
||||||
|
-- gopls = {},
|
||||||
|
-- pyright = {},
|
||||||
|
-- rust_analyzer = {},
|
||||||
|
-- tsserver = {},
|
||||||
|
|
||||||
require('lspconfig').sumneko_lua.setup {
|
sumneko_lua = {
|
||||||
on_attach = on_attach,
|
|
||||||
capabilities = capabilities,
|
|
||||||
settings = {
|
|
||||||
Lua = {
|
Lua = {
|
||||||
runtime = {
|
workspace = { checkThirdParty = false },
|
||||||
-- Tell the language server which version of Lua you're using (most likely LuaJIT)
|
|
||||||
version = 'LuaJIT',
|
|
||||||
-- Setup your lua path
|
|
||||||
path = runtime_path,
|
|
||||||
},
|
|
||||||
diagnostics = {
|
|
||||||
globals = { 'vim' },
|
|
||||||
},
|
|
||||||
workspace = {
|
|
||||||
library = vim.api.nvim_get_runtime_file('', true),
|
|
||||||
checkThirdParty = false,
|
|
||||||
},
|
|
||||||
-- Do not send telemetry data containing a randomized but unique identifier
|
|
||||||
telemetry = { enable = false },
|
telemetry = { enable = false },
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
-- Setup neovim lua configuration
|
||||||
|
require('neodev').setup()
|
||||||
|
--
|
||||||
|
-- nvim-cmp supports additional completion capabilities, so broadcast that to servers
|
||||||
|
local capabilities = vim.lsp.protocol.make_client_capabilities()
|
||||||
|
capabilities = require('cmp_nvim_lsp').default_capabilities(capabilities)
|
||||||
|
|
||||||
|
-- Setup mason so it can manage external tooling
|
||||||
|
require('mason').setup()
|
||||||
|
|
||||||
|
-- Ensure the servers above are installed
|
||||||
|
local mason_lspconfig = require 'mason-lspconfig'
|
||||||
|
|
||||||
|
mason_lspconfig.setup {
|
||||||
|
ensure_installed = vim.tbl_keys(servers),
|
||||||
|
}
|
||||||
|
|
||||||
|
mason_lspconfig.setup_handlers {
|
||||||
|
function(server_name)
|
||||||
|
require('lspconfig')[server_name].setup {
|
||||||
|
capabilities = capabilities,
|
||||||
|
on_attach = on_attach,
|
||||||
|
settings = servers[server_name],
|
||||||
|
}
|
||||||
|
end,
|
||||||
|
}
|
||||||
|
|
||||||
|
-- Turn on lsp status information
|
||||||
|
require('fidget').setup()
|
||||||
|
|
||||||
-- nvim-cmp setup
|
-- nvim-cmp setup
|
||||||
local cmp = require 'cmp'
|
local cmp = require 'cmp'
|
||||||
local luasnip = require 'luasnip'
|
local luasnip = require 'luasnip'
|
||||||
|
|
Loading…
Reference in a new issue