mirror of https://github.com/golang/go.git
gopls: update neovim documentation for imitating goimports
The existing example is no longer recommended as it can have unintended consequences; for example, if it is run while the cursor is in an incomplete struct, it will fill in all struct fields. This is described more at https://github.com/neovim/nvim-lspconfig/issues/115#issuecomment-866632451 Change-Id: I3640ddb747a69c864675c0483032037a5e777d59 GitHub-Last-Rev: 2335f017eb967785da28ddb1bc48fb820d59a07e GitHub-Pull-Request: golang/tools#371 Reviewed-on: https://go-review.googlesource.com/c/tools/+/389194 Reviewed-by: Robert Findley <rfindley@google.com> Trust: Robert Findley <rfindley@google.com> Run-TryBot: Robert Findley <rfindley@google.com> Trust: Hyang-Ah Hana Kim <hyangah@gmail.com> gopls-CI: kokoro <noreply+kokoro@google.com> TryBot-Result: Gopher Robot <gobot@golang.org>
This commit is contained in:
parent
ffa170dc4a
commit
72442fe040
|
|
@ -175,38 +175,23 @@ a helper function in Lua:
|
|||
lua <<EOF
|
||||
-- …
|
||||
|
||||
function goimports(timeout_ms)
|
||||
local context = { only = { "source.organizeImports" } }
|
||||
vim.validate { context = { context, "t", true } }
|
||||
|
||||
function OrgImports(wait_ms)
|
||||
local params = vim.lsp.util.make_range_params()
|
||||
params.context = context
|
||||
|
||||
-- See the implementation of the textDocument/codeAction callback
|
||||
-- (lua/vim/lsp/handler.lua) for how to do this properly.
|
||||
local result = vim.lsp.buf_request_sync(0, "textDocument/codeAction", params, timeout_ms)
|
||||
if not result or next(result) == nil then return end
|
||||
local actions = result[1].result
|
||||
if not actions then return end
|
||||
local action = actions[1]
|
||||
|
||||
-- textDocument/codeAction can return either Command[] or CodeAction[]. If it
|
||||
-- is a CodeAction, it can have either an edit, a command or both. Edits
|
||||
-- should be executed first.
|
||||
if action.edit or type(action.command) == "table" then
|
||||
if action.edit then
|
||||
vim.lsp.util.apply_workspace_edit(action.edit)
|
||||
params.context = {only = {"source.organizeImports"}}
|
||||
local result = vim.lsp.buf_request_sync(0, "textDocument/codeAction", params, wait_ms)
|
||||
for _, res in pairs(result or {}) do
|
||||
for _, r in pairs(res.result or {}) do
|
||||
if r.edit then
|
||||
vim.lsp.util.apply_workspace_edit(r.edit)
|
||||
else
|
||||
vim.lsp.buf.execute_command(r.command)
|
||||
end
|
||||
end
|
||||
if type(action.command) == "table" then
|
||||
vim.lsp.buf.execute_command(action.command)
|
||||
end
|
||||
else
|
||||
vim.lsp.buf.execute_command(action)
|
||||
end
|
||||
end
|
||||
EOF
|
||||
|
||||
autocmd BufWritePre *.go lua goimports(1000)
|
||||
autocmd BufWritePre *.go lua OrgImports(1000)
|
||||
```
|
||||
|
||||
(Taken from the [discussion][nvim-lspconfig-imports] on Neovim issue tracker.)
|
||||
|
|
|
|||
Loading…
Reference in New Issue