Don't repeat yourself in custom lspconfigs
This commit is contained in:
		
							parent
							
								
									6affd78df7
								
							
						
					
					
						commit
						a365bcb6b5
					
				@ -72,57 +72,48 @@ return {
 | 
				
			|||||||
  },
 | 
					  },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  config = function()
 | 
					  config = function()
 | 
				
			||||||
    local capabilities = vim.lsp.protocol.make_client_capabilities()
 | 
					    local lspconfig_default_opts = {
 | 
				
			||||||
    capabilities = vim.tbl_deep_extend(
 | 
					      -- Broadcast full client capabilities to language servers
 | 
				
			||||||
      'force', capabilities, require('cmp_nvim_lsp').default_capabilities())
 | 
					      capabilities = vim.tbl_deep_extend(
 | 
				
			||||||
 | 
					        'force', vim.lsp.protocol.make_client_capabilities(),
 | 
				
			||||||
 | 
					        require('cmp_nvim_lsp').default_capabilities()),
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    local lspconfig_custom_opts = {
 | 
				
			||||||
 | 
					      clangd = {
 | 
				
			||||||
 | 
					        cmd = { 'clangd', '--completion-style=detailed' },
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      lua_ls = {
 | 
				
			||||||
 | 
					        settings = {
 | 
				
			||||||
 | 
					          Lua = {
 | 
				
			||||||
 | 
					            diagnostics = {
 | 
				
			||||||
 | 
					              disable = { 'missing-fields', },
 | 
				
			||||||
 | 
					              globals = { 'vim', },
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					          },
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      pyright = {
 | 
				
			||||||
 | 
					        settings = {
 | 
				
			||||||
 | 
					          pyright = {
 | 
				
			||||||
 | 
					            disableOrganizeImports = true,
 | 
				
			||||||
 | 
					          },
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    require('mason').setup()
 | 
					    require('mason').setup()
 | 
				
			||||||
    require('mason-lspconfig').setup({
 | 
					    require('mason-lspconfig').setup({
 | 
				
			||||||
      automatic_installation = false,
 | 
					      automatic_installation = false,
 | 
				
			||||||
      ensure_installed = ensure_installed,
 | 
					      ensure_installed = ensure_installed,
 | 
				
			||||||
 | 
					 | 
				
			||||||
      handlers = {
 | 
					      handlers = {
 | 
				
			||||||
        -- Default handler, sets up everything unless a custom language server
 | 
					 | 
				
			||||||
        -- setup handler is defined below
 | 
					 | 
				
			||||||
        function(server_name)
 | 
					        function(server_name)
 | 
				
			||||||
          require('lspconfig')[server_name].setup({
 | 
					          local opts = vim.tbl_deep_extend("force",
 | 
				
			||||||
            capabilities = capabilities,
 | 
					            lspconfig_default_opts, lspconfig_custom_opts[server_name] or {})
 | 
				
			||||||
          })
 | 
					          require('lspconfig')[server_name].setup(opts)
 | 
				
			||||||
        end,
 | 
					        end,
 | 
				
			||||||
 | 
					 | 
				
			||||||
        ['clangd'] = function()
 | 
					 | 
				
			||||||
          require('lspconfig').clangd.setup({
 | 
					 | 
				
			||||||
            capabilities = capabilities,
 | 
					 | 
				
			||||||
            cmd = { 'clangd', '--completion-style=detailed' }
 | 
					 | 
				
			||||||
          })
 | 
					 | 
				
			||||||
        end,
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        ['lua_ls'] = function()
 | 
					 | 
				
			||||||
          require('neodev').setup()
 | 
					 | 
				
			||||||
          require('lspconfig').lua_ls.setup({
 | 
					 | 
				
			||||||
            capabilities = capabilities,
 | 
					 | 
				
			||||||
            settings = {
 | 
					 | 
				
			||||||
              Lua = {
 | 
					 | 
				
			||||||
                diagnostics = {
 | 
					 | 
				
			||||||
                  disable = { 'missing-fields', },
 | 
					 | 
				
			||||||
                  globals = { 'vim', },
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
              }
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
          })
 | 
					 | 
				
			||||||
        end,
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        ['pyright'] = function()
 | 
					 | 
				
			||||||
          require('lspconfig').pyright.setup({
 | 
					 | 
				
			||||||
            capabilities = capabilities,
 | 
					 | 
				
			||||||
            settings = {
 | 
					 | 
				
			||||||
              pyright = {
 | 
					 | 
				
			||||||
                disableOrganizeImports = true, -- Use ruff import sorter instead
 | 
					 | 
				
			||||||
              },
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
          })
 | 
					 | 
				
			||||||
        end,
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
    })
 | 
					    })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user