diff options
author | Michael Lingelbach <m.j.lbach@gmail.com> | 2021-11-26 04:36:37 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-11-26 10:36:37 +0100 |
commit | 102e7e7929f691d8e6ed71853a4ff9f49be4780a (patch) | |
tree | 3967951f068f3f83de704e2a7d3b031e905bc839 | |
parent | 72d62aa6aa274835aebee9e78dd9b05eef4e5039 (diff) | |
download | rneovim-102e7e7929f691d8e6ed71853a4ff9f49be4780a.tar.gz rneovim-102e7e7929f691d8e6ed71853a4ff9f49be4780a.tar.bz2 rneovim-102e7e7929f691d8e6ed71853a4ff9f49be4780a.zip |
fix(lsp): require bufnr for apply_text_edits (#16444)
-rw-r--r-- | runtime/lua/vim/lsp/buf.lua | 8 | ||||
-rw-r--r-- | runtime/lua/vim/lsp/util.lua | 4 |
2 files changed, 9 insertions, 3 deletions
diff --git a/runtime/lua/vim/lsp/buf.lua b/runtime/lua/vim/lsp/buf.lua index d3ba766d89..be9bd9d223 100644 --- a/runtime/lua/vim/lsp/buf.lua +++ b/runtime/lua/vim/lsp/buf.lua @@ -176,9 +176,10 @@ function M.formatting_sync(options, timeout_ms) if client == nil then return end local params = util.make_formatting_params(options) - local result, err = client.request_sync("textDocument/formatting", params, timeout_ms, vim.api.nvim_get_current_buf()) + local bufnr = vim.api.nvim_get_current_buf() + local result, err = client.request_sync("textDocument/formatting", params, timeout_ms, bufnr) if result and result.result then - util.apply_text_edits(result.result) + util.apply_text_edits(result.result, bufnr) elseif err then vim.notify("vim.lsp.buf.formatting_sync: " .. err, vim.log.levels.WARN) end @@ -202,6 +203,7 @@ end ---the remaining clients in the order as they occur in the `order` list. function M.formatting_seq_sync(options, timeout_ms, order) local clients = vim.tbl_values(vim.lsp.buf_get_clients()); + local bufnr = vim.api.nvim_get_current_buf() -- sort the clients according to `order` for _, client_name in pairs(order or {}) do @@ -220,7 +222,7 @@ function M.formatting_seq_sync(options, timeout_ms, order) local params = util.make_formatting_params(options) local result, err = client.request_sync("textDocument/formatting", params, timeout_ms, vim.api.nvim_get_current_buf()) if result and result.result then - util.apply_text_edits(result.result) + util.apply_text_edits(result.result, bufnr) elseif err then vim.notify(string.format("vim.lsp.buf.formatting_seq_sync: (%s) %s", client.name, err), vim.log.levels.WARN) end diff --git a/runtime/lua/vim/lsp/util.lua b/runtime/lua/vim/lsp/util.lua index 2e55682b85..b88ddcd207 100644 --- a/runtime/lua/vim/lsp/util.lua +++ b/runtime/lua/vim/lsp/util.lua @@ -325,6 +325,10 @@ end ---@param bufnr number Buffer id ---@see https://microsoft.github.io/language-server-protocol/specifications/specification-current/#textEdit function M.apply_text_edits(text_edits, bufnr) + validate { + text_edits = { text_edits, 't', false }; + bufnr = { bufnr, 'number', false }; + } if not next(text_edits) then return end if not api.nvim_buf_is_loaded(bufnr) then vim.fn.bufload(bufnr) |