summaryrefslogtreecommitdiffstats
path: root/plugin/50-transform_text.lua
diff options
context:
space:
mode:
authorThomas Vanbesien <tvanbesi@proton.me>2026-06-24 20:10:00 +0200
committerThomas Vanbesien <tvanbesi@proton.me>2026-06-24 20:10:00 +0200
commitc30ca8b6556673e836e312b555f9a63216ec9660 (patch)
treea879666d407224b04ebcabf20301b63655f57b62 /plugin/50-transform_text.lua
parent046e3be5982104f9e889edf1490381ea8c3b959f (diff)
downloadnvim-config-c30ca8b6556673e836e312b555f9a63216ec9660.tar.gz
nvim-config-c30ca8b6556673e836e312b555f9a63216ec9660.zip
refactor(nvim): rewrite transform-text plugin
Diffstat (limited to 'plugin/50-transform_text.lua')
-rw-r--r--plugin/50-transform_text.lua43
1 files changed, 19 insertions, 24 deletions
diff --git a/plugin/50-transform_text.lua b/plugin/50-transform_text.lua
index 6786ba2..8c35f6f 100644
--- a/plugin/50-transform_text.lua
+++ b/plugin/50-transform_text.lua
@@ -1,29 +1,24 @@
-local function get_visual_selection_text()
- return table.concat(
- vim.fn.getregion(vim.fn.getpos("v"), vim.fn.getpos("."), { type = vim.fn.mode() }),
- "\n"
- )
-end
+--
+-- 50-transform_text.lua
+--
+-- * Transforms the visual selection in place via dotfiles.selection (URL-encode / URL-decode).
+--
+-- Keymaps:
+-- `<Leader>tte`: URL-encode selection
+-- `<Leader>ttd`: URL-decode selection
+--
+
+local selection = require("dotfiles.selection")
-local function delete_visual_selection()
- local mode = vim.fn.mode()
- local eovisual_pos, cur_pos = vim.fn.getpos("v"), vim.fn.getpos(".")
- local region = vim.fn.getregionpos(eovisual_pos, cur_pos, { type = mode })[1]
- local start_row, start_col = unpack(region[1], 2, 3)
- local end_row, end_col =
- mode == "v" and region[2][2] or math.max(eovisual_pos[2], cur_pos[2]), region[2][3]
- vim.api.nvim_buf_set_text(0, start_row - 1, start_col - 1, end_row - 1, end_col, {})
+-- URL-encode the visual selection.
+local function url_encode_selection()
+ selection.transform(vim.uri_encode)
end
-local function transform_visual_selection(transform)
- local selection = get_visual_selection_text()
- delete_visual_selection()
- vim.api.nvim_put({ transform(selection) }, "c", true, true)
+-- URL-decode the visual selection.
+local function url_decode_selection()
+ selection.transform(vim.uri_decode)
end
-vim.keymap.set("x", "<Leader>tue", function()
- transform_visual_selection(vim.uri_encode)
-end, { desc = "URL-encode selection" })
-vim.keymap.set("x", "<Leader>tud", function()
- transform_visual_selection(vim.uri_decode)
-end, { desc = "URL-decode selection" })
+vim.keymap.set("x", "<Leader>tte", url_encode_selection, { desc = "URL-encode selection" })
+vim.keymap.set("x", "<Leader>ttd", url_decode_selection, { desc = "URL-decode selection" })