mirror of
https://github.com/vim/vim.git
synced 2025-09-24 03:44:06 -04:00
patch 8.2.3969: value of MAXCOL not available in Vim script
Problem: Value of MAXCOL not available in Vim script. Solution: Add v:maxcol. (Naohiro Ono, closes #9451)
This commit is contained in:
committed by
Bram Moolenaar
parent
e70cec9760
commit
56200eed62
@@ -2480,7 +2480,7 @@ filter({expr1}, {expr2}) *filter()*
|
|||||||
:let l = filter(copy(mylist), 'v:val =~ "KEEP"')
|
:let l = filter(copy(mylist), 'v:val =~ "KEEP"')
|
||||||
|
|
||||||
< Returns {expr1}, the |List| or |Dictionary| that was filtered,
|
< Returns {expr1}, the |List| or |Dictionary| that was filtered,
|
||||||
or a new |Blob| or |String|.
|
or a new |Blob| or |String|.
|
||||||
When an error is encountered while evaluating {expr2} no
|
When an error is encountered while evaluating {expr2} no
|
||||||
further items in {expr1} are processed.
|
further items in {expr1} are processed.
|
||||||
When {expr2} is a Funcref errors inside a function are ignored,
|
When {expr2} is a Funcref errors inside a function are ignored,
|
||||||
@@ -3128,8 +3128,8 @@ getcharpos({expr})
|
|||||||
Get the position for String {expr}. Same as |getpos()| but the
|
Get the position for String {expr}. Same as |getpos()| but the
|
||||||
column number in the returned List is a character index
|
column number in the returned List is a character index
|
||||||
instead of a byte index.
|
instead of a byte index.
|
||||||
If |getpos()| returns a very large column number, such as
|
If |getpos()| returns a very large column number, equal to
|
||||||
2147483647, then getcharpos() will return the character index
|
|v:maxcol|, then getcharpos() will return the character index
|
||||||
of the last character.
|
of the last character.
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
@@ -3279,7 +3279,8 @@ getcurpos([{winid}])
|
|||||||
includes an extra "curswant" item in the list:
|
includes an extra "curswant" item in the list:
|
||||||
[0, lnum, col, off, curswant] ~
|
[0, lnum, col, off, curswant] ~
|
||||||
The "curswant" number is the preferred column when moving the
|
The "curswant" number is the preferred column when moving the
|
||||||
cursor vertically. Also see |getcursorcharpos()| and
|
cursor vertically. After |$| command it will be a very large
|
||||||
|
number equal to |v:maxcol|. Also see |getcursorcharpos()| and
|
||||||
|getpos()|.
|
|getpos()|.
|
||||||
The first "bufnum" item is always zero. The byte position of
|
The first "bufnum" item is always zero. The byte position of
|
||||||
the cursor is returned in 'col'. To get the character
|
the cursor is returned in 'col'. To get the character
|
||||||
@@ -3624,12 +3625,12 @@ getpos({expr}) Get the position for String {expr}. For possible values of
|
|||||||
character.
|
character.
|
||||||
Note that for '< and '> Visual mode matters: when it is "V"
|
Note that for '< and '> Visual mode matters: when it is "V"
|
||||||
(visual line mode) the column of '< is zero and the column of
|
(visual line mode) the column of '< is zero and the column of
|
||||||
'> is a large number.
|
'> is a large number equal to |v:maxcol|.
|
||||||
The column number in the returned List is the byte position
|
The column number in the returned List is the byte position
|
||||||
within the line. To get the character position in the line,
|
within the line. To get the character position in the line,
|
||||||
use |getcharpos()|.
|
use |getcharpos()|.
|
||||||
The column number can be very large, e.g. 2147483647, in which
|
A very large column number equal to |v:maxcol| can be returned,
|
||||||
case it means "after the end of the line".
|
in which case it means "after the end of the line".
|
||||||
This can be used to save and restore the position of a mark: >
|
This can be used to save and restore the position of a mark: >
|
||||||
let save_a_mark = getpos("'a")
|
let save_a_mark = getpos("'a")
|
||||||
...
|
...
|
||||||
@@ -9748,10 +9749,14 @@ winsaveview() Returns a |Dictionary| that contains information to restore
|
|||||||
The return value includes:
|
The return value includes:
|
||||||
lnum cursor line number
|
lnum cursor line number
|
||||||
col cursor column (Note: the first column
|
col cursor column (Note: the first column
|
||||||
zero, as opposed to what getpos()
|
zero, as opposed to what |getcurpos()|
|
||||||
returns)
|
returns)
|
||||||
coladd cursor column offset for 'virtualedit'
|
coladd cursor column offset for 'virtualedit'
|
||||||
curswant column for vertical movement
|
curswant column for vertical movement (Note:
|
||||||
|
the first column is zero, as opposed
|
||||||
|
to what |getcurpos()| returns). After
|
||||||
|
|$| command it will be a very large
|
||||||
|
number equal to |v:maxcol|.
|
||||||
topline first line in the window
|
topline first line in the window
|
||||||
topfill filler lines, only in diff mode
|
topfill filler lines, only in diff mode
|
||||||
leftcol first column displayed; only used when
|
leftcol first column displayed; only used when
|
||||||
|
@@ -2161,6 +2161,9 @@ v:lnum Line number for the 'foldexpr' |fold-expr|, 'formatexpr' and
|
|||||||
expressions is being evaluated. Read-only when in the
|
expressions is being evaluated. Read-only when in the
|
||||||
|sandbox|.
|
|sandbox|.
|
||||||
|
|
||||||
|
*v:maxcol* *maxcol-variable*
|
||||||
|
v:maxcol Maximum line length.
|
||||||
|
|
||||||
*v:mouse_win* *mouse_win-variable*
|
*v:mouse_win* *mouse_win-variable*
|
||||||
v:mouse_win Window number for a mouse click obtained with |getchar()|.
|
v:mouse_win Window number for a mouse click obtained with |getchar()|.
|
||||||
First window has number 1, like with |winnr()|. The value is
|
First window has number 1, like with |winnr()|. The value is
|
||||||
|
@@ -154,6 +154,7 @@ static struct vimvar
|
|||||||
{VV_NAME("sizeofint", VAR_NUMBER), NULL, VV_RO},
|
{VV_NAME("sizeofint", VAR_NUMBER), NULL, VV_RO},
|
||||||
{VV_NAME("sizeoflong", VAR_NUMBER), NULL, VV_RO},
|
{VV_NAME("sizeoflong", VAR_NUMBER), NULL, VV_RO},
|
||||||
{VV_NAME("sizeofpointer", VAR_NUMBER), NULL, VV_RO},
|
{VV_NAME("sizeofpointer", VAR_NUMBER), NULL, VV_RO},
|
||||||
|
{VV_NAME("maxcol", VAR_NUMBER), NULL, VV_RO},
|
||||||
};
|
};
|
||||||
|
|
||||||
// shorthand
|
// shorthand
|
||||||
@@ -241,6 +242,7 @@ evalvars_init(void)
|
|||||||
set_vim_var_nr(VV_SIZEOFINT, sizeof(int));
|
set_vim_var_nr(VV_SIZEOFINT, sizeof(int));
|
||||||
set_vim_var_nr(VV_SIZEOFLONG, sizeof(long));
|
set_vim_var_nr(VV_SIZEOFLONG, sizeof(long));
|
||||||
set_vim_var_nr(VV_SIZEOFPOINTER, sizeof(char *));
|
set_vim_var_nr(VV_SIZEOFPOINTER, sizeof(char *));
|
||||||
|
set_vim_var_nr(VV_MAXCOL, MAXCOL);
|
||||||
|
|
||||||
set_vim_var_nr(VV_TYPE_NUMBER, VAR_TYPE_NUMBER);
|
set_vim_var_nr(VV_TYPE_NUMBER, VAR_TYPE_NUMBER);
|
||||||
set_vim_var_nr(VV_TYPE_STRING, VAR_TYPE_STRING);
|
set_vim_var_nr(VV_TYPE_STRING, VAR_TYPE_STRING);
|
||||||
|
@@ -38,6 +38,18 @@ func Test_move_cursor()
|
|||||||
quit!
|
quit!
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
|
func Test_curswant_maxcol()
|
||||||
|
new
|
||||||
|
call setline(1, 'foo')
|
||||||
|
|
||||||
|
" Test that after "$" command curswant is set to the same value as v:maxcol.
|
||||||
|
normal! 1G$
|
||||||
|
call assert_equal(v:maxcol, getcurpos()[4])
|
||||||
|
call assert_equal(v:maxcol, winsaveview().curswant)
|
||||||
|
|
||||||
|
quit!
|
||||||
|
endfunc
|
||||||
|
|
||||||
" Very short version of what matchparen does.
|
" Very short version of what matchparen does.
|
||||||
function s:Highlight_Matching_Pair()
|
function s:Highlight_Matching_Pair()
|
||||||
let save_cursor = getcurpos()
|
let save_cursor = getcurpos()
|
||||||
|
@@ -858,7 +858,7 @@ func Test_normal14_page()
|
|||||||
set nostartofline
|
set nostartofline
|
||||||
exe "norm! $\<c-b>"
|
exe "norm! $\<c-b>"
|
||||||
call assert_equal('92', getline('.'))
|
call assert_equal('92', getline('.'))
|
||||||
call assert_equal([0, 92, 2, 0, 2147483647], getcurpos())
|
call assert_equal([0, 92, 2, 0, v:maxcol], getcurpos())
|
||||||
" cleanup
|
" cleanup
|
||||||
set startofline
|
set startofline
|
||||||
bw!
|
bw!
|
||||||
@@ -902,7 +902,7 @@ func Test_normal15_z_scroll_vert()
|
|||||||
norm! >>$ztzb
|
norm! >>$ztzb
|
||||||
call assert_equal(' 30', getline('.'))
|
call assert_equal(' 30', getline('.'))
|
||||||
call assert_equal(30, winsaveview()['topline']+winheight(0)-1)
|
call assert_equal(30, winsaveview()['topline']+winheight(0)-1)
|
||||||
call assert_equal([0, 30, 3, 0, 2147483647], getcurpos())
|
call assert_equal([0, 30, 3, 0, v:maxcol], getcurpos())
|
||||||
|
|
||||||
" Test for z-
|
" Test for z-
|
||||||
1
|
1
|
||||||
@@ -2798,7 +2798,7 @@ func Test_normal36_g_cmd5()
|
|||||||
call assert_equal([0, 14, 1, 0, 1], getcurpos())
|
call assert_equal([0, 14, 1, 0, 1], getcurpos())
|
||||||
" count > buffer content
|
" count > buffer content
|
||||||
norm! 120go
|
norm! 120go
|
||||||
call assert_equal([0, 14, 1, 0, 2147483647], getcurpos())
|
call assert_equal([0, 14, 1, 0, v:maxcol], getcurpos())
|
||||||
" clean up
|
" clean up
|
||||||
bw!
|
bw!
|
||||||
endfunc
|
endfunc
|
||||||
@@ -2980,7 +2980,7 @@ func Test_normal42_halfpage()
|
|||||||
set nostartofline
|
set nostartofline
|
||||||
exe "norm! $\<c-u>"
|
exe "norm! $\<c-u>"
|
||||||
call assert_equal('95', getline('.'))
|
call assert_equal('95', getline('.'))
|
||||||
call assert_equal([0, 95, 2, 0, 2147483647], getcurpos())
|
call assert_equal([0, 95, 2, 0, v:maxcol], getcurpos())
|
||||||
" cleanup
|
" cleanup
|
||||||
set startofline
|
set startofline
|
||||||
bw!
|
bw!
|
||||||
|
@@ -205,7 +205,7 @@ func Test_multibyte_op_end_mark()
|
|||||||
call assert_equal([0, 1, 7, 0], getpos("']"))
|
call assert_equal([0, 1, 7, 0], getpos("']"))
|
||||||
|
|
||||||
normal Vyp
|
normal Vyp
|
||||||
call assert_equal([0, 1, 2147483647, 0], getpos("'>"))
|
call assert_equal([0, 1, v:maxcol, 0], getpos("'>"))
|
||||||
call assert_equal([0, 2, 7, 0], getpos("']"))
|
call assert_equal([0, 2, 7, 0], getpos("']"))
|
||||||
bwipe!
|
bwipe!
|
||||||
endfunc
|
endfunc
|
||||||
|
@@ -749,6 +749,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
3969,
|
||||||
/**/
|
/**/
|
||||||
3968,
|
3968,
|
||||||
/**/
|
/**/
|
||||||
|
@@ -2067,7 +2067,8 @@ typedef int sock_T;
|
|||||||
#define VV_SIZEOFINT 100
|
#define VV_SIZEOFINT 100
|
||||||
#define VV_SIZEOFLONG 101
|
#define VV_SIZEOFLONG 101
|
||||||
#define VV_SIZEOFPOINTER 102
|
#define VV_SIZEOFPOINTER 102
|
||||||
#define VV_LEN 103 // number of v: vars
|
#define VV_MAXCOL 103
|
||||||
|
#define VV_LEN 104 // number of v: vars
|
||||||
|
|
||||||
// used for v_number in VAR_BOOL and VAR_SPECIAL
|
// used for v_number in VAR_BOOL and VAR_SPECIAL
|
||||||
#define VVAL_FALSE 0L // VAR_BOOL
|
#define VVAL_FALSE 0L // VAR_BOOL
|
||||||
|
Reference in New Issue
Block a user