关键代码
-- 代码保存自动格式化formatting
if client.resolved_capabilities.document_formatting then
vim.api.nvim_command [[augroup Format]]
vim.api.nvim_command [[autocmd! * ]]
vim.api.nvim_command [[autocmd BufWritePre EslintFixAll]]
-- vim.api.nvim_command [[autocmd BufWritePre lua vim.lsp.buf.formatting_seq_sync()]]
vim.api.nvim_command [[augroup END]]
end
全部代码
local nvim_lsp = require("lspconfig")
-- 在语言服务器附加到当前缓冲区之后
-- 使用 on_attach 函数仅映射以下键
Itkey_on_attach = function(client, bufnr)
local function buf_set_keymap(...)
vim.api.nvim_buf_set_keymap(bufnr, ...)
end
local function buf_set_option(...)
vim.api.nvim_buf_set_option(bufnr, ...)
end
--Enable completion triggered by
buf_set_option("omnifunc", "v:lua.vim.lsp.omnifunc")
-- Mappings.
local opts = {noremap = true, silent = true}
-- See `:help vim.lsp.*` for documentation on any of the below functions
buf_set_keymap("n", "gD", "lua vim.lsp.buf.declaration()", opts)
buf_set_keymap("n", "gd", "lua vim.lsp.buf.definition()", opts)
--buf_set_keymap('n', 'K', 'lua vim.lsp.buf.hover()', opts)
buf_set_keymap("n", "gi", "lua vim.lsp.buf.implementation()", opts)
--buf_set_keymap('i', '', 'lua vim.lsp.buf.signature_help()', opts)
buf_set_keymap("n", "wa", "lua vim.lsp.buf.add_workspace_folder()", opts)
buf_set_keymap("n", "wr", "lua vim.lsp.buf.remove_workspace_folder()", opts)
buf_set_keymap("n", "wl", "lua print(vim.inspect(vim.lsp.buf.list_workspace_folders()))", opts)
buf_set_keymap("n", "D", "lua vim.lsp.buf.type_definition()", opts)
--重命名
buf_set_keymap("n", "rn", "lua vim.lsp.buf.rename()", opts)
--智能提醒,比如:自动导包 已经用lspsaga里的功能替换了
--buf_set_keymap('n', 'ca', 'lua vim.lsp.buf.code_action()', opts)
buf_set_keymap("n", "gr", "lua vim.lsp.buf.references()", opts)
buf_set_keymap("n", "e", "lua vim.lsp.diagnostic.show_line_diagnostics()", opts)
--buf_set_keymap('n', '', 'lua vim.lsp.diagnostic.goto_prev()', opts)
buf_set_keymap("n", "", "lua vim.lsp.diagnostic.goto_next()", opts)
buf_set_keymap("n", "q", "lua vim.lsp.diagnostic.set_loclist()", opts)
buf_set_keymap("n", "f", "lua vim.lsp.buf.formatting()", opts)
-- 代码保存自动格式化formatting
if client.resolved_capabilities.document_formatting then
vim.api.nvim_command [[augroup Format]]
vim.api.nvim_command [[autocmd! * ]]
vim.api.nvim_command [[autocmd BufWritePre EslintFixAll]]
-- vim.api.nvim_command [[autocmd BufWritePre lua vim.lsp.buf.formatting_seq_sync()]]
vim.api.nvim_command [[augroup END]]
end
end
-- Add additional capabilities supported by nvim-cmp
local capabilities = vim.lsp.protocol.make_client_capabilities()
capabilities.textDocument.completion.completionItem.documentationFormat = {"markdown", "plaintext"}
capabilities.textDocument.completion.completionItem.snippetSupport = true
capabilities.textDocument.completion.completionItem.preselectSupport = true
capabilities.textDocument.completion.completionItem.insertReplaceSupport = true
capabilities.textDocument.completion.completionItem.labelDetailsSupport = true
capabilities.textDocument.completion.completionItem.deprecatedSupport = true
capabilities.textDocument.completion.completionItem.commitCharactersSupport = true
capabilities.textDocument.completion.completionItem.tagSupport = {valueSet = {1}}
capabilities.textDocument.completion.completionItem.resolveSupport = {
properties = {
"documentation",
"detail",
"additionalTextEdits"
}
}
Itkey_capabilities = capabilities
-- Enable some language servers with the additional completion capabilities offered by nvim-cmp
local servers = {"tsserver"}
for _, lsp in ipairs(servers) do
nvim_lsp[lsp].setup {
on_attach = Itkey_on_attach,
capabilities = Itkey_capabilities
}
end