aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/globals.h
diff options
context:
space:
mode:
authorPedro L. Ramos <pedro.2.ramos@nokia.com>2019-01-07 15:48:44 +0000
committerJustin M. Keyes <justinkz@gmail.com>2019-01-10 08:50:07 +0100
commit57c7e1d4a0d7285d9de5b9035e91f546654268da (patch)
tree78b6da87e2f0aecb4ac85b0c0d0921b8f7995639 /src/nvim/globals.h
parent1ca2c8950fe33654f046183516a123fe0606b4e8 (diff)
downloadrneovim-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.h2
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.