summaryrefslogtreecommitdiff
path: root/neovim
diff options
context:
space:
mode:
Diffstat (limited to 'neovim')
-rw-r--r--neovim/.config/nvim/lua/plugins/nvim_lspconfig.lua329
1 files changed, 174 insertions, 155 deletions
diff --git a/neovim/.config/nvim/lua/plugins/nvim_lspconfig.lua b/neovim/.config/nvim/lua/plugins/nvim_lspconfig.lua
index 775dd7a..06dea97 100644
--- a/neovim/.config/nvim/lua/plugins/nvim_lspconfig.lua
+++ b/neovim/.config/nvim/lua/plugins/nvim_lspconfig.lua
@@ -1,167 +1,186 @@
return {
- {
- dependencies = {
- { 'williamboman/mason.nvim' },
- { 'williamboman/mason-lspconfig.nvim' },
- },
- 'neovim/nvim-lspconfig',
- lazy = false,
- priority = 800,
- config = function()
- require("mason").setup()
- require("mason-lspconfig").setup()
- local nvim_lsp = require('lspconfig')
- local capabilities = require('cmp_nvim_lsp').default_capabilities()
- -- Use a loop to conveniently call 'setup' on multiple servers and
- -- map buffer local keybindings when the language server attaches
- local servers = { "bashls", "clangd", "cssls", "dockerls", "gopls", "htmx", "jsonls", "marksman",
- "ruff", "rust_analyzer", "taplo", "yamlls" }
- for _, lsp in ipairs(servers) do
- nvim_lsp[lsp].setup {
- capabilities = capabilities,
- flags = {
- debounce_text_changes = 150,
- }
- }
- end
+ {
+ dependencies = {
+ { 'williamboman/mason.nvim' },
+ { 'williamboman/mason-lspconfig.nvim' },
+ },
+ 'neovim/nvim-lspconfig',
+ lazy = false,
+ priority = 800,
+ config = function()
+ require("mason").setup()
+ require("mason-lspconfig").setup()
+ local nvim_lsp = require('lspconfig')
+ local capabilities = require('cmp_nvim_lsp').default_capabilities()
+ -- Use a loop to conveniently call 'setup' on multiple servers and
+ -- map buffer local keybindings when the language server attaches
+ local servers = { "bashls", "clangd", "cssls", "dockerls", "gopls", "htmx", "jsonls", "marksman",
+ "ruff", "rust_analyzer", "taplo", "yamlls" }
+ for _, lsp in ipairs(servers) do
+ nvim_lsp[lsp].setup {
+ capabilities = capabilities,
+ flags = {
+ debounce_text_changes = 150,
+ }
+ }
+ end
- require 'lspconfig'.lua_ls.setup {
- on_init = function(client)
- local path = client.workspace_folders[1].name
- if vim.loop.fs_stat(path .. '/.luarc.json') or vim.loop.fs_stat(path .. '/.luarc.jsonc') then
- return
- end
+ require 'lspconfig'.basedpyright.setup {
+ settings = {
+ basedpyright = {
+ -- Using Ruff's import organizer
+ disableOrganizeImports = true,
+ },
+ python = {
+ analysis = {
+ -- Ignore all files for analysis to exclusively use Ruff for linting
+ ignore = { '*' },
+ },
+ },
+ },
+ capabilities = capabilities,
+ flags = {
+ debounce_text_changes = 150,
+ },
+ }
- client.config.settings.Lua = vim.tbl_deep_extend('force', client.config.settings.Lua, {
- runtime = {
- -- Tell the language server which version of Lua you're using
- -- (most likely LuaJIT in the case of Neovim)
- version = 'LuaJIT'
- },
- -- Make the server aware of Neovim runtime files
- workspace = {
- checkThirdParty = false,
- library = {
- vim.env.VIMRUNTIME
- -- Depending on the usage, you might want to add additional paths here.
- -- "${3rd}/luv/library"
- -- "${3rd}/busted/library",
- }
- -- or pull in all of 'runtimepath'. NOTE: this is a lot slower
- -- library = vim.api.nvim_get_runtime_file("", true)
- }
- })
- end,
- settings = {
- Lua = {
- format = {
- enable = true,
- defaultConfig = {
- indent_style = "space",
- indent_size = "2",
- }
- },
- },
+ require 'lspconfig'.lua_ls.setup {
+ on_init = function(client)
+ local path = client.workspace_folders[1].name
+ if vim.loop.fs_stat(path .. '/.luarc.json') or vim.loop.fs_stat(path .. '/.luarc.jsonc') then
+ return
+ end
- },
- capabilities = capabilities,
- }
+ client.config.settings.Lua = vim.tbl_deep_extend('force', client.config.settings.Lua, {
+ runtime = {
+ -- Tell the language server which version of Lua you're using
+ -- (most likely LuaJIT in the case of Neovim)
+ version = 'LuaJIT'
+ },
+ -- Make the server aware of Neovim runtime files
+ workspace = {
+ checkThirdParty = false,
+ library = {
+ vim.env.VIMRUNTIME
+ -- Depending on the usage, you might want to add additional paths here.
+ -- "${3rd}/luv/library"
+ -- "${3rd}/busted/library",
+ }
+ -- or pull in all of 'runtimepath'. NOTE: this is a lot slower
+ -- library = vim.api.nvim_get_runtime_file("", true)
+ }
+ })
+ end,
+ settings = {
+ Lua = {
+ format = {
+ enable = true,
+ defaultConfig = {
+ indent_style = "space",
+ indent_size = "2",
+ }
+ },
+ },
- require 'lspconfig'.html.setup {
- filetypes = { 'html', 'htmldjango' },
- capabilities = capabilities,
- flags = {
- debounce_text_changes = 150,
- },
- }
+ },
+ capabilities = capabilities,
+ }
- require 'lspconfig'.ts_ls.setup {
- filetypes = { 'typescript', 'typescriptreact', 'typescript.tsx' },
- capabilities = capabilities,
- flags = {
- debounce_text_changes = 150,
- },
- }
+ require 'lspconfig'.html.setup {
+ filetypes = { 'html', 'htmldjango' },
+ capabilities = capabilities,
+ flags = {
+ debounce_text_changes = 150,
+ },
+ }
- require 'lspconfig'.pylsp.setup {
- settings = {
- pylsp = {
- plugins = {
- autopep8 = {
- enabled = false,
- },
- black = {
- enabled = false,
- },
- mccabe = {
- enabled = false,
- },
- pycodestyle = {
- enabled = false,
- },
- pyflakes = {
- enabled = false,
- },
- pylsp_mypy = {
- enabled = true,
- },
- ruff = {
- enabled = false,
- },
- yapf = {
- enabled = false,
- },
- }
- }
- },
- capabilities = capabilities,
- flags = {
- debounce_text_changes = 150,
- },
+ require 'lspconfig'.ts_ls.setup {
+ filetypes = { 'typescript', 'typescriptreact', 'typescript.tsx' },
+ capabilities = capabilities,
+ flags = {
+ debounce_text_changes = 150,
+ },
+ }
- require 'lspconfig'.intelephense.setup {
- filetypes = { 'php' },
- capabilities = capabilities,
- flags = {
- debounce_text_changes = 150,
- },
- init_options = {
- licenceKey = '~/.config/intelephense/licence.txt',
- },
- }
- }
+ require 'lspconfig'.pylsp.setup {
+ settings = {
+ pylsp = {
+ plugins = {
+ autopep8 = {
+ enabled = false,
+ },
+ black = {
+ enabled = false,
+ },
+ mccabe = {
+ enabled = false,
+ },
+ pycodestyle = {
+ enabled = false,
+ },
+ pyflakes = {
+ enabled = false,
+ },
+ pylsp_mypy = {
+ enabled = false,
+ },
+ ruff = {
+ enabled = false,
+ },
+ yapf = {
+ enabled = false,
+ },
+ }
+ }
+ },
+ capabilities = capabilities,
+ flags = {
+ debounce_text_changes = 150,
+ },
+ }
- -- Use LspAttach autocommand to only map the following keys
- -- after the language server attaches to the current buffer
- vim.api.nvim_create_autocmd('LspAttach', {
- group = vim.api.nvim_create_augroup('UserLspConfig', {}),
- callback = function(ev)
- -- Enable completion triggered by <c-x><c-o>
- vim.bo[ev.buf].omnifunc = 'v:lua.vim.lsp.omnifunc'
+ require 'lspconfig'.intelephense.setup {
+ filetypes = { 'php' },
+ capabilities = capabilities,
+ flags = {
+ debounce_text_changes = 150,
+ },
+ init_options = {
+ licenceKey = '~/.config/intelephense/licence.txt',
+ },
+ }
- local opts = { buffer = ev.buf }
- vim.keymap.set('n', 'gd', '<cmd>lua vim.lsp.buf.definition()<CR>', { noremap = true })
- vim.keymap.set('v', '<leader>f', vim.lsp.buf.format, { noremap = true, silent = true })
- vim.keymap.set('n', '<leader>f', function()
- vim.lsp.buf.format { async = true }
- end, opts)
- end,
- })
+ -- Use LspAttach autocommand to only map the following keys
+ -- after the language server attaches to the current buffer
+ vim.api.nvim_create_autocmd('LspAttach', {
+ group = vim.api.nvim_create_augroup('UserLspConfig', {}),
+ callback = function(ev)
+ -- Enable completion triggered by <c-x><c-o>
+ vim.bo[ev.buf].omnifunc = 'v:lua.vim.lsp.omnifunc'
- vim.api.nvim_create_autocmd("LspAttach", {
- group = vim.api.nvim_create_augroup('lsp_attach_disable_ruff_hover', { clear = true }),
- callback = function(args)
- local client = vim.lsp.get_client_by_id(args.data.client_id)
- if client == nil then
- return
- end
- if client.name == 'ruff' then
- -- Disable hover in favor of Pyright
- client.server_capabilities.hoverProvider = false
- end
- end,
- desc = 'LSP: Disable hover capability from Ruff',
- })
- end,
- },
+ local opts = { buffer = ev.buf }
+ vim.keymap.set('n', 'gd', '<cmd>lua vim.lsp.buf.definition()<CR>', { noremap = true })
+ vim.keymap.set('v', '<leader>f', vim.lsp.buf.format, { noremap = true, silent = true })
+ vim.keymap.set('n', '<leader>f', function()
+ vim.lsp.buf.format { async = true }
+ end, opts)
+ end,
+ })
+
+ vim.api.nvim_create_autocmd("LspAttach", {
+ group = vim.api.nvim_create_augroup('lsp_attach_disable_ruff_hover', { clear = true }),
+ callback = function(args)
+ local client = vim.lsp.get_client_by_id(args.data.client_id)
+ if client == nil then
+ return
+ end
+ if client.name == 'ruff' then
+ -- Disable hover in favor of Pyright
+ client.server_capabilities.hoverProvider = false
+ end
+ end,
+ desc = 'LSP: Disable hover capability from Ruff',
+ })
+ end,
+ },
}