mirror of
https://github.com/mistricky/codesnap.nvim.git
synced 2024-12-27 03:46:29 +00:00
[Fix] Better support for the Visual Line Mode
* [FIX] Better support for the Visual Line Mode * [FIX] Removed VBlockMode + listen for ModeChanged now
This commit is contained in:
parent
d3fdcd343f
commit
980751083b
2 changed files with 20 additions and 2 deletions
|
@ -1,5 +1,20 @@
|
||||||
local visual_utils = {}
|
local visual_utils = {}
|
||||||
|
|
||||||
|
-- Get all the lines from "from" to "to" and return them as a single string
|
||||||
|
-- If "from" and "to" are the same, return the line at "from"
|
||||||
|
|
||||||
|
local function get_whole_lines(from, to)
|
||||||
|
local lines = {}
|
||||||
|
if from == to then
|
||||||
|
table.insert(lines, vim.api.nvim_buf_get_lines(0, from - 1, from, false)[1])
|
||||||
|
else
|
||||||
|
for i = from, to do
|
||||||
|
table.insert(lines, vim.api.nvim_buf_get_lines(0, i - 1, i, false)[1])
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return table.concat(lines, "\n")
|
||||||
|
end
|
||||||
|
|
||||||
function visual_utils.get_selected_text()
|
function visual_utils.get_selected_text()
|
||||||
local start_pos = vim.fn.getpos("v")
|
local start_pos = vim.fn.getpos("v")
|
||||||
local end_pos = vim.fn.getpos(".")
|
local end_pos = vim.fn.getpos(".")
|
||||||
|
@ -10,6 +25,10 @@ function visual_utils.get_selected_text()
|
||||||
start_pos, end_pos = end_pos, start_pos
|
start_pos, end_pos = end_pos, start_pos
|
||||||
end
|
end
|
||||||
|
|
||||||
|
if vim.api.nvim_get_mode().mode == 'V' then
|
||||||
|
return get_whole_lines(start_pos[2], end_pos[2])
|
||||||
|
end
|
||||||
|
|
||||||
if start_pos[2] == end_pos[2] then
|
if start_pos[2] == end_pos[2] then
|
||||||
return vim.api.nvim_buf_get_lines(0, start_pos[2] - 1, start_pos[2], false)[1]:sub(start_pos[3], end_pos[3] - 1)
|
return vim.api.nvim_buf_get_lines(0, start_pos[2] - 1, start_pos[2], false)[1]:sub(start_pos[3], end_pos[3] - 1)
|
||||||
else
|
else
|
||||||
|
|
|
@ -12,9 +12,8 @@ end, {})
|
||||||
local validModes = {
|
local validModes = {
|
||||||
["v"] = true,
|
["v"] = true,
|
||||||
["V"] = true,
|
["V"] = true,
|
||||||
["^V"] = true,
|
|
||||||
}
|
}
|
||||||
vim.api.nvim_create_autocmd({ "CursorMoved" }, {
|
vim.api.nvim_create_autocmd({ "CursorMoved", "ModeChanged" }, {
|
||||||
callback = function()
|
callback = function()
|
||||||
local mode = vim.api.nvim_get_mode().mode
|
local mode = vim.api.nvim_get_mode().mode
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue