new lsp conf
This commit is contained in:
		
							
								
								
									
										68
									
								
								nvim/lua/new_lsp_conf.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										68
									
								
								nvim/lua/new_lsp_conf.lua
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,68 @@
 | 
			
		||||
-- Mappings.
 | 
			
		||||
-- See `:help vim.diagnostic.*` for documentation on any of the below functions
 | 
			
		||||
local opts = { noremap=true, silent=true }
 | 
			
		||||
vim.keymap.set('n', '<space>e', vim.diagnostic.open_float, opts)
 | 
			
		||||
vim.keymap.set('n', '[d', vim.diagnostic.goto_prev, opts)
 | 
			
		||||
vim.keymap.set('n', ']d', vim.diagnostic.goto_next, opts)
 | 
			
		||||
vim.keymap.set('n', '<space>q', vim.diagnostic.setloclist, opts)
 | 
			
		||||
 | 
			
		||||
-- Use an on_attach function to only map the following keys
 | 
			
		||||
-- after the language server attaches to the current buffer
 | 
			
		||||
local on_attach = function(client, bufnr)
 | 
			
		||||
  -- Enable completion triggered by <c-x><c-o>
 | 
			
		||||
  vim.api.nvim_buf_set_option(bufnr, 'omnifunc', 'v:lua.vim.lsp.omnifunc')
 | 
			
		||||
 | 
			
		||||
  -- Mappings.
 | 
			
		||||
  -- See `:help vim.lsp.*` for documentation on any of the below functions
 | 
			
		||||
  local bufopts = { noremap=true, silent=true, buffer=bufnr }
 | 
			
		||||
  vim.keymap.set('n', '<leader>gD', vim.lsp.buf.declaration, bufopts)
 | 
			
		||||
  vim.keymap.set('n', '<leader>gd', vim.lsp.buf.definition, bufopts)
 | 
			
		||||
  vim.keymap.set('n', '<leader>K', vim.lsp.buf.hover, bufopts)
 | 
			
		||||
  vim.keymap.set('n', '<leader>gi', vim.lsp.buf.implementation, bufopts)
 | 
			
		||||
  vim.keymap.set('n', '<leader>k', vim.lsp.buf.signature_help, bufopts)
 | 
			
		||||
  vim.keymap.set('n', '<leader>wa', vim.lsp.buf.add_workspace_folder, bufopts)
 | 
			
		||||
  vim.keymap.set('n', '<leader>wr', vim.lsp.buf.remove_workspace_folder, bufopts)
 | 
			
		||||
  vim.keymap.set('n', '<leader>wl', function()
 | 
			
		||||
    print(vim.inspect(vim.lsp.buf.list_workspace_folders()))
 | 
			
		||||
  end, bufopts)
 | 
			
		||||
  vim.keymap.set('n', '<leader>D', vim.lsp.buf.type_definition, bufopts)
 | 
			
		||||
  vim.keymap.set('n', '<leader>rn', vim.lsp.buf.rename, bufopts)
 | 
			
		||||
  vim.keymap.set('n', '<leader>ca', vim.lsp.buf.code_action, bufopts)
 | 
			
		||||
  vim.keymap.set('n', '<leader>gr', vim.lsp.buf.references, bufopts)
 | 
			
		||||
  vim.keymap.set('n', '<leader>f',function() vim.lsp.buf.format { async = true } end, bufopts)
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
local lsp_flags = {
 | 
			
		||||
  -- This is the default in Nvim 0.7+
 | 
			
		||||
  debounce_text_changes = 150,
 | 
			
		||||
}
 | 
			
		||||
require('mason-lspconfig').setup_handlers{
 | 
			
		||||
	function(server_name)
 | 
			
		||||
		require('lspconfig')[server_name].setup{
 | 
			
		||||
    on_attach = on_attach,
 | 
			
		||||
    flags = lsp_flags,
 | 
			
		||||
		}
 | 
			
		||||
	end,
 | 
			
		||||
	['rust_analyzer'] = function()
 | 
			
		||||
		require('rust-tools').setup {}
 | 
			
		||||
	end,
 | 
			
		||||
	['sumneko_lua'] = function()
 | 
			
		||||
		require('lspconfig')["sumneko_lua"].setup {
 | 
			
		||||
			settings = {
 | 
			
		||||
				Lua = {
 | 
			
		||||
					diagnostics = {
 | 
			
		||||
						globals = { "vim" }
 | 
			
		||||
					}
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	end,
 | 
			
		||||
}
 | 
			
		||||
require('lspconfig')['rust_analyzer'].setup{
 | 
			
		||||
    on_attach = on_attach,
 | 
			
		||||
    flags = lsp_flags,
 | 
			
		||||
    -- Server-specific settings...
 | 
			
		||||
    settings = {
 | 
			
		||||
      ["rust-analyzer"] = {}
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user