1
0
forked from aniani/vim

patch 8.1.1913: not easy to compute the space on the command line

Problem:    Not easy to compute the space on the command line.
Solution:   Add v:echospace. (Daniel Hahler, closes #4732)
This commit is contained in:
Bram Moolenaar 2019-08-23 20:58:45 +02:00
parent 570497ac40
commit 37f4cbd46f
6 changed files with 34 additions and 1 deletions

View File

@ -1768,6 +1768,13 @@ v:dying Normally zero. When a deadly signal is caught it's set to
< Note: if another deadly signal is caught when v:dying is one, < Note: if another deadly signal is caught when v:dying is one,
VimLeave autocommands will not be executed. VimLeave autocommands will not be executed.
*v:echospace* *echospace-variable*
v:echospace Number of screen cells that can be used for an `:echo` message
in the last screen line before causing the |hit-enter-prompt|.
Depends on 'showcmd', 'ruler' and 'columns'. You need to
check 'cmdheight' for whether there are full-width lines
available above the last line.
*v:errmsg* *errmsg-variable* *v:errmsg* *errmsg-variable*
v:errmsg Last given error message. It's allowed to set this variable. v:errmsg Last given error message. It's allowed to set this variable.
Example: > Example: >

View File

@ -201,6 +201,7 @@ static struct vimvar
{VV_NAME("termblinkresp", VAR_STRING), VV_RO}, {VV_NAME("termblinkresp", VAR_STRING), VV_RO},
{VV_NAME("event", VAR_DICT), VV_RO}, {VV_NAME("event", VAR_DICT), VV_RO},
{VV_NAME("versionlong", VAR_NUMBER), VV_RO}, {VV_NAME("versionlong", VAR_NUMBER), VV_RO},
{VV_NAME("echospace", VAR_NUMBER), VV_RO},
}; };
/* shorthand */ /* shorthand */
@ -389,6 +390,8 @@ eval_init(void)
set_vim_var_nr(VV_TYPE_CHANNEL, VAR_TYPE_CHANNEL); set_vim_var_nr(VV_TYPE_CHANNEL, VAR_TYPE_CHANNEL);
set_vim_var_nr(VV_TYPE_BLOB, VAR_TYPE_BLOB); set_vim_var_nr(VV_TYPE_BLOB, VAR_TYPE_BLOB);
set_vim_var_nr(VV_ECHOSPACE, sc_col - 1);
set_reg_var(0); /* default for v:register is not 0 but '"' */ set_reg_var(0); /* default for v:register is not 0 but '"' */
#ifdef EBCDIC #ifdef EBCDIC

View File

@ -10881,6 +10881,9 @@ comp_col(void)
sc_col = Columns; sc_col = Columns;
ru_col = Columns; ru_col = Columns;
#endif #endif
#ifdef FEAT_EVAL
set_vim_var_nr(VV_ECHOSPACE, sc_col - 1);
#endif
} }
#if defined(FEAT_PYTHON) || defined(FEAT_PYTHON3) || defined(PROTO) #if defined(FEAT_PYTHON) || defined(FEAT_PYTHON3) || defined(PROTO)

View File

@ -155,3 +155,20 @@ func Test_mode_message_at_leaving_insert_with_esc_mapped()
exe buf . 'bwipe!' exe buf . 'bwipe!'
call delete(testfile) call delete(testfile)
endfunc endfunc
func Test_echospace()
set noruler noshowcmd laststatus=1
call assert_equal(&columns - 1, v:echospace)
split
call assert_equal(&columns - 1, v:echospace)
set ruler
call assert_equal(&columns - 1, v:echospace)
close
call assert_equal(&columns - 19, v:echospace)
set showcmd noruler
call assert_equal(&columns - 12, v:echospace)
set showcmd ruler
call assert_equal(&columns - 29, v:echospace)
set ruler& showcmd&
endfunc

View File

@ -761,6 +761,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 */
/**/
1913,
/**/ /**/
1912, 1912,
/**/ /**/

View File

@ -1981,7 +1981,8 @@ typedef int sock_T;
#define VV_TERMBLINKRESP 89 #define VV_TERMBLINKRESP 89
#define VV_EVENT 90 #define VV_EVENT 90
#define VV_VERSIONLONG 91 #define VV_VERSIONLONG 91
#define VV_LEN 92 // number of v: vars #define VV_ECHOSPACE 92
#define VV_LEN 93 // number of v: vars
// used for v_number in VAR_SPECIAL // used for v_number in VAR_SPECIAL
#define VVAL_FALSE 0L #define VVAL_FALSE 0L