patch 9.1.0394: Cannot get a list of positions describing a region
Problem: Cannot get a list of positions describing a region
(Justin M. Keyes, after v9.1.0120)
Solution: Add the getregionpos() function
(Shougo Matsushita)
fixes: #14609
closes: #14617
Co-authored-by: Justin M. Keyes <justinkz@gmail.com>
Signed-off-by: Shougo Matsushita <Shougo.Matsu@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
diff --git a/runtime/doc/builtin.txt b/runtime/doc/builtin.txt
index f62cc83..b37170c 100644
--- a/runtime/doc/builtin.txt
+++ b/runtime/doc/builtin.txt
@@ -1,4 +1,4 @@
-*builtin.txt* For Vim version 9.1. Last change: 2024 May 05
+*builtin.txt* For Vim version 9.1. Last change: 2024 May 07
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -265,6 +265,8 @@
getreginfo([{regname}]) Dict information about a register
getregion({pos1}, {pos2} [, {opts}])
List get the text from {pos1} to {pos2}
+getregionpos({pos1}, {pos2} [, {opts}])
+ List get a list of positions for a region
getregtype([{regname}]) String type of a register
getscriptinfo([{opts}]) List list of sourced scripts
gettabinfo([{expr}]) List list of tab pages
@@ -4327,6 +4329,26 @@
Can also be used as a |method|: >
getpos('.')->getregion(getpos("'a"))
<
+getregionpos({pos1}, {pos2} [, {opts}]) *getregionpos()*
+ Same as |getregion()|, but returns a list of positions
+ describing the buffer text segments bound by {pos1} and
+ {pos2}.
+ The segments are a pair of positions for every line: >
+ [[{start_pos}, {end_pos}], ...]
+<
+ The position is a |List| with four numbers:
+ [bufnum, lnum, col, off]
+ "bufnum" is the buffer number.
+ "lnum" and "col" are the position in the buffer. The first
+ column is 1.
+ The "off" number is zero, unless 'virtualedit' is used. Then
+ it is the offset in screen columns from the start of the
+ character. E.g., a position within a <Tab> or after the last
+ character.
+
+ Can also be used as a |method|: >
+ getpos('.')->getregionpos(getpos("'a"))
+<
getregtype([{regname}]) *getregtype()*
The result is a String, which is type of register {regname}.
The value will be one of:
diff --git a/runtime/doc/tags b/runtime/doc/tags
index e356281..0c9aef2 100644
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -7799,6 +7799,7 @@
getreginfo() builtin.txt /*getreginfo()*
getregion() builtin.txt /*getregion()*
getregion-notes builtin.txt /*getregion-notes*
+getregionpos() builtin.txt /*getregionpos()*
getregtype() builtin.txt /*getregtype()*
getscript pi_getscript.txt /*getscript*
getscript-autoinstall pi_getscript.txt /*getscript-autoinstall*
diff --git a/runtime/doc/usr_41.txt b/runtime/doc/usr_41.txt
index 6137cfd..26651eb 100644
--- a/runtime/doc/usr_41.txt
+++ b/runtime/doc/usr_41.txt
@@ -1,4 +1,4 @@
-*usr_41.txt* For Vim version 9.1. Last change: 2024 Apr 26
+*usr_41.txt* For Vim version 9.1. Last change: 2024 May 07
VIM USER MANUAL - by Bram Moolenaar
@@ -930,6 +930,7 @@
Working with text in the current buffer: *text-functions*
getline() get a line or list of lines from the buffer
getregion() get a region of text from the buffer
+ getregionpos() get a list of positions for a region
setline() replace a line in the buffer
append() append line or list of lines in the buffer
indent() indent of a specific line
diff --git a/runtime/doc/version9.txt b/runtime/doc/version9.txt
index 9259cde..192c3ee 100644
--- a/runtime/doc/version9.txt
+++ b/runtime/doc/version9.txt
@@ -41574,6 +41574,7 @@
|matchbufline()| all the matches of a pattern in a buffer
|matchstrlist()| all the matches of a pattern in a List of strings
|getregion()| get a region of text from a buffer
+|getregionpos()| get a list of positions for a region
Autocommands: ~