summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README.md2
-rw-r--r--doc/telescope.txt29
-rw-r--r--doc/telescope_changelog.txt22
-rw-r--r--lua/telescope/builtin/init.lua12
-rw-r--r--lua/telescope/builtin/lsp.lua210
-rw-r--r--lua/telescope/command.lua11
-rw-r--r--lua/telescope/themes.lua2
-rw-r--r--plugin/telescope.lua3
8 files changed, 28 insertions, 263 deletions
diff --git a/README.md b/README.md
index d1a8008..a86d0ff 100644
--- a/README.md
+++ b/README.md
@@ -301,8 +301,6 @@ Built-in functions. Ready to be bound to any key you like.
| `builtin.lsp_document_symbols` | Lists LSP document symbols in the current buffer |
| `builtin.lsp_workspace_symbols` | Lists LSP document symbols in the current workspace |
| `builtin.lsp_dynamic_workspace_symbols` | Dynamically Lists LSP for all workspace symbols |
-| `builtin.lsp_code_actions` | Lists any LSP actions for the word under the cursor, that can be triggered with `<cr>` |
-| `builtin.lsp_range_code_actions` | Lists any LSP actions for a given range, that can be triggered with `<cr>` |
| `builtin.diagnostics` | Lists Diagnostics for all open buffers or a specific buffer. Use option `bufnr=0` for current buffer. |
| `builtin.lsp_implementations` | Goto the implementation of the word under the cursor if there's only one, otherwise show all options in Telescope |
| `builtin.lsp_definitions` | Goto the definition of the word under the cursor, if there's only one, otherwise show all options in Telescope |
diff --git a/doc/telescope.txt b/doc/telescope.txt
index 501c2e3..f2be803 100644
--- a/doc/telescope.txt
+++ b/doc/telescope.txt
@@ -1403,33 +1403,6 @@ builtin.lsp_implementations({opts}) *telescope.builtin.lsp_implementations()*
{trim_text} (boolean) trim results text (default: false)
-builtin.lsp_code_actions({opts}) *telescope.builtin.lsp_code_actions()*
- Lists any LSP actions for the word under the cursor which can be triggered
- with `<cr>`
-
-
- Parameters: ~
- {opts} (table) options to pass to the picker
-
- Options: ~
- {timeout} (number) timeout for the sync call (default: 10000)
-
-
-builtin.lsp_range_code_actions({opts}) *telescope.builtin.lsp_range_code_actions()*
- Lists any LSP actions for a given range, that can be triggered with `<cr>`
-
-
- Parameters: ~
- {opts} (table) options to pass to the picker
-
- Options: ~
- {timeout} (number) timeout for the sync call (default: 10000)
- {start_line} (number) where the code action starts (default: handled
- by :'<,'>Telescope lsp_range_code_actions)
- {end_line} (number) where the code action ends (default: handled by
- :'<,'>Telescope lsp_range_code_actions)
-
-
builtin.lsp_document_symbols({opts}) *telescope.builtin.lsp_document_symbols()*
Lists LSP document symbols in the current buffer
- Default keymaps:
@@ -1564,7 +1537,7 @@ themes.get_cursor() *telescope.themes.get_cursor()*
`local builtin = require('telescope.builtin')`
`local themes = require('telescope.themes')`
- `builtin.lsp_code_actions(themes.get_cursor())`
+ `builtin.lsp_references(themes.get_cursor())`
<
diff --git a/doc/telescope_changelog.txt b/doc/telescope_changelog.txt
index 0698664..a1b509d 100644
--- a/doc/telescope_changelog.txt
+++ b/doc/telescope_changelog.txt
@@ -161,7 +161,7 @@ get all diagnostics for all open buffers.
*telescope.changelog-1851*
-Date: December 10, 2021
+Date: April 22, 2022
PR: https://github.com/nvim-telescope/telescope.nvim/pull/1851
Telescope requires now Neovim release 0.7.0 or a more recent nightly.
@@ -175,5 +175,25 @@ versions. You can read more about this strategy here:
https://github.com/nvim-telescope/telescope.nvim/issues/1772
+ *telescope.changelog-1866*
+
+Date: April 25, 2022
+PR: https://github.com/nvim-telescope/telescope.nvim/pull/1866
+
+We decided to remove both `lsp_code_actions` and `lsp_range_code_actions`.
+Currently, both functions are highly duplicated code from neovim, with fewer
+features, because it's out of date. So rather that we copy over the required
+changes to fix some bugs or implement client side code actions, we decided to
+remove both of them and suggest you use `vim.lsp.buf.code_actions` and
+`vim.lsp.buf.range_code_actions`. The transition to it is easy thanks to
+`vim.ui.select` which allows you to override the select UI. We provide a small
+extension for quite some time that make it easy to use telescope for
+`vim.ui.select`. You can found the code here
+https://github.com/nvim-telescope/telescope-ui-select.nvim. It offers the same
+displaying as the current version of `lsp_code_actions`. An alternative is
+https://github.com/stevearc/dressing.nvim which has support for multiple
+different backends including telescope.
+
+
vim:tw=78:ts=8:ft=help:norl:
diff --git a/lua/telescope/builtin/init.lua b/lua/telescope/builtin/init.lua
index 6f828b7..84eb18b 100644
--- a/lua/telescope/builtin/init.lua
+++ b/lua/telescope/builtin/init.lua
@@ -382,18 +382,6 @@ builtin.lsp_type_definitions = require("telescope.builtin.lsp").type_definitions
---@field trim_text boolean: trim results text (default: false)
builtin.lsp_implementations = require_on_exported_call("telescope.builtin.lsp").implementations
---- Lists any LSP actions for the word under the cursor which can be triggered with `<cr>`
----@param opts table: options to pass to the picker
----@field timeout number: timeout for the sync call (default: 10000)
-builtin.lsp_code_actions = require_on_exported_call("telescope.builtin.lsp").code_actions
-
---- Lists any LSP actions for a given range, that can be triggered with `<cr>`
----@param opts table: options to pass to the picker
----@field timeout number: timeout for the sync call (default: 10000)
----@field start_line number: where the code action starts (default: handled by :'<,'>Telescope lsp_range_code_actions)
----@field end_line number: where the code action ends (default: handled by :'<,'>Telescope lsp_range_code_actions)
-builtin.lsp_range_code_actions = require_on_exported_call("telescope.builtin.lsp").range_code_actions
-
--- Lists LSP document symbols in the current buffer
--- - Default keymaps:
--- - `<C-l>`: show autocompletion menu to prefilter your query by type of symbol you want to see (i.e. `:variable:`)
diff --git a/lua/telescope/builtin/lsp.lua b/lua/telescope/builtin/lsp.lua
index 76284e0..265e453 100644
--- a/lua/telescope/builtin/lsp.lua
+++ b/lua/telescope/builtin/lsp.lua
@@ -1,13 +1,9 @@
local channel = require("plenary.async.control").channel
-local action_state = require "telescope.actions.state"
-local actions = require "telescope.actions"
local conf = require("telescope.config").values
-local entry_display = require "telescope.pickers.entry_display"
local finders = require "telescope.finders"
local make_entry = require "telescope.make_entry"
local pickers = require "telescope.pickers"
-local strings = require "plenary.strings"
local utils = require "telescope.utils"
local lsp = {}
@@ -162,211 +158,6 @@ lsp.document_symbols = function(opts)
end)
end
-lsp.code_actions = function(opts)
- local params = vim.F.if_nil(opts.params, vim.lsp.util.make_range_params(opts.winnr))
- local lnum = vim.api.nvim_win_get_cursor(opts.winnr)[1]
-
- params.context = {
- diagnostics = vim.lsp.diagnostic.get_line_diagnostics(opts.bufnr, lnum - 1),
- }
-
- local results_lsp, err = vim.lsp.buf_request_sync(
- opts.bufnr,
- "textDocument/codeAction",
- params,
- vim.F.if_nil(opts.timeout, 10000)
- )
-
- if err then
- utils.notify("builtin.lsp_code_actions", {
- msg = err,
- level = "ERROR",
- })
- return
- end
-
- if not results_lsp or vim.tbl_isempty(results_lsp) then
- utils.notify("builtin.lsp_document_symbols", {
- msg = "No results from textDocument/codeAction",
- level = "INFO",
- })
- return
- end
-
- local idx = 1
- local results = {}
- local widths = {
- idx = 0,
- command_title = 0,
- client_name = 0,
- }
-
- for client_id, response in pairs(results_lsp) do
- if response.result then
- local client = vim.lsp.get_client_by_id(client_id)
-
- for _, result in pairs(response.result) do
- local entry = {
- idx = idx,
- command_title = result.title:gsub("\r\n", "\\r\\n"):gsub("\n", "\\n"),
- client = client,
- client_name = client and client.name or "",
- command = result,
- }
-
- for key, value in pairs(widths) do
- widths[key] = math.max(value, strings.strdisplaywidth(entry[key]))
- end
-
- table.insert(results, entry)
- idx = idx + 1
- end
- end
- end
-
- if #results == 0 then
- utils.notify("builtin.lsp_document_symbols", {
- msg = "No code actions available",
- level = "INFO",
- })
- return
- end
-
- local displayer = entry_display.create {
- separator = " ",
- items = {
- { width = widths.idx + 1 }, -- +1 for ":" suffix
- { width = widths.command_title },
- { width = widths.client_name },
- },
- }
-
- local function make_display(entry)
- return displayer {
- { entry.value.idx .. ":", "TelescopePromptPrefix" },
- { entry.value.command_title },
- { entry.value.client_name, "TelescopeResultsComment" },
- }
- end
-
- -- If the text document version is 0, set it to nil instead so that Neovim
- -- won't refuse to update a buffer that it believes is newer than edits.
- -- See: https://github.com/eclipse/eclipse.jdt.ls/issues/1695
- -- Source:
- -- https://github.com/neovim/nvim-lspconfig/blob/486f72a25ea2ee7f81648fdfd8999a155049e466/lua/lspconfig/jdtls.lua#L62
- local function fix_zero_version(workspace_edit)
- if workspace_edit and workspace_edit.documentChanges then
- for _, change in pairs(workspace_edit.documentChanges) do
- local text_document = change.textDocument
- if text_document and text_document.version and text_document.version == 0 then
- text_document.version = nil
- end
- end
- end
- return workspace_edit
- end
-
- --[[
- -- actions is (Command | CodeAction)[] | null
- -- CodeAction
- -- title: String
- -- kind?: CodeActionKind
- -- diagnostics?: Diagnostic[]
- -- isPreferred?: boolean
- -- edit?: WorkspaceEdit
- -- command?: Command
- --
- -- Command
- -- title: String
- -- command: String
- -- arguments?: any[]
- --]]
- local transform_action = opts.transform_action
- or function(action)
- -- Remove 0 -version from LSP codeaction request payload.
- -- Is only run on the "java.apply.workspaceEdit" codeaction.
- -- Fixed Java/jdtls compatibility with Telescope
- -- See fix_zero_version commentary for more information
- local command = (action.command and action.command.command) or action.command
- if command ~= "java.apply.workspaceEdit" then
- return action
- end
- local arguments = (action.command and action.command.arguments) or action.arguments
- action.edit = fix_zero_version(arguments[1])
- return action
- end
-
- local execute_action = opts.execute_action
- or function(action, offset_encoding)
- if action.edit or type(action.command) == "table" then
- if action.edit then
- vim.lsp.util.apply_workspace_edit(action.edit, offset_encoding)
- end
- if type(action.command) == "table" then
- vim.lsp.buf.execute_command(action.command)
- end
- else
- vim.lsp.buf.execute_command(action)
- end
- end
-
- pickers.new(opts, {
- prompt_title = "LSP Code Actions",
- finder = finders.new_table {
- results = results,
- entry_maker = function(action)
- return {
- value = action,
- ordinal = action.idx .. action.command_title,
- display = make_display,
- }
- end,
- },
- attach_mappings = function(prompt_bufnr)
- actions.select_default:replace(function()
- local selection = action_state.get_selected_entry()
- actions.close(prompt_bufnr)
- local action = selection.value.command
- local client = selection.value.client
- local eff_execute = function(transformed)
- execute_action(transformed, client.offset_encoding)
- end
- if
- not action.edit
- and client
- and type(client.resolved_capabilities.code_action) == "table"
- and client.resolved_capabilities.code_action.resolveProvider
- then
- client.request("codeAction/resolve", action, function(resolved_err, resolved_action)
- if resolved_err then
- utils.notify("builtin.lsp_code_actions", {
- msg = string.format("codeAction/resolve failed: %s : %s", resolved_err.code, resolved_err.message),
- level = "ERROR",
- })
- return
- end
- if resolved_action then
- eff_execute(transform_action(resolved_action))
- else
- eff_execute(transform_action(action))
- end
- end)
- else
- eff_execute(transform_action(action))
- end
- end)
-
- return true
- end,
- sorter = conf.generic_sorter(opts),
- }):find()
-end
-
-lsp.range_code_actions = function(opts)
- opts.params = vim.lsp.util.make_given_range_params({ opts.start_line, 1 }, { opts.end_line, 1 }, opts.bufnr)
- lsp.code_actions(opts)
-end
-
lsp.workspace_symbols = function(opts)
local params = { query = opts.query or "" }
vim.lsp.buf_request(opts.bufnr, "workspace/symbol", params, function(err, server_result, _, _)
@@ -470,7 +261,6 @@ local function check_capabilities(feature, bufnr)
end
local feature_map = {
- ["code_actions"] = "code_action",
["document_symbols"] = "document_symbol",
["references"] = "find_references",
["definitions"] = "goto_definition",
diff --git a/lua/telescope/command.lua b/lua/telescope/command.lua
index 72ee2bf..051d955 100644
--- a/lua/telescope/command.lua
+++ b/lua/telescope/command.lua
@@ -223,19 +223,16 @@ function command.register_keyword(keyword)
split_keywords[keyword] = true
end
-function command.load_command(start_line, end_line, count, cmd, ...)
+function command.load_command(cmd, ...)
local args = { ... }
if cmd == nil then
run_command { cmd = "builtin" }
return
end
- local user_opts = {}
- user_opts["cmd"] = cmd
- user_opts.opts = {
- start_line = start_line,
- end_line = end_line,
- count = count,
+ local user_opts = {
+ cmd = cmd,
+ opts = {},
}
for _, arg in ipairs(args) do
diff --git a/lua/telescope/themes.lua b/lua/telescope/themes.lua
index 4c27bb9..0fe5d99 100644
--- a/lua/telescope/themes.lua
+++ b/lua/telescope/themes.lua
@@ -70,7 +70,7 @@ end
---
--- `local builtin = require('telescope.builtin')`
--- `local themes = require('telescope.themes')`
---- `builtin.lsp_code_actions(themes.get_cursor())`
+--- `builtin.lsp_references(themes.get_cursor())`
--- </code>
function themes.get_cursor(opts)
opts = opts or {}
diff --git a/plugin/telescope.lua b/plugin/telescope.lua
index b1e321e..9c0b8f3 100644
--- a/plugin/telescope.lua
+++ b/plugin/telescope.lua
@@ -106,10 +106,9 @@ vim.keymap.set(
)
vim.api.nvim_create_user_command("Telescope", function(opts)
- require("telescope.command").load_command(opts.line1, opts.line2, opts.count, unpack(opts.fargs))
+ require("telescope.command").load_command(unpack(opts.fargs))
end, {
nargs = "*",
- range = true,
complete = function(_, line)
local builtin_list = vim.tbl_keys(require "telescope.builtin")
local extensions_list = vim.tbl_keys(require("telescope._extensions").manager)