diff options
| author | Thomas Vanbesien <tvanbesi@proton.me> | 2026-06-24 20:10:00 +0200 |
|---|---|---|
| committer | Thomas Vanbesien <tvanbesi@proton.me> | 2026-06-24 20:10:00 +0200 |
| commit | c30ca8b6556673e836e312b555f9a63216ec9660 (patch) | |
| tree | a879666d407224b04ebcabf20301b63655f57b62 /plugin/50-transform_text.lua | |
| parent | 046e3be5982104f9e889edf1490381ea8c3b959f (diff) | |
| download | nvim-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.lua | 43 |
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" }) |
