From 61171df4a82da557e6b3ce99552b09077fb10cdf Mon Sep 17 00:00:00 2001 From: ViViDboarder Date: Wed, 2 Nov 2022 16:57:18 -0700 Subject: [PATCH] Update with nvim 0.8 support --- neovim/lua/plugins.lua | 4 +- neovim/lua/plugins/airline.lua | 38 ------ neovim/lua/plugins/lsp.lua | 101 +++++++++++---- neovim/lua/plugins/lualine.lua | 1 + neovim/lua/plugins/null-ls/init.lua | 1 + neovim/packer_snapshots/latest-0.8 | 185 ++++++++++++++++++++++++++++ 6 files changed, 265 insertions(+), 65 deletions(-) delete mode 100644 neovim/lua/plugins/airline.lua create mode 100644 neovim/packer_snapshots/latest-0.8 diff --git a/neovim/lua/plugins.lua b/neovim/lua/plugins.lua index 998db3e..33be0bb 100644 --- a/neovim/lua/plugins.lua +++ b/neovim/lua/plugins.lua @@ -213,6 +213,7 @@ use({ use({ "neovim/nvim-lspconfig", tag = utils.map_version_rule({ + -- [">=0.8.0"] = utils.nil_val, [">=0.7.0"] = "v0.1.3", [">=0.6.1"] = "v0.1.2", [">=0.6.0"] = "v0.1.0", @@ -283,7 +284,8 @@ use({ "nvim-treesitter/nvim-treesitter", run = ":TSUpdate", commit = utils.map_version_rule({ - [">=0.7.0"] = utils.nil_value, + [">=0.8.0"] = utils.nil_val, + [">=0.7.0"] = "4cccb6f494eb255b32a290d37c35ca12584c74d0", [">=0.5.0"] = "a189323454d1215c682c7ad7db3e6739d26339c4", }), config = function() diff --git a/neovim/lua/plugins/airline.lua b/neovim/lua/plugins/airline.lua deleted file mode 100644 index 329507c..0000000 --- a/neovim/lua/plugins/airline.lua +++ /dev/null @@ -1,38 +0,0 @@ -local function config_airline() - -- Use short-form mode text - vim.g.airline_mode_map = { - ["__"] = "-", - ["n"] = "N", - ["i"] = "I", - ["R"] = "R", - ["c"] = "C", - ["v"] = "V", - ["V"] = "V", - [""] = "V", - ["s"] = "S", - ["S"] = "S", - [""] = "S", - ["t"] = "T", - } - - -- abbreviate trailing whitespace and mixed indent - vim.g["airline#extensions#whitespace#trailing_format"] = "tw[%s]" - vim.g["airline#extensions#whitespace#mixed_indent_format"] = "i[%s]" - -- Vertical separators for all - vim.g.airline_left_sep = "" - vim.g.airline_left_alt_sep = "" - vim.g.airline_right_sep = "" - vim.g.airline_right_alt_sep = "" - vim.g["airline#extensions#tabline#enabled"] = 1 - vim.g["airline#extensions#tabline#left_sep"] = " " - vim.g["airline#extensions#tabline#left_alt_sep"] = "|" - -- Slimmer section z - vim.g.airline_section_z = "%2l/%L:%2v" - -- Skip most common encoding - vim.g["airline#parts#ffenc#skip_expected_string"] = "utf-8[unix]" - -- If UTF-8 symbols don't work, use ASCII - -- vim.g.airline_symbols_ascii = 1 - vim.g["airline#extensions#nvimlsp#enabled"] = 1 -end - -config_airline() diff --git a/neovim/lua/plugins/lsp.lua b/neovim/lua/plugins/lsp.lua index d20754c..9091563 100644 --- a/neovim/lua/plugins/lsp.lua +++ b/neovim/lua/plugins/lsp.lua @@ -38,12 +38,41 @@ function M.config_lsp_ui() end) end +local function get_server_capabilities(client) + -- HACK: Support for <0.8 + if client.server_capabilities ~= nil then + return client.server_capabilities + end + + local capabilities = client.resolved_capabilities + if capabilities.documentSymbolProvider == nil then + capabilities.documentSymbolProvider = capabilities.goto_definition + end + if capabilities.documentFormattingProvider == nil then + capabilities.documentFormattingProvider = capabilities.document_formatting + end + if capabilities.documentRangeFormattingProvider == nil then + capabilities.documentRangeFormattingProvider = capabilities.document_range_formatting + end + if capabilities.documentHighlightProvider == nil then + capabilities.documentHighlightProvider = capabilities.document_highlight + end + if capabilities.workspaceSymbolProvider == nil then + -- Not sure what the legacy version of this is + capabilities.workspaceSymbolProvider = capabilities.goto_definition + end + + return capabilities +end + local function get_default_attach(override_capabilities) return function(client, bufnr) -- Allow overriding capabilities to avoid duplicate lsps with capabilities + + -- Using custom method to extract for <0.8 support + local server_capabilities = get_server_capabilities(client) if override_capabilities ~= nil then - client.resolved_capabilities = - vim.tbl_extend("force", client.resolved_capabilities, override_capabilities or {}) + server_capabilities = vim.tbl_extend("force", server_capabilities, override_capabilities or {}) end local function buf_set_keymap(...) @@ -54,13 +83,16 @@ local function get_default_attach(override_capabilities) vim.api.nvim_buf_set_option(bufnr, ...) end - -- Set built in features to use lsp functions - buf_set_option("omnifunc", "v:lua.vim.lsp.omnifunc") - if client.resolved_capabilities.goto_definition then - buf_set_option("tagfunc", "v:lua.vim.lsp.tagfunc") - end - if client.resolved_capabilities.document_formatting then - buf_set_option("formatexpr", "v:lua.vim.lsp.formatexpr()") + -- Set built in features to use lsp functions (automatic in nvim-0.8) + -- HACK: Support for <0.8 + if not vim.fn.has("nvim-0.8") then + buf_set_option("omnifunc", "v:lua.vim.lsp.omnifunc") + if server_capabilities.documentSymbolProvider then + buf_set_option("tagfunc", "v:lua.vim.lsp.tagfunc") + end + if server_capabilities.documentFormattingProvider then + buf_set_option("formatexpr", "v:lua.vim.lsp.formatexpr()") + end end -- Mappings @@ -107,26 +139,39 @@ local function get_default_attach(override_capabilities) -- Use IncRename if available if utils.try_require("inc_rename") ~= nil then - lsp_keymap("rn", "IncRename()") + vim.keymap.set("n", "rn", function() + return ":IncRename " .. vim.fn.expand("") + end, { expr = true, buffer = true, desc = "Rename current symbol" }) end -- Set some keybinds conditional on server capabilities - if client.resolved_capabilities.document_formatting then + -- HACK: Support for <0.8 + if vim.fn.has("nvim-0.8") then + buf_set_keymap("n", "lf", "lua vim.lsp.buf.format({async=true})", opts) + buf_set_keymap("v", "lf", "lua vim.lsp.buf.format({async=true})", opts) + if server_capabilities.documentFormattingProvider then + vim.cmd([[ + augroup lsp_format + autocmd! + autocmd BufWritePre *.rs,*.go,*.sh,*.lua lua vim.lsp.buf.format({async=false, timeout_ms=1000}) + augroup END + ]]) + end + else buf_set_keymap("n", "lf", "lua vim.lsp.buf.formatting()", opts) - vim.cmd([[ - augroup lsp_format - autocmd! - autocmd BufWritePre *.rs,*.go,*.sh,*.lua lua vim.lsp.buf.formatting_sync(nil, 1000) - " autocmd BufWritePre lua vim.lsp.buf.formatting_sync(nil, 1000) - augroup END - ]]) - end - if client.resolved_capabilities.document_range_formatting then buf_set_keymap("n", "lfr", "lua vim.lsp.buf.range_formatting()", opts) + if server_capabilities.documentFormattingProvider then + vim.cmd([[ + augroup lsp_format + autocmd! + autocmd BufWritePre *.rs,*.go,*.sh,*.lua lua vim.lsp.buf.formatting_sync(nil, 1000) + augroup END + ]]) + end end -- Set autocommands conditional on server_capabilities - if client.resolved_capabilities.document_highlight then + if server_capabilities.documentHighlightProvider then vim.cmd([[ :highlight link LspReferenceRead MatchParen :highlight link LspReferenceText MatchParen @@ -142,15 +187,18 @@ local function get_default_attach(override_capabilities) -- Some override some fuzzy finder bindings to use lsp sources if utils.try_require("telescope") ~= nil then -- Replace some Telescope bindings with LSP versions - if client.resolved_capabilities.goto_definition then + if server_capabilities.documentSymbolProvider then buf_set_keymap("n", "t", "Telescope lsp_document_symbols", opts) - buf_set_keymap("n", "ft", "Telescope lsp_dynamic_workspace_symbols", opts) + end + if server_capabilities.workspaceSymbolProvider then buf_set_keymap("n", "ft", "Telescope lsp_dynamic_workspace_symbols", opts) end -- Replace some LSP bindings with Telescope ones - if client.resolved_capabilities.goto_definition then + if server_capabilities.definitionProvider then lsp_keymap("d", "Telescope lsp_definitions") + end + if server_capabilities.typeDefinitionProvider then lsp_keymap("t", "Telescope lsp_type_definition()") end lsp_keymap("i", "Telescope lsp_implementations") @@ -165,10 +213,11 @@ end local function merged_capabilities() -- Maybe update capabilities - local capabilities = vim.lsp.protocol.make_client_capabilities() + local capabilities = nil utils.try_require("cmp-nvim-lsp", function(cmp_nvim_lsp) - capabilities = cmp_nvim_lsp.update_capabilities(capabilities) + capabilities = cmp_nvim_lsp.default_capabilities() end) + return capabilities end diff --git a/neovim/lua/plugins/lualine.lua b/neovim/lua/plugins/lualine.lua index d11a36d..0ac895c 100644 --- a/neovim/lua/plugins/lualine.lua +++ b/neovim/lua/plugins/lualine.lua @@ -61,6 +61,7 @@ function M.config_lualine(theme_name) end local diagnostic_plugin = "nvim_diagnostic" + -- HACK: Support for <0.6 if vim.fn.has("nvim-0.6.0") ~= 1 then diagnostic_plugin = "nvim_lsp" end diff --git a/neovim/lua/plugins/null-ls/init.lua b/neovim/lua/plugins/null-ls/init.lua index 392c680..f6e728b 100644 --- a/neovim/lua/plugins/null-ls/init.lua +++ b/neovim/lua/plugins/null-ls/init.lua @@ -67,6 +67,7 @@ function M.configure(options) null_ls.builtins.diagnostics.hadolint, } + -- HACK: Support for <0.6 if vim.fn.has("nvim-0.6.0") then vim.list_extend(sources, { -- Text diff --git a/neovim/packer_snapshots/latest-0.8 b/neovim/packer_snapshots/latest-0.8 new file mode 100644 index 0000000..88d1e3e --- /dev/null +++ b/neovim/packer_snapshots/latest-0.8 @@ -0,0 +1,185 @@ +{ + "LuaSnip": { + "commit": "619796e" + }, + "cmp-buffer": { + "commit": "3022dbc" + }, + "cmp-nvim-lsp": { + "commit": "78924d1" + }, + "cmp-spell": { + "commit": "60584cb" + }, + "cmp_luasnip": { + "commit": "1809552" + }, + "colorbuddy.vim": { + "commit": "cdb5b06" + }, + "dark-notify": { + "commit": "891adc0" + }, + "file-line": { + "commit": "67c3590" + }, + "friendly-snippets": { + "commit": "c93311f" + }, + "goyo.vim": { + "commit": "7f5d35a" + }, + "impatient.nvim": { + "commit": "b842e16" + }, + "inc-rename.nvim": { + "commit": "b71ff4b" + }, + "limelight.vim": { + "commit": "86aaec1" + }, + "lsp_signature.nvim": { + "commit": "7a1845e" + }, + "lualine.nvim": { + "commit": "3325d5d" + }, + "lush.nvim": { + "commit": "57e0b85" + }, + "mason-lspconfig.nvim": { + "commit": "a910b4d" + }, + "mason.nvim": { + "commit": "1ec0dd2" + }, + "neodev.nvim": { + "commit": "5e68553" + }, + "null-ls.nvim": { + "commit": "f1add23" + }, + "nvim-cmp": { + "commit": "9bb8ee6" + }, + "nvim-colorizer.lua": { + "commit": "36c610a" + }, + "nvim-gps": { + "commit": "f4734df" + }, + "nvim-lspconfig": { + "commit": "99596a8" + }, + "nvim-solarized-lua": { + "commit": "b5a77b5" + }, + "nvim-treesitter": { + "commit": "c6992f6" + }, + "nvim-treesitter-refactor": { + "commit": "75f5895" + }, + "nvim-treesitter-textobjects": { + "commit": "13739a5" + }, + "packer.nvim": { + "commit": "6afb674" + }, + "plenary.nvim": { + "commit": "4b7e520" + }, + "popup.nvim": { + "commit": "b7404d3" + }, + "rust.vim": { + "commit": "1cdc5cb" + }, + "startuptime.vim": { + "commit": "dfa57f5" + }, + "tcomment_vim": { + "commit": "e77e1bf" + }, + "telescope-file-browser.nvim": { + "commit": "2429ecf" + }, + "telescope.nvim": { + "commit": "b79cd6c" + }, + "todo-comments.nvim": { + "commit": "530eb3a" + }, + "tokyonight.nvim": { + "commit": "29e2c68" + }, + "trouble.nvim": { + "commit": "ed65f84" + }, + "vim-android": { + "commit": "8911f86" + }, + "vim-argwrap": { + "commit": "feaba6b" + }, + "vim-endwise": { + "commit": "4e5c835" + }, + "vim-eunuch": { + "commit": "291ef1f" + }, + "vim-forcedotcom": { + "commit": "a30ba7e" + }, + "vim-fugitive": { + "commit": "01f3e0a" + }, + "vim-grepper": { + "commit": "2b93535" + }, + "vim-gutentags": { + "commit": "b77b8fa" + }, + "vim-pencil": { + "commit": "5b4110d" + }, + "vim-polyglot": { + "commit": "bc8a81d" + }, + "vim-repeat": { + "commit": "24afe92" + }, + "vim-rsi": { + "commit": "4c673fb" + }, + "vim-startify": { + "commit": "81e36c3" + }, + "vim-surround": { + "commit": "3d188ed" + }, + "vim-textobj-sentence": { + "commit": "c5dd562" + }, + "vim-textobj-user": { + "commit": "41a675d" + }, + "vim-togglelist": { + "commit": "48f0d30" + }, + "vim-vinegar": { + "commit": "bb1bcdd" + }, + "which-key.nvim": { + "commit": "61553ae" + }, + "wombat.nvim": { + "commit": "96989b1" + }, + "wombat256.vim": { + "commit": "8734ba4" + }, + "wombuddy.nvim": { + "commit": "29deb8f" + } +}