mirror of
https://github.com/chenasraf/text-transform.nvim.git
synced 2026-05-17 17:48:04 +00:00
feat: non-telescope popup
This commit is contained in:
@@ -138,7 +138,11 @@ require("text-transform").setup({
|
||||
|
||||
--- Sort the replacers in the popup.
|
||||
--- Possible values: 'frequency', 'name'
|
||||
sort_by = 'frequency',
|
||||
sort_by = "frequency",
|
||||
|
||||
--- The popup type to show.
|
||||
--- Possible values: 'telescope', 'select'
|
||||
popup_type = 'telescope'
|
||||
})
|
||||
```
|
||||
|
||||
|
||||
2
doc/tags
2
doc/tags
@@ -2,13 +2,13 @@ TextTransform.enable() text-transform.txt /*TextTransform.enable()*
|
||||
TextTransform.get_visual_selection_details() text-transform.txt /*TextTransform.get_visual_selection_details()*
|
||||
TextTransform.init_commands() text-transform.txt /*TextTransform.init_commands()*
|
||||
TextTransform.options text-transform.txt /*TextTransform.options*
|
||||
TextTransform.popup() text-transform.txt /*TextTransform.popup()*
|
||||
TextTransform.replace_columns() text-transform.txt /*TextTransform.replace_columns()*
|
||||
TextTransform.replace_selection() text-transform.txt /*TextTransform.replace_selection()*
|
||||
TextTransform.replace_word() text-transform.txt /*TextTransform.replace_word()*
|
||||
TextTransform.restore_positions() text-transform.txt /*TextTransform.restore_positions()*
|
||||
TextTransform.save_positions() text-transform.txt /*TextTransform.save_positions()*
|
||||
TextTransform.setup() text-transform.txt /*TextTransform.setup()*
|
||||
TextTransform.telescope_popup() text-transform.txt /*TextTransform.telescope_popup()*
|
||||
TextTransform.to_camel_case() text-transform.txt /*TextTransform.to_camel_case()*
|
||||
TextTransform.to_const_case() text-transform.txt /*TextTransform.to_const_case()*
|
||||
TextTransform.to_dot_case() text-transform.txt /*TextTransform.to_dot_case()*
|
||||
|
||||
@@ -46,6 +46,10 @@ Default values:
|
||||
--- Sort the replacers in the popup.
|
||||
--- Possible values: 'frequency', 'name'
|
||||
sort_by = "frequency",
|
||||
|
||||
--- The popup type to show.
|
||||
--- Possible values: 'telescope', 'select'
|
||||
popup_type = "telescope",
|
||||
}
|
||||
|
||||
local function init()
|
||||
@@ -56,10 +60,10 @@ Default values:
|
||||
if o.keymap.telescope_popup then
|
||||
local keys = o.keymap.telescope_popup
|
||||
if keys.n then
|
||||
vim.keymap.set("n", keys.n, telescope.popup, { silent = true })
|
||||
vim.keymap.set("n", keys.n, popup.show_popup, { silent = true, desc = "Change Case" })
|
||||
end
|
||||
if keys.v then
|
||||
vim.keymap.set("v", keys.v, telescope.popup, { silent = true })
|
||||
vim.keymap.set("v", keys.v, popup.show_popup, { silent = true, desc = "Change Case" })
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -78,6 +82,18 @@ Usage ~
|
||||
`require("text-transform").setup()` (add `{}` with your |TextTransform.options| table)
|
||||
|
||||
|
||||
==============================================================================
|
||||
------------------------------------------------------------------------------
|
||||
*TextTransform.telescope_popup()*
|
||||
`TextTransform.telescope_popup`()
|
||||
Pops up a telescope menu, containing the available case transformers.
|
||||
When a transformer is selected, the cursor position/range/columns will be used to replace the
|
||||
words around the cursor or inside the selection.
|
||||
|
||||
The cursor positions/ranges are saved before opening the menu and restored once a selection is
|
||||
made.
|
||||
|
||||
|
||||
==============================================================================
|
||||
------------------------------------------------------------------------------
|
||||
*find_word_boundaries()*
|
||||
@@ -148,18 +164,6 @@ Restore the cursor position, mode, and visual selection ranges saved using `save
|
||||
or a given modified state, if passed as the first argument
|
||||
|
||||
|
||||
==============================================================================
|
||||
------------------------------------------------------------------------------
|
||||
*TextTransform.popup()*
|
||||
`TextTransform.popup`()
|
||||
Pops up a telescope menu, containing the available case transformers.
|
||||
When a transformer is selected, the cursor position/range/columns will be used to replace the
|
||||
words around the cursor or inside the selection.
|
||||
|
||||
The cursor positions/ranges are saved before opening the menu and restored once a selection is
|
||||
made.
|
||||
|
||||
|
||||
==============================================================================
|
||||
------------------------------------------------------------------------------
|
||||
*TextTransform.to_words()*
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
local state = require("text-transform.state")
|
||||
local replacers = require("text-transform.replacers")
|
||||
local telescope = require("text-transform.telescope")
|
||||
local popup = require("text-transform.popup")
|
||||
local TextTransform = {}
|
||||
|
||||
--- Initializes user commands
|
||||
@@ -23,8 +23,12 @@ function TextTransform.init_commands()
|
||||
end, {})
|
||||
end
|
||||
|
||||
vim.api.nvim_create_user_command("TtTelescope", telescope.popup, {})
|
||||
vim.api.nvim_create_user_command("TextTransform", telescope.popup, {})
|
||||
-- specific popups
|
||||
vim.api.nvim_create_user_command("TtTelescope", popup.telescope_popup, {})
|
||||
vim.api.nvim_create_user_command("TtSelect", popup.select_popup, {})
|
||||
|
||||
-- auto popup by config
|
||||
vim.api.nvim_create_user_command("TextTransform", popup.show_popup, {})
|
||||
end
|
||||
|
||||
return TextTransform
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
local telescope = require("text-transform.telescope")
|
||||
local popup = require("text-transform.popup")
|
||||
local commands = require("text-transform.commands")
|
||||
local D = require("text-transform.util.debug")
|
||||
local utils = require("text-transform.util")
|
||||
@@ -40,6 +40,10 @@ TextTransform.options = {
|
||||
--- Sort the replacers in the popup.
|
||||
--- Possible values: 'frequency', 'name'
|
||||
sort_by = "frequency",
|
||||
|
||||
--- The popup type to show.
|
||||
--- Possible values: 'telescope', 'select'
|
||||
popup_type = "telescope",
|
||||
}
|
||||
|
||||
local function init()
|
||||
@@ -50,10 +54,10 @@ local function init()
|
||||
if o.keymap.telescope_popup then
|
||||
local keys = o.keymap.telescope_popup
|
||||
if keys.n then
|
||||
vim.keymap.set("n", keys.n, telescope.popup, { silent = true })
|
||||
vim.keymap.set("n", keys.n, popup.show_popup, { silent = true, desc = "Change Case" })
|
||||
end
|
||||
if keys.v then
|
||||
vim.keymap.set("v", keys.v, telescope.popup, { silent = true })
|
||||
vim.keymap.set("v", keys.v, popup.show_popup, { silent = true, desc = "Change Case" })
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -2,7 +2,7 @@ local utils = require("text-transform.util")
|
||||
local tt = require("text-transform.transformers")
|
||||
local replacers = require("text-transform.replacers")
|
||||
local state = require("text-transform.state")
|
||||
local telescope = require("text-transform.telescope")
|
||||
local popup = require("text-transform.popup")
|
||||
|
||||
local TextTransform = {}
|
||||
|
||||
@@ -13,6 +13,6 @@ end
|
||||
merge(tt)
|
||||
merge(replacers)
|
||||
merge(state)
|
||||
merge(telescope)
|
||||
merge(popup)
|
||||
|
||||
return TextTransform
|
||||
|
||||
@@ -112,13 +112,20 @@ local sorter_map = {
|
||||
-- )
|
||||
-- end
|
||||
|
||||
local function select(selection)
|
||||
vim.schedule(function()
|
||||
replacers.replace_selection(selection.value)
|
||||
state.restore_positions()
|
||||
end)
|
||||
end
|
||||
|
||||
--- Pops up a telescope menu, containing the available case transformers.
|
||||
--- When a transformer is selected, the cursor position/range/columns will be used to replace the
|
||||
--- words around the cursor or inside the selection.
|
||||
---
|
||||
--- The cursor positions/ranges are saved before opening the menu and restored once a selection is
|
||||
--- made.
|
||||
function TextTransform.popup()
|
||||
function TextTransform.telescope_popup()
|
||||
state.save_positions()
|
||||
|
||||
local filtered = {}
|
||||
@@ -149,10 +156,7 @@ function TextTransform.popup()
|
||||
local selection = action_state.get_selected_entry()
|
||||
inc_frequency(selection.value)
|
||||
actions.close(prompt_bufnr)
|
||||
vim.schedule(function()
|
||||
replacers.replace_selection(selection.value)
|
||||
state.restore_positions()
|
||||
end)
|
||||
select(selection)
|
||||
end)
|
||||
return true
|
||||
end,
|
||||
@@ -162,4 +166,30 @@ function TextTransform.popup()
|
||||
end)
|
||||
end
|
||||
|
||||
function TextTransform.select_popup()
|
||||
state.save_positions()
|
||||
|
||||
vim.ui.select(items, {
|
||||
prompt = "Change Case",
|
||||
format_item = function(item)
|
||||
return item.label
|
||||
end,
|
||||
}, function(choice)
|
||||
if not choice then
|
||||
return
|
||||
end
|
||||
local item = entry_maker(choice)
|
||||
select(item)
|
||||
end)
|
||||
end
|
||||
|
||||
function TextTransform.show_popup()
|
||||
local config = _G.TextTransform.config
|
||||
if config.popup_type == "telescope" then
|
||||
TextTransform.telescope_popup()
|
||||
else
|
||||
TextTransform.select_popup()
|
||||
end
|
||||
end
|
||||
|
||||
return TextTransform
|
||||
Reference in New Issue
Block a user