diff options
author | Bram Moolenaar <Bram@vim.org> | 2018-05-01 19:24:03 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2018-05-01 19:24:03 +0200 |
commit | e2c8d8392684a940cc5608acc73ff47486bd7b92 (patch) | |
tree | 2ade577a87c364b8453f0e0296657c71b7d130a4 | |
parent | b2ac14c0b5e23f8ab97c5c784bcd83e13ba8ded3 (diff) | |
download | vim-git-e2c8d8392684a940cc5608acc73ff47486bd7b92.tar.gz |
patch 8.0.1787: cannot insert the whole cursor linev8.0.1787
Problem: Cannot insert the whole cursor line.
Solution: Make CTRL-R CTRL-L work. (Andy Massimino, closes #2857)
-rw-r--r-- | runtime/doc/cmdline.txt | 6 | ||||
-rw-r--r-- | src/ex_getln.c | 3 | ||||
-rw-r--r-- | src/ops.c | 8 | ||||
-rw-r--r-- | src/testdir/test_cmdline.vim | 3 | ||||
-rw-r--r-- | src/version.c | 2 |
5 files changed, 19 insertions, 3 deletions
diff --git a/runtime/doc/cmdline.txt b/runtime/doc/cmdline.txt index d87d4fe95..25577a2b6 100644 --- a/runtime/doc/cmdline.txt +++ b/runtime/doc/cmdline.txt @@ -175,12 +175,14 @@ CTRL-R CTRL-F *c_CTRL-R_CTRL-F* *c_<C-R>_<C-F>* CTRL-R CTRL-P *c_CTRL-R_CTRL-P* *c_<C-R>_<C-P>* CTRL-R CTRL-W *c_CTRL-R_CTRL-W* *c_<C-R>_<C-W>* CTRL-R CTRL-A *c_CTRL-R_CTRL-A* *c_<C-R>_<C-A>* +CTRL-R CTRL-L *c_CTRL-R_CTRL-L* *c_<C-R>_<C-L>* Insert the object under the cursor: CTRL-F the Filename under the cursor CTRL-P the Filename under the cursor, expanded with 'path' as in |gf| CTRL-W the Word under the cursor CTRL-A the WORD under the cursor; see |WORD| + CTRL-L the line under the cursor When 'incsearch' is set the cursor position at the end of the currently displayed match is used. With CTRL-W the part of @@ -192,8 +194,8 @@ CTRL-R CTRL-A *c_CTRL-R_CTRL-A* *c_<C-R>_<C-A>* *c_CTRL-R_CTRL-R* *c_<C-R>_<C-R>* *c_CTRL-R_CTRL-O* *c_<C-R>_<C-O>* -CTRL-R CTRL-R {0-9a-z"%#:-=. CTRL-F CTRL-P CTRL-W CTRL-A} -CTRL-R CTRL-O {0-9a-z"%#:-=. CTRL-F CTRL-P CTRL-W CTRL-A} +CTRL-R CTRL-R {0-9a-z"%#:-=. CTRL-F CTRL-P CTRL-W CTRL-A CTRL-L} +CTRL-R CTRL-O {0-9a-z"%#:-=. CTRL-F CTRL-P CTRL-W CTRL-A CTRL-L} Insert register or object under the cursor. Works like |c_CTRL-R| but inserts the text literally. For example, if register a contains "xy^Hz" (where ^H is a backspace), diff --git a/src/ex_getln.c b/src/ex_getln.c index 64914aa67..0124098da 100644 --- a/src/ex_getln.c +++ b/src/ex_getln.c @@ -3299,7 +3299,8 @@ cmdline_paste( /* check for valid regname; also accept special characters for CTRL-R in * the command line */ if (regname != Ctrl_F && regname != Ctrl_P && regname != Ctrl_W - && regname != Ctrl_A && !valid_yank_reg(regname, FALSE)) + && regname != Ctrl_A && regname != Ctrl_L + && !valid_yank_reg(regname, FALSE)) return FAIL; /* A register containing CTRL-R can cause an endless loop. Allow using @@ -1573,6 +1573,14 @@ get_spec_reg( *allocated = TRUE; return TRUE; + case Ctrl_L: /* Line under cursor */ + if (!errmsg) + return FALSE; + + *argp = ml_get_buf(curwin->w_buffer, + curwin->w_cursor.lnum, FALSE); + return TRUE; + case '_': /* black hole: always empty */ *argp = (char_u *)""; return TRUE; diff --git a/src/testdir/test_cmdline.vim b/src/testdir/test_cmdline.vim index ff0756c39..a79f2761c 100644 --- a/src/testdir/test_cmdline.vim +++ b/src/testdir/test_cmdline.vim @@ -306,6 +306,9 @@ func Test_paste_in_cmdline() call feedkeys("ft:aaa \<C-R>\<C-F> bbb\<C-B>\"\<CR>", 'tx') call assert_equal('"aaa /tmp/some bbb', @:) + call feedkeys(":aaa \<C-R>\<C-L> bbb\<C-B>\"\<CR>", 'tx') + call assert_equal('"aaa '.getline(1).' bbb', @:) + set incsearch call feedkeys("fy:aaa veryl\<C-R>\<C-W> bbb\<C-B>\"\<CR>", 'tx') call assert_equal('"aaa verylongword bbb', @:) diff --git a/src/version.c b/src/version.c index 52b54368d..19b83acf4 100644 --- a/src/version.c +++ b/src/version.c @@ -762,6 +762,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 1787, +/**/ 1786, /**/ 1785, |