Updated utils.lua

M@clean_buffer no longer escapes sequences (caused undesirable
behaviour).

Added M@get_selection which will return four values indicating the
starting row/column and ending row/column of a visual-mode selection. If
no selection has been performed in buffer instance, values may be -1.
Value is "cached" as defined Vim behaviour of '< and '> positions.

Added M@subslice is used to get a substring of a word between two
whitespace characters (i.e., spaces). The `line` is the string to check,
and `col` is a position (e.g., from the cursor) within the word which
will be extracted. Return value is a table of starting and ending
indices of the original string.
This commit is contained in:
Ethan Smith-Coss 2023-01-23 18:21:44 +00:00
parent b81d6b5acc
commit 69af7b05d1
Signed by: TheOnePath
GPG Key ID: 4E7D436CE1A0BAF1

View File

@ -31,8 +31,32 @@ M.clean_buf = function ( text )
return ""
end
return escape_chars( text )
:match( "^%s*(.-)%s*$" )
return text:match( "^%s*(.-)%s*$" )
end
M.get_selection = function()
local _, csrow, cscol, _ = unpack(vim.fn.getpos("'<"))
local _, cerow, cecol, _ = unpack(vim.fn.getpos("'>"))
if csrow < cerow or (csrow == cerow and cscol <= cecol) then
return csrow - 1, cscol - 1, cerow - 1, cecol
else
return cerow - 1, cecol - 1, csrow - 1, cscol
end
end
M.subslice = function(line, col)
local i = 0
local j = 0
while true do
j = string.find(line, " ", j+1) -- find 'next' newline
if j == nil then break end
if j > col then break end
i = j
end
return { i, j }
end