From b4757e627e6c83d1c8e5535d4887a82d6a5efdd0 Mon Sep 17 00:00:00 2001 From: Shougo Matsushita Date: Tue, 7 May 2024 20:49:24 +0200 Subject: 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 Signed-off-by: Shougo Matsushita Signed-off-by: Christian Brabandt --- runtime/doc/builtin.txt | 24 +++++++++++++++++++++++- runtime/doc/tags | 1 + runtime/doc/usr_41.txt | 3 ++- runtime/doc/version9.txt | 1 + 4 files changed, 27 insertions(+), 2 deletions(-) (limited to 'runtime/doc') diff --git a/runtime/doc/builtin.txt b/runtime/doc/builtin.txt index f62cc83ca6..b37170ce72 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 @@ getreg([{regname} [, 1 [, {list}]]]) 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 @@ getregion({pos1}, {pos2} [, {opts}]) *getregion()* 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 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 e3562813b4..0c9aef26cc 100644 --- a/runtime/doc/tags +++ b/runtime/doc/tags @@ -7799,6 +7799,7 @@ getreg() builtin.txt /*getreg()* 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 6137cfd5a4..26651ebb16 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 @@ Cursor and mark position: *cursor-functions* *mark-functions* 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 9259cde9e5..192c3ee751 100644 --- a/runtime/doc/version9.txt +++ b/runtime/doc/version9.txt @@ -41574,6 +41574,7 @@ Functions: ~ |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: ~ -- cgit v1.2.3