summaryrefslogtreecommitdiff
path: root/data/vim/patches/8.1.0648
diff options
context:
space:
mode:
Diffstat (limited to 'data/vim/patches/8.1.0648')
-rw-r--r--data/vim/patches/8.1.0648203
1 files changed, 203 insertions, 0 deletions
diff --git a/data/vim/patches/8.1.0648 b/data/vim/patches/8.1.0648
new file mode 100644
index 000000000..f9a593efd
--- /dev/null
+++ b/data/vim/patches/8.1.0648
@@ -0,0 +1,203 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 8.1.0648
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 8.1.0648
+Problem: Custom operators can't act upon a forced motion. (Christian
+ Wellenbrock)
+Solution: Add the forced motion to the mode() result. (Christian Brabandt,
+ closes #3490)
+Files: runtime/doc/eval.txt, src/evalfunc.c, src/globals.h, src/normal.c,
+ src/testdir/test_mapping.vim
+
+
+*** ../vim-8.1.0647/runtime/doc/eval.txt 2018-12-27 00:28:27.493299355 +0100
+--- runtime/doc/eval.txt 2018-12-27 23:13:51.631271146 +0100
+***************
+*** 6308,6313 ****
+--- 6324,6333 ----
+
+ n Normal, Terminal-Normal
+ no Operator-pending
++ nov Operator-pending (forced characterwise |o_v|)
++ noV Operator-pending (forced linewise |o_V|)
++ noCTRL-V Operator-pending (forced blockwise |o_CTRL-V|);
++ CTRL-V is one character
+ niI Normal using |i_CTRL-O| in |Insert-mode|
+ niR Normal using |i_CTRL-O| in |Replace-mode|
+ niV Normal using |i_CTRL-O| in |Virtual-Replace-mode|
+*** ../vim-8.1.0647/src/evalfunc.c 2018-12-27 00:28:27.497299324 +0100
+--- src/evalfunc.c 2018-12-27 23:06:25.098224834 +0100
+***************
+*** 8506,8512 ****
+--- 8506,8516 ----
+ {
+ buf[0] = 'n';
+ if (finish_op)
++ {
+ buf[1] = 'o';
++ // to be able to detect force-linewise/blockwise/characterwise operations
++ buf[2] = motion_force;
++ }
+ else if (restart_edit == 'I' || restart_edit == 'R'
+ || restart_edit == 'V')
+ {
+*** ../vim-8.1.0647/src/globals.h 2018-12-27 00:28:27.497299324 +0100
+--- src/globals.h 2018-12-27 23:06:25.098224834 +0100
+***************
+*** 928,933 ****
+--- 928,934 ----
+ * "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()
+ * "debug_mode" Debug mode.
+ */
+ EXTERN int State INIT(= NORMAL); /* This is the current state of the
+***************
+*** 938,943 ****
+--- 939,945 ----
+
+ EXTERN int 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
+*** ../vim-8.1.0647/src/normal.c 2018-12-23 19:10:05.010359907 +0100
+--- src/normal.c 2018-12-27 23:06:25.098224834 +0100
+***************
+*** 1395,1402 ****
+ else if (oap->motion_force == Ctrl_V)
+ {
+ /* Change line- or characterwise motion into Visual block mode. */
+! VIsual_active = TRUE;
+! VIsual = oap->start;
+ VIsual_mode = Ctrl_V;
+ VIsual_select = FALSE;
+ VIsual_reselect = FALSE;
+--- 1395,1405 ----
+ else if (oap->motion_force == Ctrl_V)
+ {
+ /* Change line- or characterwise motion into Visual block mode. */
+! if (!VIsual_active)
+! {
+! VIsual_active = TRUE;
+! VIsual = oap->start;
+! }
+ VIsual_mode = Ctrl_V;
+ VIsual_select = FALSE;
+ VIsual_reselect = FALSE;
+***************
+*** 2129,2134 ****
+--- 2132,2138 ----
+ }
+ oap->block_mode = FALSE;
+ clearop(oap);
++ motion_force = NUL;
+ }
+ #ifdef FEAT_LINEBREAK
+ curwin->w_p_lbr = lbr_saved;
+***************
+*** 7689,7695 ****
+ * characterwise, linewise, or blockwise. */
+ if (cap->oap->op_type != OP_NOP)
+ {
+! cap->oap->motion_force = cap->cmdchar;
+ finish_op = FALSE; /* operator doesn't finish now but later */
+ return;
+ }
+--- 7693,7699 ----
+ * characterwise, linewise, or blockwise. */
+ if (cap->oap->op_type != OP_NOP)
+ {
+! motion_force = cap->oap->motion_force = cap->cmdchar;
+ finish_op = FALSE; /* operator doesn't finish now but later */
+ return;
+ }
+*** ../vim-8.1.0647/src/testdir/test_mapping.vim 2018-05-13 18:29:43.000000000 +0200
+--- src/testdir/test_mapping.vim 2018-12-27 23:06:25.098224834 +0100
+***************
+*** 230,232 ****
+--- 230,286 ----
+ call assert_equal(expected, getreg(':'))
+ cunabbr s
+ endfunc
++
++ func Test_motionforce_omap()
++ func GetCommand()
++ let g:m=mode(1)
++ let [g:lnum1, g:col1] = searchpos('-', 'Wb')
++ if g:lnum1 == 0
++ return "\<Esc>"
++ endif
++ let [g:lnum2, g:col2] = searchpos('-', 'W')
++ if g:lnum2 == 0
++ return "\<Esc>"
++ endif
++ return ":call Select()\<CR>"
++ endfunc
++ func Select()
++ call cursor([g:lnum1, g:col1])
++ exe "normal! 1 ". (strlen(g:m) == 2 ? 'v' : g:m[2])
++ call cursor([g:lnum2, g:col2])
++ execute "normal! \<BS>"
++ endfunc
++ new
++ onoremap <buffer><expr> i- GetCommand()
++ " 1) default omap mapping
++ %d_
++ call setline(1, ['aaa - bbb', 'x', 'ddd - eee'])
++ call cursor(2, 1)
++ norm di-
++ call assert_equal('no', g:m)
++ call assert_equal(['aaa -- eee'], getline(1, '$'))
++ " 2) forced characterwise operation
++ %d_
++ call setline(1, ['aaa - bbb', 'x', 'ddd - eee'])
++ call cursor(2, 1)
++ norm dvi-
++ call assert_equal('nov', g:m)
++ call assert_equal(['aaa -- eee'], getline(1, '$'))
++ " 3) forced linewise operation
++ %d_
++ call setline(1, ['aaa - bbb', 'x', 'ddd - eee'])
++ call cursor(2, 1)
++ norm dVi-
++ call assert_equal('noV', g:m)
++ call assert_equal([''], getline(1, '$'))
++ " 4) forced blockwise operation
++ %d_
++ call setline(1, ['aaa - bbb', 'x', 'ddd - eee'])
++ call cursor(2, 1)
++ exe "norm d\<C-V>i-"
++ call assert_equal("no\<C-V>", g:m)
++ call assert_equal(['aaabbb', 'x', 'dddeee'], getline(1, '$'))
++ bwipe!
++ delfunc Select
++ delfunc GetCommand
++ endfunc
+*** ../vim-8.1.0647/src/version.c 2018-12-27 22:43:03.901774877 +0100
+--- src/version.c 2018-12-27 23:25:22.866659463 +0100
+***************
+*** 801,802 ****
+--- 801,804 ----
+ { /* Add new patch number below this line */
++ /**/
++ 648,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+61. Your best friends know your e-mail address, but neither your phone number
+ nor the address where you live.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///