Skip to content

Commit

Permalink
Feat: Use option enabled_methods for Telescope
Browse files Browse the repository at this point in the history
And fix a bug in Telescope when there is no selection.
  • Loading branch information
peterfication committed Nov 25, 2023
1 parent 7d96b23 commit 985b7de
Show file tree
Hide file tree
Showing 4 changed files with 52 additions and 7 deletions.
16 changes: 11 additions & 5 deletions lua/telescope/_extensions/textcase.lua
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
local plugin = require("textcase.plugin.plugin")
local presets = require("textcase.plugin.presets")
local constants = require("textcase.shared.constants")
local api = require("textcase").api
local actions = require("telescope.actions")
Expand All @@ -8,6 +9,9 @@ local function invoke_replacement(prompt_bufnr)
return function()
actions.close(prompt_bufnr)
local selection = action_state.get_selected_entry()
if not selection then
return
end
local change = selection.value
if type(change) ~= "table" then
return
Expand Down Expand Up @@ -40,11 +44,13 @@ local function Create_resulting_cases(prefix_text, conversion_type)
api.to_title_case,
api.to_path_case,
}) do
table.insert(results, {
display = prefix_text .. method.desc,
method_name = method.method_name,
type = conversion_type,
})
if presets.options.enabled_methods_set[method.method_name] then
table.insert(results, {
display = prefix_text .. method.desc,
method_name = method.method_name,
type = conversion_type,
})
end
end

return results
Expand Down
3 changes: 2 additions & 1 deletion lua/textcase/plugin/presets.lua
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,8 @@ M.Initialize = function()
plugin.register_replace_command("Subs", replace_command_methods)
end

M.enabled_methods_set = {}
-- Set all methods as default in case the setup function is not called.
M.enabled_methods_set = all_methods

M.setup = function(opts)
M.options.prefix = opts and opts.prefix or "ga"
Expand Down
2 changes: 1 addition & 1 deletion tests/textcase/plugin/options/enabled_methods_spec.lua
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
local textcase = require("textcase")
local test_helpers = require("tests.test_helpers")

describe("plugin options default_keymappings=false", function()
describe("plugin options enabled_methods=...", function()
before_each(function()
textcase.setup({
enabled_methods = { "to_snake_case" },
Expand Down
38 changes: 38 additions & 0 deletions tests/textcase/telescope/options/enabled_methods_spec.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
local feature_flags = require("feature_flags")
if not feature_flags.is_feature_available("telescope") then
return
end

local textcase = require("textcase")
local test_helpers = require("tests.test_helpers")

describe("Telescope options enabled_methods=...", function()
before_each(function()
textcase.setup({
enabled_methods = { "to_snake_case" },
})
require("telescope").load_extension("textcase")

local buf = vim.api.nvim_create_buf(false, true)
vim.api.nvim_command("buffer " .. buf)
vim.api.nvim_buf_set_lines(0, 0, -1, true, { "LoremIpsum" })
end)

it("should not register other text-case methods in Telescope", function()
local query = "to lower case"
test_helpers.execute_keys("<CMD>TextCaseOpenTelescopeQuickChange<CR>")
test_helpers.execute_keys("i" .. query, "xmt")
vim.wait(50, function() end)
test_helpers.execute_keys("<CR>i")
assert.are.same({ "LoremIpsum" }, test_helpers.get_buf_lines())
end)

it("should still register the enabled text-case methods in Telescope", function()
local query = "snk" -- to_snake_case
test_helpers.execute_keys("<CMD>TextCaseOpenTelescopeQuickChange<CR>")
test_helpers.execute_keys("i" .. query, "xmt")
vim.wait(50, function() end)
test_helpers.execute_keys("<CR>i")
assert.are.same({ "lorem_ipsum" }, test_helpers.get_buf_lines())
end)
end)

0 comments on commit 985b7de

Please sign in to comment.