feat: non-telescope popup

This commit is contained in:
2024-05-04 15:53:50 +03:00
committed by Chen Asraf
parent 67aef1de42
commit bb177a3360
7 changed files with 75 additions and 29 deletions

View File

@@ -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'
})
```

View File

@@ -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()*

View File

@@ -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()*

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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