diff options
author | Pedro L. Ramos <pedro.2.ramos@nokia.com> | 2019-01-07 15:48:44 +0000 |
---|---|---|
committer | Justin M. Keyes <justinkz@gmail.com> | 2019-01-10 08:50:07 +0100 |
commit | 57c7e1d4a0d7285d9de5b9035e91f546654268da (patch) | |
tree | 78b6da87e2f0aecb4ac85b0c0d0921b8f7995639 /src/nvim/globals.h | |
parent | 1ca2c8950fe33654f046183516a123fe0606b4e8 (diff) | |
download | rneovim-57c7e1d4a0d7285d9de5b9035e91f546654268da.tar.gz rneovim-57c7e1d4a0d7285d9de5b9035e91f546654268da.tar.bz2 rneovim-57c7e1d4a0d7285d9de5b9035e91f546654268da.zip |
vim-patch:8.1.0648: custom operators can't act upon forced motion
Problem: Custom operators can't act upon a forced motion. (Christian
Wellenbrock)
Solution: Add the forced motion to the mode() result. (Christian Brabandt,
closes vim/vim#3490)
https://github.com/vim/vim/commit/5976f8ff00efcb3e155a89346e44f2ad43d2405a
closes #8667
closes #9476
Christian Wellenbrock:
> For (most) built in text objects it's possible to force operation on
> them to be linewise, for example by using `dVab` (`:h o_V`,
> `motion_force`). When using custom text objects (defined as mappings
> by plugins for example), this doesn't currently work.
>
> Example:
>
> onoremap x viw
>
> Open a file with a few lines each containing some words. With the
> cursor on any word, try:
>
> 1. `dw` (builtin) deletes some characters
> 2. `dVw` (builtin) deletes linewise
> 3. `dx` (from mapping) deletes some characters
> 4. `dVx` (from mapping) deletes some characters, but should delete
> linewise
ref: https://github.com/wellle/targets.vim/issues/214
ref: https://gitter.im/neovim/neovim?at=5b379ff7f1664406610e7483
Diffstat (limited to 'src/nvim/globals.h')
-rw-r--r-- | src/nvim/globals.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/src/nvim/globals.h b/src/nvim/globals.h index f2bd6408e8..f749c119cd 100644 --- a/src/nvim/globals.h +++ b/src/nvim/globals.h @@ -661,11 +661,13 @@ EXTERN int* (*iconv_errno)(void); /// Visual_mode: When State is NORMAL or INSERT. /// finish_op : When State is NORMAL, after typing the operator and /// before typing the motion command. +/// motion_force: Last motion_force from do_pending_operator() EXTERN int State INIT(= NORMAL); // This is the current state of the // command interpreter. EXTERN bool finish_op INIT(= false); // true while an operator is pending EXTERN long opcount INIT(= 0); // count for pending operator +EXTERN int motion_force INIT(=0); // motion force for pending operator // Ex Mode (Q) state EXTERN int exmode_active INIT(= 0); // Zero, EXMODE_NORMAL or EXMODE_VIM. |