aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTJ DeVries <devries.timothyj@gmail.com>2022-12-20 22:12:39 -0500
committerGitHub <noreply@github.com>2022-12-20 22:12:39 -0500
commit521940693e10eee57f4e67dce960d2229c1441d3 (patch)
tree9f5d1b7c893bbf1fa2d1314d7b9e4f22045219c8
parentaa660e64cea945e7ee4b0ede2475e1ac49e1f592 (diff)
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.
-rw-r--r--.gitignore1
-rw-r--r--README.md5
-rw-r--r--init.lua96
3 files changed, 48 insertions, 54 deletions
diff --git a/.gitignore b/.gitignore
index d699e1d..1b83131 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,3 +2,4 @@ tags
test.sh
.luarc.json
nvim
+plugin/packer_compiled.lua
diff --git a/README.md b/README.md
index f7a6b76..b424085 100644
--- a/README.md
+++ b/README.md
@@ -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.
-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
@@ -65,5 +65,6 @@ Each PR, especially those which increase the line count, should have a descripti
### FAQ
* 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/`
diff --git a/init.lua b/init.lua
index fb7c097..636d86a 100644
--- a/init.lua
+++ b/init.lua
@@ -20,6 +20,9 @@ require('packer').startup(function(use)
-- Useful status updates for LSP
'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
vim.api.nvim_buf_create_user_command(bufnr, 'Format', function(_)
- if vim.lsp.buf.format then
- vim.lsp.buf.format()
- elseif vim.lsp.buf.formatting then
- vim.lsp.buf.formatting()
- end
+ vim.lsp.buf.format()
end, { desc = 'Format current buffer with LSP' })
end
--- Setup mason so it can manage external tooling
-require('mason').setup()
-
-- Enable the following language servers
--- 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,
+-- Feel free to add/remove any LSPs that you want here. They will automatically be installed.
+--
+-- Add any additional override configuration in the following tables. They will be passed to
+-- the `settings` field of the server config. You must look up that documentation yourself.
+local servers = {
+ -- clangd = {},
+ -- gopls = {},
+ -- pyright = {},
+ -- rust_analyzer = {},
+ -- tsserver = {},
+
+ sumneko_lua = {
+ Lua = {
+ workspace = { checkThirdParty = false },
+ telemetry = { enable = false },
+ },
+ },
}
--- nvim-cmp supports additional completion capabilities
+-- 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)
-for _, lsp in ipairs(servers) do
- require('lspconfig')[lsp].setup {
- on_attach = on_attach,
- capabilities = capabilities,
- }
-end
+-- Setup mason so it can manage external tooling
+require('mason').setup()
--- Turn on lsp status information
-require('fidget').setup()
+-- Ensure the servers above are installed
+local mason_lspconfig = require 'mason-lspconfig'
--- Example custom configuration for lua
---
--- Make runtime files discoverable to the server
-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 {
- on_attach = on_attach,
- capabilities = capabilities,
- settings = {
- Lua = {
- runtime = {
- -- 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 },
- },
- },
+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
local cmp = require 'cmp'
local luasnip = require 'luasnip'