summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2018-05-01 19:24:03 +0200
committerBram Moolenaar <Bram@vim.org>2018-05-01 19:24:03 +0200
commite2c8d8392684a940cc5608acc73ff47486bd7b92 (patch)
tree2ade577a87c364b8453f0e0296657c71b7d130a4
parentb2ac14c0b5e23f8ab97c5c784bcd83e13ba8ded3 (diff)
downloadvim-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.txt6
-rw-r--r--src/ex_getln.c3
-rw-r--r--src/ops.c8
-rw-r--r--src/testdir/test_cmdline.vim3
-rw-r--r--src/version.c2
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
diff --git a/src/ops.c b/src/ops.c
index 0902b0479..9af466b3f 100644
--- a/src/ops.c
+++ b/src/ops.c
@@ -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,