diff options
author | Bram Moolenaar <Bram@vim.org> | 2022-05-27 21:58:00 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2022-05-27 21:58:00 +0100 |
commit | 5a6ec10cc80ab02eeff644ab19b82312630ea855 (patch) | |
tree | 5014800ed4c174f1abe451009e6d3ab86261a698 /runtime | |
parent | 968443efb5a2a1ed7e1084f2aff65a95f2d0a17b (diff) | |
download | vim-git-5a6ec10cc80ab02eeff644ab19b82312630ea855.tar.gz |
patch 8.2.5034: there is no way to get the byte index from a virtual columnv8.2.5034
Problem: There is no way to get the byte index from a virtual column.
Solution: Add virtcol2col(). (Yegappan Lakshmanan, closes #10477,
closes #10098)
Diffstat (limited to 'runtime')
-rw-r--r-- | runtime/doc/builtin.txt | 28 | ||||
-rw-r--r-- | runtime/doc/usr_41.txt | 1 |
2 files changed, 29 insertions, 0 deletions
diff --git a/runtime/doc/builtin.txt b/runtime/doc/builtin.txt index 371670ceb..08b54ced4 100644 --- a/runtime/doc/builtin.txt +++ b/runtime/doc/builtin.txt @@ -691,6 +691,8 @@ uniq({list} [, {func} [, {dict}]]) values({dict}) List values in {dict} virtcol({expr} [, {list}]) Number or List screen column of cursor or mark +virtcol2col({winid}, {lnum}, {col}) + Number byte index of a character on screen visualmode([expr]) String last visual mode used wildmenumode() Number whether 'wildmenu' mode is active win_execute({id}, {command} [, {silent}]) @@ -6211,11 +6213,17 @@ nr2char({expr} [, {utf8}]) *nr2char()* or({expr}, {expr}) *or()* Bitwise OR on the two arguments. The arguments are converted to a number. A List, Dict or Float argument causes an error. + Also see `and()` and `xor()`. Example: > :let bits = or(bits, 0x80) < Can also be used as a |method|: > :let bits = bits->or(0x80) +< Rationale: The reason this is a function and not using the "|" + character like many languages, is that Vi has always used "|" + to separate commands. In many places it would not be clear if + "|" is an operator or a command separator. + pathshorten({path} [, {len}]) *pathshorten()* Shorten directory names in the path {path} and return the @@ -9788,6 +9796,25 @@ virtcol({expr} [, {list}]) *virtcol()* < Can also be used as a |method|: > GetPos()->virtcol() +virtcol2col({winid}, {lnum}, {col}) *virtcol2col()* + The result is a Number, which is the byte index of the + character in window {winid} at buffer line {lnum} and virtual + column {col}. + + If {col} is greater than the last virtual column in line + {lnum}, then the byte index of the character at the last + virtual column is returned. + + The {winid} argument can be the window number or the + |window-ID|. If this is zero, then the current window is used. + + Returns -1 if the window {winid} doesn't exist or the buffer + line {lnum} or virtual column {col} is invalid. + + See also |screenpos()|, |virtcol()| and |col()|. + + Can also be used as a |method|: > + GetWinid()->virtcol2col(lnum, col) visualmode([{expr}]) *visualmode()* The result is a String, which describes the last Visual mode @@ -10220,6 +10247,7 @@ writefile({object}, {fname} [, {flags}]) xor({expr}, {expr}) *xor()* Bitwise XOR on the two arguments. The arguments are converted to a number. A List, Dict or Float argument causes an error. + Also see `and()` and `or()`. Example: > :let bits = xor(bits, 0x80) < diff --git a/runtime/doc/usr_41.txt b/runtime/doc/usr_41.txt index 80b7e385c..11f035b4e 100644 --- a/runtime/doc/usr_41.txt +++ b/runtime/doc/usr_41.txt @@ -835,6 +835,7 @@ Cursor and mark position: *cursor-functions* *mark-functions* screencol() get screen column of the cursor screenrow() get screen row of the cursor screenpos() screen row and col of a text character + virtcol2col() byte index of a text character on screen getcurpos() get position of the cursor getpos() get position of cursor, mark, etc. setpos() set position of cursor, mark, etc. |