0
0
mirror of https://github.com/vim/vim.git synced 2025-09-25 03:54:15 -04:00

patch 7.4.1894

Problem:    Cannot get the window ID for a mouse click.
Solution:   Add v:mouse_winid.
This commit is contained in:
Bram Moolenaar
2016-06-04 18:09:59 +02:00
parent b3619a90ea
commit 511972d810
4 changed files with 51 additions and 28 deletions

View File

@@ -1,4 +1,4 @@
*eval.txt* For Vim version 7.4. Last change: 2016 May 25
*eval.txt* For Vim version 7.4. Last change: 2016 Jun 04
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -1358,6 +1358,10 @@ v:beval_winnr The number of the window, over which the mouse pointer is. Only
window has number zero (unlike most other places where a
window gets a number).
*v:beval_winid* *beval_winid-variable*
v:beval_winid The window ID of the window, over which the mouse pointer is.
Otherwise like v:beval_winnr.
*v:char* *char-variable*
v:char Argument for evaluating 'formatexpr' and used for the typed
character when using <expr> in an abbreviation |:map-<expr>|.
@@ -1591,6 +1595,10 @@ v:mouse_win Window number for a mouse click obtained with |getchar()|.
First window has number 1, like with |winnr()|. The value is
zero when there was no mouse button click.
*v:mouse_winid* *mouse_winid-variable*
v:mouse_winid Window ID for a mouse click obtained with |getchar()|.
The value is zero when there was no mouse button click.
*v:mouse_lnum* *mouse_lnum-variable*
v:mouse_lnum Line number for a mouse click obtained with |getchar()|.
This is the text line number, not the screen line number. The
@@ -1821,7 +1829,7 @@ v:windowid When any X11 based GUI is running or when running in a
When an MS-Windows GUI is running this will be set to the
window handle.
Otherwise the value is zero.
Note: for windows inside Vim use |winnr()|.
Note: for windows inside Vim use |winnr()| or |win_getid()|.
==============================================================================
4. Builtin Functions *functions*
@@ -3846,8 +3854,8 @@ getchar([expr]) *getchar()*
When the user clicks a mouse button, the mouse event will be
returned. The position can then be found in |v:mouse_col|,
|v:mouse_lnum| and |v:mouse_win|. This example positions the
mouse as it would normally happen: >
|v:mouse_lnum|, |v:mouse_winid| and |v:mouse_win|. This
example positions the mouse as it would normally happen: >
let c = getchar()
if c == "\<LeftMouse>" && v:mouse_win > 0
exe v:mouse_win . "wincmd w"
@@ -4724,6 +4732,10 @@ job_status({job}) *job_status()* *E916*
"fail" job failed to start
"dead" job died or was stopped after running
On Unix a non-existing command results in "dead" instead of
"fail", because a fork happens before the failure can be
detected.
If an exit callback was set with the "exit_cb" option and the
job is now detected to be "dead" the callback will be invoked.
@@ -6369,10 +6381,15 @@ setqflist({list} [, {action}]) *setqflist()*
*E927*
If {action} is set to 'a', then the items from {list} are
added to the existing quickfix list. If there is no existing
list, then a new list is created. If {action} is set to 'r',
then the items from the current quickfix list are replaced
with the items from {list}. If {action} is not present or is
set to ' ', then a new list is created.
list, then a new list is created.
If {action} is set to 'r', then the items from the current
quickfix list are replaced with the items from {list}. This
can also be used to clear the list: >
:call setqflist([], 'r')
<
If {action} is not present or is set to ' ', then a new list
is created.
Returns zero for success, -1 for failure.

View File

@@ -359,6 +359,7 @@ static struct vimvar
{VV_NAME("swapcommand", VAR_STRING), VV_RO},
{VV_NAME("char", VAR_STRING), 0},
{VV_NAME("mouse_win", VAR_NUMBER), 0},
{VV_NAME("mouse_winid", VAR_NUMBER), 0},
{VV_NAME("mouse_lnum", VAR_NUMBER), 0},
{VV_NAME("mouse_col", VAR_NUMBER), 0},
{VV_NAME("operator", VAR_STRING), VV_RO},
@@ -12755,6 +12756,7 @@ f_getchar(typval_T *argvars, typval_T *rettv)
--allow_keys;
vimvars[VV_MOUSE_WIN].vv_nr = 0;
vimvars[VV_MOUSE_WINID].vv_nr = 0;
vimvars[VV_MOUSE_LNUM].vv_nr = 0;
vimvars[VV_MOUSE_COL].vv_nr = 0;
@@ -12810,6 +12812,7 @@ f_getchar(typval_T *argvars, typval_T *rettv)
++winnr;
# endif
vimvars[VV_MOUSE_WIN].vv_nr = winnr;
vimvars[VV_MOUSE_WINID].vv_nr = win->w_id;
vimvars[VV_MOUSE_LNUM].vv_nr = lnum;
vimvars[VV_MOUSE_COL].vv_nr = col + 1;
}

View File

@@ -753,6 +753,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
1894,
/**/
1893,
/**/

View File

@@ -1887,26 +1887,27 @@ typedef int sock_T;
#define VV_SWAPCOMMAND 48
#define VV_CHAR 49
#define VV_MOUSE_WIN 50
#define VV_MOUSE_LNUM 51
#define VV_MOUSE_COL 52
#define VV_OP 53
#define VV_SEARCHFORWARD 54
#define VV_HLSEARCH 55
#define VV_OLDFILES 56
#define VV_WINDOWID 57
#define VV_PROGPATH 58
#define VV_COMPLETED_ITEM 59
#define VV_OPTION_NEW 60
#define VV_OPTION_OLD 61
#define VV_OPTION_TYPE 62
#define VV_ERRORS 63
#define VV_FALSE 64
#define VV_TRUE 65
#define VV_NULL 66
#define VV_NONE 67
#define VV_VIM_DID_ENTER 68
#define VV_TESTING 69
#define VV_LEN 70 /* number of v: vars */
#define VV_MOUSE_WINID 51
#define VV_MOUSE_LNUM 52
#define VV_MOUSE_COL 53
#define VV_OP 54
#define VV_SEARCHFORWARD 55
#define VV_HLSEARCH 56
#define VV_OLDFILES 57
#define VV_WINDOWID 58
#define VV_PROGPATH 59
#define VV_COMPLETED_ITEM 60
#define VV_OPTION_NEW 61
#define VV_OPTION_OLD 62
#define VV_OPTION_TYPE 63
#define VV_ERRORS 64
#define VV_FALSE 65
#define VV_TRUE 66
#define VV_NULL 67
#define VV_NONE 68
#define VV_VIM_DID_ENTER 69
#define VV_TESTING 70
#define VV_LEN 71 /* number of v: vars */
/* used for v_number in VAR_SPECIAL */
#define VVAL_FALSE 0L